Title: [283970] trunk/Source
Revision
283970
Author
[email protected]
Date
2021-10-11 23:32:55 -0700 (Mon, 11 Oct 2021)

Log Message

Remove ImplicitAddress
https://bugs.webkit.org/show_bug.cgi?id=230820
<rdar://problem/83826318>

Reviewed by Yusuke Suzuki.

Source/_javascript_Core:

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:

Source/WebCore:

* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateSelectorChecker):

Modified Paths

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);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to