| Index: src/builtins.cc
|
| diff --git a/src/builtins.cc b/src/builtins.cc
|
| index def3620b2ed2e0cbd4debd48bf14313cd9620ceb..0a0617300bfd41672abd99cfcd7234a2484b9da4 100644
|
| --- a/src/builtins.cc
|
| +++ b/src/builtins.cc
|
| @@ -5148,8 +5148,8 @@ template <bool is_construct>
|
| MUST_USE_RESULT MaybeHandle<Object> HandleApiCallHelper(
|
| Isolate* isolate, Handle<HeapObject> function,
|
| Handle<HeapObject> new_target, Handle<FunctionTemplateInfo> fun_data,
|
| - BuiltinArguments args) {
|
| - Handle<JSObject> receiver;
|
| + Handle<Object> receiver, BuiltinArguments args) {
|
| + Handle<JSObject> js_receiver;
|
| JSObject* raw_holder;
|
| if (is_construct) {
|
| DCHECK(args.receiver()->IsTheHole(isolate));
|
| @@ -5162,33 +5162,33 @@ MUST_USE_RESULT MaybeHandle<Object> HandleApiCallHelper(
|
| Handle<ObjectTemplateInfo> instance_template(
|
| ObjectTemplateInfo::cast(fun_data->instance_template()), isolate);
|
| ASSIGN_RETURN_ON_EXCEPTION(
|
| - isolate, receiver,
|
| + isolate, js_receiver,
|
| ApiNatives::InstantiateObject(instance_template,
|
| Handle<JSReceiver>::cast(new_target)),
|
| Object);
|
| - args[0] = *receiver;
|
| - DCHECK_EQ(*receiver, *args.receiver());
|
| + args[0] = *js_receiver;
|
| + DCHECK_EQ(*js_receiver, *args.receiver());
|
|
|
| - raw_holder = *receiver;
|
| + raw_holder = *js_receiver;
|
| } else {
|
| - DCHECK(args.receiver()->IsJSReceiver());
|
| + DCHECK(receiver->IsJSReceiver());
|
|
|
| - Handle<JSReceiver> object = args.at<JSReceiver>(0);
|
| - if (!object->IsJSObject()) {
|
| + if (!receiver->IsJSObject()) {
|
| // This function cannot be called with the given receiver. Abort!
|
| THROW_NEW_ERROR(
|
| isolate, NewTypeError(MessageTemplate::kIllegalInvocation), Object);
|
| }
|
|
|
| - receiver = Handle<JSObject>::cast(object);
|
| + js_receiver = Handle<JSObject>::cast(receiver);
|
|
|
| - if (!fun_data->accept_any_receiver() && receiver->IsAccessCheckNeeded() &&
|
| - !isolate->MayAccess(handle(isolate->context()), receiver)) {
|
| - isolate->ReportFailedAccessCheck(receiver);
|
| + if (!fun_data->accept_any_receiver() &&
|
| + js_receiver->IsAccessCheckNeeded() &&
|
| + !isolate->MayAccess(handle(isolate->context()), js_receiver)) {
|
| + isolate->ReportFailedAccessCheck(js_receiver);
|
| RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object);
|
| }
|
|
|
| - raw_holder = GetCompatibleReceiver(isolate, *fun_data, *receiver);
|
| + raw_holder = GetCompatibleReceiver(isolate, *fun_data, *js_receiver);
|
|
|
| if (raw_holder == nullptr) {
|
| // This function cannot be called with the given receiver. Abort!
|
| @@ -5206,7 +5206,7 @@ MUST_USE_RESULT MaybeHandle<Object> HandleApiCallHelper(
|
| v8::ToCData<v8::FunctionCallback>(callback_obj);
|
| Object* data_obj = call_data->data();
|
|
|
| - LOG(isolate, ApiObjectAccess("call", JSObject::cast(*args.receiver())));
|
| + LOG(isolate, ApiObjectAccess("call", JSObject::cast(*js_receiver)));
|
|
|
| FunctionCallbackArguments custom(isolate, data_obj, *function, raw_holder,
|
| *new_target, &args[0] - 1,
|
| @@ -5216,7 +5216,7 @@ MUST_USE_RESULT MaybeHandle<Object> HandleApiCallHelper(
|
|
|
| RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object);
|
| if (result.is_null()) {
|
| - if (is_construct) return receiver;
|
| + if (is_construct) return js_receiver;
|
| return isolate->factory()->undefined_value();
|
| }
|
| // Rebox the result.
|
| @@ -5224,7 +5224,7 @@ MUST_USE_RESULT MaybeHandle<Object> HandleApiCallHelper(
|
| if (!is_construct || result->IsJSObject()) return handle(*result, isolate);
|
| }
|
|
|
| - return receiver;
|
| + return js_receiver;
|
| }
|
|
|
| } // namespace
|
| @@ -5233,17 +5233,18 @@ MUST_USE_RESULT MaybeHandle<Object> HandleApiCallHelper(
|
| BUILTIN(HandleApiCall) {
|
| HandleScope scope(isolate);
|
| Handle<JSFunction> function = args.target<JSFunction>();
|
| + Handle<Object> receiver = args.receiver();
|
| Handle<HeapObject> new_target = args.new_target();
|
| Handle<FunctionTemplateInfo> fun_data(function->shared()->get_api_func_data(),
|
| isolate);
|
| if (new_target->IsJSReceiver()) {
|
| RETURN_RESULT_OR_FAILURE(
|
| isolate, HandleApiCallHelper<true>(isolate, function, new_target,
|
| - fun_data, args));
|
| + fun_data, receiver, args));
|
| } else {
|
| RETURN_RESULT_OR_FAILURE(
|
| isolate, HandleApiCallHelper<false>(isolate, function, new_target,
|
| - fun_data, args));
|
| + fun_data, receiver, args));
|
| }
|
| }
|
|
|
| @@ -5389,7 +5390,7 @@ MaybeHandle<Object> Builtins::InvokeApiFunction(Isolate* isolate,
|
| {
|
| RelocatableArguments arguments(isolate, argc + 3, &argv[argc] + 2);
|
| result = HandleApiCallHelper<false>(isolate, function, new_target, fun_data,
|
| - arguments);
|
| + receiver, arguments);
|
| }
|
| if (argv != small_argv) delete[] argv;
|
| return result;
|
|
|