Index: src/heap.cc |
=================================================================== |
--- src/heap.cc (revision 9391) |
+++ src/heap.cc (working copy) |
@@ -3257,8 +3257,18 @@ |
// different context. |
JSFunction* object_function = |
function->context()->global_context()->object_function(); |
+ |
+ // Each function prototype gets a copy of the object function map. |
+ // This avoid unwanted sharing of maps between prototypes of different |
+ // constructors. |
+ Map* new_map; |
+ ASSERT(object_function->has_initial_map()); |
+ { MaybeObject* maybe_map = |
+ object_function->initial_map()->CopyDropTransitions(); |
+ if (!maybe_map->To<Map>(&new_map)) return maybe_map; |
+ } |
Object* prototype; |
- { MaybeObject* maybe_prototype = AllocateJSObject(object_function); |
+ { MaybeObject* maybe_prototype = AllocateJSObjectFromMap(new_map); |
if (!maybe_prototype->ToObject(&prototype)) return maybe_prototype; |
} |
// When creating the prototype for the function we must set its |