]> Nishi Git Mirror - gwion.git/commitdiff
:art: Improve vm. Yet again
authorfennecdjay <astor.jeremie@wanadoo.fr>
Fri, 7 Jun 2019 22:12:20 +0000 (00:12 +0200)
committerfennecdjay <astor.jeremie@wanadoo.fr>
Fri, 7 Jun 2019 22:12:20 +0000 (00:12 +0200)
include/opcode.h
opcode.txt
src/emit/emit.c
src/vm/vm.c

index 7405cd8a73354474a617df58e03ad5046c6afa9f..17c3343f0e2b61a6cefa9427e6c6570cb451b8cb 100644 (file)
@@ -25,7 +25,6 @@ enum {
   eAllocWord,
   eAllocWord2,
   eAllocWord3,
-  eAllocWord4,
   eint_plus,
   eint_minus,
   eint_mul,
@@ -199,7 +198,6 @@ enum {
 #define  AllocWord           (f_instr)eAllocWord
 #define  AllocWord2          (f_instr)eAllocWord2
 #define  AllocWord3          (f_instr)eAllocWord3
-#define  AllocWord4          (f_instr)eAllocWord4
 #define  int_plus            (f_instr)eint_plus
 #define  int_minus           (f_instr)eint_minus
 #define  int_mul             (f_instr)eint_mul
index 0318bd4bb9d5faa00943f80ee19edf71167efde7..2ce931361933e580a4993e123a79f18482911a6f 100644 (file)
@@ -22,7 +22,6 @@ Goto
 AllocWord
 AllocWord2
 AllocWord3
-AllocWord4
 int_plus
 int_minus
 int_mul
index db82326f9ad2b7fdc79f3cb22182eb078d89c631..6683d9e7a7346ff9bc925477f726b4638b18848f 100644 (file)
@@ -279,7 +279,7 @@ static const f_instr regpushbase[] = { RegPushBase, RegPushBase2, RegPushBase3,
 static const f_instr dotstatic[]  = { DotStatic, DotStatic2, DotStatic3, RegPushImm };
 static const f_instr dotmember[]  = { DotMember, DotMember2, DotMember3, DotMember4 };
 static const f_instr allocmember[]  = { RegPushImm, RegPushImm2, RegPushImm3, AllocMember4 };
-static const f_instr allocword[]  = { AllocWord, AllocWord2, AllocWord3, AllocWord4 };
+static const f_instr allocword[]  = { AllocWord, AllocWord2, AllocWord3, RegPushMem4 };
 
 ANN static inline Exp this_exp(const Emitter emit, const Type t, const loc_t pos) {
   const Exp exp = new_exp_prim_id(emit->gwion->mp, insert_symbol("this"),
index 7a80118234ab8e2d3dbfd45a2e72fa746e8cef16..7e9d13ccf4f97b40c4a2ef46785a6501ece4fe0b 100644 (file)
@@ -245,7 +245,7 @@ ANN void vm_run(const VM* vm) { // lgtm [cpp/use-of-goto]
     &&regpushme, &&regpushmaybe,
     &&funcreturn,
     &&_goto,
-    &&allocint, &&allocfloat, &&allocother, &&allocaddr,
+    &&allocint, &&allocfloat, &&allocother,
     &&intplus, &&intminus, && intmul, &&intdiv, &&intmod,
     // int relationnal
     &&inteq, &&intne, &&intand, &&intor,
@@ -401,10 +401,7 @@ allocother:
     *(m_uint*)(reg+i) = (*(m_uint*)(mem+instr->m_val+i) = 0);
   reg += instr->m_val2;
   DISPATCH()
-allocaddr:
-  *(m_bit**)reg = mem + instr->m_val;
-  reg += SZ_INT;
-  DISPATCH()
+
 intplus:  INT_OP(+)
 intminus: INT_OP(-)
 intmul:   INT_OP(*)
@@ -539,7 +536,6 @@ ftoi:
   reg -= SZ_FLOAT - SZ_INT;
   *(m_int*)(reg-SZ_INT) = (m_int)*(m_float*)(reg-SZ_INT);
   DISPATCH()
-
 timeadv:
   reg -= SZ_FLOAT;
   shredule(s, shred, *(m_float*)(reg-SZ_FLOAT));