]> Nishi Git Mirror - gwion.git/commitdiff
:art: Update vm
authorJérémie Astor <astor.jeremie@wanadoo.fr>
Mon, 14 Sep 2020 11:14:47 +0000 (13:14 +0200)
committerJérémie Astor <astor.jeremie@wanadoo.fr>
Mon, 14 Sep 2020 11:14:47 +0000 (13:14 +0200)
src/vm/vm.c

index ddecb99eab5aa911cbbfe12e3b603d9b5cf73b4f..aa7cc19cce6d7c287d5ad2f46e195661defae59a 100644 (file)
@@ -726,9 +726,9 @@ arraytop:
   else
     goto _goto;
 arrayaccess:
-  a.obj = *(M_Object*)(reg-VAL2);
 {
   register const m_int idx = *(m_int*)(reg + VAL);
+  a.obj = *(M_Object*)(reg-VAL2);
   if(idx < 0 || (m_uint)idx >= m_vector_size(ARRAY(a.obj))) {
     gw_err(_("  ... at index [%" INT_F "]\n"), idx);
     gw_err(_("  ... at dimension [%" INT_F "]\n"), VAL);
@@ -739,10 +739,14 @@ arrayaccess:
   DISPATCH()
 }
 arrayget:
+PRAGMA_PUSH()
   m_vector_get(ARRAY(a.obj), *(m_int*)(reg + VAL), (reg + (m_int)VAL2));
+PRAGMA_POP()
   DISPATCH()
 arrayaddr:
+PRAGMA_PUSH()
   *(m_bit**)(reg + (m_int)VAL2) = m_vector_addr(ARRAY(a.obj), *(m_int*)(reg + VAL));
+PRAGMA_POP()
   DISPATCH()
 arrayvalid:
 // are we sure it is the array ?