summaryrefslogtreecommitdiff
path: root/erts/emulator/beam
diff options
context:
space:
mode:
authorBjörn Gustavsson <bjorn@erlang.org>2023-02-10 06:55:06 +0100
committerBjörn Gustavsson <bjorn@erlang.org>2023-02-10 07:26:50 +0100
commitd0c9496c494c407b2076ce4e1e514346640cad85 (patch)
treec2a36905d0b594891107313eeacff379019ff5cf /erts/emulator/beam
parentf0117c579bb8cf90b4000db10971f0557a4fde52 (diff)
downloaderlang-d0c9496c494c407b2076ce4e1e514346640cad85.tar.gz
AArch64 JIT: Fix crash in bxor/2
With the AArch64 (AMD64) JIT, calling `bxor` with non-integer operands in a guard would crash the runtime system.
Diffstat (limited to 'erts/emulator/beam')
-rw-r--r--erts/emulator/beam/jit/arm/instr_arith.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/erts/emulator/beam/jit/arm/instr_arith.cpp b/erts/emulator/beam/jit/arm/instr_arith.cpp
index 95d1ab0019..ccd7721dca 100644
--- a/erts/emulator/beam/jit/arm/instr_arith.cpp
+++ b/erts/emulator/beam/jit/arm/instr_arith.cpp
@@ -993,6 +993,7 @@ void BeamModuleAssembler::emit_i_bxor(const ArgLabel &Fail,
if (Fail.get() != 0) {
emit_enter_runtime(Live.get());
+ a.mov(ARG1, c_p);
runtime_call<3>(erts_bxor);
emit_leave_runtime(Live.get());
emit_branch_if_not_value(ARG1, resolve_beam_label(Fail, dispUnknown));