mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-27 12:50:09 +00:00
Bug 1688055 - Part 6: Reorder definitions in EnvironmentObject.cpp to match declaration order. r=mgaudet
Differential Revision: https://phabricator.services.mozilla.com/D106523
This commit is contained in:
parent
a9b4196135
commit
af216cca1c
@ -911,6 +911,14 @@ bool js::CreateNonSyntacticEnvironmentChain(JSContext* cx,
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
const JSClass LexicalEnvironmentObject::class_ = {
|
||||
"LexicalEnvironment",
|
||||
JSCLASS_HAS_RESERVED_SLOTS(LexicalEnvironmentObject::RESERVED_SLOTS),
|
||||
JS_NULL_CLASS_OPS,
|
||||
JS_NULL_CLASS_SPEC,
|
||||
JS_NULL_CLASS_EXT,
|
||||
JS_NULL_OBJECT_OPS};
|
||||
|
||||
/* static */
|
||||
LexicalEnvironmentObject* LexicalEnvironmentObject::createTemplateObject(
|
||||
JSContext* cx, HandleShape shape, HandleObject enclosing,
|
||||
@ -935,6 +943,10 @@ LexicalEnvironmentObject* LexicalEnvironmentObject::createTemplateObject(
|
||||
return env;
|
||||
}
|
||||
|
||||
bool LexicalEnvironmentObject::isExtensible() const {
|
||||
return NativeObject::isExtensible();
|
||||
}
|
||||
|
||||
/* static */
|
||||
BlockLexicalEnvironmentObject* BlockLexicalEnvironmentObject::create(
|
||||
JSContext* cx, Handle<LexicalScope*> scope, HandleObject enclosing,
|
||||
@ -967,50 +979,6 @@ BlockLexicalEnvironmentObject* BlockLexicalEnvironmentObject::createForFrame(
|
||||
return create(cx, scope, enclosing, gc::DefaultHeap);
|
||||
}
|
||||
|
||||
/* static */
|
||||
GlobalLexicalEnvironmentObject* GlobalLexicalEnvironmentObject::create(
|
||||
JSContext* cx, Handle<GlobalObject*> global) {
|
||||
MOZ_ASSERT(global);
|
||||
|
||||
RootedShape shape(cx, LexicalScope::getEmptyExtensibleEnvironmentShape(cx));
|
||||
if (!shape) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
auto* env = static_cast<GlobalLexicalEnvironmentObject*>(
|
||||
createTemplateObject(cx, shape, global, gc::TenuredHeap));
|
||||
if (!env) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
env->initThisObject(global);
|
||||
return env;
|
||||
}
|
||||
|
||||
/* static */
|
||||
NonSyntacticLexicalEnvironmentObject*
|
||||
NonSyntacticLexicalEnvironmentObject::create(JSContext* cx,
|
||||
HandleObject enclosing,
|
||||
HandleObject thisv) {
|
||||
MOZ_ASSERT(enclosing);
|
||||
MOZ_ASSERT(!IsSyntacticEnvironment(enclosing));
|
||||
|
||||
RootedShape shape(cx, LexicalScope::getEmptyExtensibleEnvironmentShape(cx));
|
||||
if (!shape) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
auto* env = static_cast<NonSyntacticLexicalEnvironmentObject*>(
|
||||
createTemplateObject(cx, shape, enclosing, gc::TenuredHeap));
|
||||
if (!env) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
env->initThisObject(thisv);
|
||||
|
||||
return env;
|
||||
}
|
||||
|
||||
/* static */
|
||||
BlockLexicalEnvironmentObject*
|
||||
BlockLexicalEnvironmentObject::createHollowForDebug(
|
||||
@ -1081,37 +1049,6 @@ BlockLexicalEnvironmentObject* BlockLexicalEnvironmentObject::recreate(
|
||||
return create(cx, scope, enclosing, gc::DefaultHeap);
|
||||
}
|
||||
|
||||
bool LexicalEnvironmentObject::isExtensible() const {
|
||||
return NativeObject::isExtensible();
|
||||
}
|
||||
|
||||
JSObject* ExtensibleLexicalEnvironmentObject::thisObject() const {
|
||||
JSObject* obj = &getReservedSlot(THIS_VALUE_OR_SCOPE_SLOT).toObject();
|
||||
|
||||
// Windows must never be exposed to script. setWindowProxyThisValue should
|
||||
// have set this to the WindowProxy.
|
||||
MOZ_ASSERT(!IsWindow(obj));
|
||||
|
||||
// WarpBuilder relies on the return value not being nursery-allocated for the
|
||||
// global lexical environment.
|
||||
MOZ_ASSERT_IF(isGlobal(), obj->isTenured());
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
void GlobalLexicalEnvironmentObject::setWindowProxyThisObject(JSObject* obj) {
|
||||
MOZ_ASSERT(IsWindowProxy(obj));
|
||||
setReservedSlot(THIS_VALUE_OR_SCOPE_SLOT, ObjectValue(*obj));
|
||||
}
|
||||
|
||||
const JSClass LexicalEnvironmentObject::class_ = {
|
||||
"LexicalEnvironment",
|
||||
JSCLASS_HAS_RESERVED_SLOTS(LexicalEnvironmentObject::RESERVED_SLOTS),
|
||||
JS_NULL_CLASS_OPS,
|
||||
JS_NULL_CLASS_SPEC,
|
||||
JS_NULL_CLASS_EXT,
|
||||
JS_NULL_OBJECT_OPS};
|
||||
|
||||
/* static */
|
||||
NamedLambdaObject* NamedLambdaObject::create(JSContext* cx,
|
||||
HandleFunction callee,
|
||||
@ -1161,6 +1098,69 @@ size_t NamedLambdaObject::lambdaSlot() {
|
||||
return JSSLOT_FREE(&LexicalEnvironmentObject::class_);
|
||||
}
|
||||
|
||||
JSObject* ExtensibleLexicalEnvironmentObject::thisObject() const {
|
||||
JSObject* obj = &getReservedSlot(THIS_VALUE_OR_SCOPE_SLOT).toObject();
|
||||
|
||||
// Windows must never be exposed to script. setWindowProxyThisValue should
|
||||
// have set this to the WindowProxy.
|
||||
MOZ_ASSERT(!IsWindow(obj));
|
||||
|
||||
// WarpBuilder relies on the return value not being nursery-allocated for the
|
||||
// global lexical environment.
|
||||
MOZ_ASSERT_IF(isGlobal(), obj->isTenured());
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
/* static */
|
||||
GlobalLexicalEnvironmentObject* GlobalLexicalEnvironmentObject::create(
|
||||
JSContext* cx, Handle<GlobalObject*> global) {
|
||||
MOZ_ASSERT(global);
|
||||
|
||||
RootedShape shape(cx, LexicalScope::getEmptyExtensibleEnvironmentShape(cx));
|
||||
if (!shape) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
auto* env = static_cast<GlobalLexicalEnvironmentObject*>(
|
||||
createTemplateObject(cx, shape, global, gc::TenuredHeap));
|
||||
if (!env) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
env->initThisObject(global);
|
||||
return env;
|
||||
}
|
||||
|
||||
void GlobalLexicalEnvironmentObject::setWindowProxyThisObject(JSObject* obj) {
|
||||
MOZ_ASSERT(IsWindowProxy(obj));
|
||||
setReservedSlot(THIS_VALUE_OR_SCOPE_SLOT, ObjectValue(*obj));
|
||||
}
|
||||
|
||||
/* static */
|
||||
NonSyntacticLexicalEnvironmentObject*
|
||||
NonSyntacticLexicalEnvironmentObject::create(JSContext* cx,
|
||||
HandleObject enclosing,
|
||||
HandleObject thisv) {
|
||||
MOZ_ASSERT(enclosing);
|
||||
MOZ_ASSERT(!IsSyntacticEnvironment(enclosing));
|
||||
|
||||
RootedShape shape(cx, LexicalScope::getEmptyExtensibleEnvironmentShape(cx));
|
||||
if (!shape) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
auto* env = static_cast<NonSyntacticLexicalEnvironmentObject*>(
|
||||
createTemplateObject(cx, shape, enclosing, gc::TenuredHeap));
|
||||
if (!env) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
env->initThisObject(thisv);
|
||||
|
||||
return env;
|
||||
}
|
||||
|
||||
/* static */
|
||||
RuntimeLexicalErrorObject* RuntimeLexicalErrorObject::create(
|
||||
JSContext* cx, HandleObject enclosing, unsigned errorNumber) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user