Index: src/factory.cc |
diff --git a/src/factory.cc b/src/factory.cc |
index fece9a09c91779c6f360d842a7c2b3b9a7a51791..73e3cda02580d7232602d8e0e73840eaa71d7e24 100644 |
--- a/src/factory.cc |
+++ b/src/factory.cc |
@@ -578,15 +578,31 @@ Handle<JSFunction> Factory::BaseNewFunctionFromSharedFunctionInfo( |
} |
+static Handle<Map> MapForNewFunction(Isolate *isolate, |
+ Handle<SharedFunctionInfo> function_info) { |
+ if (function_info->is_generator()) { |
+ if (function_info->is_classic_mode()) { |
+ return isolate->generator_function_map(); |
+ } else { |
+ return isolate->strict_mode_generator_function_map(); |
+ } |
+ } else { |
+ if (function_info->is_classic_mode()) { |
+ return isolate->function_map(); |
+ } else { |
+ return isolate->strict_mode_function_map(); |
+ } |
+ } |
+} |
+ |
+ |
Handle<JSFunction> Factory::NewFunctionFromSharedFunctionInfo( |
Handle<SharedFunctionInfo> function_info, |
Handle<Context> context, |
PretenureFlag pretenure) { |
Handle<JSFunction> result = BaseNewFunctionFromSharedFunctionInfo( |
function_info, |
- function_info->is_classic_mode() |
- ? isolate()->function_map() |
- : isolate()->strict_mode_function_map(), |
+ MapForNewFunction(isolate(), function_info), |
pretenure); |
if (function_info->ic_age() != isolate()->heap()->global_ic_age()) { |