summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/runtime/JSGlobalData.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/runtime/JSGlobalData.h')
-rw-r--r--Source/JavaScriptCore/runtime/JSGlobalData.h29
1 files changed, 18 insertions, 11 deletions
diff --git a/Source/JavaScriptCore/runtime/JSGlobalData.h b/Source/JavaScriptCore/runtime/JSGlobalData.h
index acbcee816..177d80298 100644
--- a/Source/JavaScriptCore/runtime/JSGlobalData.h
+++ b/Source/JavaScriptCore/runtime/JSGlobalData.h
@@ -152,6 +152,8 @@ namespace JSC {
void makeUsableFromMultipleThreads() { heap.machineThreads().makeUsableFromMultipleThreads(); }
+ Heap heap; // The heap is our first data member to ensure that it's destructed after all the objects that reference it.
+
GlobalDataType globalDataType;
ClientData* clientData;
CallFrame* topCallFrame;
@@ -234,7 +236,15 @@ namespace JSC {
#elif !ENABLE(CLASSIC_INTERPRETER) && !ENABLE(LLINT)
bool canUseJIT() { return true; } // jit only
#else
- bool canUseJIT() { return m_canUseJIT; }
+ bool canUseJIT() { return m_canUseAssembler; }
+#endif
+
+#if !ENABLE(YARR_JIT)
+ bool canUseRegExpJIT() { return false; } // interpreter only
+#elif !ENABLE(CLASSIC_INTERPRETER) && !ENABLE(LLINT)
+ bool canUseRegExpJIT() { return true; } // jit only
+#else
+ bool canUseRegExpJIT() { return m_canUseAssembler; }
#endif
OwnPtr<ParserArena> parserArena;
@@ -252,7 +262,6 @@ namespace JSC {
TimeoutChecker timeoutChecker;
Terminator terminator;
- Heap heap;
JSValue exception;
@@ -324,20 +333,18 @@ namespace JSC {
JS_EXPORT_PRIVATE void startSampling();
JS_EXPORT_PRIVATE void stopSampling();
JS_EXPORT_PRIVATE void dumpSampleData(ExecState* exec);
- void recompileAllJSFunctions();
RegExpCache* regExpCache() { return m_regExpCache; }
#if ENABLE(REGEXP_TRACING)
void addRegExpToTrace(PassRefPtr<RegExp> regExp);
#endif
JS_EXPORT_PRIVATE void dumpRegExpTrace();
- JS_EXPORT_PRIVATE void clearBuiltinStructures();
bool isCollectorBusy() { return heap.isBusy(); }
JS_EXPORT_PRIVATE void releaseExecutableMemory();
#if ENABLE(GC_VALIDATION)
bool isInitializingObject() const;
- void setInitializingObject(bool);
+ void setInitializingObjectClass(const ClassInfo*);
#endif
#if CPU(X86) && ENABLE(JIT)
@@ -369,11 +376,11 @@ namespace JSC {
JSGlobalData(GlobalDataType, ThreadStackType, HeapSize);
static JSGlobalData*& sharedInstanceInternal();
void createNativeThunk();
-#if ENABLE(JIT) && (ENABLE(CLASSIC_INTERPRETER) || ENABLE(LLINT))
- bool m_canUseJIT;
+#if ENABLE(ASSEMBLER) && (ENABLE(CLASSIC_INTERPRETER) || ENABLE(LLINT))
+ bool m_canUseAssembler;
#endif
#if ENABLE(GC_VALIDATION)
- bool m_isInitializingObject;
+ const ClassInfo* m_initializingObjectClass;
#endif
bool m_inDefineOwnProperty;
@@ -391,12 +398,12 @@ namespace JSC {
#if ENABLE(GC_VALIDATION)
inline bool JSGlobalData::isInitializingObject() const
{
- return m_isInitializingObject;
+ return !!m_initializingObjectClass;
}
- inline void JSGlobalData::setInitializingObject(bool initializingObject)
+ inline void JSGlobalData::setInitializingObjectClass(const ClassInfo* initializingObjectClass)
{
- m_isInitializingObject = initializingObject;
+ m_initializingObjectClass = initializingObjectClass;
}
#endif