Bug 683361, part 2 - use CallArgs more (r=waldo)

This commit is contained in:
Luke Wagner
2011-09-08 21:02:26 -07:00
parent 69034bbbdb
commit 4260644e14
26 changed files with 489 additions and 419 deletions

View File

@@ -102,81 +102,84 @@ NonNullObject(JSContext *cx, Value *vp)
static JSBool
WeakMap_has(JSContext *cx, uintN argc, Value *vp)
{
JSObject *obj = ToObject(cx, &vp[1]);
CallArgs args = CallArgsFromVp(argc, vp);
JSObject *obj = ToObject(cx, &args.thisv());
if (!obj)
return false;
if (!obj->isWeakMap()) {
ReportIncompatibleMethod(cx, vp, &WeakMapClass);
ReportIncompatibleMethod(cx, args, &WeakMapClass);
return false;
}
if (argc < 1) {
if (args.length() < 1) {
JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL, JSMSG_MORE_ARGS_NEEDED,
"WeakMap.has", "0", "s");
return false;
}
JSObject *key = NonNullObject(cx, &vp[2]);
JSObject *key = NonNullObject(cx, &args[0]);
if (!key)
return false;
ObjectValueMap *map = GetObjectMap(obj);
if (map) {
ObjectValueMap::Ptr ptr = map->lookup(key);
if (ptr) {
*vp = BooleanValue(true);
args.rval() = BooleanValue(true);
return true;
}
}
*vp = BooleanValue(false);
args.rval() = BooleanValue(false);
return true;
}
static JSBool
WeakMap_get(JSContext *cx, uintN argc, Value *vp)
{
JSObject *obj = ToObject(cx, &vp[1]);
CallArgs args = CallArgsFromVp(argc, vp);
JSObject *obj = ToObject(cx, &args.thisv());
if (!obj)
return false;
if (!obj->isWeakMap()) {
ReportIncompatibleMethod(cx, vp, &WeakMapClass);
ReportIncompatibleMethod(cx, args, &WeakMapClass);
return false;
}
if (argc < 1) {
if (args.length() < 1) {
JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL, JSMSG_MORE_ARGS_NEEDED,
"WeakMap.get", "0", "s");
return false;
}
JSObject *key = NonNullObject(cx, &vp[2]);
JSObject *key = NonNullObject(cx, &args[0]);
if (!key)
return false;
ObjectValueMap *map = GetObjectMap(obj);
if (map) {
ObjectValueMap::Ptr ptr = map->lookup(key);
if (ptr) {
*vp = ptr->value;
args.rval() = ptr->value;
return true;
}
}
*vp = (argc > 1) ? vp[3] : UndefinedValue();
args.rval() = (args.length() > 1) ? args[1] : UndefinedValue();
return true;
}
static JSBool
WeakMap_delete(JSContext *cx, uintN argc, Value *vp)
{
JSObject *obj = ToObject(cx, &vp[1]);
CallArgs args = CallArgsFromVp(argc, vp);
JSObject *obj = ToObject(cx, &args.thisv());
if (!obj)
return false;
if (!obj->isWeakMap()) {
ReportIncompatibleMethod(cx, vp, &WeakMapClass);
ReportIncompatibleMethod(cx, args, &WeakMapClass);
return false;
}
if (argc < 1) {
if (args.length() < 1) {
JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL, JSMSG_MORE_ARGS_NEEDED,
"WeakMap.delete", "0", "s");
return false;
}
JSObject *key = NonNullObject(cx, &vp[2]);
JSObject *key = NonNullObject(cx, &args[0]);
if (!key)
return false;
ObjectValueMap *map = GetObjectMap(obj);
@@ -184,34 +187,35 @@ WeakMap_delete(JSContext *cx, uintN argc, Value *vp)
ObjectValueMap::Ptr ptr = map->lookup(key);
if (ptr) {
map->remove(ptr);
*vp = BooleanValue(true);
args.rval() = BooleanValue(true);
return true;
}
}
*vp = BooleanValue(false);
args.rval() = BooleanValue(false);
return true;
}
static JSBool
WeakMap_set(JSContext *cx, uintN argc, Value *vp)
{
JSObject *obj = ToObject(cx, &vp[1]);
CallArgs args = CallArgsFromVp(argc, vp);
JSObject *obj = ToObject(cx, &args.thisv());
if (!obj)
return false;
if (!obj->isWeakMap()) {
ReportIncompatibleMethod(cx, vp, &WeakMapClass);
ReportIncompatibleMethod(cx, args, &WeakMapClass);
return false;
}
if (argc < 1) {
if (args.length() < 1) {
JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL, JSMSG_MORE_ARGS_NEEDED,
"WeakMap.set", "0", "s");
return false;
}
JSObject *key = NonNullObject(cx, &vp[2]);
JSObject *key = NonNullObject(cx, &args[0]);
if (!key)
return false;
Value value = (argc > 1) ? vp[3] : UndefinedValue();
Value value = (args.length() > 1) ? args[1] : UndefinedValue();
ObjectValueMap *map = GetObjectMap(obj);
if (!map) {
@@ -223,7 +227,7 @@ WeakMap_set(JSContext *cx, uintN argc, Value *vp)
obj->setPrivate(map);
}
*vp = UndefinedValue();
args.thisv() = UndefinedValue();
if (!map->put(key, value))
goto out_of_memory;
return true;