| Index: src/builtins.cc
|
| diff --git a/src/builtins.cc b/src/builtins.cc
|
| index fe2592deb8bbc7e43bf7adef0e34a47f59e8ea03..f101d2a331feb0c2678c0b76f47c3a996af22bac 100644
|
| --- a/src/builtins.cc
|
| +++ b/src/builtins.cc
|
| @@ -1308,12 +1308,8 @@ MUST_USE_RESULT static MaybeObject* HandleApiCallHelper(
|
| LOG(isolate, ApiObjectAccess("call", JSObject::cast(*args.receiver())));
|
| ASSERT(raw_holder->IsJSObject());
|
|
|
| - CustomArguments custom(isolate);
|
| - v8::ImplementationUtilities::PrepareArgumentsData(custom.end(),
|
| - isolate, data_obj, *function, raw_holder);
|
| -
|
| - v8::Arguments new_args = v8::ImplementationUtilities::NewArguments(
|
| - custom.end(),
|
| + FunctionCallbackArguments custom(isolate, data_obj, *function, raw_holder);
|
| + v8::Arguments new_args = custom.NewArguments(
|
| &args[0] - 1,
|
| args.length() - 1,
|
| is_construct);
|
| @@ -1324,7 +1320,7 @@ MUST_USE_RESULT static MaybeObject* HandleApiCallHelper(
|
| VMState<EXTERNAL> state(isolate);
|
| ExternalCallbackScope call_scope(isolate,
|
| v8::ToCData<Address>(callback_obj));
|
| - value = callback(new_args);
|
| + value = custom.GetCallbackResult(isolate, callback, callback(new_args));
|
| }
|
| if (value.IsEmpty()) {
|
| result = heap->undefined_value();
|
| @@ -1387,11 +1383,9 @@ MUST_USE_RESULT static MaybeObject* HandleApiCallAsFunctionOrConstructor(
|
| HandleScope scope(isolate);
|
| LOG(isolate, ApiObjectAccess("call non-function", obj));
|
|
|
| - CustomArguments custom(isolate);
|
| - v8::ImplementationUtilities::PrepareArgumentsData(custom.end(),
|
| - isolate, call_data->data(), constructor, obj);
|
| - v8::Arguments new_args = v8::ImplementationUtilities::NewArguments(
|
| - custom.end(),
|
| + FunctionCallbackArguments
|
| + custom(isolate, call_data->data(), constructor, obj);
|
| + v8::Arguments new_args = custom.NewArguments(
|
| &args[0] - 1,
|
| args.length() - 1,
|
| is_construct_call);
|
| @@ -1401,7 +1395,7 @@ MUST_USE_RESULT static MaybeObject* HandleApiCallAsFunctionOrConstructor(
|
| VMState<EXTERNAL> state(isolate);
|
| ExternalCallbackScope call_scope(isolate,
|
| v8::ToCData<Address>(callback_obj));
|
| - value = callback(new_args);
|
| + value = custom.GetCallbackResult(isolate, callback, callback(new_args));
|
| }
|
| if (value.IsEmpty()) {
|
| result = heap->undefined_value();
|
|
|