]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/chr/CHRRuntimeRulesetCodeGenerator.java
(refs #7365) Fixed the bug in the test CHR11.scl
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / codegen / chr / CHRRuntimeRulesetCodeGenerator.java
index 9ff56eda4cc45eb27dcf29b00c0f9789816215c8..341ba34a796b18ebdd7dbd0850e7649b1328f60f 100644 (file)
@@ -46,8 +46,8 @@ public class CHRRuntimeRulesetCodeGenerator implements CHRCodeGenerationConstant
             for(CHRConstraint constraint : ruleset.constraints)
                 if(constraint.nextContainerFieldName != null)
                     storeClassBuilder.addField(Opcodes.ACC_PUBLIC, constraint.nextContainerFieldName, CHRPriorityFactContainer);
-        if(ruleset.extensible)
-            storeClassBuilder.addField(Opcodes.ACC_PUBLIC, "currentId", FACT_ID_TYPE);
+        //if(ruleset.extensible)
+        //    storeClassBuilder.addField(Opcodes.ACC_PUBLIC, "currentId", FACT_ID_TYPE);
         
         // Constructors
 
@@ -106,13 +106,16 @@ public class CHRRuntimeRulesetCodeGenerator implements CHRCodeGenerationConstant
                     }
                 
                 // update context id
+                mb.loadLocal(importedStore);
                 mb.loadLocal(contextVar);
+                mb.invokeVirtual("org/simantics/scl/runtime/chr/CHRRuntimeRuleset", "register", TypeDesc.VOID, new TypeDesc[] {CHRContext});
+                /*mb.loadLocal(contextVar);
                 mb.loadLocal(contextVar);
                 mb.loadField(CHRContext_name, "currentId", FACT_ID_TYPE);
                 mb.loadLocal(importedStore);
                 mb.loadField(include.ruleset.runtimeRulesetClassName, "currentId", FACT_ID_TYPE);
                 mb.invokeStatic("java/lang/Math", "max", FACT_ID_TYPE, new TypeDesc[] {FACT_ID_TYPE, FACT_ID_TYPE});
-                mb.storeField(CHRContext_name, "currentId", FACT_ID_TYPE);
+                mb.storeField(CHRContext_name, "currentId", FACT_ID_TYPE);*/
                 
                 mb.returnVoid();
                 mb.finish();
@@ -137,8 +140,11 @@ public class CHRRuntimeRulesetCodeGenerator implements CHRCodeGenerationConstant
                 // store context id
                 mb.loadLocal(importedStore);
                 mb.loadLocal(contextVar);
+                mb.invokeVirtual("org/simantics/scl/runtime/chr/CHRRuntimeRuleset", "unregister", TypeDesc.VOID, new TypeDesc[] {CHRContext});
+                /*mb.loadLocal(importedStore);
+                mb.loadLocal(contextVar);
                 mb.loadField(CHRContext_name, "currentId", FACT_ID_TYPE);
-                mb.storeField(include.ruleset.runtimeRulesetClassName, "currentId", FACT_ID_TYPE);
+                mb.storeField(include.ruleset.runtimeRulesetClassName, "currentId", FACT_ID_TYPE);*/
                 
                 mb.returnVoid();
                 mb.finish();