diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-09-10 19:10:20 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-09-10 19:10:20 +0200 |
commit | 284837daa07b29d6a63a748544a90b1f5842ac5c (patch) | |
tree | ecd258180bde91fe741e0cfd2638beb3c6da7e8e /Source/JavaScriptCore/runtime/JSGlobalData.h | |
parent | 2e2ba8ff45915f40ed3e014101269c175f2a89a0 (diff) | |
download | qtwebkit-284837daa07b29d6a63a748544a90b1f5842ac5c.tar.gz |
Imported WebKit commit 68645295d2e3e09af2c942f092556f06aa5f8b0d (http://svn.webkit.org/repository/webkit/trunk@128073)
New snapshot
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 |