Avoid needless prototype-shape purges (454035, r=igor).

This commit is contained in:
Brendan Eich
2008-09-09 09:57:10 -07:00
parent 39755910d8
commit 4d9e907868
8 changed files with 72 additions and 74 deletions

View File

@@ -498,12 +498,12 @@ js_FastNewArray(JSContext* cx, JSObject* proto)
if (!obj)
return NULL;
JSClass* clasp = &js_ArrayClass;
obj->classword = jsuword(clasp);
obj->fslots[JSSLOT_PROTO] = OBJECT_TO_JSVAL(proto);
obj->fslots[JSSLOT_PARENT] = proto->fslots[JSSLOT_PARENT];
JSClass* clasp = &js_ArrayClass;
obj->fslots[JSSLOT_CLASS] = PRIVATE_TO_JSVAL(clasp);
obj->fslots[JSSLOT_ARRAY_LENGTH] = 0;
obj->fslots[JSSLOT_ARRAY_COUNT] = 0;
for (unsigned i = JSSLOT_ARRAY_COUNT + 1; i != JS_INITIAL_NSLOTS; ++i)
@@ -543,9 +543,9 @@ js_FastNewObject(JSContext* cx, JSObject* ctor)
JS_ASSERT(!JSVAL_IS_PRIMITIVE(v));
JSObject* proto = JSVAL_TO_OBJECT(v);
obj->classword = jsuword(clasp);
obj->fslots[JSSLOT_PROTO] = OBJECT_TO_JSVAL(proto);
obj->fslots[JSSLOT_PARENT] = ctor->fslots[JSSLOT_PARENT];
obj->fslots[JSSLOT_CLASS] = PRIVATE_TO_JSVAL(clasp);
for (unsigned i = JSSLOT_PRIVATE; i != JS_INITIAL_NSLOTS; ++i)
obj->fslots[i] = JSVAL_VOID;