X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Finternal%2Felaboration%2Fprofiling%2FBranchPointInjector.java;h=eed6d85552c62cf63f4b2028d84fd5990597b0dc;hb=cc7c007fb930bb1453a529916f8cf2ba8d18f0e3;hp=930dfe14b547208cb2dba5e228379aa700491b6e;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/profiling/BranchPointInjector.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/profiling/BranchPointInjector.java index 930dfe14b..eed6d8555 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/profiling/BranchPointInjector.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/elaboration/profiling/BranchPointInjector.java @@ -3,16 +3,17 @@ package org.simantics.scl.compiler.internal.elaboration.profiling; import java.util.ArrayList; import org.simantics.scl.compiler.elaboration.expressions.Case; +import org.simantics.scl.compiler.elaboration.expressions.EAmbiguous; import org.simantics.scl.compiler.elaboration.expressions.EApply; import org.simantics.scl.compiler.elaboration.expressions.EApplyType; import org.simantics.scl.compiler.elaboration.expressions.EAsPattern; import org.simantics.scl.compiler.elaboration.expressions.EBinary; import org.simantics.scl.compiler.elaboration.expressions.EBind; import org.simantics.scl.compiler.elaboration.expressions.EBlock; +import org.simantics.scl.compiler.elaboration.expressions.ECHRRuleset; import org.simantics.scl.compiler.elaboration.expressions.EConstant; import org.simantics.scl.compiler.elaboration.expressions.ECoveringBranchPoint; import org.simantics.scl.compiler.elaboration.expressions.EEnforce; -import org.simantics.scl.compiler.elaboration.expressions.EEntityTypeAnnotation; import org.simantics.scl.compiler.elaboration.expressions.EError; import org.simantics.scl.compiler.elaboration.expressions.EExternalConstant; import org.simantics.scl.compiler.elaboration.expressions.EFieldAccess; @@ -45,7 +46,6 @@ import org.simantics.scl.compiler.elaboration.expressions.EWhen; import org.simantics.scl.compiler.elaboration.expressions.Expression; import org.simantics.scl.compiler.elaboration.expressions.GuardedExpression; import org.simantics.scl.compiler.elaboration.expressions.GuardedExpressionGroup; -import org.simantics.scl.compiler.elaboration.expressions.StandardExpressionTransformer; import org.simantics.scl.compiler.elaboration.expressions.block.BindStatement; import org.simantics.scl.compiler.elaboration.expressions.block.GuardStatement; import org.simantics.scl.compiler.elaboration.expressions.block.LetStatement; @@ -56,6 +56,7 @@ import org.simantics.scl.compiler.elaboration.expressions.list.ListGuard; import org.simantics.scl.compiler.elaboration.expressions.list.ListQualifier; import org.simantics.scl.compiler.elaboration.expressions.list.ListSeq; import org.simantics.scl.compiler.elaboration.expressions.list.ListThen; +import org.simantics.scl.compiler.elaboration.expressions.visitors.StandardExpressionTransformer; import org.simantics.scl.compiler.elaboration.query.QAlternative; import org.simantics.scl.compiler.elaboration.query.QAtom; import org.simantics.scl.compiler.elaboration.query.QConjunction; @@ -119,7 +120,8 @@ public class BranchPointInjector extends StandardExpressionTransformer { ++codeCounter; expression.condition = expression.condition.accept(this); expression.then_ = injectBranchPoint(expression.then_); - expression.else_ = injectBranchPoint(expression.else_); + if(expression.else_ != null) + expression.else_ = injectBranchPoint(expression.else_); return expression; } @@ -159,6 +161,12 @@ public class BranchPointInjector extends StandardExpressionTransformer { return expression; } + @Override + public Expression transform(EAmbiguous expression) { + ++codeCounter; + return super.transform(expression); + } + @Override public Expression transform(EApply expression) { ++codeCounter; @@ -190,25 +198,25 @@ public class BranchPointInjector extends StandardExpressionTransformer { } @Override - public Expression transform(EConstant expression) { + public Expression transform(ECHRRuleset expression) { ++codeCounter; return super.transform(expression); } @Override - public Expression transform(ECoveringBranchPoint expression) { + public Expression transform(EConstant expression) { ++codeCounter; return super.transform(expression); } @Override - public Expression transform(EEnforce expression) { + public Expression transform(ECoveringBranchPoint expression) { ++codeCounter; return super.transform(expression); } @Override - public Expression transform(EEntityTypeAnnotation expression) { + public Expression transform(EEnforce expression) { ++codeCounter; return super.transform(expression); }