Reviewed by Sam.
authorandersca@apple.com <andersca@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 5 Mar 2008 23:52:14 +0000 (23:52 +0000)
committerandersca@apple.com <andersca@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 5 Mar 2008 23:52:14 +0000 (23:52 +0000)
        Change some static class variables to be regular static variables,
        making it easier to move the chunk of mac-specific code out of runtime_root.[cpp|h]

        * bridge/runtime_root.cpp:
        (KJS::Bindings::completedJavaScriptAccess):
        (KJS::Bindings::RootObject::dispatchToJavaScriptThread):
        (KJS::Bindings::performJavaScriptAccess):
        (KJS::Bindings::RootObject::createRootObject):
        (KJS::Bindings::RootObject::runLoop):
        (KJS::Bindings::RootObject::setCreateRootObject):
        * bridge/runtime_root.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@30813 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/bridge/runtime_root.cpp
WebCore/bridge/runtime_root.h

index 1d68522b85f7bf337d94ba95fff6a99948acc038..acd4410ec22cead88d0cb43edc2aa9463e1952d7 100644 (file)
@@ -1,3 +1,19 @@
+2008-03-05  Anders Carlsson  <andersca@apple.com>
+
+        Reviewed by Sam.
+
+        Change some static class variables to be regular static variables,
+        making it easier to move the chunk of mac-specific code out of runtime_root.[cpp|h]
+
+        * bridge/runtime_root.cpp:
+        (KJS::Bindings::completedJavaScriptAccess):
+        (KJS::Bindings::RootObject::dispatchToJavaScriptThread):
+        (KJS::Bindings::performJavaScriptAccess):
+        (KJS::Bindings::RootObject::createRootObject):
+        (KJS::Bindings::RootObject::runLoop):
+        (KJS::Bindings::RootObject::setCreateRootObject):
+        * bridge/runtime_root.h:
+
 2008-03-05  Brent Fulgham <bfulgham@gmail.com>
 
         Reviewed by Adam Roben.
index 97e515da7e0e1e5d0d1af7a4f4c305ffb6690a47..1804e25cb4b784134050dde83313c38bbd6d1478 100644 (file)
@@ -70,12 +70,16 @@ RootObject* findRootObject(JSGlobalObject* globalObject)
 }
 
 #if PLATFORM(MAC)
+    
+static CFRunLoopSourceRef _performJavaScriptSource;
+static CFRunLoopRef _runLoop;
+
 // May only be set by dispatchToJavaScriptThread().
 static CFRunLoopSourceRef completionSource;
 
 static void completedJavaScriptAccess (void *i)
 {
-    assert (CFRunLoopGetCurrent() != RootObject::runLoop());
+    assert (CFRunLoopGetCurrent() != _runLoop);
 
     JSObjectCallContext *callContext = (JSObjectCallContext *)i;
     CFRunLoopRef runLoop = (CFRunLoopRef)callContext->originatingLoop;
@@ -113,7 +117,6 @@ static inline void unlockJavaScriptAccess()
     pthread_mutex_unlock(&javaScriptAccessLock);
 }
 
