From 3461a5356644960e3bc263bb424b8b30cf423c0f Mon Sep 17 00:00:00 2001 From: Bobby Holley Date: Fri, 10 Aug 2012 13:55:55 +0200 Subject: [PATCH] Bug 778085 - Use the Handle API in a few more places in Proxy. r=efaust --HG-- extra : rebase_source : 28c969ca61def36a14df6ee06681b17a44e2f993 --- js/src/jsdbgapi.cpp | 2 +- js/src/jsiter.cpp | 2 +- js/src/jsobj.cpp | 2 +- js/src/jsproxy.cpp | 26 ++++++++++++++------------ js/src/jsproxy.h | 12 ++++++------ 5 files changed, 23 insertions(+), 21 deletions(-) diff --git a/js/src/jsdbgapi.cpp b/js/src/jsdbgapi.cpp index 444f005ff1d..c13f44b80c8 100644 --- a/js/src/jsdbgapi.cpp +++ b/js/src/jsdbgapi.cpp @@ -853,7 +853,7 @@ JS_GetPropertyDescArray(JSContext *cx, JSObject *obj_, JSPropertyDescArray *pda) pd[i].id = IdToValue(props[i]); if (!js_AddRoot(cx, &pd[i].value, NULL)) goto bad; - if (!Proxy::get(cx, obj, obj, props[i], &pd[i].value)) + if (!Proxy::get(cx, obj, obj, props.handleAt(i), MutableHandleValue::fromMarkedLocation(&pd[i].value))) goto bad; } diff --git a/js/src/jsiter.cpp b/js/src/jsiter.cpp index d477671a41d..323152769a3 100644 --- a/js/src/jsiter.cpp +++ b/js/src/jsiter.cpp @@ -676,7 +676,7 @@ GetIterator(JSContext *cx, HandleObject obj, unsigned flags, MutableHandleValue miss: if (obj->isProxy()) { types::MarkIteratorUnknown(cx); - return Proxy::iterate(cx, obj, flags, vp.address()); + return Proxy::iterate(cx, obj, flags, vp); } if (!GetCustomIterator(cx, obj, flags, vp)) return false; diff --git a/js/src/jsobj.cpp b/js/src/jsobj.cpp index a6fcfa99a37..a457f7eb403 100644 --- a/js/src/jsobj.cpp +++ b/js/src/jsobj.cpp @@ -4709,7 +4709,7 @@ js_GetPropertyHelperInline(JSContext *cx, HandleObject obj, HandleObject receive if (!obj2->isNative()) { return obj2->isProxy() - ? Proxy::get(cx, obj2, receiver, id, vp.address()) + ? Proxy::get(cx, obj2, receiver, id, vp) : obj2->getGeneric(cx, id, vp); } diff --git a/js/src/jsproxy.cpp b/js/src/jsproxy.cpp index bbc136fa42c..5a60201bd10 100644 --- a/js/src/jsproxy.cpp +++ b/js/src/jsproxy.cpp @@ -1149,28 +1149,30 @@ Proxy::hasOwn(JSContext *cx, JSObject *proxy, jsid id, bool *bp) } bool -Proxy::get(JSContext *cx, JSObject *proxy, JSObject *receiver, jsid id, Value *vp) +Proxy::get(JSContext *cx, HandleObject proxy, HandleObject receiver, HandleId id, + MutableHandleValue vp) { JS_CHECK_RECURSION(cx, return false); AutoPendingProxyOperation pending(cx, proxy); - return GetProxyHandler(proxy)->get(cx, proxy, receiver, id, vp); + return GetProxyHandler(proxy)->get(cx, proxy, receiver, id, vp.address()); } bool -Proxy::getElementIfPresent(JSContext *cx, JSObject *proxy, JSObject *receiver, uint32_t index, - Value *vp, bool *present) +Proxy::getElementIfPresent(JSContext *cx, HandleObject proxy, HandleObject receiver, uint32_t index, + MutableHandleValue vp, bool *present) { JS_CHECK_RECURSION(cx, return false); AutoPendingProxyOperation pending(cx, proxy); - return GetProxyHandler(proxy)->getElementIfPresent(cx, proxy, receiver, index, vp, present); + return GetProxyHandler(proxy)->getElementIfPresent(cx, proxy, receiver, index, vp.address(), present); } bool -Proxy::set(JSContext *cx, JSObject *proxy, JSObject *receiver, jsid id, bool strict, Value *vp) +Proxy::set(JSContext *cx, HandleObject proxy, HandleObject receiver, HandleId id, bool strict, + MutableHandleValue vp) { JS_CHECK_RECURSION(cx, return false); AutoPendingProxyOperation pending(cx, proxy); - return GetProxyHandler(proxy)->set(cx, proxy, receiver, id, strict, vp); + return GetProxyHandler(proxy)->set(cx, proxy, receiver, id, strict, vp.address()); } bool @@ -1182,11 +1184,11 @@ Proxy::keys(JSContext *cx, JSObject *proxy, AutoIdVector &props) } bool -Proxy::iterate(JSContext *cx, JSObject *proxy, unsigned flags, Value *vp) +Proxy::iterate(JSContext *cx, HandleObject proxy, unsigned flags, MutableHandleValue vp) { JS_CHECK_RECURSION(cx, return false); AutoPendingProxyOperation pending(cx, proxy); - return GetProxyHandler(proxy)->iterate(cx, proxy, flags, vp); + return GetProxyHandler(proxy)->iterate(cx, proxy, flags, vp.address()); } bool @@ -1372,7 +1374,7 @@ static JSBool proxy_GetGeneric(JSContext *cx, HandleObject obj, HandleObject receiver, HandleId id, MutableHandleValue vp) { - return Proxy::get(cx, obj, receiver, id, vp.address()); + return Proxy::get(cx, obj, receiver, id, vp); } static JSBool @@ -1397,7 +1399,7 @@ static JSBool proxy_GetElementIfPresent(JSContext *cx, HandleObject obj, HandleObject receiver, uint32_t index, MutableHandleValue vp, bool *present) { - return Proxy::getElementIfPresent(cx, obj, receiver, index, vp.address(), present); + return Proxy::getElementIfPresent(cx, obj, receiver, index, vp, present); } static JSBool @@ -1412,7 +1414,7 @@ static JSBool proxy_SetGeneric(JSContext *cx, HandleObject obj, HandleId id, MutableHandleValue vp, JSBool strict) { - return Proxy::set(cx, obj, obj, id, strict, vp.address()); + return Proxy::set(cx, obj, obj, id, strict, vp); } static JSBool diff --git a/js/src/jsproxy.h b/js/src/jsproxy.h index 18c99090800..d369b7c38cd 100644 --- a/js/src/jsproxy.h +++ b/js/src/jsproxy.h @@ -215,13 +215,13 @@ class Proxy { /* ES5 Harmony derived proxy traps. */ static bool has(JSContext *cx, JSObject *proxy, jsid id, bool *bp); static bool hasOwn(JSContext *cx, JSObject *proxy, jsid id, bool *bp); - static bool get(JSContext *cx, JSObject *proxy, JSObject *receiver, jsid id, Value *vp); - static bool getElementIfPresent(JSContext *cx, JSObject *proxy, JSObject *receiver, - uint32_t index, Value *vp, bool *present); - static bool set(JSContext *cx, JSObject *proxy, JSObject *receiver, jsid id, bool strict, - Value *vp); + static bool get(JSContext *cx, HandleObject proxy, HandleObject receiver, HandleId id, MutableHandleValue vp); + static bool getElementIfPresent(JSContext *cx, HandleObject proxy, HandleObject receiver, + uint32_t index, MutableHandleValue vp, bool *present); + static bool set(JSContext *cx, HandleObject proxy, HandleObject receiver, HandleId id, bool strict, + MutableHandleValue vp); static bool keys(JSContext *cx, JSObject *proxy, AutoIdVector &props); - static bool iterate(JSContext *cx, JSObject *proxy, unsigned flags, Value *vp); + static bool iterate(JSContext *cx, HandleObject proxy, unsigned flags, MutableHandleValue vp); /* Spidermonkey extensions. */ static bool call(JSContext *cx, JSObject *proxy, unsigned argc, Value *vp);