diff options
Diffstat (limited to 'new-luxc/source/luxc/generator/host')
-rw-r--r-- | new-luxc/source/luxc/generator/host/jvm/inst.lux | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/new-luxc/source/luxc/generator/host/jvm/inst.lux b/new-luxc/source/luxc/generator/host/jvm/inst.lux index efc66f130..d5df6a9f7 100644 --- a/new-luxc/source/luxc/generator/host/jvm/inst.lux +++ b/new-luxc/source/luxc/generator/host/jvm/inst.lux @@ -28,6 +28,7 @@ L2D L2F L2I) <primitive> (declare T_BOOLEAN T_CHAR T_FLOAT T_DOUBLE T_BYTE T_SHORT T_INT T_LONG) + <class> (declare CHECKCAST NEW INSTANCEOF) <stack> (declare DUP DUP2 DUP2_X1 DUP2_X2 POP POP2 SWAP) @@ -51,6 +52,7 @@ FALOAD FASTORE DALOAD DASTORE CALOAD CASTORE) + <concurrency> (declare MONITORENTER MONITOREXIT) <return> (declare RETURN IRETURN LRETURN DRETURN ARETURN)] (host;import org.objectweb.asm.Opcodes (#static NOP int) @@ -58,8 +60,7 @@ <conversion> <primitive> - (#static CHECKCAST int) - (#static NEW int) + <class> <stack> <jump> @@ -84,6 +85,8 @@ (#static ATHROW int) + <concurrency> + <return> )) @@ -196,6 +199,9 @@ ## Exceptions [ATHROW] + ## Concurrency + [MONITORENTER] [MONITOREXIT] + ## Return [RETURN] [IRETURN] [LRETURN] [DRETURN] [ARETURN] ) @@ -232,9 +238,10 @@ (do-to visitor (MethodVisitor.visitTypeInsn [<inst> ($t;binary-name class)]))))] - [CHECKCAST Opcodes.CHECKCAST] - [NEW Opcodes.NEW] - [ANEWARRAY Opcodes.ANEWARRAY] + [CHECKCAST Opcodes.CHECKCAST] + [NEW Opcodes.NEW] + [INSTANCEOF Opcodes.INSTANCEOF] + [ANEWARRAY Opcodes.ANEWARRAY] ) (def: #export (NEWARRAY type) |