]> Nishi Git Mirror - gwion.git/commitdiff
:art: Imprve Gack a bit
authorJérémie Astor <fennecdjay@gmail.com>
Sat, 12 Jun 2021 17:29:34 +0000 (19:29 +0200)
committerJérémie Astor <fennecdjay@gmail.com>
Sat, 12 Jun 2021 17:29:34 +0000 (19:29 +0200)
src/vm/gack.c
src/vm/vm.c

index dd49b76c5768792f35c95a5d3eeb1968bd213693..9bcae7ffdee1678f70291ad858c16567ba9d1424 100644 (file)
@@ -47,9 +47,10 @@ ANN2(2) int gw_asprintf(MemPool mp, char **str, const char *fmt, ...) {
 }
 
 ANN static void prepare_call(const VM_Shred shred, const m_uint offset) {
-  shred->mem += offset + SZ_INT + sizeof(struct frame_t);
-  register struct frame_t *frame = (struct frame_t*)(shred->mem - sizeof(struct frame_t));
-  frame->push = offset + SZ_INT + sizeof(struct frame_t);
+  const m_uint push = offset + SZ_INT + sizeof(struct frame_t);
+  shred->mem += push;
+  struct frame_t *frame = (struct frame_t*)(shred->mem - sizeof(struct frame_t));
+  frame->push = push;
   frame->code = shred->code;
   frame->pc   = shred->pc;
   shred->pc = 0;
index ce3710bbd8428d6489bf4c859ea7a968b0c874e5..37fb33e7344130934bd179272778e4e5af55fe6d 100644 (file)
@@ -352,9 +352,11 @@ _Pragma(STRINGIFY(COMPILER diagnostic ignored UNINITIALIZED)
 
 #define VMSZ (SZ_INT > SZ_FLOAT ? SZ_INT : SZ_FLOAT)
 
-#define VAL  (*(m_uint*)(byte + VMSZ))
-#define FVAL (*(m_float*)(byte + VMSZ))
-#define VAL2 (*(m_uint*)(byte + SZ_INT + SZ_INT))
+#define VAL   (*(m_uint*)(byte + VMSZ))
+#define FVAL  (*(m_float*)(byte + VMSZ))
+#define VAL2  (*(m_uint*)(byte + SZ_INT + SZ_INT))
+#define UVAL  (*(uint16_t*)(byte + SZ_INT + SZ_INT))
+#define UVAL2 (*(uint16_t*)(byte + SZ_INT + SZ_INT + sizeof(uint16_t)))
 
 #define BRANCH_DISPATCH(check) \
   if(check) SET_BYTE(VAL);\