X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Finternal%2Fcodegen%2Futils%2FMethodBuilderBase.java;h=51a93c53c8c09589198e3c62b79ac1f1c2eeef74;hp=bd1a911a15f4ec4fe2342284baec23414da7a1a2;hb=refs%2Fchanges%2F34%2F1534%2F3;hpb=3826e289058a51d09310b7ba1251e959dc0ed3d0 diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/utils/MethodBuilderBase.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/utils/MethodBuilderBase.java index bd1a911a1..51a93c53c 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/utils/MethodBuilderBase.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/utils/MethodBuilderBase.java @@ -12,6 +12,7 @@ public class MethodBuilderBase { private MethodVisitor methodVisitor; private LocalVariable[] parameters; private int localVariableCount = 0; + private int currentLineNumber = -1; public MethodBuilderBase(ClassBuilder classBuilder, boolean isStatic, MethodVisitor methodVisitor, TypeDesc[] parameterTypes) { this.classBuilder = classBuilder; @@ -87,6 +88,20 @@ public class MethodBuilderBase { methodVisitor.visitLdcInsn(Type.getType(value.getDescriptor())); } + + public int lineNumber(int lineNumber) { + if(lineNumber != currentLineNumber) { + int oldLineNumber = currentLineNumber; + Label label = createLabel(); + setLocation(label); + methodVisitor.visitLineNumber(lineNumber, label); + currentLineNumber = lineNumber; + return oldLineNumber; + } + else + return currentLineNumber; + } + public void dup() { methodVisitor.visitInsn(Opcodes.DUP); }