RegExpStaticsObject* RegExpStatics::create(ExclusiveContext* cx, Handle<GlobalObject*> parent) { RegExpStaticsObject* obj = NewObjectWithGivenProto<RegExpStaticsObject>(cx, nullptr); if (!obj) return nullptr; RegExpStatics* res = cx->new_<RegExpStatics>(); if (!res) return nullptr; obj->setPrivate(static_cast<void*>(res)); return obj; }
RegExpStaticsObject* RegExpStatics::create(JSContext* cx) { RegExpStaticsObject* obj = NewObjectWithGivenProto<RegExpStaticsObject>(cx, nullptr); if (!obj) return nullptr; RegExpStatics* res = cx->new_<RegExpStatics>(); if (!res) return nullptr; obj->setPrivate(static_cast<void*>(res)); return obj; }
RegExpStatics* GlobalObject::getRegExpStatics(ExclusiveContext* cx) const { MOZ_ASSERT(cx); Rooted<GlobalObject*> self(cx, const_cast<GlobalObject*>(this)); RegExpStaticsObject* resObj = nullptr; const Value& val = this->getSlot(REGEXP_STATICS); if (!val.isObject()) { MOZ_ASSERT(val.isUndefined()); resObj = RegExpStatics::create(cx, self); if (!resObj) return nullptr; self->initSlot(REGEXP_STATICS, ObjectValue(*resObj)); } else { resObj = &val.toObject().as<RegExpStaticsObject>(); } return static_cast<RegExpStatics*>(resObj->getPrivate(/* nfixed = */ 1)); }