aboutsummaryrefslogtreecommitdiff
path: root/new-luxc/source/luxc/generator/host/jvm
diff options
context:
space:
mode:
authorEduardo Julian2017-10-14 15:14:02 -0400
committerEduardo Julian2017-10-14 15:14:02 -0400
commit88949be34c4e0fcab3902537cad01e060d7ce2c8 (patch)
treef1877ede895a7d78b8c08aac3374be7107f3ab67 /new-luxc/source/luxc/generator/host/jvm
parent4b672d27a1a1a79643c43cf06917072cc97c1289 (diff)
- Compilation for object-based procedures.
Diffstat (limited to 'new-luxc/source/luxc/generator/host/jvm')
-rw-r--r--new-luxc/source/luxc/generator/host/jvm/inst.lux17
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)