diff options
Diffstat (limited to 'Source/JavaScriptCore/runtime/JSGlobalData.h')
-rw-r--r-- | Source/JavaScriptCore/runtime/JSGlobalData.h | 37 |
1 files changed, 22 insertions, 15 deletions
diff --git a/Source/JavaScriptCore/runtime/JSGlobalData.h b/Source/JavaScriptCore/runtime/JSGlobalData.h index 4604737d2..e4e6784da 100644 --- a/Source/JavaScriptCore/runtime/JSGlobalData.h +++ b/Source/JavaScriptCore/runtime/JSGlobalData.h @@ -76,7 +76,6 @@ namespace JSC { class RegExpCache; class Stringifier; class Structure; - class UString; #if ENABLE(REGEXP_TRACING) class RegExp; #endif @@ -193,7 +192,15 @@ namespace JSC { JSLock m_apiLock; public: - Heap heap; // The heap is our first data member to ensure that it's destructed after all the objects that reference it. +#if ENABLE(ASSEMBLER) + // executableAllocator should be destructed after the heap, as the heap can call executableAllocator + // in its destructor. + ExecutableAllocator executableAllocator; +#endif + + // The heap should be just after executableAllocator and before other members to ensure that it's + // destructed after all the objects that reference it. + Heap heap; GlobalDataType globalDataType; ClientData* clientData; @@ -221,23 +228,21 @@ namespace JSC { Strong<Structure> structureStructure; Strong<Structure> debuggerActivationStructure; - Strong<Structure> activationStructure; Strong<Structure> interruptedExecutionErrorStructure; Strong<Structure> terminatedExecutionErrorStructure; - Strong<Structure> staticScopeStructure; - Strong<Structure> strictEvalActivationStructure; Strong<Structure> stringStructure; Strong<Structure> notAnObjectStructure; Strong<Structure> propertyNameIteratorStructure; Strong<Structure> getterSetterStructure; Strong<Structure> apiWrapperStructure; - Strong<Structure> scopeChainNodeStructure; + Strong<Structure> JSScopeStructure; Strong<Structure> executableStructure; Strong<Structure> nativeExecutableStructure; Strong<Structure> evalExecutableStructure; Strong<Structure> programExecutableStructure; Strong<Structure> functionExecutableStructure; Strong<Structure> regExpStructure; + Strong<Structure> sharedSymbolTableStructure; Strong<Structure> structureChainStructure; IdentifierTable* identifierTable; @@ -274,16 +279,12 @@ namespace JSC { return m_enabledProfiler; } -#if ENABLE(ASSEMBLER) - ExecutableAllocator executableAllocator; -#endif - #if !ENABLE(JIT) bool canUseJIT() { return false; } // interpreter only #elif !ENABLE(CLASSIC_INTERPRETER) && !ENABLE(LLINT) bool canUseJIT() { return true; } // jit only #else - bool canUseJIT() { return m_canUseAssembler; } + bool canUseJIT() { return m_canUseJIT; } #endif #if !ENABLE(YARR_JIT) @@ -291,7 +292,7 @@ namespace JSC { #elif !ENABLE(CLASSIC_INTERPRETER) && !ENABLE(LLINT) bool canUseRegExpJIT() { return true; } // jit only #else - bool canUseRegExpJIT() { return m_canUseAssembler; } + bool canUseRegExpJIT() { return m_canUseRegExpJIT; } #endif PrivateName m_inheritorIDKey; @@ -317,8 +318,6 @@ namespace JSC { const ClassInfo* const jsArrayClassInfo; const ClassInfo* const jsFinalObjectClassInfo; - LLInt::Data llintData; - ReturnAddressPtr exceptionLocation; JSValue hostCallReturnValue; CallFrame* callFrameForThrow; @@ -362,7 +361,7 @@ namespace JSC { double cachedUTCOffset; DSTOffsetCache dstOffsetCache; - UString cachedDateString; + String cachedDateString; double cachedDateStringValue; int maxReentryDepth; @@ -417,6 +416,7 @@ namespace JSC { { \ ASSERT(!m_##type##ArrayDescriptor.m_classInfo || m_##type##ArrayDescriptor.m_classInfo == descriptor.m_classInfo); \ m_##type##ArrayDescriptor = descriptor; \ + ASSERT(m_##type##ArrayDescriptor.m_classInfo); \ } \ const TypedArrayDescriptor& type##ArrayDescriptor() const { ASSERT(m_##type##ArrayDescriptor.m_classInfo); return m_##type##ArrayDescriptor; } @@ -441,6 +441,8 @@ namespace JSC { void createNativeThunk(); #if ENABLE(ASSEMBLER) && (ENABLE(CLASSIC_INTERPRETER) || ENABLE(LLINT)) bool m_canUseAssembler; + bool m_canUseJIT; + bool m_canUseRegExpJIT; #endif #if ENABLE(GC_VALIDATION) const ClassInfo* m_initializingObjectClass; @@ -470,6 +472,11 @@ namespace JSC { } #endif + inline Heap* WeakSet::heap() const + { + return &m_globalData->heap; + } + } // namespace JSC #endif // JSGlobalData_h |