Changeset 223715 in webkit for trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
- Timestamp:
- Oct 19, 2017, 3:23:58 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
r223614 r223715 3250 3250 #if USE(JSVALUE64) 3251 3251 m_jit.load64(MacroAssembler::Address(scratch3Reg, Structure::prototypeOffset()), scratch3Reg); 3252 auto isMonoProto = m_jit.branchIfNotInt32(JSValueRegs(scratch3Reg)); 3253 m_jit.zeroExtend32ToPtr(scratch3Reg, scratch3Reg); 3254 m_jit.load64(JITCompiler::BaseIndex(scratchReg, scratch3Reg, JITCompiler::TimesEight, JSObject::offsetOfInlineStorage()), scratch3Reg); 3255 isMonoProto.link(&m_jit); 3252 auto hasMonoProto = m_jit.branchTest64(JITCompiler::NonZero, scratch3Reg); 3253 m_jit.load64(JITCompiler::Address(scratchReg, offsetRelativeToBase(knownPolyProtoOffset)), scratch3Reg); 3254 hasMonoProto.link(&m_jit); 3256 3255 m_jit.move(scratch3Reg, scratchReg); 3257 3256 #else 3258 3257 m_jit.load32(MacroAssembler::Address(scratch3Reg, Structure::prototypeOffset() + TagOffset), scratch2Reg); 3259 3258 m_jit.load32(MacroAssembler::Address(scratch3Reg, Structure::prototypeOffset() + PayloadOffset), scratch3Reg); 3260 auto isMonoProto = m_jit.branch32(CCallHelpers::NotEqual, scratch2Reg, TrustedImm32(JSValue::Int32Tag));3261 m_jit.load32(JITCompiler:: BaseIndex(scratchReg, scratch3Reg, JITCompiler::TimesEight, JSObject::offsetOfInlineStorage() + PayloadOffset), scratch3Reg);3262 isMonoProto.link(&m_jit);3259 auto hasMonoProto = m_jit.branch32(CCallHelpers::NotEqual, scratch2Reg, TrustedImm32(JSValue::EmptyValueTag)); 3260 m_jit.load32(JITCompiler::Address(scratchReg, offsetRelativeToBase(knownPolyProtoOffset) + PayloadOffset), scratch3Reg); 3261 hasMonoProto.link(&m_jit); 3263 3262 m_jit.move(scratch3Reg, scratchReg); 3264 3263 #endif … … 10831 10830 if (hasPolyProto && !hasMonoProto) { 10832 10831 #if USE(JSVALUE64) 10833 m_jit.load64(MacroAssembler::Address(tempGPR, Structure::prototypeOffset()), tempGPR); 10834 m_jit.zeroExtend32ToPtr(tempGPR, tempGPR); 10835 m_jit.load64(JITCompiler::BaseIndex(objectGPR, tempGPR, JITCompiler::TimesEight, JSObject::offsetOfInlineStorage()), tempGPR); 10832 m_jit.load64(JITCompiler::Address(objectGPR, offsetRelativeToBase(knownPolyProtoOffset)), tempGPR); 10836 10833 jsValueResult(tempGPR, node); 10837 10834 #else 10838 m_jit.load32(MacroAssembler::Address(tempGPR, Structure::prototypeOffset() + PayloadOffset), tempGPR); 10839 m_jit.load32(JITCompiler::BaseIndex(objectGPR, tempGPR, JITCompiler::TimesEight, JSObject::offsetOfInlineStorage() + TagOffset), temp2GPR); 10840 m_jit.load32(JITCompiler::BaseIndex(objectGPR, tempGPR, JITCompiler::TimesEight, JSObject::offsetOfInlineStorage() + PayloadOffset), tempGPR); 10835 m_jit.load32(JITCompiler::Address(objectGPR, offsetRelativeToBase(knownPolyProtoOffset) + TagOffset), temp2GPR); 10836 m_jit.load32(JITCompiler::Address(objectGPR, offsetRelativeToBase(knownPolyProtoOffset) + PayloadOffset), tempGPR); 10841 10837 jsValueResult(temp2GPR, tempGPR, node); 10842 10838 #endif … … 10847 10843 #if USE(JSVALUE64) 10848 10844 m_jit.load64(MacroAssembler::Address(tempGPR, Structure::prototypeOffset()), tempGPR); 10849 auto isMonoProto = m_jit.branchIfNotInt32(JSValueRegs(tempGPR)); 10850 m_jit.zeroExtend32ToPtr(tempGPR, tempGPR); 10851 m_jit.load64(JITCompiler::BaseIndex(objectGPR, tempGPR, JITCompiler::TimesEight, JSObject::offsetOfInlineStorage()), tempGPR); 10852 isMonoProto.link(&m_jit); 10845 auto hasMonoProto = m_jit.branchTest64(JITCompiler::NonZero, tempGPR); 10846 m_jit.load64(JITCompiler::Address(objectGPR, offsetRelativeToBase(knownPolyProtoOffset)), tempGPR); 10847 hasMonoProto.link(&m_jit); 10853 10848 jsValueResult(tempGPR, node); 10854 10849 #else 10855 10850 m_jit.load32(MacroAssembler::Address(tempGPR, Structure::prototypeOffset() + TagOffset), temp2GPR); 10856 10851 m_jit.load32(MacroAssembler::Address(tempGPR, Structure::prototypeOffset() + PayloadOffset), tempGPR); 10857 auto isMonoProto = m_jit.branch32(CCallHelpers::NotEqual, temp2GPR, TrustedImm32(JSValue::Int32Tag));10858 m_jit.load32(JITCompiler:: BaseIndex(objectGPR, tempGPR, JITCompiler::TimesEight, JSObject::offsetOfInlineStorage() + TagOffset), temp2GPR);10859 m_jit.load32(JITCompiler:: BaseIndex(objectGPR, tempGPR, JITCompiler::TimesEight, JSObject::offsetOfInlineStorage() + PayloadOffset), tempGPR);10860 isMonoProto.link(&m_jit);10852 auto hasMonoProto = m_jit.branch32(CCallHelpers::NotEqual, temp2GPR, TrustedImm32(JSValue::EmptyValueTag)); 10853 m_jit.load32(JITCompiler::Address(objectGPR, offsetRelativeToBase(knownPolyProtoOffset) + TagOffset), temp2GPR); 10854 m_jit.load32(JITCompiler::Address(objectGPR, offsetRelativeToBase(knownPolyProtoOffset) + PayloadOffset), tempGPR); 10855 hasMonoProto.link(&m_jit); 10861 10856 jsValueResult(temp2GPR, tempGPR, node); 10862 10857 #endif
Note:
See TracChangeset
for help on using the changeset viewer.