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

openSUSE Build Service is sponsored by