mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1146472 part 1. Don't do object-kind guessing for object literal templates in scripts, since we in fact know exactly how many slots we want them to have and hence what the kind should be. r=terrence
This commit is contained in:
parent
5c46210c18
commit
444260de07
@ -2226,7 +2226,9 @@ IteratorResultShape(ExclusiveContext *cx, BytecodeEmitter *bce, unsigned *shape)
|
|||||||
MOZ_ASSERT(bce->script->compileAndGo());
|
MOZ_ASSERT(bce->script->compileAndGo());
|
||||||
|
|
||||||
RootedPlainObject obj(cx);
|
RootedPlainObject obj(cx);
|
||||||
gc::AllocKind kind = GuessObjectGCKind(2);
|
// No need to do any guessing for the object kind, since we know exactly how
|
||||||
|
// many properties we plan to have.
|
||||||
|
gc::AllocKind kind = gc::GetGCObjectKind(2);
|
||||||
obj = NewBuiltinClassInstance<PlainObject>(cx, kind);
|
obj = NewBuiltinClassInstance<PlainObject>(cx, kind);
|
||||||
if (!obj)
|
if (!obj)
|
||||||
return false;
|
return false;
|
||||||
@ -6586,7 +6588,9 @@ BytecodeEmitter::emitObject(ParseNode *pn)
|
|||||||
*/
|
*/
|
||||||
RootedPlainObject obj(cx);
|
RootedPlainObject obj(cx);
|
||||||
if (script->compileAndGo()) {
|
if (script->compileAndGo()) {
|
||||||
gc::AllocKind kind = GuessObjectGCKind(pn->pn_count);
|
// No need to do any guessing for the object kind, since we know exactly
|
||||||
|
// how many properties we plan to have.
|
||||||
|
gc::AllocKind kind = gc::GetGCObjectKind(pn->pn_count);
|
||||||
obj = NewBuiltinClassInstance<PlainObject>(cx, kind, TenuredObject);
|
obj = NewBuiltinClassInstance<PlainObject>(cx, kind, TenuredObject);
|
||||||
if (!obj)
|
if (!obj)
|
||||||
return false;
|
return false;
|
||||||
|
@ -2107,7 +2107,7 @@ JSObject *
|
|||||||
js::CloneObjectLiteral(JSContext *cx, HandleObject srcObj)
|
js::CloneObjectLiteral(JSContext *cx, HandleObject srcObj)
|
||||||
{
|
{
|
||||||
if (srcObj->is<PlainObject>()) {
|
if (srcObj->is<PlainObject>()) {
|
||||||
AllocKind kind = GetBackgroundAllocKind(GuessObjectGCKind(srcObj->as<PlainObject>().numFixedSlots()));
|
AllocKind kind = GetBackgroundAllocKind(gc::GetGCObjectKind(srcObj->as<PlainObject>().numFixedSlots()));
|
||||||
MOZ_ASSERT_IF(srcObj->isTenured(), kind == srcObj->asTenured().getAllocKind());
|
MOZ_ASSERT_IF(srcObj->isTenured(), kind == srcObj->asTenured().getAllocKind());
|
||||||
|
|
||||||
RootedObject proto(cx, cx->global()->getOrCreateObjectPrototype(cx));
|
RootedObject proto(cx, cx->global()->getOrCreateObjectPrototype(cx));
|
||||||
|
Loading…
Reference in New Issue
Block a user