summaryrefslogtreecommitdiffstats
path: root/Source/JavaScriptCore/runtime/JSLock.h
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@digia.com>2013-09-13 12:51:20 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-19 20:50:05 +0200
commitd441d6f39bb846989d95bcf5caf387b42414718d (patch)
treee367e64a75991c554930278175d403c072de6bb8 /Source/JavaScriptCore/runtime/JSLock.h
parent0060b2994c07842f4c59de64b5e3e430525c4b90 (diff)
Import Qt5x2 branch of QtWebkit for Qt 5.2
Importing a new snapshot of webkit. Change-Id: I2d01ad12cdc8af8cb015387641120a9d7ea5f10c Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Diffstat (limited to 'Source/JavaScriptCore/runtime/JSLock.h')
-rw-r--r--Source/JavaScriptCore/runtime/JSLock.h29
1 files changed, 18 insertions, 11 deletions
diff --git a/Source/JavaScriptCore/runtime/JSLock.h b/Source/JavaScriptCore/runtime/JSLock.h
index 4c42dc0ae..83bcc2425 100644
--- a/Source/JavaScriptCore/runtime/JSLock.h
+++ b/Source/JavaScriptCore/runtime/JSLock.h
@@ -49,10 +49,10 @@ namespace JSC {
// thread acquired it to begin with.
class ExecState;
- class JSGlobalData;
+ class VM;
// This class is used to protect the initialization of the legacy single
- // shared JSGlobalData.
+ // shared VM.
class GlobalJSLock {
WTF_MAKE_NONCOPYABLE(GlobalJSLock);
public:
@@ -66,19 +66,21 @@ namespace JSC {
class JSLockHolder {
public:
- JS_EXPORT_PRIVATE JSLockHolder(JSGlobalData*);
- JS_EXPORT_PRIVATE JSLockHolder(JSGlobalData&);
+ JS_EXPORT_PRIVATE JSLockHolder(VM*);
+ JS_EXPORT_PRIVATE JSLockHolder(VM&);
JS_EXPORT_PRIVATE JSLockHolder(ExecState*);
JS_EXPORT_PRIVATE ~JSLockHolder();
private:
- RefPtr<JSGlobalData> m_globalData;
+ void init();
+
+ RefPtr<VM> m_vm;
};
- class JSLock {
+ class JSLock : public ThreadSafeRefCounted<JSLock> {
WTF_MAKE_NONCOPYABLE(JSLock);
public:
- JSLock();
+ JSLock(VM*);
JS_EXPORT_PRIVATE ~JSLock();
JS_EXPORT_PRIVATE void lock();
@@ -86,8 +88,10 @@ namespace JSC {
static void lock(ExecState*);
static void unlock(ExecState*);
- static void lock(JSGlobalData&);
- static void unlock(JSGlobalData&);
+ static void lock(VM&);
+ static void unlock(VM&);
+
+ VM* vm() { return m_vm; }
JS_EXPORT_PRIVATE bool currentThreadIsHoldingLock();
@@ -95,16 +99,18 @@ namespace JSC {
unsigned dropAllLocksUnconditionally();
void grabAllLocks(unsigned lockCount);
+ void willDestroyVM(VM*);
+
class DropAllLocks {
WTF_MAKE_NONCOPYABLE(DropAllLocks);
public:
JS_EXPORT_PRIVATE DropAllLocks(ExecState* exec);
- JS_EXPORT_PRIVATE DropAllLocks(JSGlobalData*);
+ JS_EXPORT_PRIVATE DropAllLocks(VM*);
JS_EXPORT_PRIVATE ~DropAllLocks();
private:
intptr_t m_lockCount;
- RefPtr<JSGlobalData> m_globalData;
+ RefPtr<VM> m_vm;
};
private:
@@ -113,6 +119,7 @@ namespace JSC {
ThreadIdentifier m_ownerThread;
intptr_t m_lockCount;
unsigned m_lockDropDepth;
+ VM* m_vm;
};
} // namespace