Ignore:
Timestamp:
Mar 10, 2017, 11:17:48 PM (8 years ago)
Author:
[email protected]
Message:

The JITs should be able to emit fast TLS loads
https://bugs.webkit.org/show_bug.cgi?id=169483

Reviewed by Keith Miller.

Source/JavaScriptCore:

Added loadFromTLS32/64/Ptr to the MacroAssembler and added a B3 test for this.

  • assembler/ARM64Assembler.h:

(JSC::ARM64Assembler::mrs_TPIDRRO_EL0):

  • assembler/MacroAssembler.h:

(JSC::MacroAssembler::loadFromTLSPtr):

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::loadFromTLS32):
(JSC::MacroAssemblerARM64::loadFromTLS64):

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::loadFromTLS32):

  • assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::loadFromTLS64):

  • assembler/X86Assembler.h:

(JSC::X86Assembler::adcl_im):
(JSC::X86Assembler::addl_mr):
(JSC::X86Assembler::addl_im):
(JSC::X86Assembler::andl_im):
(JSC::X86Assembler::orl_im):
(JSC::X86Assembler::orl_rm):
(JSC::X86Assembler::subl_im):
(JSC::X86Assembler::cmpb_im):
(JSC::X86Assembler::cmpl_rm):
(JSC::X86Assembler::cmpl_im):
(JSC::X86Assembler::testb_im):
(JSC::X86Assembler::movb_i8m):
(JSC::X86Assembler::movb_rm):
(JSC::X86Assembler::movl_mr):
(JSC::X86Assembler::movq_mr):
(JSC::X86Assembler::movsxd_rr):
(JSC::X86Assembler::gs):
(JSC::X86Assembler::X86InstructionFormatter::SingleInstructionBufferWriter::memoryModRM):

  • b3/testb3.cpp:

(JSC::B3::testFastTLS):
(JSC::B3::run):

Source/WTF:

Consolidated what we know about fast TLS in FastTLS.h.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/FastTLS.h: Added.

(WTF::loadFastTLS):
(WTF::fastTLSOffsetForKey):

  • wtf/Platform.h:
  • wtf/WTFThreadData.cpp:

(WTF::WTFThreadData::createAndRegisterForGetspecificDirect):

  • wtf/WTFThreadData.h:

(WTF::wtfThreadData):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h

    r213714 r213753  
    38583858    {
    38593859    }
     3860   
     3861#if ENABLE(FAST_TLS_JIT)
     3862    void loadFromTLS32(uint32_t offset, RegisterID dst)
     3863    {
     3864        m_assembler.gs();
     3865        m_assembler.movl_mr(offset, dst);
     3866    }
     3867#endif
    38603868
    38613869    static void replaceWithBreakpoint(CodeLocationLabel instructionStart)
Note: See TracChangeset for help on using the changeset viewer.