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%2Fcompilation%2FCodeGeneration.java;h=a8dca8c1133950ae64e397c4aca34fb033cc9083;hp=52abbc6d87b48542b60e26152d917d4b64eaa22a;hb=78f577368ba4c71ad6fb3d9f16c03c634585cf7b;hpb=593a8f75d9dbc363234002dc500c346afbeba040 diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/compilation/CodeGeneration.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/compilation/CodeGeneration.java index 52abbc6d8..a8dca8c11 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/compilation/CodeGeneration.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/compilation/CodeGeneration.java @@ -26,6 +26,7 @@ import org.simantics.scl.compiler.elaboration.modules.TypeClass; import org.simantics.scl.compiler.elaboration.modules.TypeClassInstance; import org.simantics.scl.compiler.elaboration.modules.TypeClassMethod; import org.simantics.scl.compiler.errors.ErrorLog; +import org.simantics.scl.compiler.errors.Locations; import org.simantics.scl.compiler.internal.codegen.references.IVal; import org.simantics.scl.compiler.internal.codegen.references.Val; import org.simantics.scl.compiler.internal.codegen.ssa.SSAModule; @@ -167,7 +168,10 @@ public class CodeGeneration { decomposed.parameters[i].setVal(parameterVals[i]); w.return_(decomposed.body.toVal(compilationContext.environment, w)); } catch(RuntimeException e) { - errorLog.setExceptionPosition(value.getExpression().location); + long location = value.getExpression().location; + if(location == Locations.NO_LOCATION) + location = value.definitionLocation; + errorLog.setExceptionPosition(location); throw e; } } @@ -179,7 +183,7 @@ public class CodeGeneration { } public void optimizeSSA() { - if(SCLCompilerConfiguration.SHOW_SSA_BEFORE_OPTIMIZATION) { + if(SCLCompilerConfiguration.SHOW_SSA_BEFORE_OPTIMIZATION && SCLCompilerConfiguration.debugFilter(module.getName())) { System.out.println("=== SSA before optimization ===================================="); System.out.println(ssaModule); } @@ -195,7 +199,7 @@ public class CodeGeneration { if(phase == 0) ssaModule.saveInlinableDefinitions(); } - if(SCLCompilerConfiguration.SHOW_SSA_BEFORE_LAMBDA_LIFTING) { + if(SCLCompilerConfiguration.SHOW_SSA_BEFORE_LAMBDA_LIFTING && SCLCompilerConfiguration.debugFilter(module.getName())) { System.out.println("=== SSA before lambda lifting =================================="); System.out.println(ssaModule); } @@ -207,7 +211,7 @@ public class CodeGeneration { } public void generateCode() { - if(SCLCompilerConfiguration.SHOW_FINAL_SSA) { + if(SCLCompilerConfiguration.SHOW_FINAL_SSA && SCLCompilerConfiguration.debugFilter(module.getName())) { System.out.println("=== Final SSA =================================================="); System.out.println(ssaModule); }