]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/ssa/exits/Jump.java
SCL compiler generates line numbers to bytecode
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / codegen / ssa / exits / Jump.java
index 6ffbe88619e1e05cf331950e50a3b3c5d1d5b1cb..434e8644addb7e6e728326d43d2c83ba83dfa0da 100644 (file)
@@ -23,7 +23,8 @@ public class Jump extends SSAExit implements ValRefBinder {
     private ContRef target;
     private ValRef[] parameters;
     
-    public Jump(ContRef target, ValRef ... parameters) {
+    public Jump(int lineNumber, ContRef target, ValRef ... parameters) {
+        super(lineNumber);
         setTarget(target);
         setParameters(parameters);
     }
@@ -48,7 +49,8 @@ public class Jump extends SSAExit implements ValRefBinder {
     }
 
     @Override
-    public void generateCode(MethodBuilder mb) {        
+    public void generateCode(MethodBuilder mb) {
+        mb.lineNumber(lineNumber);
         mb.jump(target, ValRef.getBindings(parameters));
     }
 
@@ -91,7 +93,7 @@ public class Jump extends SSAExit implements ValRefBinder {
 
     @Override
     public SSAExit copy(CopyContext context) {
-        return new Jump(context.copy(target), context.copy(parameters));
+        return new Jump(lineNumber, context.copy(target), context.copy(parameters));
     }
     
     @Override
@@ -146,4 +148,10 @@ public class Jump extends SSAExit implements ValRefBinder {
         for(ValRef parameter : parameters)
             visitor.visit(parameter);
     }
+
+    @Override
+    public void cleanup() {
+        for(ValRef parameter : parameters)
+            parameter.remove();
+    }
 }