-
 void RootObject::dispatchToJavaScriptThread(JSObjectCallContext *context)
 {
     // This lock guarantees that only one thread can invoke
@@ -123,7 +126,7 @@ void RootObject::dispatchToJavaScriptThread(JSObjectCallContext *context)
 
     CFRunLoopRef currentRunLoop = CFRunLoopGetCurrent();
 
-    assert (currentRunLoop != RootObject::runLoop());
+    assert (currentRunLoop != _runLoop);
 
     // Setup a source to signal once the invocation of the JavaScript
     // call completes.
@@ -137,10 +140,9 @@ void RootObject::dispatchToJavaScriptThread(JSObjectCallContext *context)
     CFRunLoopAddSource(currentRunLoop, completionSource, kCFRunLoopDefaultMode);
 
     // Wakeup JavaScript access thread and make it do it's work.
-    CFRunLoopSourceSignal(RootObject::performJavaScriptSource());
-    if (CFRunLoopIsWaiting(RootObject::runLoop())) {
-        CFRunLoopWakeUp(RootObject::runLoop());
-    }
+    CFRunLoopSourceSignal(_performJavaScriptSource);
+    if (CFRunLoopIsWaiting(_runLoop))
+        CFRunLoopWakeUp(_runLoop);
     
     // Wait until the JavaScript access thread is done.
     CFRunLoopRun ();
@@ -153,7 +155,7 @@ void RootObject::dispatchToJavaScriptThread(JSObjectCallContext *context)
 
 static void performJavaScriptAccess(void*)
 {
-    assert (CFRunLoopGetCurrent() == RootObject::runLoop());
+    assert (CFRunLoopGetCurrent() == _runLoop);
     
     // Dispatch JavaScript calls here.
     CFRunLoopSourceContext sourceContext;
@@ -165,14 +167,21 @@ static void performJavaScriptAccess(void*)
     
     // Signal the originating thread that we're done.
     CFRunLoopSourceSignal (completionSource);
-    if (CFRunLoopIsWaiting(originatingLoop)) {
+    if (CFRunLoopIsWaiting(originatingLoop))
         CFRunLoopWakeUp(originatingLoop);
-    }
 }
 
-CreateRootObjectFunction RootObject::_createRootObject = 0;
-CFRunLoopRef RootObject::_runLoop = 0;
-CFRunLoopSourceRef RootObject::_performJavaScriptSource = 0;
+static CreateRootObjectFunction _createRootObject;
+    
+CreateRootObjectFunction RootObject::createRootObject()
+{
+    return _createRootObject;
+}
+
+CFRunLoopRef RootObject::runLoop()
+{
+    return _runLoop;
+}        
 
 // Must be called from the thread that will be used to access JavaScript.
 void RootObject::setCreateRootObject(CreateRootObjectFunction createRootObject) {
@@ -188,8 +197,8 @@ void RootObject::setCreateRootObject(CreateRootObjectFunction createRootObject)
     // Setup a source the other threads can use to signal the _runLoop
     // thread that a JavaScript call needs to be invoked.
     CFRunLoopSourceContext sourceContext = {0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, performJavaScriptAccess};
-    RootObject::_performJavaScriptSource = CFRunLoopSourceCreate(NULL, 0, &sourceContext);
-    CFRunLoopAddSource(RootObject::_runLoop, RootObject::_performJavaScriptSource, kCFRunLoopDefaultMode);
+    _performJavaScriptSource = CFRunLoopSourceCreate(NULL, 0, &sourceContext);
+    CFRunLoopAddSource(_runLoop, _performJavaScriptSource, kCFRunLoopDefaultMode);
 }
 
 #endif
index 5df8b9d88d4e2e755234f5a0dbb0d186e6fe9155..ce176f6491fc6696d83b6dafc65137d3c0d07606 100644 (file)
@@ -72,13 +72,9 @@ public:
 #if PLATFORM(MAC)
     // Must be called from the thread that will be used to access JavaScript.
     static void setCreateRootObject(CreateRootObjectFunction);
-    static CreateRootObjectFunction createRootObject() {
-        return _createRootObject;
-    }
-    
-    static CFRunLoopRef runLoop() { return _runLoop; }
-    static CFRunLoopSourceRef performJavaScriptSource() { return _performJavaScriptSource; }
+    static CreateRootObjectFunction createRootObject();
     
+    static CFRunLoopRef runLoop();
     static void dispatchToJavaScriptThread(JSObjectCallContext *context);
 #endif
 
@@ -93,13 +89,7 @@ private:
     ProtectedPtr<JSGlobalObject> m_globalObject;
     ProtectCountSet m_protectCountSet;
 
-    HashSet<RuntimeObjectImp*> m_runtimeObjects;
-    
-#if PLATFORM(MAC)
-    static CreateRootObjectFunction _createRootObject;
-    static CFRunLoopRef _runLoop;
-    static CFRunLoopSourceRef _performJavaScriptSource;
-#endif
+    HashSet<RuntimeObjectImp*> m_runtimeObjects;    
 };
 
 } // namespace Bindings