| Index: src/heap.cc
|
| diff --git a/src/heap.cc b/src/heap.cc
|
| index a69c539911da64045d1cae9f109e7847d2d83b07..57cc951401fafbd069ea9b810de2165aa3df04d5 100644
|
| --- a/src/heap.cc
|
| +++ b/src/heap.cc
|
| @@ -4048,13 +4048,11 @@ MaybeObject* Heap::AllocateFunctionPrototype(JSFunction* function) {
|
| // Make sure to use globals from the function's context, since the function
|
| // can be from a different context.
|
| Context* native_context = function->context()->native_context();
|
| - bool needs_constructor_property;
|
| Map* new_map;
|
| if (function->shared()->is_generator()) {
|
| // Generator prototypes can share maps since they don't have "constructor"
|
| // properties.
|
| new_map = native_context->generator_object_prototype_map();
|
| - needs_constructor_property = false;
|
| } else {
|
| // Each function prototype gets a fresh map to avoid unwanted sharing of
|
| // maps between prototypes of different constructors.
|
| @@ -4062,14 +4060,13 @@ MaybeObject* Heap::AllocateFunctionPrototype(JSFunction* function) {
|
| ASSERT(object_function->has_initial_map());
|
| MaybeObject* maybe_map = object_function->initial_map()->Copy();
|
| if (!maybe_map->To(&new_map)) return maybe_map;
|
| - needs_constructor_property = true;
|
| }
|
|
|
| Object* prototype;
|
| MaybeObject* maybe_prototype = AllocateJSObjectFromMap(new_map);
|
| if (!maybe_prototype->ToObject(&prototype)) return maybe_prototype;
|
|
|
| - if (needs_constructor_property) {
|
| + if (!function->shared()->is_generator()) {
|
| MaybeObject* maybe_failure =
|
| JSObject::cast(prototype)->SetLocalPropertyIgnoreAttributes(
|
| constructor_string(), function, DONT_ENUM);
|
| @@ -4209,7 +4206,7 @@ MaybeObject* Heap::AllocateInitialMap(JSFunction* fun) {
|
| // the inline_new flag so we only change the map if we generate a
|
| // specialized construct stub.
|
| ASSERT(in_object_properties <= Map::kMaxPreAllocatedPropertyFields);
|
| - if (instance_type == JS_OBJECT_TYPE &&
|
| + if (!fun->shared()->is_generator() &&
|
| fun->shared()->CanGenerateInlineConstructor(prototype)) {
|
| int count = fun->shared()->this_property_assignments_count();
|
| if (count > in_object_properties) {
|
| @@ -4245,7 +4242,7 @@ MaybeObject* Heap::AllocateInitialMap(JSFunction* fun) {
|
| }
|
| }
|
|
|
| - if (instance_type == JS_OBJECT_TYPE) {
|
| + if (!fun->shared()->is_generator()) {
|
| fun->shared()->StartInobjectSlackTracking(map);
|
| }
|
|
|
|
|