]> Nishi Git Mirror - gwion.git/commitdiff
:art: Improve spork
authorfennecdjay <astor.jeremie@wanadoo.fr>
Fri, 11 Oct 2019 00:05:32 +0000 (02:05 +0200)
committerfennecdjay <astor.jeremie@wanadoo.fr>
Fri, 11 Oct 2019 00:05:32 +0000 (02:05 +0200)
src/emit/emit.c

index f15dc145b4173a375a69148be054b9341801d3b9..efd233244af801f2cfa7fb92befcef5b40098c14 100644 (file)
@@ -1064,17 +1064,13 @@ ANN Instr emit_exp_spork(const Emitter emit, const Exp_Unary* unary) {
   ini->m_val = (m_uint)code;
   ini->m_val2 = is_spork;
   if(!f) {
-    if(!is_spork) {
-      const Instr push = emit_add_instr(emit, RegPush);
-      push->m_val = SZ_INT;
+    if(is_spork) {
+      const Instr spork = emit_add_instr(emit, SporkExp);
+      spork->m_val = emit->code->stack_depth;
+    } else {
+      const Instr spork = emit_add_instr(emit, ForkEnd);
+      spork->m_val = exp_self(unary)->emit_var;
     }
-if(is_spork) {
-  const Instr spork = emit_add_instr(emit, is_spork ? SporkExp : ForkEnd);
-  spork->m_val = emit->code->stack_depth;
-} else {
-    const Instr spork = emit_add_instr(emit, is_spork ? SporkExp : ForkEnd);
-    spork->m_val = exp_self(unary)->emit_var;
-}
   } else {
     if(GET_FLAG(f, member) && is_fptr(emit->gwion, f->value_ref->type)) {
       const m_uint depth = f->def->stack_depth;