static JSBool WeakMap_delete(JSContext *cx, uintN argc, Value *vp) { CallArgs args = CallArgsFromVp(argc, vp); bool ok; JSObject *obj = NonGenericMethodGuard(cx, args, WeakMap_delete, &WeakMapClass, &ok); if (!obj) return ok; if (args.length() < 1) { JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL, JSMSG_MORE_ARGS_NEEDED, "WeakMap.delete", "0", "s"); return false; } JSObject *key = NonNullObject(cx, &args[0]); if (!key) return false; ObjectValueMap *map = GetObjectMap(obj); if (map) { ObjectValueMap::Ptr ptr = map->lookup(key); if (ptr) { map->remove(ptr); args.rval() = BooleanValue(true); return true; } } args.rval() = BooleanValue(false); return true; }