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";
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);
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));
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,
"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) {
result = new EApplyType(result, var);
return result;
}
-
+
+ public static void flush() {
+ INSTANCE = new JavaModule();
+ }
}