diff options
Diffstat (limited to 'erts/emulator/beam/jit/arm/instr_bs.cpp')
-rw-r--r-- | erts/emulator/beam/jit/arm/instr_bs.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/erts/emulator/beam/jit/arm/instr_bs.cpp b/erts/emulator/beam/jit/arm/instr_bs.cpp index 0b2ae2100d..3de995fcd5 100644 --- a/erts/emulator/beam/jit/arm/instr_bs.cpp +++ b/erts/emulator/beam/jit/arm/instr_bs.cpp @@ -1361,9 +1361,11 @@ void BeamGlobalAssembler::emit_bs_create_bin_error_shared() { emit_enter_runtime<Update::eStack | Update::eHeap>(0); + /* ARG3 is already set by the caller */ a.mov(ARG2, ARG4); + a.mov(ARG4, ARG1); a.mov(ARG1, c_p); - runtime_call<3>(beam_jit_bs_construct_fail_info); + runtime_call<4>(beam_jit_bs_construct_fail_info); emit_leave_runtime<Update::eStack | Update::eHeap>(0); @@ -1529,13 +1531,12 @@ void BeamModuleAssembler::emit_i_bs_create_bin(const ArgVal &Fail, a.bind(error); { - comment("handle error"); - /* + * ARG1 = optional bad size value; valid if BSC_VALUE_ARG1 is set in ARG4 + * ARG3 = optional bad size value; valid if BSC_VALUE_ARG3 is set in ARG4 * ARG4 = packed error information - * ARG3 = optional bad size value; only valid if - * BSC_REASON_DEPENDS is set in ARG4 */ + comment("handle error"); fragment_call(ga->get_bs_create_bin_error_shared()); last_error_offset = getOffset() & -8; } |