]> Nishi Git Mirror - gwion.git/commitdiff
:art: more clean
authorfennecdjay <fennecdjay@gmail.com>
Sat, 15 Oct 2022 19:41:15 +0000 (21:41 +0200)
committerfennecdjay <fennecdjay@gmail.com>
Sat, 15 Oct 2022 19:41:15 +0000 (21:41 +0200)
include/opcode.h
opcode.txt
src/vm/vm.c
src/vm/vm_code.c

index 26655c39bdd2576061cce43e04c9d088df6a4bde..7daf9908ff2bcb0a18507137e0cea36fe484db87 100644 (file)
@@ -6,7 +6,6 @@ enum {
   eRegPushImm2,
   eRegPushImm3,
   eRegPushImm4,
-  eRegPush2Imm,
   eRegPushMem,
   eRegPushMem2,
   eRegPushMem3,
@@ -225,7 +224,6 @@ enum {
 #define  RegPushImm2          (f_instr)eRegPushImm2
 #define  RegPushImm3          (f_instr)eRegPushImm3
 #define  RegPushImm4          (f_instr)eRegPushImm4
-#define  RegPush2Imm          (f_instr)eRegPush2Imm
 #define  RegPushMem           (f_instr)eRegPushMem
 #define  RegPushMem2          (f_instr)eRegPushMem2
 #define  RegPushMem3          (f_instr)eRegPushMem3
@@ -475,12 +473,6 @@ ANN static inline void dump_opcodes(const VM_Code code) {
         gw_out(" {-M}%-14"UINT_F"{0}", instr->m_val2);
         gw_out("\n");
         break;
-      case eRegPush2Imm:
-        gw_out("{Y}┃{0}{-}% 4lu{0}: RegPush2Imm ", j);
-        gw_out(" {-R}%-14p{0}", instr->m_val);
-        gw_out(" {-M}%-14"UINT_F"{0}", instr->m_val2);
-        gw_out("\n");
-        break;
       case eRegPushMem:
         gw_out("{Y}┃{0}{-}% 4lu{0}: RegPushMem  ", j);
         gw_out(" {-R}%-14"UINT_F"{0}", instr->m_val);
index 073470918e64c7d8038db6e53a164cb6e09f47c2..9cbb9db3bf1f9fc952d62de9953c3af649fb25ee 100644 (file)
@@ -3,7 +3,6 @@ RegPushImm~p~u
 RegPushImm2~f~u
 RegPushImm3~p~u
 RegPushImm4~p~u
-RegPush2Imm~p~u
 RegPushMem~u~u
 RegPushMem2~f~u
 RegPushMem3~u~u
index 9addd9acd355792fdf3f79ac123a86bbd8337afc..949254063ee11e47ac2e34d40d01dc2011ffeee1 100644 (file)
@@ -420,7 +420,7 @@ _Pragma(STRINGIFY(COMPILER diagnostic ignored UNINITIALIZED)
 __attribute__((hot)) void
 vm_prepare(const VM *vm, m_bit *prepare_code) { // lgtm [cpp/use-of-goto]
   static const void *dispatch[] = {
-      &&regsetimm, &&regpushimm, &&regpushfloat, &&regpushother, &&regpushaddr, &&regpushtwoimm,
+      &&regsetimm, &&regpushimm, &&regpushfloat, &&regpushother, &&regpushaddr,
       &&regpushmem, &&regpushmemfloat, &&regpushmemother, &&regpushmemaddr,
       &&regpushmemderef, &&pushnow, &&baseint, &&basefloat, &&baseother,
       &&baseaddr, &&regtoreg, &&regtoregother, &&regtoregother2, &&regtoregaddr, &&regtoregderef,
@@ -518,11 +518,6 @@ vm_prepare(const VM *vm, m_bit *prepare_code) { // lgtm [cpp/use-of-goto]
       *(m_uint **)reg = &VAL;
       reg += SZ_INT;
       DISPATCH()
-    regpushtwoimm:
-      *(m_uint *)reg = VAL;
-      *(m_uint *)(reg + SZ_INT)= VAL2;
-      reg += SZ_INT*2;
-      DISPATCH()
     regpushmem:
       *(m_uint *)reg = *(m_uint *)(mem + IVAL);
       reg += SZ_INT;
@@ -1281,7 +1276,7 @@ fflush(stdout);
 } else {
 
 static void *_dispatch[] = {
-      &&_regsetimm, &&_regpushimm, &&_regpushfloat, &&_regpushother, &&_regpushaddr, &&_regpushtwoimm,
+      &&_regsetimm, &&_regpushimm, &&_regpushfloat, &&_regpushother, &&_regpushaddr,
       &&_regpushmem, &&_regpushmemfloat, &&_regpushmemother, &&_regpushmemaddr,
       &&_regpushmemderef, &&_pushnow, &&_baseint, &&_basefloat, &&_baseother,
       &&_baseaddr, &&_regtoreg, &&_regtoregother, &&_regtoregother2, &&_regtoregaddr, &&_regtoregderef,
@@ -1342,7 +1337,6 @@ goto *_dispatch[*(m_bit*)prepare_code];
     PREPARE(regpushfloat);
     PREPARE(regpushother);
     PREPARE(regpushaddr);
-    PREPARE(regpushtwoimm);
     PREPARE(regpushmem);
     PREPARE(regpushmemfloat);
     PREPARE(regpushmemother);
index 940b9ae37316b9a0bf209c97f9164736a40ad831..e8602b8c333694d97320eef016f780d974426230 100644 (file)
@@ -103,13 +103,6 @@ ANN static m_bit *tobytecode(MemPool p, const VM_Code code) {
           instr->m_val = next->m_val;
           next->opcode = eNoOp;
         }
-      } else if (instr->opcode == eRegPushImm) {
-        const Instr next = (Instr)vector_at(v, i+1);
-        if (next->opcode == eRegPushImm) {
-          instr->opcode = eRegPush2Imm;
-          instr->m_val2 = next->m_val;
-          next->opcode = eNoOp;
-        }
       } else if (instr->opcode == eUnroll2) {
         const Instr  unroll     = (Instr)instr->m_val;
         const m_uint pc         = vector_find(v, (m_uint)unroll);