summaryrefslogtreecommitdiff
path: root/erts/emulator/beam/jit/arm/instr_bs.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'erts/emulator/beam/jit/arm/instr_bs.cpp')
-rw-r--r--erts/emulator/beam/jit/arm/instr_bs.cpp11
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;
}