diff --git a/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp b/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp index 6274b227eb7c..2b052e8ca5e2 100644 --- a/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp +++ b/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp @@ -21926,7 +21926,7 @@ IGNORE_CLANG_WARNINGS_END LValue maskedStructureID = structureID; if constexpr (structureHeapAddressSize < 4 * GB) maskedStructureID = m_out.bitAnd(structureID, m_out.constInt32(StructureID::structureIDMask)); - return m_out.add(m_out.constIntPtr(g_jscConfig.startOfStructureHeap), m_out.zeroExtPtr(maskedStructureID)); + return m_out.bitOr(m_out.constIntPtr(g_jscConfig.startOfStructureHeap), m_out.zeroExtPtr(maskedStructureID)); #endif } diff --git a/Source/JavaScriptCore/jit/AssemblyHelpers.cpp b/Source/JavaScriptCore/jit/AssemblyHelpers.cpp index 8591ff3f38a5..2a20648e2f43 100644 --- a/Source/JavaScriptCore/jit/AssemblyHelpers.cpp +++ b/Source/JavaScriptCore/jit/AssemblyHelpers.cpp @@ -442,11 +442,9 @@ void AssemblyHelpers::emitNonNullDecodeZeroExtendedStructureID(RegisterID source if constexpr (structureHeapAddressSize >= 4 * GB) { ASSERT(structureHeapAddressSize == 4 * GB); move(source, dest); - add64(TrustedImm64(g_jscConfig.startOfStructureHeap), dest); - } else { + } else and32(TrustedImm32(StructureID::structureIDMask), source, dest); - add64(TrustedImm64(g_jscConfig.startOfStructureHeap), dest); - } + or64(TrustedImm64(g_jscConfig.startOfStructureHeap), dest); #else // not CPU(ADDRESS64) move(source, dest); #endif