File 0185-Use-correct-mask-for-is_boolean-1-code.patch of Package erlang
From dad5ac25503a4d1411350844941973f935aee0f7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= <bjorn@erlang.org>
Date: Mon, 7 Nov 2022 04:59:02 +0100
Subject: [PATCH 5/5] Use correct mask for is_boolean/1 code
Use the correct mask _TAG_IMMED2_MASK. (Using _TAG_IMMED1_MASK
happens to work by sheer luck.)
---
erts/emulator/beam/jit/arm/instr_common.cpp | 2 +-
erts/emulator/beam/jit/x86/instr_common.cpp | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/erts/emulator/beam/jit/arm/instr_common.cpp b/erts/emulator/beam/jit/arm/instr_common.cpp
index 639545ec68..1ba846c4ce 100644
--- a/erts/emulator/beam/jit/arm/instr_common.cpp
+++ b/erts/emulator/beam/jit/arm/instr_common.cpp
@@ -848,7 +848,7 @@ void BeamModuleAssembler::emit_is_boolean(const ArgLabel &Fail,
ERTS_CT_ASSERT(am_true == make_atom(1));
auto src = load_source(Src, TMP1);
- a.and_(TMP1, src.reg, imm(~(am_true & ~_TAG_IMMED1_MASK)));
+ a.and_(TMP1, src.reg, imm(~(am_true & ~_TAG_IMMED2_MASK)));
a.cmp(TMP1, imm(am_false));
a.b_ne(resolve_beam_label(Fail, disp1MB));
}
diff --git a/erts/emulator/beam/jit/x86/instr_common.cpp b/erts/emulator/beam/jit/x86/instr_common.cpp
index 248afc9e14..360b77c5a9 100644
--- a/erts/emulator/beam/jit/x86/instr_common.cpp
+++ b/erts/emulator/beam/jit/x86/instr_common.cpp
@@ -903,7 +903,7 @@ void BeamModuleAssembler::emit_is_boolean(const ArgLabel &Fail,
mov_arg(ARG1, Src);
- a.and_(ARG1, imm(~(am_true & ~_TAG_IMMED1_MASK)));
+ a.and_(ARG1, imm(~(am_true & ~_TAG_IMMED2_MASK)));
a.cmp(ARG1, imm(am_false));
a.jne(resolve_beam_label(Fail));
}
--
2.35.3