Source/JavaScriptCore/ChangeLog

 12019-12-01 Caio Lima <ticaiolima@gmail.com>
 2
 3 [32-bits] Check if StructureStubInfo::patch.baseTagGPR is used somewhere.
 4 https://bugs.webkit.org/show_bug.cgi?id=204726
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 When we generate ByIdInlineCache and ByValInlineCache, `base` is always
 9 a cell. Given that, we don't need to store `baseTag` on 32-bits
 10 version. This patch is removing StructureStubInfo::patch.baseTagGPR.
 11
 12 * bytecode/AccessCase.cpp:
 13 (JSC::AccessCase::generateImpl):
 14 * bytecode/GetterSetterAccessCase.cpp:
 15 (JSC::GetterSetterAccessCase::emitDOMJITGetter):
 16 * bytecode/InlineAccess.cpp:
 17 (JSC::getScratchRegister):
 18 * bytecode/PolymorphicAccess.cpp:
 19 (JSC::PolymorphicAccess::regenerate):
 20 * bytecode/StructureStubInfo.h:
 21 * jit/JITInlineCacheGenerator.cpp:
 22 (JSC::JITByIdGenerator::JITByIdGenerator):
 23 (JSC::JITInstanceOfGenerator::JITInstanceOfGenerator):
 24
1252019-11-29 Eike Rathke <erack@redhat.com>
226
327 Use default implementation for JSVALUE64 with GCC on unknown platform.

Source/JavaScriptCore/bytecode/AccessCase.cpp

@@void AccessCase::generateImpl(AccessGenerationState& state)
17081708
17091709 ScratchRegisterAllocator allocator(stubInfo.patch.usedRegisters);
17101710 allocator.lock(baseGPR);
1711 #if USE(JSVALUE32_64)
1712  allocator.lock(stubInfo.patch.baseTagGPR);
1713 #endif
17141711 allocator.lock(valueRegs);
17151712 allocator.lock(scratchGPR);
17161713

Source/JavaScriptCore/bytecode/GetterSetterAccessCase.cpp

@@void GetterSetterAccessCase::emitDOMJITGetter(AccessGenerationState& state, cons
140140
141141 ScratchRegisterAllocator allocator(stubInfo.patch.usedRegisters);
142142 allocator.lock(baseGPR);
143 #if USE(JSVALUE32_64)
144  allocator.lock(stubInfo.patch.baseTagGPR);
145 #endif
146143 allocator.lock(valueRegs);
147144 allocator.lock(scratchGPR);
148145

Source/JavaScriptCore/bytecode/InlineAccess.cpp

@@ALWAYS_INLINE static GPRReg getScratchRegister(StructureStubInfo& stubInfo)
213213 allocator.lock(stubInfo.baseGPR());
214214 allocator.lock(stubInfo.patch.valueGPR);
215215#if USE(JSVALUE32_64)
216  allocator.lock(stubInfo.patch.baseTagGPR);
217216 allocator.lock(stubInfo.patch.valueTagGPR);
218217#endif
219218 GPRReg scratch = allocator.allocateScratchGPR();

Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp

@@AccessGenerationResult PolymorphicAccess::regenerate(
450450 if (state.u.thisGPR != InvalidGPRReg)
451451 allocator.lock(state.u.thisGPR);
452452 allocator.lock(state.valueRegs);
453 #if USE(JSVALUE32_64)
454  allocator.lock(stubInfo.patch.baseTagGPR);
455 #endif
456453
457454 state.scratchGPR = allocator.allocateScratchGPR();
458455

Source/JavaScriptCore/bytecode/StructureStubInfo.h

@@public:
220220 } u;
221221#if USE(JSVALUE32_64)
222222 GPRReg valueTagGPR;
223  GPRReg baseTagGPR;
224223 GPRReg thisTagGPR;
225224#endif
226225 } patch;

Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp

@@JITByIdGenerator::JITByIdGenerator(
7676 m_stubInfo->patch.valueGPR = value.payloadGPR();
7777 m_stubInfo->patch.u.thisGPR = InvalidGPRReg;
7878#if USE(JSVALUE32_64)
79  m_stubInfo->patch.baseTagGPR = base.tagGPR();
8079 m_stubInfo->patch.valueTagGPR = value.tagGPR();
8180 m_stubInfo->patch.thisTagGPR = InvalidGPRReg;
8281#endif

@@JITInstanceOfGenerator::JITInstanceOfGenerator(
188187 m_stubInfo->patch.valueGPR = result;
189188 m_stubInfo->patch.u.prototypeGPR = prototype;
190189#if USE(JSVALUE32_64)
191  m_stubInfo->patch.baseTagGPR = InvalidGPRReg;
192190 m_stubInfo->patch.valueTagGPR = InvalidGPRReg;
193191 m_stubInfo->patch.thisTagGPR = InvalidGPRReg;
194192#endif