JSObject * js_InitBooleanClass(JSContext *cx, JSObject *obj) { JS_ASSERT(obj->isNative()); GlobalObject *global = obj->asGlobal(); JSObject *booleanProto = global->createBlankPrototype(cx, &BooleanClass); if (!booleanProto) return NULL; booleanProto->setPrimitiveThis(BooleanValue(false)); JSFunction *ctor = global->createConstructor(cx, Boolean, &BooleanClass, CLASS_ATOM(cx, Boolean), 1); if (!ctor) return NULL; if (!LinkConstructorAndPrototype(cx, ctor, booleanProto)) return NULL; if (!DefinePropertiesAndBrand(cx, booleanProto, NULL, boolean_methods)) return NULL; if (!DefineConstructorAndPrototype(cx, global, JSProto_Boolean, ctor, booleanProto)) return NULL; return booleanProto; }
JSObject * js_InitWeakMapClass(JSContext *cx, JSObject *obj) { JS_ASSERT(obj->isNative()); GlobalObject *global = obj->asGlobal(); JSObject *weakMapProto = global->createBlankPrototype(cx, &WeakMapClass); if (!weakMapProto) return NULL; weakMapProto->setPrivate(NULL); JSFunction *ctor = global->createConstructor(cx, WeakMap_construct, &WeakMapClass, CLASS_ATOM(cx, WeakMap), 0); if (!ctor) return NULL; if (!LinkConstructorAndPrototype(cx, ctor, weakMapProto)) return NULL; if (!DefinePropertiesAndBrand(cx, weakMapProto, NULL, weak_map_methods)) return NULL; if (!DefineConstructorAndPrototype(cx, global, JSProto_WeakMap, ctor, weakMapProto)) return NULL; return weakMapProto; }