| Index: src/factory.cc | 
| diff --git a/src/factory.cc b/src/factory.cc | 
| index 7a5e78402d879006e29b12d87fa18427b4ddd317..773a36ad1cf9617621ee9ffd34fee0ad3a065f69 100644 | 
| --- a/src/factory.cc | 
| +++ b/src/factory.cc | 
| @@ -1194,7 +1194,7 @@ | 
| function->set_code(info->code()); | 
| function->set_context(*context); | 
| function->set_prototype_or_initial_map(*the_hole_value()); | 
| -  function->set_literals(LiteralsArray::cast(*empty_fixed_array())); | 
| +  function->set_literals_or_bindings(*empty_fixed_array()); | 
| function->set_next_function_link(*undefined_value(), SKIP_WRITE_BARRIER); | 
| isolate()->heap()->InitializeJSObjectBody(*function, *map, JSFunction::kSize); | 
| return function; | 
| @@ -1359,7 +1359,8 @@ | 
|  | 
| if (cached.literals != nullptr) { | 
| result->set_literals(cached.literals); | 
| -  } else { | 
| + | 
| +  } else if (!info->bound()) { | 
| int number_of_literals = info->num_literals(); | 
| Handle<LiteralsArray> literals = | 
| LiteralsArray::New(isolate(), handle(info->feedback_vector()), | 
| @@ -1938,60 +1939,6 @@ | 
| Handle<JSDataView> obj = NewJSDataView(); | 
| SetupArrayBufferView(isolate(), obj, buffer, byte_offset, byte_length); | 
| return obj; | 
| -} | 
| - | 
| - | 
| -MaybeHandle<JSBoundFunction> Factory::NewJSBoundFunction( | 
| -    Handle<JSReceiver> target_function, Handle<Object> bound_this, | 
| -    Vector<Handle<Object>> bound_args) { | 
| -  DCHECK(target_function->IsCallable()); | 
| -  STATIC_ASSERT(Code::kMaxArguments <= FixedArray::kMaxLength); | 
| -  if (bound_args.length() >= Code::kMaxArguments) { | 
| -    THROW_NEW_ERROR(isolate(), | 
| -                    NewRangeError(MessageTemplate::kTooManyArguments), | 
| -                    JSBoundFunction); | 
| -  } | 
| - | 
| -  // Determine the prototype of the {target_function}. | 
| -  Handle<Object> prototype; | 
| -  ASSIGN_RETURN_ON_EXCEPTION(isolate(), prototype, | 
| -                             Object::GetPrototype(isolate(), target_function), | 
| -                             JSBoundFunction); | 
| - | 
| -  // Create the [[BoundArguments]] for the result. | 
| -  Handle<FixedArray> bound_arguments; | 
| -  if (bound_args.length() == 0) { | 
| -    bound_arguments = empty_fixed_array(); | 
| -  } else { | 
| -    bound_arguments = NewFixedArray(bound_args.length()); | 
| -    for (int i = 0; i < bound_args.length(); ++i) { | 
| -      bound_arguments->set(i, *bound_args[i]); | 
| -    } | 
| -  } | 
| - | 
| -  // Setup the map for the JSBoundFunction instance. | 
| -  Handle<Map> map = handle( | 
| -      target_function->IsConstructor() | 
| -          ? isolate()->native_context()->bound_function_with_constructor_map() | 
| -          : isolate() | 
| -                ->native_context() | 
| -                ->bound_function_without_constructor_map(), | 
| -      isolate()); | 
| -  if (map->prototype() != *prototype) { | 
| -    map = Map::TransitionToPrototype(map, prototype, REGULAR_PROTOTYPE); | 
| -  } | 
| -  DCHECK_EQ(target_function->IsConstructor(), map->is_constructor()); | 
| - | 
| -  // Setup the JSBoundFunction instance. | 
| -  Handle<JSBoundFunction> result = | 
| -      Handle<JSBoundFunction>::cast(NewJSObjectFromMap(map)); | 
| -  result->set_bound_target_function(*target_function); | 
| -  result->set_bound_this(*bound_this); | 
| -  result->set_bound_arguments(*bound_arguments); | 
| -  result->set_creation_context(*isolate()->native_context()); | 
| -  result->set_length(Smi::FromInt(0)); | 
| -  result->set_name(*undefined_value(), SKIP_WRITE_BARRIER); | 
| -  return result; | 
| } | 
|  | 
|  | 
|  |