X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Felaboration%2Fchr%2Fplan%2FIterateConstraintOp.java;h=035ccd624a134f8942e3d19a8908fca2ddda75a5;hb=refs%2Fchanges%2F01%2F601%2F2;hp=9a4e6475ec374ad95e1f59735ac0455533f1aceb;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/plan/IterateConstraintOp.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/plan/IterateConstraintOp.java index 9a4e6475e..035ccd624 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/plan/IterateConstraintOp.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/plan/IterateConstraintOp.java @@ -12,7 +12,6 @@ import org.simantics.scl.compiler.elaboration.expressions.Variable; import org.simantics.scl.compiler.internal.codegen.continuations.ICont; import org.simantics.scl.compiler.internal.codegen.references.IVal; import org.simantics.scl.compiler.internal.codegen.writer.CodeWriter; -import org.simantics.scl.compiler.types.Types; public class IterateConstraintOp extends PlanOp { @@ -56,10 +55,10 @@ public class IterateConstraintOp extends PlanOp { IVal fact = body.getParameters()[0]; ArrayList parameters = new ArrayList(expressions.length+1); - parameters.add(planContext.storeVar); + parameters.add(planContext.getStoreVar(constraint)); for(int i=0;i>i)&1)==1) - parameters.add(expressions[i].toVal(context.environment, w)); + parameters.add(expressions[i].toVal(context, w)); w.jump(bodyContinuation, w.apply(location, constraint.fetchFromIndex(context, boundMask), parameters.toArray(new IVal[parameters.size()]))); @@ -78,7 +77,7 @@ public class IterateConstraintOp extends PlanOp { for(int i=0;i>i)&1)==0) - variables[i].setVal(body.apply(location, constraint.accessComponent(i), fact)); + variables[i].setVal(constraint.accessComponent(location, body, fact, i)); Constant nextElement = constraint.nextElement(context, boundMask); planContext.partnerFacts.add(new PartnerFact(false, id, constraint, fact, constraint.mayBeRemoved(), killAfterMatch, nextElement, bodyContinuation, end.getContinuation())); planContext.nextOp(body);