Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (283969 => 283970)
--- trunk/Source/_javascript_Core/ChangeLog 2021-10-12 05:05:01 UTC (rev 283969)
+++ trunk/Source/_javascript_Core/ChangeLog 2021-10-12 06:32:55 UTC (rev 283970)
@@ -1,5 +1,176 @@
2021-10-11 Saam Barati <[email protected]>
+ Remove ImplicitAddress
+ https://bugs.webkit.org/show_bug.cgi?id=230820
+ <rdar://problem/83826318>
+
+ Reviewed by Yusuke Suzuki.
+
+ Because we rely on implicit conversion from RegisterID to int values,
+ some compilers (aka MSVC) might convert a constant RegisterID that's passed in
+ to nullptr instead of calling the implicit constructor in ImplicitAddress.
+
+ For example, I got bit by this when I had code that did:
+ loadPtr(regT0, xyz)
+
+ This called the loadPtr(void*, RegisterID) function with nullptr passed as
+ the first argument instead of the loadPtr(ImplicitAddress, RegisterID)
+ function.
+
+ Let's avoid any such problems in the future by just not using ImplicitAddress.
+
+ * assembler/AbstractMacroAssembler.h:
+ (JSC::AbstractMacroAssembler::ImplicitAddress::ImplicitAddress): Deleted.
+ * assembler/MacroAssembler.h:
+ (JSC::MacroAssembler::pushToSave):
+ (JSC::MacroAssembler::popToRestore):
+ (JSC::MacroAssembler::loadPtr):
+ (JSC::MacroAssembler::storePtr):
+ * assembler/MacroAssemblerARM64.h:
+ (JSC::MacroAssemblerARM64::load64):
+ (JSC::MacroAssemblerARM64::load32):
+ (JSC::MacroAssemblerARM64::load16):
+ (JSC::MacroAssemblerARM64::load16Unaligned):
+ (JSC::MacroAssemblerARM64::load16SignedExtendTo32):
+ (JSC::MacroAssemblerARM64::load8):
+ (JSC::MacroAssemblerARM64::load8SignedExtendTo32):
+ (JSC::MacroAssemblerARM64::store64):
+ (JSC::MacroAssemblerARM64::store32):
+ (JSC::MacroAssemblerARM64::store16):
+ (JSC::MacroAssemblerARM64::store8):
+ (JSC::MacroAssemblerARM64::loadDouble):
+ (JSC::MacroAssemblerARM64::loadFloat):
+ (JSC::MacroAssemblerARM64::storeDouble):
+ (JSC::MacroAssemblerARM64::storeFloat):
+ (JSC::MacroAssemblerARM64::pushToSaveImmediateWithoutTouchingRegisters):
+ (JSC::MacroAssemblerARM64::popToRestore):
+ (JSC::MacroAssemblerARM64::pushToSave):
+ (JSC::MacroAssemblerARM64::storePtrWithPatch):
+ (JSC::MacroAssemblerARM64::loadAcq8SignedExtendTo32):
+ (JSC::MacroAssemblerARM64::loadAcq8):
+ (JSC::MacroAssemblerARM64::storeRel8):
+ (JSC::MacroAssemblerARM64::loadAcq16SignedExtendTo32):
+ (JSC::MacroAssemblerARM64::loadAcq16):
+ (JSC::MacroAssemblerARM64::storeRel16):
+ (JSC::MacroAssemblerARM64::loadAcq32):
+ (JSC::MacroAssemblerARM64::loadAcq64):
+ (JSC::MacroAssemblerARM64::storeRel32):
+ (JSC::MacroAssemblerARM64::storeRel64):
+ (JSC::MacroAssemblerARM64::loadLink8):
+ (JSC::MacroAssemblerARM64::loadLinkAcq8):
+ (JSC::MacroAssemblerARM64::storeCond8):
+ (JSC::MacroAssemblerARM64::storeCondRel8):
+ (JSC::MacroAssemblerARM64::loadLink16):
+ (JSC::MacroAssemblerARM64::loadLinkAcq16):
+ (JSC::MacroAssemblerARM64::storeCond16):
+ (JSC::MacroAssemblerARM64::storeCondRel16):
+ (JSC::MacroAssemblerARM64::loadLink32):
+ (JSC::MacroAssemblerARM64::loadLinkAcq32):
+ (JSC::MacroAssemblerARM64::storeCond32):
+ (JSC::MacroAssemblerARM64::storeCondRel32):
+ (JSC::MacroAssemblerARM64::loadLink64):
+ (JSC::MacroAssemblerARM64::loadLinkAcq64):
+ (JSC::MacroAssemblerARM64::storeCond64):
+ (JSC::MacroAssemblerARM64::storeCondRel64):
+ (JSC::MacroAssemblerARM64::extractSimpleAddress):
+ * assembler/MacroAssemblerARM64E.h:
+ (JSC::MacroAssemblerARM64E::atomicXchgAdd8):
+ (JSC::MacroAssemblerARM64E::atomicXchgAdd16):
+ (JSC::MacroAssemblerARM64E::atomicXchgAdd32):
+ (JSC::MacroAssemblerARM64E::atomicXchgAdd64):
+ (JSC::MacroAssemblerARM64E::atomicXchgXor8):
+ (JSC::MacroAssemblerARM64E::atomicXchgXor16):
+ (JSC::MacroAssemblerARM64E::atomicXchgXor32):
+ (JSC::MacroAssemblerARM64E::atomicXchgXor64):
+ (JSC::MacroAssemblerARM64E::atomicXchgOr8):
+ (JSC::MacroAssemblerARM64E::atomicXchgOr16):
+ (JSC::MacroAssemblerARM64E::atomicXchgOr32):
+ (JSC::MacroAssemblerARM64E::atomicXchgOr64):
+ (JSC::MacroAssemblerARM64E::atomicXchgClear8):
+ (JSC::MacroAssemblerARM64E::atomicXchgClear16):
+ (JSC::MacroAssemblerARM64E::atomicXchgClear32):
+ (JSC::MacroAssemblerARM64E::atomicXchgClear64):
+ (JSC::MacroAssemblerARM64E::atomicXchg8):
+ (JSC::MacroAssemblerARM64E::atomicXchg16):
+ (JSC::MacroAssemblerARM64E::atomicXchg32):
+ (JSC::MacroAssemblerARM64E::atomicXchg64):
+ (JSC::MacroAssemblerARM64E::atomicStrongCAS8):
+ (JSC::MacroAssemblerARM64E::atomicStrongCAS16):
+ (JSC::MacroAssemblerARM64E::atomicStrongCAS32):
+ (JSC::MacroAssemblerARM64E::atomicStrongCAS64):
+ * assembler/MacroAssemblerARMv7.h:
+ (JSC::MacroAssemblerARMv7::or8):
+ (JSC::MacroAssemblerARMv7::or16):
+ (JSC::MacroAssemblerARMv7::or32):
+ (JSC::MacroAssemblerARMv7::load32):
+ (JSC::MacroAssemblerARMv7::load8):
+ (JSC::MacroAssemblerARMv7::load8SignedExtendTo32):
+ (JSC::MacroAssemblerARMv7::load16):
+ (JSC::MacroAssemblerARMv7::load16SignedExtendTo32):
+ (JSC::MacroAssemblerARMv7::store32):
+ (JSC::MacroAssemblerARMv7::store16):
+ (JSC::MacroAssemblerARMv7::loadDouble):
+ (JSC::MacroAssemblerARMv7::loadFloat):
+ (JSC::MacroAssemblerARMv7::storeDouble):
+ (JSC::MacroAssemblerARMv7::storeFloat):
+ (JSC::MacroAssemblerARMv7::storePtrWithPatch):
+ * assembler/MacroAssemblerMIPS.h:
+ (JSC::MacroAssemblerMIPS::load8):
+ (JSC::MacroAssemblerMIPS::load8SignedExtendTo32):
+ (JSC::MacroAssemblerMIPS::load32):
+ (JSC::MacroAssemblerMIPS::load16):
+ (JSC::MacroAssemblerMIPS::store8):
+ (JSC::MacroAssemblerMIPS::store16):
+ (JSC::MacroAssemblerMIPS::store32):
+ (JSC::MacroAssemblerMIPS::storePtrWithPatch):
+ (JSC::MacroAssemblerMIPS::loadFloat):
+ (JSC::MacroAssemblerMIPS::loadDouble):
+ (JSC::MacroAssemblerMIPS::storeFloat):
+ (JSC::MacroAssemblerMIPS::storeDouble):
+ * assembler/MacroAssemblerX86Common.h:
+ (JSC::MacroAssemblerX86Common::load32):
+ (JSC::MacroAssemblerX86Common::load16Unaligned):
+ (JSC::MacroAssemblerX86Common::load8):
+ (JSC::MacroAssemblerX86Common::load8SignedExtendTo32):
+ (JSC::MacroAssemblerX86Common::load16):
+ (JSC::MacroAssemblerX86Common::store32):
+ (JSC::MacroAssemblerX86Common::store16):
+ (JSC::MacroAssemblerX86Common::loadDouble):
+ (JSC::MacroAssemblerX86Common::loadFloat):
+ (JSC::MacroAssemblerX86Common::storeDouble):
+ (JSC::MacroAssemblerX86Common::storeFloat):
+ * assembler/MacroAssemblerX86_64.h:
+ (JSC::MacroAssemblerX86_64::load8):
+ (JSC::MacroAssemblerX86_64::load32):
+ (JSC::MacroAssemblerX86_64::store32):
+ (JSC::MacroAssemblerX86_64::load64):
+ (JSC::MacroAssemblerX86_64::store64):
+ (JSC::MacroAssemblerX86_64::storePtrWithPatch):
+ * assembler/testmasm.cpp:
+ (JSC::testBranchTruncateDoubleToInt32):
+ (JSC::testLoadPrePostIndex32):
+ (JSC::testLoadPrePostIndex64):
+ * dfg/DFGSpeculativeJIT.cpp:
+ (JSC::DFG::SpeculativeJIT::compileStringSlice):
+ (JSC::DFG::SpeculativeJIT::compileGetByValOnString):
+ (JSC::DFG::SpeculativeJIT::compileClearCatchLocals):
+ * ftl/FTLLocation.cpp:
+ (JSC::FTL::Location::restoreInto const):
+ * ftl/FTLThunks.cpp:
+ (JSC::FTL::genericGenerationThunkGenerator):
+ * jit/AssemblyHelpers.cpp:
+ (JSC::AssemblyHelpers::debugCall):
+ (JSC::AssemblyHelpers::sanitizeStackInline):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::emitGetVarFromIndirectPointer):
+ * jit/ThunkGenerators.cpp:
+ (JSC::arityFixupGenerator):
+ * wasm/WasmBinding.cpp:
+ (JSC::Wasm::wasmToWasm):
+ * yarr/YarrJIT.cpp:
+
+2021-10-11 Saam Barati <[email protected]>
+
Share more code that uses ScratchRegisterAllocator in the ICs
https://bugs.webkit.org/show_bug.cgi?id=231125
<rdar://problem/84066374>
Modified: trunk/Source/_javascript_Core/assembler/AbstractMacroAssembler.h (283969 => 283970)
--- trunk/Source/_javascript_Core/assembler/AbstractMacroAssembler.h 2021-10-12 05:05:01 UTC (rev 283969)
+++ trunk/Source/_javascript_Core/assembler/AbstractMacroAssembler.h 2021-10-12 06:32:55 UTC (rev 283970)
@@ -179,39 +179,6 @@
intptr_t offset;
};
- // ImplicitAddress:
- //
- // This class is used for explicit 'load' and 'store' operations
- // (as opposed to situations in which a memory operand is provided
- // to a generic operation, such as an integer arithmetic instruction).
- //
- // In the case of a load (or store) operation we want to permit
- // addresses to be implicitly constructed, e.g. the two calls:
- //
- // load32(Address(addrReg), destReg);
- // load32(addrReg, destReg);
- //
- // Are equivalent, and the explicit wrapping of the Address in the former
- // is unnecessary.
- struct ImplicitAddress {
- ImplicitAddress(RegisterID base)
- : base(base)
- , offset(0)
- {
- ASSERT(base != RegisterID::InvalidGPRReg);
- }
-
- ImplicitAddress(Address address)
- : base(address.base)
- , offset(address.offset)
- {
- ASSERT(base != RegisterID::InvalidGPRReg);
- }
-
- RegisterID base;
- int32_t offset;
- };
-
// BaseIndex:
//
// Describes a complex addressing mode.
Modified: trunk/Source/_javascript_Core/assembler/MacroAssembler.h (283969 => 283970)
--- trunk/Source/_javascript_Core/assembler/MacroAssembler.h 2021-10-12 05:05:01 UTC (rev 283969)
+++ trunk/Source/_javascript_Core/assembler/MacroAssembler.h 2021-10-12 06:32:55 UTC (rev 283970)
@@ -329,11 +329,11 @@
void pushToSave(FPRegisterID src)
{
subPtr(TrustedImm32(sizeof(double)), stackPointerRegister);
- storeDouble(src, stackPointerRegister);
+ storeDouble(src, Address(stackPointerRegister));
}
void popToRestore(FPRegisterID dest)
{
- loadDouble(stackPointerRegister, dest);
+ loadDouble(Address(stackPointerRegister), dest);
addPtr(TrustedImm32(sizeof(double)), stackPointerRegister);
}
@@ -702,7 +702,7 @@
xor32(src, dest);
}
- void loadPtr(ImplicitAddress address, RegisterID dest)
+ void loadPtr(Address address, RegisterID dest)
{
load32(address, dest);
}
@@ -752,7 +752,7 @@
compare32(cond, left, right, dest);
}
- void storePtr(RegisterID src, ImplicitAddress address)
+ void storePtr(RegisterID src, Address address)
{
store32(src, address);
}
@@ -767,7 +767,7 @@
store32(src, address);
}
- void storePtr(TrustedImmPtr imm, ImplicitAddress address)
+ void storePtr(TrustedImmPtr imm, Address address)
{
store32(TrustedImm32(imm), address);
}
@@ -782,7 +782,7 @@
store32(TrustedImm32(imm), address);
}
- void storePtr(TrustedImm32 imm, ImplicitAddress address)
+ void storePtr(TrustedImm32 imm, Address address)
{
store32(imm, address);
}
@@ -1050,7 +1050,7 @@
xor64(TrustedImm64(imm), srcDest);
}
- void loadPtr(ImplicitAddress address, RegisterID dest)
+ void loadPtr(Address address, RegisterID dest)
{
load64(address, dest);
}
@@ -1089,7 +1089,7 @@
return load64WithCompactAddressOffsetPatch(address, dest);
}
- void storePtr(RegisterID src, ImplicitAddress address)
+ void storePtr(RegisterID src, Address address)
{
store64(src, address);
}
@@ -1104,12 +1104,12 @@
store64(src, address);
}
- void storePtr(TrustedImmPtr imm, ImplicitAddress address)
+ void storePtr(TrustedImmPtr imm, Address address)
{
store64(TrustedImm64(imm), address);
}
- void storePtr(TrustedImm32 imm, ImplicitAddress address)
+ void storePtr(TrustedImm32 imm, Address address)
{
store64(imm, address);
}
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64.h (283969 => 283970)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64.h 2021-10-12 05:05:01 UTC (rev 283969)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64.h 2021-10-12 06:32:55 UTC (rev 283970)
@@ -1522,7 +1522,7 @@
}
}
- void load64(ImplicitAddress address, RegisterID dest)
+ void load64(Address address, RegisterID dest)
{
if (tryLoadWithOffset<64>(dest, address.base, address.offset))
return;
@@ -1677,7 +1677,7 @@
return result;
}
- void load32(ImplicitAddress address, RegisterID dest)
+ void load32(Address address, RegisterID dest)
{
if (tryLoadWithOffset<32>(dest, address.base, address.offset))
return;
@@ -1736,7 +1736,7 @@
load32(address, dest);
}
- void load16(ImplicitAddress address, RegisterID dest)
+ void load16(Address address, RegisterID dest)
{
if (tryLoadWithOffset<16>(dest, address.base, address.offset))
return;
@@ -1772,7 +1772,7 @@
load<16>(address, dest);
}
- void load16Unaligned(ImplicitAddress address, RegisterID dest)
+ void load16Unaligned(Address address, RegisterID dest)
{
load16(address, dest);
}
@@ -1782,7 +1782,7 @@
load16(address, dest);
}
- void load16SignedExtendTo32(ImplicitAddress address, RegisterID dest)
+ void load16SignedExtendTo32(Address address, RegisterID dest)
{
if (tryLoadSignedWithOffset<16>(dest, address.base, address.offset))
return;
@@ -1815,7 +1815,7 @@
m_assembler.sxth<32>(dest, src);
}
- void load8(ImplicitAddress address, RegisterID dest)
+ void load8(Address address, RegisterID dest)
{
if (tryLoadWithOffset<8>(dest, address.base, address.offset))
return;
@@ -1851,7 +1851,7 @@
m_assembler.ldrb(dest, src, simm);
}
- void load8SignedExtendTo32(ImplicitAddress address, RegisterID dest)
+ void load8SignedExtendTo32(Address address, RegisterID dest)
{
if (tryLoadSignedWithOffset<8>(dest, address.base, address.offset))
return;
@@ -1892,7 +1892,7 @@
m_assembler.sxtb<32>(dest, src);
}
- void store64(RegisterID src, ImplicitAddress address)
+ void store64(RegisterID src, Address address)
{
if (tryStoreWithOffset<64>(src, address.base, address.offset))
return;
@@ -1941,12 +1941,12 @@
store64(dataTempRegister, address);
}
- void store64(TrustedImm32 imm, ImplicitAddress address)
+ void store64(TrustedImm32 imm, Address address)
{
store64(TrustedImm64(imm.m_value), address);
}
- void store64(TrustedImm64 imm, ImplicitAddress address)
+ void store64(TrustedImm64 imm, Address address)
{
if (!imm.m_value) {
store64(ARM64Registers::zr, address);
@@ -2036,7 +2036,7 @@
storeDouble(src2, Address(dest, offset.m_value + 8));
}
- void store32(RegisterID src, ImplicitAddress address)
+ void store32(RegisterID src, Address address)
{
if (tryStoreWithOffset<32>(src, address.base, address.offset))
return;
@@ -2064,7 +2064,7 @@
store<32>(src, address);
}
- void store32(TrustedImm32 imm, ImplicitAddress address)
+ void store32(TrustedImm32 imm, Address address)
{
if (!imm.m_value) {
store32(ARM64Registers::zr, address);
@@ -2115,7 +2115,7 @@
return label;
}
- void store16(RegisterID src, ImplicitAddress address)
+ void store16(RegisterID src, Address address)
{
if (tryStoreWithOffset<16>(src, address.base, address.offset))
return;
@@ -2174,7 +2174,7 @@
m_assembler.strb(src, memoryTempRegister, 0);
}
- void store8(RegisterID src, ImplicitAddress address)
+ void store8(RegisterID src, Address address)
{
if (tryStoreWithOffset<8>(src, address.base, address.offset))
return;
@@ -2195,7 +2195,7 @@
store8(dataTempRegister, address);
}
- void store8(TrustedImm32 imm, ImplicitAddress address)
+ void store8(TrustedImm32 imm, Address address)
{
TrustedImm32 imm8(static_cast<int8_t>(imm.m_value));
if (!imm8.m_value) {
@@ -2460,7 +2460,7 @@
m_assembler.fdiv<32>(dest, op1, op2);
}
- void loadDouble(ImplicitAddress address, FPRegisterID dest)
+ void loadDouble(Address address, FPRegisterID dest)
{
if (tryLoadWithOffset<64>(dest, address.base, address.offset))
return;
@@ -2489,7 +2489,7 @@
m_assembler.ldr<64>(dest, memoryTempRegister, ARM64Registers::zr);
}
- void loadFloat(ImplicitAddress address, FPRegisterID dest)
+ void loadFloat(Address address, FPRegisterID dest)
{
if (tryLoadWithOffset<32>(dest, address.base, address.offset))
return;
@@ -2742,7 +2742,7 @@
m_assembler.fsqrt<32>(dest, src);
}
- void storeDouble(FPRegisterID src, ImplicitAddress address)
+ void storeDouble(FPRegisterID src, Address address)
{
if (tryStoreWithOffset<64>(src, address.base, address.offset))
return;
@@ -2771,7 +2771,7 @@
m_assembler.str<64>(src, address.base, memoryTempRegister);
}
- void storeFloat(FPRegisterID src, ImplicitAddress address)
+ void storeFloat(FPRegisterID src, Address address)
{
if (tryStoreWithOffset<32>(src, address.base, address.offset))
return;
@@ -2928,7 +2928,7 @@
pushPair(reg, reg);
move(imm, reg);
- store64(reg, stackPointerRegister);
+ store64(reg, Address(stackPointerRegister));
load64(Address(stackPointerRegister, 8), reg);
}
@@ -2946,7 +2946,7 @@
void popToRestore(FPRegisterID dest)
{
- loadDouble(stackPointerRegister, dest);
+ loadDouble(Address(stackPointerRegister), dest);
add64(TrustedImm32(16), stackPointerRegister);
}
@@ -2953,7 +2953,7 @@
void pushToSave(FPRegisterID src)
{
sub64(TrustedImm32(16), stackPointerRegister);
- storeDouble(src, stackPointerRegister);
+ storeDouble(src, Address(stackPointerRegister));
}
static constexpr ptrdiff_t pushToSaveByteOffset() { return 16; }
@@ -4163,7 +4163,7 @@
return PatchableJump(result);
}
- ALWAYS_INLINE DataLabelPtr storePtrWithPatch(TrustedImmPtr initialValue, ImplicitAddress address)
+ ALWAYS_INLINE DataLabelPtr storePtrWithPatch(TrustedImmPtr initialValue, Address address)
{
DataLabelPtr label(this);
moveWithFixedWidth(initialValue, getCachedDataTempRegisterIDAndInvalidate());
@@ -4171,7 +4171,7 @@
return label;
}
- ALWAYS_INLINE DataLabelPtr storePtrWithPatch(ImplicitAddress address)
+ ALWAYS_INLINE DataLabelPtr storePtrWithPatch(Address address)
{
return storePtrWithPatch(TrustedImmPtr(nullptr), address);
}
@@ -4216,134 +4216,134 @@
m_assembler.dmbISH();
}
- void loadAcq8SignedExtendTo32(ImplicitAddress address, RegisterID dest)
+ void loadAcq8SignedExtendTo32(Address address, RegisterID dest)
{
m_assembler.ldar<8>(dest, extractSimpleAddress(address));
}
- void loadAcq8(ImplicitAddress address, RegisterID dest)
+ void loadAcq8(Address address, RegisterID dest)
{
loadAcq8SignedExtendTo32(address, dest);
and32(TrustedImm32(0xff), dest);
}
- void storeRel8(RegisterID src, ImplicitAddress address)
+ void storeRel8(RegisterID src, Address address)
{
m_assembler.stlr<8>(src, extractSimpleAddress(address));
}
- void loadAcq16SignedExtendTo32(ImplicitAddress address, RegisterID dest)
+ void loadAcq16SignedExtendTo32(Address address, RegisterID dest)
{
m_assembler.ldar<16>(dest, extractSimpleAddress(address));
}
- void loadAcq16(ImplicitAddress address, RegisterID dest)
+ void loadAcq16(Address address, RegisterID dest)
{
loadAcq16SignedExtendTo32(address, dest);
and32(TrustedImm32(0xffff), dest);
}
- void storeRel16(RegisterID src, ImplicitAddress address)
+ void storeRel16(RegisterID src, Address address)
{
m_assembler.stlr<16>(src, extractSimpleAddress(address));
}
- void loadAcq32(ImplicitAddress address, RegisterID dest)
+ void loadAcq32(Address address, RegisterID dest)
{
m_assembler.ldar<32>(dest, extractSimpleAddress(address));
}
- void loadAcq64(ImplicitAddress address, RegisterID dest)
+ void loadAcq64(Address address, RegisterID dest)
{
m_assembler.ldar<64>(dest, extractSimpleAddress(address));
}
- void storeRel32(RegisterID dest, ImplicitAddress address)
+ void storeRel32(RegisterID dest, Address address)
{
m_assembler.stlr<32>(dest, extractSimpleAddress(address));
}
- void storeRel64(RegisterID dest, ImplicitAddress address)
+ void storeRel64(RegisterID dest, Address address)
{
m_assembler.stlr<64>(dest, extractSimpleAddress(address));
}
- void loadLink8(ImplicitAddress address, RegisterID dest)
+ void loadLink8(Address address, RegisterID dest)
{
m_assembler.ldxr<8>(dest, extractSimpleAddress(address));
}
- void loadLinkAcq8(ImplicitAddress address, RegisterID dest)
+ void loadLinkAcq8(Address address, RegisterID dest)
{
m_assembler.ldaxr<8>(dest, extractSimpleAddress(address));
}
- void storeCond8(RegisterID src, ImplicitAddress address, RegisterID result)
+ void storeCond8(RegisterID src, Address address, RegisterID result)
{
m_assembler.stxr<8>(result, src, extractSimpleAddress(address));
}
- void storeCondRel8(RegisterID src, ImplicitAddress address, RegisterID result)
+ void storeCondRel8(RegisterID src, Address address, RegisterID result)
{
m_assembler.stlxr<8>(result, src, extractSimpleAddress(address));
}
- void loadLink16(ImplicitAddress address, RegisterID dest)
+ void loadLink16(Address address, RegisterID dest)
{
m_assembler.ldxr<16>(dest, extractSimpleAddress(address));
}
- void loadLinkAcq16(ImplicitAddress address, RegisterID dest)
+ void loadLinkAcq16(Address address, RegisterID dest)
{
m_assembler.ldaxr<16>(dest, extractSimpleAddress(address));
}
- void storeCond16(RegisterID src, ImplicitAddress address, RegisterID result)
+ void storeCond16(RegisterID src, Address address, RegisterID result)
{
m_assembler.stxr<16>(result, src, extractSimpleAddress(address));
}
- void storeCondRel16(RegisterID src, ImplicitAddress address, RegisterID result)
+ void storeCondRel16(RegisterID src, Address address, RegisterID result)
{
m_assembler.stlxr<16>(result, src, extractSimpleAddress(address));
}
- void loadLink32(ImplicitAddress address, RegisterID dest)
+ void loadLink32(Address address, RegisterID dest)
{
m_assembler.ldxr<32>(dest, extractSimpleAddress(address));
}
- void loadLinkAcq32(ImplicitAddress address, RegisterID dest)
+ void loadLinkAcq32(Address address, RegisterID dest)
{
m_assembler.ldaxr<32>(dest, extractSimpleAddress(address));
}
- void storeCond32(RegisterID src, ImplicitAddress address, RegisterID result)
+ void storeCond32(RegisterID src, Address address, RegisterID result)
{
m_assembler.stxr<32>(result, src, extractSimpleAddress(address));
}
- void storeCondRel32(RegisterID src, ImplicitAddress address, RegisterID result)
+ void storeCondRel32(RegisterID src, Address address, RegisterID result)
{
m_assembler.stlxr<32>(result, src, extractSimpleAddress(address));
}
- void loadLink64(ImplicitAddress address, RegisterID dest)
+ void loadLink64(Address address, RegisterID dest)
{
m_assembler.ldxr<64>(dest, extractSimpleAddress(address));
}
- void loadLinkAcq64(ImplicitAddress address, RegisterID dest)
+ void loadLinkAcq64(Address address, RegisterID dest)
{
m_assembler.ldaxr<64>(dest, extractSimpleAddress(address));
}
- void storeCond64(RegisterID src, ImplicitAddress address, RegisterID result)
+ void storeCond64(RegisterID src, Address address, RegisterID result)
{
m_assembler.stxr<64>(result, src, extractSimpleAddress(address));
}
- void storeCondRel64(RegisterID src, ImplicitAddress address, RegisterID result)
+ void storeCondRel64(RegisterID src, Address address, RegisterID result)
{
m_assembler.stlxr<64>(result, src, extractSimpleAddress(address));
}
@@ -5204,7 +5204,7 @@
RELEASE_ASSERT_NOT_REACHED();
}
- RegisterID extractSimpleAddress(ImplicitAddress address)
+ RegisterID extractSimpleAddress(Address address)
{
if (!address.offset)
return address.base;
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64E.h (283969 => 283970)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64E.h 2021-10-12 05:05:01 UTC (rev 283969)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARM64E.h 2021-10-12 06:32:55 UTC (rev 283970)
@@ -373,122 +373,122 @@
m_assembler.retab();
}
- void atomicXchgAdd8(RegisterID src, ImplicitAddress address, RegisterID dest)
+ void atomicXchgAdd8(RegisterID src, Address address, RegisterID dest)
{
m_assembler.ldaddal<8>(src, dest, extractSimpleAddress(address));
}
- void atomicXchgAdd16(RegisterID src, ImplicitAddress address, RegisterID dest)
+ void atomicXchgAdd16(RegisterID src, Address address, RegisterID dest)
{
m_assembler.ldaddal<16>(src, dest, extractSimpleAddress(address));
}
- void atomicXchgAdd32(RegisterID src, ImplicitAddress address, RegisterID dest)
+ void atomicXchgAdd32(RegisterID src, Address address, RegisterID dest)
{
m_assembler.ldaddal<32>(src, dest, extractSimpleAddress(address));
}
- void atomicXchgAdd64(RegisterID src, ImplicitAddress address, RegisterID dest)
+ void atomicXchgAdd64(RegisterID src, Address address, RegisterID dest)
{
m_assembler.ldaddal<64>(src, dest, extractSimpleAddress(address));
}
- void atomicXchgXor8(RegisterID src, ImplicitAddress address, RegisterID dest)
+ void atomicXchgXor8(RegisterID src, Address address, RegisterID dest)
{
m_assembler.ldeoral<8>(src, dest, extractSimpleAddress(address));
}
- void atomicXchgXor16(RegisterID src, ImplicitAddress address, RegisterID dest)
+ void atomicXchgXor16(RegisterID src, Address address, RegisterID dest)
{
m_assembler.ldeoral<16>(src, dest, extractSimpleAddress(address));
}
- void atomicXchgXor32(RegisterID src, ImplicitAddress address, RegisterID dest)
+ void atomicXchgXor32(RegisterID src, Address address, RegisterID dest)
{
m_assembler.ldeoral<32>(src, dest, extractSimpleAddress(address));
}
- void atomicXchgXor64(RegisterID src, ImplicitAddress address, RegisterID dest)
+ void atomicXchgXor64(RegisterID src, Address address, RegisterID dest)
{
m_assembler.ldeoral<64>(src, dest, extractSimpleAddress(address));
}
- void atomicXchgOr8(RegisterID src, ImplicitAddress address, RegisterID dest)
+ void atomicXchgOr8(RegisterID src, Address address, RegisterID dest)
{
m_assembler.ldsetal<8>(src, dest, extractSimpleAddress(address));
}
- void atomicXchgOr16(RegisterID src, ImplicitAddress address, RegisterID dest)
+ void atomicXchgOr16(RegisterID src, Address address, RegisterID dest)
{
m_assembler.ldsetal<16>(src, dest, extractSimpleAddress(address));
}
- void atomicXchgOr32(RegisterID src, ImplicitAddress address, RegisterID dest)
+ void atomicXchgOr32(RegisterID src, Address address, RegisterID dest)
{
m_assembler.ldsetal<32>(src, dest, extractSimpleAddress(address));
}
- void atomicXchgOr64(RegisterID src, ImplicitAddress address, RegisterID dest)
+ void atomicXchgOr64(RegisterID src, Address address, RegisterID dest)
{
m_assembler.ldsetal<64>(src, dest, extractSimpleAddress(address));
}
- void atomicXchgClear8(RegisterID src, ImplicitAddress address, RegisterID dest)
+ void atomicXchgClear8(RegisterID src, Address address, RegisterID dest)
{
m_assembler.ldclral<8>(src, dest, extractSimpleAddress(address));
}
- void atomicXchgClear16(RegisterID src, ImplicitAddress address, RegisterID dest)
+ void atomicXchgClear16(RegisterID src, Address address, RegisterID dest)
{
m_assembler.ldclral<16>(src, dest, extractSimpleAddress(address));
}
- void atomicXchgClear32(RegisterID src, ImplicitAddress address, RegisterID dest)
+ void atomicXchgClear32(RegisterID src, Address address, RegisterID dest)
{
m_assembler.ldclral<32>(src, dest, extractSimpleAddress(address));
}
- void atomicXchgClear64(RegisterID src, ImplicitAddress address, RegisterID dest)
+ void atomicXchgClear64(RegisterID src, Address address, RegisterID dest)
{
m_assembler.ldclral<64>(src, dest, extractSimpleAddress(address));
}
- void atomicXchg8(RegisterID src, ImplicitAddress address, RegisterID dest)
+ void atomicXchg8(RegisterID src, Address address, RegisterID dest)
{
m_assembler.swpal<8>(src, dest, extractSimpleAddress(address));
}
- void atomicXchg16(RegisterID src, ImplicitAddress address, RegisterID dest)
+ void atomicXchg16(RegisterID src, Address address, RegisterID dest)
{
m_assembler.swpal<16>(src, dest, extractSimpleAddress(address));
}
- void atomicXchg32(RegisterID src, ImplicitAddress address, RegisterID dest)
+ void atomicXchg32(RegisterID src, Address address, RegisterID dest)
{
m_assembler.swpal<32>(src, dest, extractSimpleAddress(address));
}
- void atomicXchg64(RegisterID src, ImplicitAddress address, RegisterID dest)
+ void atomicXchg64(RegisterID src, Address address, RegisterID dest)
{
m_assembler.swpal<64>(src, dest, extractSimpleAddress(address));
}
- void atomicStrongCAS8(RegisterID expectedAndResult, RegisterID newValue, ImplicitAddress address)
+ void atomicStrongCAS8(RegisterID expectedAndResult, RegisterID newValue, Address address)
{
m_assembler.casal<8>(expectedAndResult, newValue, extractSimpleAddress(address));
}
- void atomicStrongCAS16(RegisterID expectedAndResult, RegisterID newValue, ImplicitAddress address)
+ void atomicStrongCAS16(RegisterID expectedAndResult, RegisterID newValue, Address address)
{
m_assembler.casal<16>(expectedAndResult, newValue, extractSimpleAddress(address));
}
- void atomicStrongCAS32(RegisterID expectedAndResult, RegisterID newValue, ImplicitAddress address)
+ void atomicStrongCAS32(RegisterID expectedAndResult, RegisterID newValue, Address address)
{
m_assembler.casal<32>(expectedAndResult, newValue, extractSimpleAddress(address));
}
- void atomicStrongCAS64(RegisterID expectedAndResult, RegisterID newValue, ImplicitAddress address)
+ void atomicStrongCAS64(RegisterID expectedAndResult, RegisterID newValue, Address address)
{
m_assembler.casal<64>(expectedAndResult, newValue, extractSimpleAddress(address));
}
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.h (283969 => 283970)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.h 2021-10-12 05:05:01 UTC (rev 283969)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARMv7.h 2021-10-12 06:32:55 UTC (rev 283970)
@@ -370,16 +370,16 @@
ARMThumbImmediate armImm = ARMThumbImmediate::makeEncodedImm(imm.m_value);
if (armImm.isValid()) {
move(TrustedImmPtr(address.m_ptr), addressTempRegister);
- load8(addressTempRegister, dataTempRegister);
+ load8(Address(addressTempRegister), dataTempRegister);
m_assembler.orr(dataTempRegister, dataTempRegister, armImm);
- store8(dataTempRegister, addressTempRegister);
+ store8(dataTempRegister, Address(addressTempRegister));
} else {
move(TrustedImmPtr(address.m_ptr), addressTempRegister);
- load8(addressTempRegister, dataTempRegister);
+ load8(Address(addressTempRegister), dataTempRegister);
move(imm, addressTempRegister);
m_assembler.orr(dataTempRegister, dataTempRegister, addressTempRegister);
move(TrustedImmPtr(address.m_ptr), addressTempRegister);
- store8(dataTempRegister, addressTempRegister);
+ store8(dataTempRegister, Address(addressTempRegister));
}
}
@@ -388,16 +388,16 @@
ARMThumbImmediate armImm = ARMThumbImmediate::makeEncodedImm(imm.m_value);
if (armImm.isValid()) {
move(TrustedImmPtr(dest.m_ptr), addressTempRegister);
- load16(addressTempRegister, dataTempRegister);
+ load16(Address(addressTempRegister), dataTempRegister);
m_assembler.orr(dataTempRegister, dataTempRegister, armImm);
- store16(dataTempRegister, addressTempRegister);
+ store16(dataTempRegister, Address(addressTempRegister));
} else {
move(TrustedImmPtr(dest.m_ptr), addressTempRegister);
- load16(addressTempRegister, dataTempRegister);
+ load16(Address(addressTempRegister), dataTempRegister);
move(imm, addressTempRegister);
m_assembler.orr(dataTempRegister, dataTempRegister, addressTempRegister);
move(TrustedImmPtr(dest.m_ptr), addressTempRegister);
- store16(dataTempRegister, addressTempRegister);
+ store16(dataTempRegister, Address(addressTempRegister));
}
}
@@ -409,9 +409,9 @@
void or32(RegisterID src, AbsoluteAddress dest)
{
move(TrustedImmPtr(dest.m_ptr), addressTempRegister);
- load32(addressTempRegister, dataTempRegister);
+ load32(Address(addressTempRegister), dataTempRegister);
or32(src, dataTempRegister);
- store32(dataTempRegister, addressTempRegister);
+ store32(dataTempRegister, Address(addressTempRegister));
}
void or32(TrustedImm32 imm, AbsoluteAddress address)
@@ -419,16 +419,16 @@
ARMThumbImmediate armImm = ARMThumbImmediate::makeEncodedImm(imm.m_value);
if (armImm.isValid()) {
move(TrustedImmPtr(address.m_ptr), addressTempRegister);
- load32(addressTempRegister, dataTempRegister);
+ load32(Address(addressTempRegister), dataTempRegister);
m_assembler.orr(dataTempRegister, dataTempRegister, armImm);
- store32(dataTempRegister, addressTempRegister);
+ store32(dataTempRegister, Address(addressTempRegister));
} else {
move(TrustedImmPtr(address.m_ptr), addressTempRegister);
- load32(addressTempRegister, dataTempRegister);
+ load32(Address(addressTempRegister), dataTempRegister);
move(imm, addressTempRegister);
m_assembler.orr(dataTempRegister, dataTempRegister, addressTempRegister);
move(TrustedImmPtr(address.m_ptr), addressTempRegister);
- store32(dataTempRegister, addressTempRegister);
+ store32(dataTempRegister, Address(addressTempRegister));
}
}
@@ -754,7 +754,7 @@
}
public:
- void load32(ImplicitAddress address, RegisterID dest)
+ void load32(Address address, RegisterID dest)
{
load32(setupArmAddress(address), dest);
}
@@ -800,12 +800,12 @@
return result;
}
- void load8(ImplicitAddress address, RegisterID dest)
+ void load8(Address address, RegisterID dest)
{
load8(setupArmAddress(address), dest);
}
- void load8SignedExtendTo32(ImplicitAddress, RegisterID)
+ void load8SignedExtendTo32(Address, RegisterID)
{
UNREACHABLE_FOR_PLATFORM();
}
@@ -823,7 +823,7 @@
void load8(const void* address, RegisterID dest)
{
move(TrustedImmPtr(address), dest);
- load8(dest, dest);
+ load8(Address(dest), dest);
}
DataLabel32 load32WithAddressOffsetPatch(Address address, RegisterID dest)
@@ -862,7 +862,7 @@
load16SignedExtendTo32(setupArmAddress(address), dest);
}
- void load16(ImplicitAddress address, RegisterID dest)
+ void load16(Address address, RegisterID dest)
{
ARMThumbImmediate armImm = ARMThumbImmediate::makeUInt12(address.offset);
if (armImm.isValid())
@@ -873,7 +873,7 @@
}
}
- void load16SignedExtendTo32(ImplicitAddress, RegisterID)
+ void load16SignedExtendTo32(Address, RegisterID)
{
UNREACHABLE_FOR_PLATFORM();
}
@@ -903,7 +903,7 @@
return label;
}
- void store32(RegisterID src, ImplicitAddress address)
+ void store32(RegisterID src, Address address)
{
store32(src, setupArmAddress(address));
}
@@ -913,7 +913,7 @@
store32(src, setupArmAddress(address));
}
- void store32(TrustedImm32 imm, ImplicitAddress address)
+ void store32(TrustedImm32 imm, Address address)
{
move(imm, dataTempRegister);
store32(dataTempRegister, setupArmAddress(address));
@@ -972,7 +972,7 @@
store8(src, ArmAddress(addrreg, 0));
}
- void store16(RegisterID src, ImplicitAddress address)
+ void store16(RegisterID src, Address address)
{
store16(src, setupArmAddress(address));
}
@@ -1043,7 +1043,7 @@
static bool supportsFloatingPointAbs() { return true; }
static bool supportsFloatingPointRounding() { return false; }
- void loadDouble(ImplicitAddress address, FPRegisterID dest)
+ void loadDouble(Address address, FPRegisterID dest)
{
RegisterID base = address.base;
int32_t offset = address.offset;
@@ -1058,7 +1058,7 @@
m_assembler.vldr(dest, base, offset);
}
- void loadFloat(ImplicitAddress address, FPRegisterID dest)
+ void loadFloat(Address address, FPRegisterID dest)
{
RegisterID base = address.base;
int32_t offset = address.offset;
@@ -1112,7 +1112,7 @@
m_assembler.vldr(dest, addressTempRegister, 0);
}
- void storeDouble(FPRegisterID src, ImplicitAddress address)
+ void storeDouble(FPRegisterID src, Address address)
{
RegisterID base = address.base;
int32_t offset = address.offset;
@@ -1127,7 +1127,7 @@
m_assembler.vstr(src, base, offset);
}
- void storeFloat(FPRegisterID src, ImplicitAddress address)
+ void storeFloat(FPRegisterID src, Address address)
{
RegisterID base = address.base;
int32_t offset = address.offset;
@@ -1145,7 +1145,7 @@
void storeDouble(FPRegisterID src, TrustedImmPtr address)
{
move(address, addressTempRegister);
- storeDouble(src, addressTempRegister);
+ storeDouble(src, Address(addressTempRegister));
}
void storeDouble(FPRegisterID src, BaseIndex address)
@@ -2132,13 +2132,13 @@
return PatchableJump(result);
}
- ALWAYS_INLINE DataLabelPtr storePtrWithPatch(TrustedImmPtr initialValue, ImplicitAddress address)
+ ALWAYS_INLINE DataLabelPtr storePtrWithPatch(TrustedImmPtr initialValue, Address address)
{
DataLabelPtr label = moveWithPatch(initialValue, dataTempRegister);
store32(dataTempRegister, address);
return label;
}
- ALWAYS_INLINE DataLabelPtr storePtrWithPatch(ImplicitAddress address) { return storePtrWithPatch(TrustedImmPtr(nullptr), address); }
+ ALWAYS_INLINE DataLabelPtr storePtrWithPatch(Address address) { return storePtrWithPatch(TrustedImmPtr(nullptr), address); }
template<PtrTag resultTag, PtrTag locationTag>
static FunctionPtr<resultTag> readCallTarget(CodeLocationCall<locationTag> call)
@@ -2249,15 +2249,6 @@
return ArmAddress(address.base, addressTempRegister);
}
- ArmAddress setupArmAddress(ImplicitAddress address)
- {
- if ((address.offset >= -0xff) && (address.offset <= 0xfff))
- return ArmAddress(address.base, address.offset);
-
- move(TrustedImm32(address.offset), addressTempRegister);
- return ArmAddress(address.base, addressTempRegister);
- }
-
RegisterID makeBaseIndexBase(BaseIndex address)
{
if (!address.offset)
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.h (283969 => 283970)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.h 2021-10-12 05:05:01 UTC (rev 283969)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerMIPS.h 2021-10-12 06:32:55 UTC (rev 283970)
@@ -917,7 +917,7 @@
// register is passed.
/* Need to use zero-extened load byte for load8. */
- void load8(ImplicitAddress address, RegisterID dest)
+ void load8(Address address, RegisterID dest)
{
if (address.offset >= -32768 && address.offset <= 32767
&& !m_fixedWidth)
@@ -976,7 +976,7 @@
}
}
- void load8SignedExtendTo32(ImplicitAddress address, RegisterID dest)
+ void load8SignedExtendTo32(Address address, RegisterID dest)
{
if (address.offset >= -32768 && address.offset <= 32767
&& !m_fixedWidth)
@@ -1036,7 +1036,7 @@
}
- void load32(ImplicitAddress address, RegisterID dest)
+ void load32(Address address, RegisterID dest)
{
if (address.offset >= -32768 && address.offset <= 32767
&& !m_fixedWidth)
@@ -1233,7 +1233,7 @@
}
/* Need to use zero-extened load half-word for load16. */
- void load16(ImplicitAddress address, RegisterID dest)
+ void load16(Address address, RegisterID dest)
{
if (address.offset >= -32768 && address.offset <= 32767
&& !m_fixedWidth)
@@ -1327,7 +1327,7 @@
return dataLabel;
}
- void store8(RegisterID src, ImplicitAddress address)
+ void store8(RegisterID src, Address address)
{
if (address.offset >= -32768 && address.offset <= 32767
&& !m_fixedWidth)
@@ -1406,7 +1406,7 @@
}
}
- void store8(TrustedImm32 imm, ImplicitAddress address)
+ void store8(TrustedImm32 imm, Address address)
{
TrustedImm32 imm8(static_cast<int8_t>(imm.m_value));
if (address.offset >= -32768 && address.offset <= 32767
@@ -1450,7 +1450,7 @@
}
}
- void store16(RegisterID src, ImplicitAddress address)
+ void store16(RegisterID src, Address address)
{
if (address.offset >= -32768 && address.offset <= 32767
&& !m_fixedWidth) {
@@ -1488,7 +1488,7 @@
}
}
- void store32(RegisterID src, ImplicitAddress address)
+ void store32(RegisterID src, Address address)
{
if (address.offset >= -32768 && address.offset <= 32767
&& !m_fixedWidth)
@@ -1526,7 +1526,7 @@
}
}
- void store32(TrustedImm32 imm, ImplicitAddress address)
+ void store32(TrustedImm32 imm, Address address)
{
if (address.offset >= -32768 && address.offset <= 32767
&& !m_fixedWidth) {
@@ -2912,7 +2912,7 @@
return temp;
}
- DataLabelPtr storePtrWithPatch(TrustedImmPtr initialValue, ImplicitAddress address)
+ DataLabelPtr storePtrWithPatch(TrustedImmPtr initialValue, Address address)
{
m_fixedWidth = true;
DataLabelPtr dataLabel = moveWithPatch(initialValue, dataTempRegister);
@@ -2921,7 +2921,7 @@
return dataLabel;
}
- DataLabelPtr storePtrWithPatch(ImplicitAddress address)
+ DataLabelPtr storePtrWithPatch(Address address)
{
return storePtrWithPatch(TrustedImmPtr(nullptr), address);
}
@@ -2947,7 +2947,7 @@
}
}
- void loadFloat(ImplicitAddress address, FPRegisterID dest)
+ void loadFloat(Address address, FPRegisterID dest)
{
if (address.offset >= -32768 && address.offset <= 32767
&& !m_fixedWidth) {
@@ -2964,7 +2964,7 @@
}
}
- void loadDouble(ImplicitAddress address, FPRegisterID dest)
+ void loadDouble(Address address, FPRegisterID dest)
{
#if WTF_MIPS_ISA(1)
/*
@@ -3086,7 +3086,7 @@
}
}
- void storeFloat(FPRegisterID src, ImplicitAddress address)
+ void storeFloat(FPRegisterID src, Address address)
{
if (address.offset >= -32768 && address.offset <= 32767
&& !m_fixedWidth)
@@ -3103,7 +3103,7 @@
}
}
- void storeDouble(FPRegisterID src, ImplicitAddress address)
+ void storeDouble(FPRegisterID src, Address address)
{
#if WTF_MIPS_ISA(1)
/*
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h (283969 => 283970)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h 2021-10-12 05:05:01 UTC (rev 283969)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerX86Common.h 2021-10-12 06:32:55 UTC (rev 283970)
@@ -1210,7 +1210,7 @@
// operand objects to loads and store will be implicitly constructed if a
// register is passed.
- void load32(ImplicitAddress address, RegisterID dest)
+ void load32(Address address, RegisterID dest)
{
m_assembler.movl_mr(address.offset, address.base, dest);
}
@@ -1225,7 +1225,7 @@
load32(address, dest);
}
- void load16Unaligned(ImplicitAddress address, RegisterID dest)
+ void load16Unaligned(Address address, RegisterID dest)
{
load16(address, dest);
}
@@ -1268,7 +1268,7 @@
m_assembler.movzbl_mr(address.offset, address.base, address.index, address.scale, dest);
}
- void load8(ImplicitAddress address, RegisterID dest)
+ void load8(Address address, RegisterID dest)
{
m_assembler.movzbl_mr(address.offset, address.base, dest);
}
@@ -1278,7 +1278,7 @@
m_assembler.movsbl_mr(address.offset, address.base, address.index, address.scale, dest);
}
- void load8SignedExtendTo32(ImplicitAddress address, RegisterID dest)
+ void load8SignedExtendTo32(Address address, RegisterID dest)
{
m_assembler.movsbl_mr(address.offset, address.base, dest);
}
@@ -1293,7 +1293,7 @@
m_assembler.movsbl_rr(src, dest);
}
- void load16(ImplicitAddress address, RegisterID dest)
+ void load16(Address address, RegisterID dest)
{
m_assembler.movzwl_mr(address.offset, address.base, dest);
}
@@ -1303,11 +1303,6 @@
m_assembler.movzwl_mr(address.offset, address.base, address.index, address.scale, dest);
}
- void load16(Address address, RegisterID dest)
- {
- m_assembler.movzwl_mr(address.offset, address.base, dest);
- }
-
void load16SignedExtendTo32(BaseIndex address, RegisterID dest)
{
m_assembler.movswl_mr(address.offset, address.base, address.index, address.scale, dest);
@@ -1352,7 +1347,7 @@
return DataLabel32(this);
}
- void store32(RegisterID src, ImplicitAddress address)
+ void store32(RegisterID src, Address address)
{
m_assembler.movl_rm(src, address.offset, address.base);
}
@@ -1362,7 +1357,7 @@
m_assembler.movl_rm(src, address.offset, address.base, address.index, address.scale);
}
- void store32(TrustedImm32 imm, ImplicitAddress address)
+ void store32(TrustedImm32 imm, Address address)
{
m_assembler.movl_i32m(imm.m_value, address.offset, address.base);
}
@@ -1469,7 +1464,7 @@
m_assembler.movw_im(static_cast<int16_t>(imm.m_value), address.offset, address.base, address.index, address.scale);
}
- void store16(TrustedImm32 imm, ImplicitAddress address)
+ void store16(TrustedImm32 imm, Address address)
{
m_assembler.movw_im(static_cast<int16_t>(imm.m_value), address.offset, address.base);
}
@@ -1488,11 +1483,11 @@
m_assembler.movsd_mr(address.asPtr(), dest);
#else
move(address, scratchRegister());
- loadDouble(scratchRegister(), dest);
+ loadDouble(Address(scratchRegister()), dest);
#endif
}
- void loadDouble(ImplicitAddress address, FPRegisterID dest)
+ void loadDouble(Address address, FPRegisterID dest)
{
m_assembler.movsd_mr(address.offset, address.base, dest);
}
@@ -1508,11 +1503,11 @@
m_assembler.movss_mr(address.asPtr(), dest);
#else
move(address, scratchRegister());
- loadFloat(scratchRegister(), dest);
+ loadFloat(Address(scratchRegister()), dest);
#endif
}
- void loadFloat(ImplicitAddress address, FPRegisterID dest)
+ void loadFloat(Address address, FPRegisterID dest)
{
m_assembler.movss_mr(address.offset, address.base, dest);
}
@@ -1522,7 +1517,7 @@
m_assembler.movss_mr(address.offset, address.base, address.index, address.scale, dest);
}
- void storeDouble(FPRegisterID src, ImplicitAddress address)
+ void storeDouble(FPRegisterID src, Address address)
{
m_assembler.movsd_rm(src, address.offset, address.base);
}
@@ -1532,7 +1527,7 @@
m_assembler.movsd_rm(src, address.offset, address.base, address.index, address.scale);
}
- void storeFloat(FPRegisterID src, ImplicitAddress address)
+ void storeFloat(FPRegisterID src, Address address)
{
m_assembler.movss_rm(src, address.offset, address.base);
}
Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerX86_64.h (283969 => 283970)
--- trunk/Source/_javascript_Core/assembler/MacroAssemblerX86_64.h 2021-10-12 05:05:01 UTC (rev 283969)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerX86_64.h 2021-10-12 06:32:55 UTC (rev 283970)
@@ -106,7 +106,7 @@
void load8(const void* address, RegisterID dest)
{
move(TrustedImmPtr(address), dest);
- load8(dest, dest);
+ load8(Address(dest), dest);
}
void load16(ExtendedAddress address, RegisterID dest)
@@ -132,7 +132,7 @@
m_assembler.movl_mEAX(address);
else {
move(TrustedImmPtr(address), dest);
- load32(dest, dest);
+ load32(Address(dest), dest);
}
}
@@ -151,7 +151,7 @@
void store32(TrustedImm32 imm, void* address)
{
move(TrustedImmPtr(address), scratchRegister());
- store32(imm, scratchRegister());
+ store32(imm, Address(scratchRegister()));
}
void store32(RegisterID source, void* address)
@@ -160,7 +160,7 @@
m_assembler.movl_EAXm(address);
else {
move(TrustedImmPtr(address), scratchRegister());
- store32(source, scratchRegister());
+ store32(source, Address(scratchRegister()));
}
}
@@ -918,7 +918,7 @@
m_assembler.notq_m(dest.offset, dest.base, dest.index, dest.scale);
}
- void load64(ImplicitAddress address, RegisterID dest)
+ void load64(Address address, RegisterID dest)
{
m_assembler.movq_mr(address.offset, address.base, dest);
}
@@ -934,7 +934,7 @@
m_assembler.movq_mEAX(address);
else {
move(TrustedImmPtr(address), dest);
- load64(dest, dest);
+ load64(Address(dest), dest);
}
}
@@ -952,7 +952,7 @@
return DataLabelCompact(this);
}
- void store64(RegisterID src, ImplicitAddress address)
+ void store64(RegisterID src, Address address)
{
m_assembler.movq_rm(src, address.offset, address.base);
}
@@ -968,11 +968,11 @@
m_assembler.movq_EAXm(address);
else {
move(TrustedImmPtr(address), scratchRegister());
- store64(src, scratchRegister());
+ store64(src, Address(scratchRegister()));
}
}
- void store64(TrustedImm32 imm, ImplicitAddress address)
+ void store64(TrustedImm32 imm, Address address)
{
m_assembler.movq_i32m(imm.m_value, address.offset, address.base);
}
@@ -987,7 +987,7 @@
if (CAN_SIGN_EXTEND_32_64(imm.m_value)) {
auto addressReg = scratchRegister();
move(TrustedImmPtr(address), addressReg);
- store64(TrustedImm32(static_cast<int32_t>(imm.m_value)), addressReg);
+ store64(TrustedImm32(static_cast<int32_t>(imm.m_value)), Address(addressReg));
return;
}
@@ -998,7 +998,7 @@
swap(src, X86Registers::eax);
}
- void store64(TrustedImm64 imm, ImplicitAddress address)
+ void store64(TrustedImm64 imm, Address address)
{
if (CAN_SIGN_EXTEND_32_64(imm.m_value)) {
store64(TrustedImm32(static_cast<int32_t>(imm.m_value)), address);
@@ -1524,7 +1524,7 @@
return branch32(cond, left, scratchRegister());
}
- DataLabelPtr storePtrWithPatch(TrustedImmPtr initialValue, ImplicitAddress address)
+ DataLabelPtr storePtrWithPatch(TrustedImmPtr initialValue, Address address)
{
DataLabelPtr label = moveWithPatch(initialValue, scratchRegister());
store64(scratchRegister(), address);
Modified: trunk/Source/_javascript_Core/assembler/testmasm.cpp (283969 => 283970)
--- trunk/Source/_javascript_Core/assembler/testmasm.cpp 2021-10-12 05:05:01 UTC (rev 283969)
+++ trunk/Source/_javascript_Core/assembler/testmasm.cpp 2021-10-12 06:32:55 UTC (rev 283970)
@@ -303,16 +303,16 @@
jit.subPtr(CCallHelpers::TrustedImm32(stackAlignmentBytes()), MacroAssembler::stackPointerRegister);
if (isBigEndian) {
jit.store32(CCallHelpers::TrustedImm32(valAsUInt >> 32),
- MacroAssembler::stackPointerRegister);
+ MacroAssembler::Address(MacroAssembler::stackPointerRegister));
jit.store32(CCallHelpers::TrustedImm32(valAsUInt & 0xffffffff),
MacroAssembler::Address(MacroAssembler::stackPointerRegister, 4));
} else {
jit.store32(CCallHelpers::TrustedImm32(valAsUInt & 0xffffffff),
- MacroAssembler::stackPointerRegister);
+ MacroAssembler::Address(MacroAssembler::stackPointerRegister));
jit.store32(CCallHelpers::TrustedImm32(valAsUInt >> 32),
MacroAssembler::Address(MacroAssembler::stackPointerRegister, 4));
}
- jit.loadDouble(MacroAssembler::stackPointerRegister, FPRInfo::fpRegT0);
+ jit.loadDouble(MacroAssembler::Address(MacroAssembler::stackPointerRegister), FPRInfo::fpRegT0);
MacroAssembler::Jump done;
done = jit.branchTruncateDoubleToInt32(FPRInfo::fpRegT0, GPRInfo::returnValueGPR, MacroAssembler::BranchIfTruncateSuccessful);
@@ -2313,7 +2313,7 @@
// res = *++p1; *p1 = 4; return res;
jit.load32(CCallHelpers::PreIndexAddress(GPRInfo::argumentGPR0, index), GPRInfo::argumentGPR1);
- jit.store32(CCallHelpers::TrustedImm32(replace), CCallHelpers::ImplicitAddress(GPRInfo::argumentGPR0));
+ jit.store32(CCallHelpers::TrustedImm32(replace), CCallHelpers::Address(GPRInfo::argumentGPR0));
jit.move(GPRInfo::argumentGPR1, GPRInfo::returnValueGPR);
emitFunctionEpilogue(jit);
@@ -2331,7 +2331,7 @@
// res = *p2++; *p2 = 5; return res;
jit.load32(CCallHelpers::PostIndexAddress(GPRInfo::argumentGPR0, index), GPRInfo::argumentGPR1);
- jit.store32(CCallHelpers::TrustedImm32(replace), CCallHelpers::ImplicitAddress(GPRInfo::argumentGPR0));
+ jit.store32(CCallHelpers::TrustedImm32(replace), CCallHelpers::Address(GPRInfo::argumentGPR0));
jit.move(GPRInfo::argumentGPR1, GPRInfo::returnValueGPR);
emitFunctionEpilogue(jit);
@@ -2355,7 +2355,7 @@
// res = *++p1; *p1 = 4; return res;
jit.load64(CCallHelpers::PreIndexAddress(GPRInfo::argumentGPR0, index), GPRInfo::argumentGPR1);
- jit.store64(CCallHelpers::TrustedImm64(replace), CCallHelpers::ImplicitAddress(GPRInfo::argumentGPR0));
+ jit.store64(CCallHelpers::TrustedImm64(replace), CCallHelpers::Address(GPRInfo::argumentGPR0));
jit.move(GPRInfo::argumentGPR1, GPRInfo::returnValueGPR);
emitFunctionEpilogue(jit);
@@ -2373,7 +2373,7 @@
// res = *p2++; *p2 = 5; return res;
jit.load64(CCallHelpers::PostIndexAddress(GPRInfo::argumentGPR0, index), GPRInfo::argumentGPR1);
- jit.store64(CCallHelpers::TrustedImm64(replace), CCallHelpers::ImplicitAddress(GPRInfo::argumentGPR0));
+ jit.store64(CCallHelpers::TrustedImm64(replace), CCallHelpers::Address(GPRInfo::argumentGPR0));
jit.move(GPRInfo::argumentGPR1, GPRInfo::returnValueGPR);
emitFunctionEpilogue(jit);
Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp (283969 => 283970)
--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp 2021-10-12 05:05:01 UTC (rev 283969)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp 2021-10-12 06:32:55 UTC (rev 283970)
@@ -1918,7 +1918,7 @@
m_jit.lshift32(MacroAssembler::TrustedImm32(sizeof(void*) == 4 ? 2 : 3), tempGPR);
m_jit.addPtr(TrustedImmPtr(vm.smallStrings.singleCharacterStrings()), tempGPR);
- m_jit.loadPtr(tempGPR, tempGPR);
+ m_jit.loadPtr(CCallHelpers::Address(tempGPR), tempGPR);
addSlowPathGenerator(slowPathCall(bigCharacter, this, operationSingleCharacterString, tempGPR, &vm, tempGPR));
@@ -2634,7 +2634,7 @@
VM& vm = this->vm();
m_jit.lshift32(MacroAssembler::TrustedImm32(sizeof(void*) == 4 ? 2 : 3), scratchReg);
m_jit.addPtr(TrustedImmPtr(vm.smallStrings.singleCharacterStrings()), scratchReg);
- m_jit.loadPtr(scratchReg, scratchReg);
+ m_jit.loadPtr(CCallHelpers::Address(scratchReg), scratchReg);
addSlowPathGenerator(
slowPathCall(
@@ -15339,7 +15339,7 @@
GPRTemporary scratch(this);
GPRReg scratchGPR = scratch.gpr();
m_jit.move(TrustedImmPtr(scratchBuffer->addressOfActiveLength()), scratchGPR);
- m_jit.storePtr(TrustedImmPtr(nullptr), scratchGPR);
+ m_jit.storePtr(TrustedImmPtr(nullptr), CCallHelpers::Address(scratchGPR));
noResult(node);
}
Modified: trunk/Source/_javascript_Core/ftl/FTLLocation.cpp (283969 => 283970)
--- trunk/Source/_javascript_Core/ftl/FTLLocation.cpp 2021-10-12 05:05:01 UTC (rev 283969)
+++ trunk/Source/_javascript_Core/ftl/FTLLocation.cpp 2021-10-12 06:32:55 UTC (rev 283970)
@@ -99,10 +99,10 @@
jit.move(MacroAssembler::framePointerRegister, result);
for (unsigned i = numFramesToPop - 1; i--;)
- jit.loadPtr(result, result);
+ jit.loadPtr(MacroAssembler::Address(result), result);
if (gpr() == MacroAssembler::framePointerRegister)
- jit.loadPtr(result, result);
+ jit.loadPtr(MacroAssembler::Address(result), result);
else
jit.addPtr(MacroAssembler::TrustedImmPtr(sizeof(void*) * 2), result);
} else
Modified: trunk/Source/_javascript_Core/ftl/FTLThunks.cpp (283969 => 283970)
--- trunk/Source/_javascript_Core/ftl/FTLThunks.cpp 2021-10-12 05:05:01 UTC (rev 283969)
+++ trunk/Source/_javascript_Core/ftl/FTLThunks.cpp 2021-10-12 06:32:55 UTC (rev 283970)
@@ -80,7 +80,7 @@
saveAllRegisters(jit, buffer);
- jit.loadPtr(framePointerRegister, GPRInfo::argumentGPR0);
+ jit.loadPtr(CCallHelpers::Address(framePointerRegister), GPRInfo::argumentGPR0);
jit.peek(
GPRInfo::argumentGPR1,
(stackMisalignment - pushToSaveByteOffset) / sizeof(void*));
Modified: trunk/Source/_javascript_Core/jit/AssemblyHelpers.cpp (283969 => 283970)
--- trunk/Source/_javascript_Core/jit/AssemblyHelpers.cpp 2021-10-12 05:05:01 UTC (rev 283969)
+++ trunk/Source/_javascript_Core/jit/AssemblyHelpers.cpp 2021-10-12 06:32:55 UTC (rev 283970)
@@ -1096,7 +1096,7 @@
for (unsigned i = 0; i < FPRInfo::numberOfRegisters; ++i) {
move(TrustedImmPtr(buffer + GPRInfo::numberOfRegisters + i), GPRInfo::regT0);
- storeDouble(FPRInfo::toRegister(i), GPRInfo::regT0);
+ storeDouble(FPRInfo::toRegister(i), Address(GPRInfo::regT0));
}
#if CPU(X86_64) || CPU(ARM_THUMB2) || CPU(ARM64) || CPU(MIPS)
@@ -1113,7 +1113,7 @@
for (unsigned i = 0; i < FPRInfo::numberOfRegisters; ++i) {
move(TrustedImmPtr(buffer + GPRInfo::numberOfRegisters + i), GPRInfo::regT0);
- loadDouble(GPRInfo::regT0, FPRInfo::toRegister(i));
+ loadDouble(Address(GPRInfo::regT0), FPRInfo::toRegister(i));
}
for (unsigned i = 0; i < GPRInfo::numberOfRegisters; ++i) {
#if USE(JSVALUE64)
@@ -1163,7 +1163,7 @@
loadPtr(vm.addressOfLastStackTop(), scratch);
Jump done = branchPtr(BelowOrEqual, stackPointerRegister, scratch);
Label loop = label();
- storePtr(TrustedImmPtr(nullptr), scratch);
+ storePtr(TrustedImmPtr(nullptr), Address(scratch));
addPtr(TrustedImmPtr(sizeof(void*)), scratch);
branchPtr(Above, stackPointerRegister, scratch).linkTo(loop, this);
done.link(this);
Modified: trunk/Source/_javascript_Core/jit/JITPropertyAccess.cpp (283969 => 283970)
--- trunk/Source/_javascript_Core/jit/JITPropertyAccess.cpp 2021-10-12 05:05:01 UTC (rev 283969)
+++ trunk/Source/_javascript_Core/jit/JITPropertyAccess.cpp 2021-10-12 06:32:55 UTC (rev 283970)
@@ -2185,7 +2185,7 @@
void JIT::emitGetVarFromIndirectPointer(JSValue** operand, GPRReg reg)
{
loadPtr(operand, reg);
- loadPtr(reg, reg);
+ loadPtr(Address(reg), reg);
}
void JIT::emitGetClosureVar(VirtualRegister scope, uintptr_t operand)
Modified: trunk/Source/_javascript_Core/jit/ThunkGenerators.cpp (283969 => 283970)
--- trunk/Source/_javascript_Core/jit/ThunkGenerators.cpp 2021-10-12 05:05:01 UTC (rev 283969)
+++ trunk/Source/_javascript_Core/jit/ThunkGenerators.cpp 2021-10-12 06:32:55 UTC (rev 283970)
@@ -600,7 +600,7 @@
// Move current frame down argumentGPR0 number of slots
JSInterfaceJIT::Label copyLoop(jit.label());
- jit.load64(JSInterfaceJIT::regT3, extraTemp);
+ jit.load64(CCallHelpers::Address(JSInterfaceJIT::regT3), extraTemp);
jit.store64(extraTemp, MacroAssembler::BaseIndex(JSInterfaceJIT::regT3, JSInterfaceJIT::argumentGPR0, JSInterfaceJIT::TimesEight));
jit.addPtr(JSInterfaceJIT::TrustedImm32(8), JSInterfaceJIT::regT3);
jit.branchSub32(MacroAssembler::NonZero, JSInterfaceJIT::TrustedImm32(1), JSInterfaceJIT::argumentGPR2).linkTo(copyLoop, &jit);
Modified: trunk/Source/_javascript_Core/wasm/WasmBinding.cpp (283969 => 283970)
--- trunk/Source/_javascript_Core/wasm/WasmBinding.cpp 2021-10-12 05:05:01 UTC (rev 283969)
+++ trunk/Source/_javascript_Core/wasm/WasmBinding.cpp 2021-10-12 06:32:55 UTC (rev 283970)
@@ -74,7 +74,7 @@
}
// Tail call into the callee WebAssembly function.
- jit.loadPtr(scratch, scratch);
+ jit.loadPtr(JIT::Address(scratch), scratch);
jit.farJump(scratch, WasmEntryPtrTag);
LinkBuffer patchBuffer(jit, GLOBAL_THUNK_ID, LinkBuffer::Profile::WasmThunk, JITCompilationCanFail);
Modified: trunk/Source/_javascript_Core/yarr/YarrJIT.cpp (283969 => 283970)
--- trunk/Source/_javascript_Core/yarr/YarrJIT.cpp 2021-10-12 05:05:01 UTC (rev 283969)
+++ trunk/Source/_javascript_Core/yarr/YarrJIT.cpp 2021-10-12 06:32:55 UTC (rev 283970)
@@ -697,7 +697,7 @@
JumpList notUnicode;
- load16Unaligned(regUnicodeInputAndTrail, resultReg);
+ load16Unaligned(Address(regUnicodeInputAndTrail), resultReg);
// Is the character a leading surrogate?
and32(surrogateTagMask, resultReg, unicodeTemp);
@@ -879,7 +879,7 @@
{
ASSERT(!m_pattern.m_body->m_hasFixedSize);
if (m_compileMode == JITCompileMode::IncludeSubpatterns)
- store32(reg, output);
+ store32(reg, Address(output));
else
move(reg, output);
}
@@ -887,7 +887,7 @@
{
ASSERT(!m_pattern.m_body->m_hasFixedSize);
if (m_compileMode == JITCompileMode::IncludeSubpatterns)
- load32(output, reg);
+ load32(Address(output), reg);
else
move(output, reg);
}
@@ -2830,7 +2830,7 @@
loadFromFrame(parenthesesFrameLocation + BackTrackInfoParentheses::parenContextHeadIndex(), currParenContextReg);
allocateParenContext(newParenContextReg);
- storePtr(currParenContextReg, newParenContextReg);
+ storePtr(currParenContextReg, Address(newParenContextReg));
storeToFrame(newParenContextReg, parenthesesFrameLocation + BackTrackInfoParentheses::parenContextHeadIndex());
saveParenContext(newParenContextReg, regT2, term->parentheses.subpatternId, term->parentheses.lastSubpatternId, parenthesesFrameLocation);
storeToFrame(index, parenthesesFrameLocation + BackTrackInfoParentheses::beginIndex());
Modified: trunk/Source/WebCore/ChangeLog (283969 => 283970)
--- trunk/Source/WebCore/ChangeLog 2021-10-12 05:05:01 UTC (rev 283969)
+++ trunk/Source/WebCore/ChangeLog 2021-10-12 06:32:55 UTC (rev 283970)
@@ -1,3 +1,14 @@
+2021-10-11 Saam Barati <[email protected]>
+
+ Remove ImplicitAddress
+ https://bugs.webkit.org/show_bug.cgi?id=230820
+ <rdar://problem/83826318>
+
+ Reviewed by Yusuke Suzuki.
+
+ * cssjit/SelectorCompiler.cpp:
+ (WebCore::SelectorCompiler::SelectorCodeGenerator::generateSelectorChecker):
+
2021-10-11 Myles C. Maxfield <[email protected]>
[GPU Process] Unique RenderingResourceIdentifiers Part 6: Uniquify more of RemoteDisplayListRecorder at entry points
Modified: trunk/Source/WebCore/cssjit/SelectorCompiler.cpp (283969 => 283970)
--- trunk/Source/WebCore/cssjit/SelectorCompiler.cpp 2021-10-12 05:05:01 UTC (rev 283969)
+++ trunk/Source/WebCore/cssjit/SelectorCompiler.cpp 2021-10-12 06:32:55 UTC (rev 283970)
@@ -2081,9 +2081,9 @@
if (m_selectorContext == SelectorContext::RuleCollector) {
unsigned specificity = m_selectorFragments.staticSpecificity;
if (m_functionType == FunctionType::SelectorCheckerWithCheckingContext)
- m_assembler.store32(Assembler::TrustedImm32(specificity), JSC::GPRInfo::argumentGPR2);
+ m_assembler.store32(Assembler::TrustedImm32(specificity), Assembler::Address(JSC::GPRInfo::argumentGPR2));
else
- m_assembler.store32(Assembler::TrustedImm32(specificity), JSC::GPRInfo::argumentGPR1);
+ m_assembler.store32(Assembler::TrustedImm32(specificity), Assembler::Address(JSC::GPRInfo::argumentGPR1));
}
computeBacktrackingMemoryRequirements(m_selectorFragments);