Bug 683361, part 4 - Handle transparent proxies correctly in non-generic methods (r=waldo)

This commit is contained in:
Luke Wagner
2011-09-08 21:18:23 -07:00
parent 4532ce0d7a
commit bedc73af5b
16 changed files with 585 additions and 382 deletions

View File

@@ -103,13 +103,12 @@ static JSBool
WeakMap_has(JSContext *cx, uintN argc, Value *vp)
{
CallArgs args = CallArgsFromVp(argc, vp);
JSObject *obj = ToObject(cx, &args.thisv());
bool ok;
JSObject *obj = NonGenericMethodGuard(cx, args, &WeakMapClass, &ok);
if (!obj)
return false;
if (!obj->isWeakMap()) {
ReportIncompatibleMethod(cx, args, &WeakMapClass);
return false;
}
return ok;
if (args.length() < 1) {
JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL, JSMSG_MORE_ARGS_NEEDED,
"WeakMap.has", "0", "s");
@@ -135,13 +134,12 @@ static JSBool
WeakMap_get(JSContext *cx, uintN argc, Value *vp)
{
CallArgs args = CallArgsFromVp(argc, vp);
JSObject *obj = ToObject(cx, &args.thisv());
bool ok;
JSObject *obj = NonGenericMethodGuard(cx, args, &WeakMapClass, &ok);
if (!obj)
return false;
if (!obj->isWeakMap()) {
ReportIncompatibleMethod(cx, args, &WeakMapClass);
return false;
}
return ok;
if (args.length() < 1) {
JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL, JSMSG_MORE_ARGS_NEEDED,
"WeakMap.get", "0", "s");
@@ -167,13 +165,12 @@ static JSBool
WeakMap_delete(JSContext *cx, uintN argc, Value *vp)
{
CallArgs args = CallArgsFromVp(argc, vp);
JSObject *obj = ToObject(cx, &args.thisv());
bool ok;
JSObject *obj = NonGenericMethodGuard(cx, args, &WeakMapClass, &ok);
if (!obj)
return false;
if (!obj->isWeakMap()) {
ReportIncompatibleMethod(cx, args, &WeakMapClass);
return false;
}
return ok;
if (args.length() < 1) {
JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL, JSMSG_MORE_ARGS_NEEDED,
"WeakMap.delete", "0", "s");
@@ -200,13 +197,12 @@ static JSBool
WeakMap_set(JSContext *cx, uintN argc, Value *vp)
{
CallArgs args = CallArgsFromVp(argc, vp);
JSObject *obj = ToObject(cx, &args.thisv());
bool ok;
JSObject *obj = NonGenericMethodGuard(cx, args, &WeakMapClass, &ok);
if (!obj)
return false;
if (!obj->isWeakMap()) {
ReportIncompatibleMethod(cx, args, &WeakMapClass);
return false;
}
return ok;
if (args.length() < 1) {
JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL, JSMSG_MORE_ARGS_NEEDED,
"WeakMap.set", "0", "s");