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%2Felaboration%2Fchr%2FCHRRulesetObject.java;h=a15e30e42638d6674a542478de4e3e8cd9aeaebb;hp=f14cb0c6b10b4771f410fc0d1f8c45d5176fea49;hb=a2df536f7fc878982c6c960a79ed49f350cddc6f;hpb=593a8f75d9dbc363234002dc500c346afbeba040 diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/CHRRulesetObject.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/CHRRulesetObject.java index f14cb0c6b..a15e30e42 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/CHRRulesetObject.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/CHRRulesetObject.java @@ -1,31 +1,31 @@ -package org.simantics.scl.compiler.elaboration.chr; - -import org.simantics.scl.compiler.constants.Constant; -import org.simantics.scl.compiler.constants.JavaConstructor; -import org.simantics.scl.compiler.internal.codegen.chr.CHRCodeGenerator; -import org.simantics.scl.compiler.internal.codegen.references.BoundVar; -import org.simantics.scl.compiler.internal.codegen.ssa.SSAObject; -import org.simantics.scl.compiler.internal.codegen.utils.ModuleBuilder; -import org.simantics.scl.compiler.types.Types; - -public class CHRRulesetObject extends SSAObject { - CHRRuleset ruleset; - - public CHRRulesetObject(BoundVar target, CHRRuleset ruleset) { - super(ruleset.storeType); - this.setTarget(target); - this.ruleset = ruleset; - } - - @Override - public Constant liftClosure(BoundVar newTarget, BoundVar[] parameters) { - ruleset.this_ = newTarget; - ruleset.parameters = parameters; - return new JavaConstructor(ruleset.storeClassName, Types.PROC, ruleset.storeType, Types.getTypes(parameters)); - } - - @Override - public void generateCode(ModuleBuilder moduleBuilder) { - CHRCodeGenerator.generateStore(moduleBuilder, ruleset); - } -} +package org.simantics.scl.compiler.elaboration.chr; + +import org.simantics.scl.compiler.constants.Constant; +import org.simantics.scl.compiler.constants.JavaConstructor; +import org.simantics.scl.compiler.internal.codegen.chr.CHRRuntimeRulesetCodeGenerator; +import org.simantics.scl.compiler.internal.codegen.references.BoundVar; +import org.simantics.scl.compiler.internal.codegen.ssa.SSAObject; +import org.simantics.scl.compiler.internal.codegen.utils.ModuleBuilder; +import org.simantics.scl.compiler.types.Types; + +public class CHRRulesetObject extends SSAObject { + CHRRuleset ruleset; + + public CHRRulesetObject(BoundVar target, CHRRuleset ruleset) { + super(ruleset.runtimeRulesetType); + this.setTarget(target); + this.ruleset = ruleset; + } + + @Override + public Constant liftClosure(BoundVar newTarget, BoundVar[] parameters) { + ruleset.this_ = newTarget; + ruleset.parameters = parameters; + return new JavaConstructor(ruleset.runtimeRulesetName, Types.PROC, ruleset.runtimeRulesetType, Types.getTypes(parameters)); + } + + @Override + public void generateCode(ModuleBuilder moduleBuilder) { + CHRRuntimeRulesetCodeGenerator.generateRuntimeRuleset(moduleBuilder, ruleset); + } +}