summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/runtime/JSGlobalData.h
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-09-10 19:10:20 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-09-10 19:10:20 +0200
commit284837daa07b29d6a63a748544a90b1f5842ac5c (patch)
treeecd258180bde91fe741e0cfd2638beb3c6da7e8e /Source/JavaScriptCore/runtime/JSGlobalData.h
parent2e2ba8ff45915f40ed3e014101269c175f2a89a0 (diff)
downloadqtwebkit-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.h37
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