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; |
} |