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%2Fjava%2FJavaModule.java;h=aeec9a35be73a7485597060e07071c874db3d470;hp=39c2dbec6ce87f2187eee6fabbfa70f24457c74d;hb=35e73f300e2101c436dcc23c9a0f9e12ecc81d59;hpb=969bd23cab98a79ca9101af33334000879fb60c5 diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/java/JavaModule.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/java/JavaModule.java old mode 100755 new mode 100644 index 39c2dbec6..aeec9a35b --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/java/JavaModule.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/java/JavaModule.java @@ -23,7 +23,7 @@ import org.simantics.scl.compiler.types.kinds.Kinds; public class JavaModule extends ConcreteModule { - public static final JavaModule INSTANCE = new JavaModule(); + public static JavaModule INSTANCE = new JavaModule(); public static final String MODULE_NAME = "JavaBuiltin"; @@ -56,6 +56,16 @@ public class JavaModule extends ConcreteModule { addValue("sor", JavaMathOperation.SOR); addValue("sxor", JavaMathOperation.SXOR); + addValue("badd", JavaMathOperation.BADD); + addValue("bsub", JavaMathOperation.BSUB); + addValue("bmul", JavaMathOperation.BMUL); + addValue("bdiv", JavaMathOperation.BDIV); + addValue("brem", JavaMathOperation.BREM); + addValue("bneg", JavaMathOperation.BNEG); + addValue("band", JavaMathOperation.BAND); + addValue("bor", JavaMathOperation.BOR); + addValue("bxor", JavaMathOperation.BXOR); + // Conversions for(JavaConversionOperation operation : JavaConversionOperation.OPCODES) addValue(operation.getMnemonic(), operation); @@ -75,6 +85,13 @@ public class JavaModule extends ConcreteModule { addValue("lcmpgt", new JavaComparisonOperation(">", Types.LONG)); addValue("lcmpge", new JavaComparisonOperation(">=", Types.LONG)); + addValue("bcmpeq", new JavaComparisonOperation("==", Types.BYTE)); + addValue("bcmpne", new JavaComparisonOperation("!=", Types.BYTE)); + addValue("bcmplt", new JavaComparisonOperation("<", Types.BYTE)); + addValue("bcmple", new JavaComparisonOperation("<=", Types.BYTE)); + addValue("bcmpgt", new JavaComparisonOperation(">", Types.BYTE)); + addValue("bcmpge", new JavaComparisonOperation(">=", Types.BYTE)); + addValue("scmpeq", new JavaComparisonOperation("==", Types.SHORT)); addValue("scmpne", new JavaComparisonOperation("!=", Types.SHORT)); addValue("scmplt", new JavaComparisonOperation("<", Types.SHORT)); @@ -112,7 +129,6 @@ public class JavaModule extends ConcreteModule { addValue("ifge", new JavaComparisonToZeroOperation(">=")); TVar A = Types.var(Kinds.STAR); - TVar B = Types.var(Kinds.STAR); addValue("unsafeCoerce", UnsafeCoerce.INSTANCE); addValue("equals", new JavaMethod(true, @@ -121,6 +137,8 @@ public class JavaModule extends ConcreteModule { "java/lang/Object", "hashCode", Types.NO_EFFECTS, Types.INTEGER, A)); addValue("toString", new JavaMethod(true, "java/lang/Object", "toString", Types.NO_EFFECTS, Types.STRING, A)); + + setParentClassLoader(getClass().getClassLoader()); } static Expression createLiteral(FunctionValue value) { @@ -129,6 +147,9 @@ public class JavaModule extends ConcreteModule { result = new EApplyType(result, var); return result; } - + + public static void flush() { + INSTANCE = new JavaModule(); + } }