Chromium Code Reviews| Index: src/builtins/builtins.cc |
| diff --git a/src/builtins/builtins.cc b/src/builtins/builtins.cc |
| index d642f20882d577e176118cafd1705ba0c71bb20e..e05556862ac0418cafff4bdaaf8773c221d38a0b 100644 |
| --- a/src/builtins/builtins.cc |
| +++ b/src/builtins/builtins.cc |
| @@ -5,6 +5,7 @@ |
| #include "src/builtins/builtins.h" |
| #include "src/api.h" |
| #include "src/assembler-inl.h" |
| +#include "src/callable.h" |
| #include "src/code-events.h" |
| #include "src/compiler/code-assembler.h" |
| #include "src/ic/ic-state.h" |
| @@ -275,6 +276,23 @@ Handle<Code> Builtins::OrdinaryToPrimitive(OrdinaryToPrimitiveHint hint) { |
| } |
| // static |
| +Callable Builtins::CallableFor(Isolate* isolate, Name name) { |
| + switch (name) { |
| +#define CASE(Name, _, __, InterfaceDescriptor, ...) \ |
| + case k##Name: { \ |
| + Handle<Code> code(Code::cast(isolate->builtins()->builtins_[name])); \ |
|
caitp
2017/03/16 13:30:06
Is there any way we could push args in excess of 4
|
| + auto descriptor = InterfaceDescriptor##Descriptor(isolate); \ |
| + return Callable(code, descriptor); \ |
| + } |
| + BUILTIN_LIST_TFS(CASE) |
| +#undef CASE |
| + default: |
| + UNREACHABLE(); |
| + return Callable(Handle<Code>::null(), VoidDescriptor(isolate)); |
| + } |
| +} |
| + |
| +// static |
| const char* Builtins::name(int index) { |
| switch (index) { |
| #define CASE(Name, ...) \ |