X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Finternal%2Fcodegen%2Fssa%2Fexits%2FJump.java;h=434e8644addb7e6e728326d43d2c83ba83dfa0da;hb=91682baa9a8252390f09b80fd724f47e5957b234;hp=6ffbe88619e1e05cf331950e50a3b3c5d1d5b1cb;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/ssa/exits/Jump.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/ssa/exits/Jump.java index 6ffbe8861..434e8644a 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/ssa/exits/Jump.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/ssa/exits/Jump.java @@ -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(); + } }