diff --git a/src/jit/nvm_x86_64.c b/src/jit/nvm_x86_64.c index 5ff5469f..a6e61f37 100644 --- a/src/jit/nvm_x86_64.c +++ b/src/jit/nvm_x86_64.c @@ -380,7 +380,8 @@ static OptRes opt(u32* bc0) { if (!isVar(s.v)) goto defIns; cact = 2; RM(s.p); TSADD(data, s.v.u); - TSSIZE(stk)-= SETM==*sbc? 2 : 1; + TSSIZE(stk)-= SETM==*sbc? 3 : 2; + TSADD(stk, SREF(bi_optOut, -1)); break; } case LSTO: case LSTM: { i32 len = *bc++; diff --git a/test/cases/syntax.bqn b/test/cases/syntax.bqn index 4cd2b6ca..bb2431bf 100644 --- a/test/cases/syntax.bqn +++ b/test/cases/syntax.bqn @@ -61,3 +61,11 @@ X←1‿2{a⇐𝕘-𝕗}3‿4 ⋄ ⟨a⟩←x ⋄ +´a %% 4 # arguments {x←𝕩⋄𝕩↩@⋄𝕩⋈x}-↕10 %% @⋈-↕10 + + +{𝕊: a←"ab" ⋄ ⟨(a⋈↩"c")∘"d", a⟩}¨ ↕4 %% 4⥊<⟨⟨"ab","c"⟩∘"d", ⟨"ab","c"⟩⟩ +{𝕊: a←"ab" ⋄ ⟨(a↩"c")∘"d", a⟩}¨ ↕4 %% 4⥊<⟨"c"∘"d", "c"⟩ +{𝕊: a←"ab" ⋄ ⟨(b←"c")∘"d", a, b⟩}¨ ↕4 %% 4⥊<⟨"c"∘"d", "ab", "c"⟩ +{𝕊: a←"ab" ⋄ ⟨(a⋈↩"c")‿"d", a⟩}¨ ↕4 %% 4⥊<⟨⟨"ab","c"⟩‿"d", ⟨"ab","c"⟩⟩ +{𝕊: a←"ab" ⋄ ⟨(a↩"c")‿"d", a⟩}¨ ↕4 %% 4⥊<⟨"c"‿"d", "c"⟩ +{𝕊: a←"ab" ⋄ ⟨(b←"c")‿"d", a, b⟩}¨ ↕4 %% 4⥊<⟨"c"‿"d", "ab", "c"⟩ \ No newline at end of file