X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/14957cd040308e3eeec43d26bae5d76da13fcd85..2656c66b5b30d5597e842a751c7f19ad6c2fe31a:/API/JSWeakObjectMapRefPrivate.cpp?ds=inline diff --git a/API/JSWeakObjectMapRefPrivate.cpp b/API/JSWeakObjectMapRefPrivate.cpp index 13900cf..446cf90 100644 --- a/API/JSWeakObjectMapRefPrivate.cpp +++ b/API/JSWeakObjectMapRefPrivate.cpp @@ -27,10 +27,11 @@ #include "JSWeakObjectMapRefPrivate.h" #include "APICast.h" -#include "APIShims.h" +#include "JSCJSValue.h" #include "JSCallbackObject.h" -#include "JSValue.h" #include "JSWeakObjectMapRefInternal.h" +#include "JSCInlines.h" +#include "Weak.h" #include #include @@ -44,7 +45,7 @@ extern "C" { JSWeakObjectMapRef JSWeakObjectMapCreate(JSContextRef context, void* privateData, JSWeakMapDestroyedCallback callback) { ExecState* exec = toJS(context); - APIEntryShim entryShim(exec); + JSLockHolder locker(exec); RefPtr map = OpaqueJSWeakObjectMap::create(privateData, callback); exec->lexicalGlobalObject()->registerWeakMap(map.get()); return map.get(); @@ -52,27 +53,41 @@ JSWeakObjectMapRef JSWeakObjectMapCreate(JSContextRef context, void* privateData void JSWeakObjectMapSet(JSContextRef ctx, JSWeakObjectMapRef map, void* key, JSObjectRef object) { + if (!ctx) { + ASSERT_NOT_REACHED(); + return; + } ExecState* exec = toJS(ctx); - APIEntryShim entryShim(exec); + JSLockHolder locker(exec); JSObject* obj = toJS(object); if (!obj) return; - ASSERT(obj->inherits(&JSCallbackObject::s_info) || obj->inherits(&JSCallbackObject::s_info)); - map->map().set(exec->globalData(), key, obj); + ASSERT(obj->inherits(JSProxy::info()) + || obj->inherits(JSCallbackObject::info()) + || obj->inherits(JSCallbackObject::info())); + map->map().set(key, obj); } JSObjectRef JSWeakObjectMapGet(JSContextRef ctx, JSWeakObjectMapRef map, void* key) { + if (!ctx) { + ASSERT_NOT_REACHED(); + return 0; + } ExecState* exec = toJS(ctx); - APIEntryShim entryShim(exec); - return toRef(static_cast(map->map().get(key))); + JSLockHolder locker(exec); + return toRef(jsCast(map->map().get(key))); } void JSWeakObjectMapRemove(JSContextRef ctx, JSWeakObjectMapRef map, void* key) { + if (!ctx) { + ASSERT_NOT_REACHED(); + return; + } ExecState* exec = toJS(ctx); - APIEntryShim entryShim(exec); - map->map().take(key); + JSLockHolder locker(exec); + map->map().remove(key); } // We need to keep this function in the build to keep the nightlies running.