Chromium Code Reviews| Index: src/builtins.cc |
| diff --git a/src/builtins.cc b/src/builtins.cc |
| index 35671d2c4c813c5adccd36ca989e9f101e6cb092..d8a7a8f51b02d632fdfa18dc5e94a9357657ba21 100644 |
| --- a/src/builtins.cc |
| +++ b/src/builtins.cc |
| @@ -82,7 +82,8 @@ int BuiltinArguments<BuiltinExtraArguments::kTarget>::length() const { |
| template <> |
| Handle<JSFunction> BuiltinArguments<BuiltinExtraArguments::kTarget>::target() { |
| - return Arguments::at<JSFunction>(Arguments::length() - 1); |
| + return Handle<JSFunction>(reinterpret_cast<JSFunction*>( |
| + Arguments::operator[](Arguments::length() - 1))); |
| } |
| template <> |
| @@ -3404,13 +3405,19 @@ template <bool is_construct> |
| MUST_USE_RESULT MaybeHandle<Object> HandleApiCallHelper( |
| Isolate* isolate, BuiltinArguments<BuiltinExtraArguments::kTarget> args) { |
| HandleScope scope(isolate); |
| - Handle<JSFunction> function = args.target(); |
| + Handle<HeapObject> function = args.target(); |
| DCHECK(args.receiver()->IsJSReceiver()); |
| // TODO(ishell): turn this back to a DCHECK. |
| - CHECK(function->shared()->IsApiFunction()); |
| - |
| - Handle<FunctionTemplateInfo> fun_data( |
| - function->shared()->get_api_func_data(), isolate); |
| + CHECK(function->IsFunctionTemplateInfo() || |
| + Handle<JSFunction>::cast(function)->shared()->IsApiFunction()); |
| + |
| + Handle<FunctionTemplateInfo> fun_data = |
| + function->IsFunctionTemplateInfo() |
| + ? Handle<FunctionTemplateInfo>::cast(function) |
| + : Handle<FunctionTemplateInfo>(Handle<JSFunction>::cast(function) |
|
Toon Verwaest
2016/01/22 12:11:36
Shorter: handle(JSFunction::cast(*function)->share
epertoso
2016/01/22 14:36:35
Done.
|
| + ->shared() |
| + ->get_api_func_data(), |
| + isolate); |
| if (is_construct) { |
| ASSIGN_RETURN_ON_EXCEPTION( |
| isolate, fun_data, |
| @@ -3548,7 +3555,7 @@ class RelocatableArguments |
| } // namespace |
| -MaybeHandle<Object> Builtins::InvokeApiFunction(Handle<JSFunction> function, |
| +MaybeHandle<Object> Builtins::InvokeApiFunction(Handle<HeapObject> function, |
| Handle<Object> receiver, |
| int argc, |
| Handle<Object> args[]) { |