| 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()) {
|
|
|