Package org.eclipse.m2m.atl.emftvm.jit
Class CodeBlockJIT
java.lang.Object
org.eclipse.m2m.atl.emftvm.jit.CodeBlockJIT
- All Implemented Interfaces:
org.objectweb.asm.Opcodes
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
Map
of class names to generated bytecode.protected final org.eclipse.m2m.atl.emftvm.jit.CodeBlockJIT.JITClassLoader
InternalClassLoader
instance for loading the generated classes.protected final ExecEnv
The execution environment to JIT for.Fields inherited from interface org.objectweb.asm.Opcodes
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_RECORD, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM10_EXPERIMENTAL, ASM4, ASM5, ASM6, ASM7, ASM8, ASM9, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SOURCE_DEPRECATED, SOURCE_MASK, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V9
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
cleanup()
Cleans up all generated bytecode.protected static void
generateCheckMonitor
(org.objectweb.asm.MethodVisitor mv, int pc) Generates bytecode for checking the VM monitorprotected static void
generateConstructor
(org.objectweb.asm.MethodVisitor init, String className) Generates a constructor for theJITCodeBlock
.protected void
generateExecute
(org.objectweb.asm.MethodVisitor execute, CodeBlock cb, String className) Generates an execute method for theJITCodeBlock
.getEnv()
The execution environment to JIT for.protected String
Returns the next class name to use for JIT output.protected byte[]
internalJit
(CodeBlock cb, String className) boolean
Returns whether or not to dump the generated bytecode to a class file.JIT-compilescb
into a natively implementedCodeBlock
.void
setDumpBytecode
(boolean dumpBytecode) Sets whether or not to dump the generated bytecode to a class file.
-
Field Details
-
BASE_PACKAGE
- See Also:
-
codeBlocks
-
classLoader
protected final org.eclipse.m2m.atl.emftvm.jit.CodeBlockJIT.JITClassLoader classLoaderInternalClassLoader
instance for loading the generated classes. -
env
The execution environment to JIT for. -
byteCode
Map
of class names to generated bytecode.
-
-
Constructor Details
-
CodeBlockJIT
Creates a newCodeBlockJIT
.- Parameters:
env
- the execution environment to JIT for
-
-
Method Details
-
jit
public JITCodeBlock jit(CodeBlock cb) throws ClassNotFoundException, IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException JIT-compilescb
into a natively implementedCodeBlock
.- Parameters:
cb
- the regular EMFTVM bytecodeCodeBlock
- Returns:
- an instance of the JIT-generated
CodeBlock
- Throws:
ClassNotFoundException
IllegalArgumentException
SecurityException
InstantiationException
IllegalAccessException
InvocationTargetException
NoSuchMethodException
-
getNextClassName
Returns the next class name to use for JIT output.- Returns:
- the next class name to use for JIT output
-
internalJit
- Parameters:
cb
- theCodeBlock
to JIT-compileclassName
- the class name for the generated class- Returns:
- the generated class data
-
generateConstructor
Generates a constructor for theJITCodeBlock
.- Parameters:
init
- the constructor visitorclassName
- the name of the generated class
-
generateExecute
protected void generateExecute(org.objectweb.asm.MethodVisitor execute, CodeBlock cb, String className) Generates an execute method for theJITCodeBlock
.- Parameters:
execute
- the execute method visitorcb
- theCodeBlock
to JIT-compileclassName
- the name of the generated class
-
generateCheckMonitor
protected static void generateCheckMonitor(org.objectweb.asm.MethodVisitor mv, int pc) Generates bytecode for checking the VM monitor- Parameters:
mv
- the method visitor to generate code forpc
- the current program counter
-
getEnv
The execution environment to JIT for.- Returns:
- the env
-
isDumpBytecode
public boolean isDumpBytecode()Returns whether or not to dump the generated bytecode to a class file.- Returns:
- whether or not to dump the generated bytecode to a class file
-
setDumpBytecode
public void setDumpBytecode(boolean dumpBytecode) Sets whether or not to dump the generated bytecode to a class file.- Parameters:
dumpBytecode
- whether or not to dump the generated bytecode to a class file
-
cleanup
public void cleanup()Cleans up all generated bytecode.
-