diff --git a/basis/compiler/cfg/stack-frame/stack-frame.factor b/basis/compiler/cfg/stack-frame/stack-frame.factor index aa8506a01f..8d79a85b8f 100644 --- a/basis/compiler/cfg/stack-frame/stack-frame.factor +++ b/basis/compiler/cfg/stack-frame/stack-frame.factor @@ -22,7 +22,7 @@ M: ##stack-frame compute-stack-frame* stack-frame>> stack-frame [ max-stack-frame ] change ; M: ##call compute-stack-frame* - drop frame-required? on ; + word>> sub-primitive>> [ frame-required? on ] unless ; M: _gc compute-stack-frame* drop frame-required? on ; diff --git a/basis/compiler/codegen/codegen.factor b/basis/compiler/codegen/codegen.factor index 18e923bbc2..53329f4d50 100644 --- a/basis/compiler/codegen/codegen.factor +++ b/basis/compiler/codegen/codegen.factor @@ -82,7 +82,9 @@ M: ##inc-d generate-insn n>> %inc-d ; M: ##inc-r generate-insn n>> %inc-r ; -M: ##call generate-insn word>> [ add-call ] [ %call ] bi ; +M: ##call generate-insn + word>> dup sub-primitive>> + [ first % ] [ [ add-call ] [ %call ] bi ] ?if ; M: ##jump generate-insn word>> [ add-call ] [ %jump-label ] bi ;