]> Nishi Git Mirror - gwion.git/commitdiff
:art: Improve vm
authorJérémie Astor <astor.jeremie@wanadoo.fr>
Fri, 6 Dec 2019 20:01:26 +0000 (21:01 +0100)
committerJérémie Astor <astor.jeremie@wanadoo.fr>
Fri, 6 Dec 2019 20:01:26 +0000 (21:01 +0100)
src/vm/vm.c

index 19a806541a60f8f3369d8ecd1b8e59bab4d765bd..e61cb85aeaa04a8da7dcd3290195ee9cc699272d 100644 (file)
@@ -339,6 +339,7 @@ ANN void vm_run(const VM* vm) { // lgtm [cpp/use-of-goto]
   const Shreduler s = vm->shreduler;
   register VM_Shred shred;
   register m_bit next;
+
   while((shred = shreduler_get(s))) {
     register VM_Code code = shred->code;
     register m_bit* bytecode = code->bytecode;
@@ -659,8 +660,10 @@ funcmemberend:
   }
   PC_DISPATCH(shred->pc)
 sporkini:
-  if(!(a.child = (VAL2 ? init_spork_shred : init_fork_shred)(shred, (VM_Code)VAL)))
-    goto eoc;
+  if(!(a.child = (VAL2 ? init_spork_shred : init_fork_shred)(shred, (VM_Code)VAL))) {
+    exception(shred, "[SporkAbortedException]");
+    continue;
+  }
   DISPATCH()
 sporkfunc:
 //  LOOP_OPTIM