Changeset 214384 in webkit for trunk/Source/JavaScriptCore/assembler
- Timestamp:
- Mar 24, 2017, 4:25:16 PM (8 years ago)
- Location:
- trunk/Source/JavaScriptCore/assembler
- Files:
-
- 6 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/assembler/AbstractMacroAssembler.h
r213714 r214384 1109 1109 1110 1110 friend class AllowMacroScratchRegisterUsage; 1111 friend class AllowMacroScratchRegisterUsageIf; 1111 1112 friend class DisallowMacroScratchRegisterUsage; 1112 1113 unsigned m_tempRegistersValidBits; -
trunk/Source/JavaScriptCore/assembler/AllowMacroScratchRegisterUsageIf.h
r214383 r214384 1 1 /* 2 * Copyright (C) 201 6Apple Inc. All rights reserved.2 * Copyright (C) 2017 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 21 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 24 */ 25 25 26 26 #pragma once 27 27 28 #if ENABLE( WEBASSEMBLY)28 #if ENABLE(ASSEMBLER) 29 29 30 #include "InternalFunction.h" 31 #include "JSObject.h" 30 #include "MacroAssembler.h" 32 31 33 32 namespace JSC { 34 33 35 class JSWebAssemblyModule; 36 class WebAssemblyInstancePrototype; 34 class AllowMacroScratchRegisterUsageIf { 35 public: 36 AllowMacroScratchRegisterUsageIf(MacroAssembler& masm, bool allowIfTrue) 37 : m_masm(masm) 38 , m_allowIfTrue(allowIfTrue) 39 , m_oldValueOfAllowScratchRegister(masm.m_allowScratchRegister) 40 { 41 if (m_allowIfTrue) 42 masm.m_allowScratchRegister = true; 43 } 37 44 38 class WebAssemblyInstanceConstructor : public InternalFunction { 39 public: 40 typedef InternalFunction Base; 41 static const unsigned StructureFlags = Base::StructureFlags | HasStaticPropertyTable; 42 43 static WebAssemblyInstanceConstructor* create(VM&, Structure*, WebAssemblyInstancePrototype*); 44 static Structure* createStructure(VM&, JSGlobalObject*, JSValue); 45 46 DECLARE_INFO; 47 48 static JSWebAssemblyInstance* createInstance(ExecState*, JSWebAssemblyModule*, JSObject* importObject, Structure*); 49 50 protected: 51 void finishCreation(VM&, WebAssemblyInstancePrototype*); 45 ~AllowMacroScratchRegisterUsageIf() 46 { 47 if (m_allowIfTrue) 48 m_masm.m_allowScratchRegister = m_oldValueOfAllowScratchRegister; 49 } 52 50 53 51 private: 54 WebAssemblyInstanceConstructor(VM&, Structure*); 55 static ConstructType getConstructData(JSCell*, ConstructData&); 56 static CallType getCallData(JSCell*, CallData&); 57 static void visitChildren(JSCell*, SlotVisitor&); 52 MacroAssembler& m_masm; 53 bool m_allowIfTrue; 54 bool m_oldValueOfAllowScratchRegister; 58 55 }; 59 56 60 57 } // namespace JSC 61 58 62 #endif // ENABLE( WEBASSEMBLY)59 #endif // ENABLE(ASSEMBLER) -
trunk/Source/JavaScriptCore/assembler/MacroAssembler.h
r214213 r214384 658 658 loadFromTLS32(offset, dst); 659 659 } 660 661 void storeToTLSPtr(RegisterID src, uint32_t offset) 662 { 663 storeToTLS32(src, offset); 664 } 660 665 #endif 661 666 … … 971 976 { 972 977 loadFromTLS64(offset, dst); 978 } 979 void storeToTLSPtr(RegisterID src, uint32_t offset) 980 { 981 storeToTLS64(src, offset); 973 982 } 974 983 #endif -
trunk/Source/JavaScriptCore/assembler/MacroAssemblerARM64.h
r213753 r214384 3601 3601 #if ENABLE(FAST_TLS_JIT) 3602 3602 // This will use scratch registers if the offset is not legal. 3603 3603 3604 3604 void loadFromTLS32(uint32_t offset, RegisterID dst) 3605 3605 { … … 3614 3614 and64(TrustedImm32(~7), dst); 3615 3615 load64(Address(dst, offset), dst); 3616 } 3617 3618 static bool loadFromTLSPtrNeedsMacroScratchRegister() 3619 { 3620 return true; 3621 } 3622 3623 void storeToTLS32(RegisterID src, uint32_t offset) 3624 { 3625 RegisterID tmp = getCachedDataTempRegisterIDAndInvalidate(); 3626 ASSERT(src != tmp); 3627 m_assembler.mrs_TPIDRRO_EL0(tmp); 3628 and64(TrustedImm32(~7), tmp); 3629 store32(src, Address(tmp, offset)); 3630 } 3631 3632 void storeToTLS64(RegisterID src, uint32_t offset) 3633 { 3634 RegisterID tmp = getCachedDataTempRegisterIDAndInvalidate(); 3635 ASSERT(src != tmp); 3636 m_assembler.mrs_TPIDRRO_EL0(tmp); 3637 and64(TrustedImm32(~7), tmp); 3638 store64(src, Address(tmp, offset)); 3639 } 3640 3641 static bool storeToTLSPtrNeedsMacroScratchRegister() 3642 { 3643 return true; 3616 3644 } 3617 3645 #endif // ENABLE(FAST_TLS_JIT) -
trunk/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h
r213753 r214384 3864 3864 m_assembler.gs(); 3865 3865 m_assembler.movl_mr(offset, dst); 3866 } 3867 3868 3869 static bool loadFromTLSPtrNeedsMacroScratchRegister() 3870 { 3871 return false; 3872 } 3873 3874 void storeToTLS32(RegisterID src, uint32_t offset) 3875 { 3876 m_assembler.gs(); 3877 m_assembler.movl_rm(src, offset); 3878 } 3879 3880 static bool storeToTLSPtrNeedsMacroScratchRegister() 3881 { 3882 return false; 3866 3883 } 3867 3884 #endif -
trunk/Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h
r213753 r214384 1706 1706 { 1707 1707 m_assembler.gs(); 1708 m_assembler.movl_mr(offset, dst); 1708 m_assembler.movq_mr(offset, dst); 1709 } 1710 1711 void storeToTLS64(RegisterID src, uint32_t offset) 1712 { 1713 m_assembler.gs(); 1714 m_assembler.movq_rm(src, offset); 1709 1715 } 1710 1716 #endif -
trunk/Source/JavaScriptCore/assembler/X86Assembler.h
r213753 r214384 2361 2361 } 2362 2362 2363 void movl_rm(RegisterID src, uint32_t addr) 2364 { 2365 m_formatter.oneByteOpAddr(OP_MOV_EvGv, src, addr); 2366 } 2367 2363 2368 #if CPU(X86_64) 2364 2369 void movq_rr(RegisterID src, RegisterID dst) … … 2380 2385 { 2381 2386 m_formatter.oneByteOp64(OP_MOV_EvGv, src, base, index, scale, offset); 2387 } 2388 2389 void movq_rm(RegisterID src, int offset) 2390 { 2391 m_formatter.oneByteOp64Addr(OP_MOV_EvGv, src, offset); 2382 2392 } 2383 2393
Note:
See TracChangeset
for help on using the changeset viewer.