Unreviewed, rolling out r159459.
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 20 Nov 2013 00:29:43 +0000 (00:29 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 20 Nov 2013 00:29:43 +0000 (00:29 +0000)
http://trac.webkit.org/changeset/159459
https://bugs.webkit.org/show_bug.cgi?id=124616

tons of assertions on launch (Requested by thorton on
#webkit).

* API/JSContext.mm:
(-[JSContext setException:]):
(-[JSContext wrapperForObjCObject:]):
(-[JSContext wrapperForJSObject:]):
* API/JSContextRef.cpp:
(JSContextGroupRelease):
(JSGlobalContextRelease):
* API/JSManagedValue.mm:
(-[JSManagedValue initWithValue:]):
(-[JSManagedValue value]):
* API/JSObjectRef.cpp:
(JSObjectIsFunction):
(JSObjectCopyPropertyNames):
* API/JSValue.mm:
(containerValueToObject):
* API/JSWrapperMap.mm:
(tryUnwrapObjcObject):

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

Source/JavaScriptCore/API/JSContext.mm
Source/JavaScriptCore/API/JSContextRef.cpp
Source/JavaScriptCore/API/JSManagedValue.mm
Source/JavaScriptCore/API/JSObjectRef.cpp
Source/JavaScriptCore/API/JSValue.mm
Source/JavaScriptCore/API/JSWrapperMap.mm
Source/JavaScriptCore/ChangeLog

index ef9e85b..bc8fc1a 100644 (file)
 
 - (void)setException:(JSValue *)value
 {
-    JSC::APIEntryShim entryShim(toJS(m_context));
     if (value)
         m_exception.set(toJS(m_context)->vm(), toJS(JSValueToObject(m_context, valueInternalValue(value), 0)));
     else
 
 - (JSValue *)wrapperForObjCObject:(id)object
 {
-    JSC::APIEntryShim entryShim(toJS(m_context));
+    // Lock access to m_wrapperMap
+    JSC::JSLockHolder lock(toJS(m_context));
     return [m_wrapperMap jsWrapperForObject:object];
 }
 
 - (JSValue *)wrapperForJSObject:(JSValueRef)value
 {
-    JSC::APIEntryShim entryShim(toJS(m_context));
+    JSC::JSLockHolder lock(toJS(m_context));
     return [m_wrapperMap objcWrapperForJSValueRef:value];
 }
 
index 108fd59..2ed8241 100644 (file)
@@ -68,9 +68,16 @@ JSContextGroupRef JSContextGroupRetain(JSContextGroupRef group)
 
 void JSContextGroupRelease(JSContextGroupRef group)
 {
+    IdentifierTable* savedIdentifierTable;
     VM& vm = *toJS(group);
-    APIEntryShim entryShim(&vm);
-    vm.deref();
+
+    {
+        JSLockHolder lock(vm);
+        savedIdentifierTable = wtfThreadData().setCurrentIdentifierTable(vm.identifierTable);
+        vm.deref();
+    }
+
+    wtfThreadData().setCurrentIdentifierTable(savedIdentifierTable);
 }
 
 static bool internalScriptTimeoutCallback(ExecState* exec, void* callbackPtr, void* callbackData)
@@ -158,7 +165,7 @@ void JSGlobalContextRelease(JSGlobalContextRef ctx)
     IdentifierTable* savedIdentifierTable;
     ExecState* exec = toJS(ctx);
     {
-        APIEntryShim entryShim(exec);
+        JSLockHolder lock(exec);
 
         VM& vm = exec->vm();
         savedIdentifierTable = wtfThreadData().setCurrentIdentifierTable(vm.identifierTable);
index 4616014..6013303 100644 (file)
@@ -30,7 +30,6 @@
 #if JSC_OBJC_API_ENABLED
 
 #import "APICast.h"
-#import "APIShims.h"
 #import "Heap.h"
 #import "JSContextInternal.h"
 #import "JSValueInternal.h"
@@ -192,7 +191,6 @@ private:
         return self;
 
     JSC::ExecState* exec = toJS([value.context JSGlobalContextRef]);
-    JSC::APIEntryShim entryShim(exec);
     JSC::JSGlobalObject* globalObject = exec->lexicalGlobalObject();
     JSC::Weak<JSC::JSGlobalObject> weak(globalObject, managedValueHandleOwner(), self);
     m_globalObject.swap(weak);
@@ -214,7 +212,6 @@ private:
     if (m_weakValue.isClear())
         return nil;
     JSC::ExecState* exec = m_globalObject->globalExec();
-    JSC::APIEntryShim entryShim(exec);
     JSContext *context = [JSContext contextWithJSGlobalContextRef:toGlobalRef(exec)];
     JSC::JSValue value;
     if (m_weakValue.isPrimitive())
index c769514..52e3a30 100644 (file)
@@ -506,11 +506,10 @@ bool JSObjectDeletePrivateProperty(JSContextRef ctx, JSObjectRef object, JSStrin
     return false;
 }
 
-bool JSObjectIsFunction(JSContextRef ctx, JSObjectRef object)
+bool JSObjectIsFunction(JSContextRef, JSObjectRef object)
 {
     if (!object)
         return false;
-    APIEntryShim entryShim(toJS(ctx));
     CallData callData;
     JSCell* cell = toJS(object);
     return cell->methodTable()->getCallData(cell, callData) != CallTypeNone;
@@ -606,12 +605,12 @@ JSPropertyNameArrayRef JSObjectCopyPropertyNames(JSContextRef ctx, JSObjectRef o
         ASSERT_NOT_REACHED();
         return 0;
     }
+    JSObject* jsObject = toJS(object);
     ExecState* exec = toJS(ctx);
     APIEntryShim entryShim(exec);
 
     VM* vm = &exec->vm();
 
-    JSObject* jsObject = toJS(object);
     JSPropertyNameArrayRef propertyNames = new OpaqueJSPropertyNameArray(vm);
     PropertyNameArray array(vm);
     jsObject->methodTable()->getPropertyNames(jsObject, exec, array, ExcludeDontEnumProperties);
index b4a50a6..95c129e 100644 (file)
@@ -692,8 +692,6 @@ static id containerValueToObject(JSGlobalContextRef context, JSContainerConverto
             ASSERT([current.objc isKindOfClass:[NSMutableDictionary class]]);
             NSMutableDictionary *dictionary = (NSMutableDictionary *)current.objc;
 
-            JSC::APIEntryShim entryShim(toJS(context));
-
             JSPropertyNameArrayRef propertyNameArray = JSObjectCopyPropertyNames(context, js);
             size_t length = JSPropertyNameArrayGetCount(propertyNameArray);
 
index 5e4613f..2f62fcc 100644 (file)
@@ -603,7 +603,6 @@ id tryUnwrapObjcObject(JSGlobalContextRef context, JSValueRef value)
     JSValueRef exception = 0;
     JSObjectRef object = JSValueToObject(context, value, &exception);
     ASSERT(!exception);
-    JSC::APIEntryShim entryShim(toJS(context));
     if (toJS(object)->inherits(JSC::JSCallbackObject<JSC::JSAPIWrapperObject>::info()))
         return (id)JSC::jsCast<JSC::JSAPIWrapperObject*>(toJS(object))->wrappedObject();
     if (id target = tryUnwrapConstructor(object))
index 409d917..a48e421 100644 (file)
@@ -1,3 +1,30 @@
+2013-11-19  Commit Queue  <commit-queue@webkit.org>
+
+        Unreviewed, rolling out r159459.
+        http://trac.webkit.org/changeset/159459
+        https://bugs.webkit.org/show_bug.cgi?id=124616
+
+        tons of assertions on launch (Requested by thorton on
+        #webkit).
+
+        * API/JSContext.mm:
+        (-[JSContext setException:]):
+        (-[JSContext wrapperForObjCObject:]):
+        (-[JSContext wrapperForJSObject:]):
+        * API/JSContextRef.cpp:
+        (JSContextGroupRelease):
+        (JSGlobalContextRelease):
+        * API/JSManagedValue.mm:
+        (-[JSManagedValue initWithValue:]):
+        (-[JSManagedValue value]):
+        * API/JSObjectRef.cpp:
+        (JSObjectIsFunction):
+        (JSObjectCopyPropertyNames):
+        * API/JSValue.mm:
+        (containerValueToObject):
+        * API/JSWrapperMap.mm:
+        (tryUnwrapObjcObject):
+
 2013-11-19  Filip Pizlo  <fpizlo@apple.com>
 
         Rename WatchpointSet::notifyWrite() should be renamed to WatchpointSet::fireAll()