Index: src/objects.cc |
=================================================================== |
--- src/objects.cc (revision 11828) |
+++ src/objects.cc (working copy) |
@@ -7563,34 +7563,11 @@ |
// Make sure prototypes are fast objects and their maps have the bit set |
// so they remain fast. |
Map* proto_map = map(); |
- if (!proto_map->used_for_prototype()) { |
- if (!HasFastProperties()) { |
- MaybeObject* new_proto = TransformToFastProperties(0); |
- if (new_proto->IsFailure()) return new_proto; |
- ASSERT(new_proto == this); |
- proto_map = map(); |
- if (!proto_map->is_shared()) { |
- proto_map->set_used_for_prototype(true); |
- } |
- } else { |
- Heap* heap = GetHeap(); |
- // We use the hole value as a singleton key in the prototype transition |
- // map so that we don't multiply the number of maps unnecessarily. |
- Map* new_map = |
- proto_map->GetPrototypeTransition(heap->the_hole_value()); |
- if (new_map == NULL) { |
- MaybeObject* maybe_new_map = |
- proto_map->CopyDropTransitions(DescriptorArray::MAY_BE_SHARED); |
- if (!maybe_new_map->To<Map>(&new_map)) return maybe_new_map; |
- new_map->set_used_for_prototype(true); |
- MaybeObject* ok = |
- proto_map->PutPrototypeTransition(heap->the_hole_value(), |
- new_map); |
- if (ok->IsFailure()) return ok; |
- } |
- ASSERT(!proto_map->is_shared() && !new_map->is_shared()); |
- set_map(new_map); |
- } |
+ if (!HasFastProperties()) { |
+ MaybeObject* new_proto = TransformToFastProperties(0); |
+ if (new_proto->IsFailure()) return new_proto; |
+ ASSERT(new_proto == this); |
+ proto_map = map(); |
} |
return this; |
} |
@@ -7600,8 +7577,8 @@ |
ASSERT(value->IsJSReceiver()); |
Heap* heap = GetHeap(); |
- // First some logic for the map of the prototype to make sure the |
- // used_for_prototype flag is set. |
+ // First some logic for the map of the prototype to make sure it is in fast |
+ // mode. |
if (value->IsJSObject()) { |
MaybeObject* ok = JSObject::cast(value)->OptimizeAsPrototype(); |
if (ok->IsFailure()) return ok; |