| Index: src/builtins.h
|
| diff --git a/src/builtins.h b/src/builtins.h
|
| index f0ceab6679835def58c66955f6708bc232285eca..418948f750d04e57edea191d22d82b6e90f09d72 100644
|
| --- a/src/builtins.h
|
| +++ b/src/builtins.h
|
| @@ -31,20 +31,28 @@
|
| namespace v8 {
|
| namespace internal {
|
|
|
| -// Define list of builtins implemented in C.
|
| -#define BUILTIN_LIST_C(V) \
|
| - V(Illegal) \
|
| - \
|
| - V(EmptyFunction) \
|
| - \
|
| - V(ArrayCodeGeneric) \
|
| - \
|
| - V(ArrayPush) \
|
| - V(ArrayPop) \
|
| - \
|
| - V(HandleApiCall) \
|
| - V(HandleApiCallAsFunction) \
|
| - V(HandleApiCallAsConstructor)
|
| +// Specifies extra arguments required by a C++ builtin.
|
| +enum BuiltinExtraArguments {
|
| + NO_EXTRA_ARGUMENTS = 0,
|
| + NEEDS_CALLED_FUNCTION = 1
|
| +};
|
| +
|
| +
|
| +// Define list of builtins implemented in C++.
|
| +#define BUILTIN_LIST_C(V) \
|
| + V(Illegal, NO_EXTRA_ARGUMENTS) \
|
| + \
|
| + V(EmptyFunction, NO_EXTRA_ARGUMENTS) \
|
| + \
|
| + V(ArrayCodeGeneric, NO_EXTRA_ARGUMENTS) \
|
| + \
|
| + V(ArrayPush, NO_EXTRA_ARGUMENTS) \
|
| + V(ArrayPop, NO_EXTRA_ARGUMENTS) \
|
| + \
|
| + V(HandleApiCall, NEEDS_CALLED_FUNCTION) \
|
| + V(HandleApiCallConstruct, NEEDS_CALLED_FUNCTION) \
|
| + V(HandleApiCallAsFunction, NO_EXTRA_ARGUMENTS) \
|
| + V(HandleApiCallAsConstructor, NO_EXTRA_ARGUMENTS)
|
|
|
|
|
| // Define list of builtins implemented in assembly.
|
| @@ -52,6 +60,7 @@ namespace internal {
|
| V(ArgumentsAdaptorTrampoline, BUILTIN, UNINITIALIZED) \
|
| V(JSConstructCall, BUILTIN, UNINITIALIZED) \
|
| V(JSConstructStubGeneric, BUILTIN, UNINITIALIZED) \
|
| + V(JSConstructStubApi, BUILTIN, UNINITIALIZED) \
|
| V(JSEntryTrampoline, BUILTIN, UNINITIALIZED) \
|
| V(JSConstructEntryTrampoline, BUILTIN, UNINITIALIZED) \
|
| \
|
| @@ -169,7 +178,7 @@ class Builtins : public AllStatic {
|
| static const char* Lookup(byte* pc);
|
|
|
| enum Name {
|
| -#define DEF_ENUM_C(name) name,
|
| +#define DEF_ENUM_C(name, ignore) name,
|
| #define DEF_ENUM_A(name, kind, state) name,
|
| BUILTIN_LIST_C(DEF_ENUM_C)
|
| BUILTIN_LIST_A(DEF_ENUM_A)
|
| @@ -180,7 +189,7 @@ class Builtins : public AllStatic {
|
| };
|
|
|
| enum CFunctionId {
|
| -#define DEF_ENUM_C(name) c_##name,
|
| +#define DEF_ENUM_C(name, ignore) c_##name,
|
| BUILTIN_LIST_C(DEF_ENUM_C)
|
| #undef DEF_ENUM_C
|
| cfunction_count
|
| @@ -212,8 +221,6 @@ class Builtins : public AllStatic {
|
| static Handle<Code> GetCode(JavaScript id, bool* resolved);
|
| static int NumberOfJavaScriptBuiltins() { return id_count; }
|
|
|
| - static Object* builtin_passed_function;
|
| -
|
| private:
|
| // The external C++ functions called from the code.
|
| static Address c_functions_[cfunction_count];
|
| @@ -226,9 +233,12 @@ class Builtins : public AllStatic {
|
| static const char* javascript_names_[id_count];
|
| static int javascript_argc_[id_count];
|
|
|
| - static void Generate_Adaptor(MacroAssembler* masm, CFunctionId id);
|
| + static void Generate_Adaptor(MacroAssembler* masm,
|
| + CFunctionId id,
|
| + BuiltinExtraArguments extra_args);
|
| static void Generate_JSConstructCall(MacroAssembler* masm);
|
| static void Generate_JSConstructStubGeneric(MacroAssembler* masm);
|
| + static void Generate_JSConstructStubApi(MacroAssembler* masm);
|
| static void Generate_JSEntryTrampoline(MacroAssembler* masm);
|
| static void Generate_JSConstructEntryTrampoline(MacroAssembler* masm);
|
| static void Generate_ArgumentsAdaptorTrampoline(MacroAssembler* masm);
|
|
|