Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(35)

Unified Diff: src/builtins/builtins-definitions.h

Issue 2777203007: [builtins] Introduce new TFC macro and auto-generate TFS descriptors (Closed)
Patch Set: Rebase Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/builtins/builtins-async-generator-gen.cc ('k') | src/builtins/builtins-descriptors.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/builtins/builtins-definitions.h
diff --git a/src/builtins/builtins-definitions.h b/src/builtins/builtins-definitions.h
index 06a720aa3713aa16c76b471992fc8dc1c99b6d28..1644aea833a8aad945bbe805b7d44c97815de79f 100644
--- a/src/builtins/builtins-definitions.h
+++ b/src/builtins/builtins-definitions.h
@@ -35,6 +35,8 @@ namespace internal {
// TFJ: Builtin in Turbofan, with JS linkage (callable as Javascript function).
// Args: name, arguments count, explicit argument names...
// TFS: Builtin in Turbofan, with CodeStub linkage.
+// Args: name, explicit argument names...
+// TFC: Builtin in Turbofan, with CodeStub linkage and custom descriptor.
// Args: name, interface descriptor, return_size
// TFH: Handlers in Turbofan, with CodeStub linkage.
// Args: name, code kind, extra IC state, interface descriptor
@@ -43,16 +45,16 @@ namespace internal {
// DBG: Builtin in platform-dependent assembly, used by the debugger.
// Args: name
-#define BUILTIN_LIST_BASE(CPP, API, TFJ, TFS, TFH, ASM, DBG) \
+#define BUILTIN_LIST_BASE(CPP, API, TFJ, TFC, TFS, TFH, ASM, DBG) \
ASM(Abort) \
/* Code aging */ \
CODE_AGE_LIST_WITH_ARG(DECLARE_CODE_AGE_BUILTIN, ASM) \
\
/* Declared first for dependency reasons */ \
ASM(CompileLazy) \
- TFS(ToObject, TypeConversion, 1) \
- TFS(FastNewObject, FastNewObject, 1) \
- TFS(HasProperty, HasProperty, 1) \
+ TFC(ToObject, TypeConversion, 1) \
+ TFC(FastNewObject, FastNewObject, 1) \
+ TFS(HasProperty, kKey, kObject) \
\
/* Calls */ \
ASM(ArgumentsAdaptorTrampoline) \
@@ -92,22 +94,22 @@ namespace internal {
ASM(JSConstructStubGeneric) \
ASM(JSBuiltinsConstructStub) \
ASM(JSBuiltinsConstructStubForDerived) \
- TFS(FastNewClosure, FastNewClosure, 1) \
- TFS(FastNewFunctionContextEval, FastNewFunctionContext, 1) \
- TFS(FastNewFunctionContextFunction, FastNewFunctionContext, 1) \
- TFS(FastNewStrictArguments, FastNewArguments, 1) \
- TFS(FastNewSloppyArguments, FastNewArguments, 1) \
- TFS(FastNewRestParameter, FastNewArguments, 1) \
- TFS(FastCloneRegExp, FastCloneRegExp, 1) \
- TFS(FastCloneShallowArrayTrack, FastCloneShallowArray, 1) \
- TFS(FastCloneShallowArrayDontTrack, FastCloneShallowArray, 1) \
- TFS(FastCloneShallowObject0, FastCloneShallowObject, 1) \
- TFS(FastCloneShallowObject1, FastCloneShallowObject, 1) \
- TFS(FastCloneShallowObject2, FastCloneShallowObject, 1) \
- TFS(FastCloneShallowObject3, FastCloneShallowObject, 1) \
- TFS(FastCloneShallowObject4, FastCloneShallowObject, 1) \
- TFS(FastCloneShallowObject5, FastCloneShallowObject, 1) \
- TFS(FastCloneShallowObject6, FastCloneShallowObject, 1) \
+ TFC(FastNewClosure, FastNewClosure, 1) \
+ TFC(FastNewFunctionContextEval, FastNewFunctionContext, 1) \
+ TFC(FastNewFunctionContextFunction, FastNewFunctionContext, 1) \
+ TFC(FastNewStrictArguments, FastNewArguments, 1) \
+ TFC(FastNewSloppyArguments, FastNewArguments, 1) \
+ TFC(FastNewRestParameter, FastNewArguments, 1) \
+ TFC(FastCloneRegExp, FastCloneRegExp, 1) \
+ TFC(FastCloneShallowArrayTrack, FastCloneShallowArray, 1) \
+ TFC(FastCloneShallowArrayDontTrack, FastCloneShallowArray, 1) \
+ TFC(FastCloneShallowObject0, FastCloneShallowObject, 1) \
+ TFC(FastCloneShallowObject1, FastCloneShallowObject, 1) \
+ TFC(FastCloneShallowObject2, FastCloneShallowObject, 1) \
+ TFC(FastCloneShallowObject3, FastCloneShallowObject, 1) \
+ TFC(FastCloneShallowObject4, FastCloneShallowObject, 1) \
+ TFC(FastCloneShallowObject5, FastCloneShallowObject, 1) \
+ TFC(FastCloneShallowObject6, FastCloneShallowObject, 1) \
\
/* Apply and entries */ \
ASM(Apply) \
@@ -120,14 +122,14 @@ namespace internal {
ASM(StackCheck) \
\
/* String helpers */ \
- TFS(StringCharAt, StringCharAt, 1) \
- TFS(StringCharCodeAt, StringCharCodeAt, 1) \
- TFS(StringEqual, Compare, 1) \
- TFS(StringGreaterThan, Compare, 1) \
- TFS(StringGreaterThanOrEqual, Compare, 1) \
- TFS(StringIndexOf, StringIndexOf, 1) \
- TFS(StringLessThan, Compare, 1) \
- TFS(StringLessThanOrEqual, Compare, 1) \
+ TFC(StringCharAt, StringCharAt, 1) \
+ TFC(StringCharCodeAt, StringCharCodeAt, 1) \
+ TFC(StringEqual, Compare, 1) \
+ TFC(StringGreaterThan, Compare, 1) \
+ TFC(StringGreaterThanOrEqual, Compare, 1) \
+ TFS(StringIndexOf, kReceiver, kSearchString, kPosition) \
+ TFC(StringLessThan, Compare, 1) \
+ TFC(StringLessThanOrEqual, Compare, 1) \
\
/* Interpreter */ \
ASM(InterpreterEntryTrampoline) \
@@ -169,10 +171,10 @@ namespace internal {
ASM(AllocateInOldSpace) \
\
/* TurboFan support builtins */ \
- TFS(CopyFastSmiOrObjectElements, CopyFastSmiOrObjectElements, 1) \
- TFS(GrowFastDoubleElements, GrowArrayElements, 1) \
- TFS(GrowFastSmiOrObjectElements, GrowArrayElements, 1) \
- TFS(NewUnmappedArgumentsElements, NewArgumentsElements, 1) \
+ TFS(CopyFastSmiOrObjectElements, kObject) \
+ TFC(GrowFastDoubleElements, GrowArrayElements, 1) \
+ TFC(GrowFastSmiOrObjectElements, GrowArrayElements, 1) \
+ TFC(NewUnmappedArgumentsElements, NewArgumentsElements, 1) \
\
/* Debugger */ \
DBG(FrameDropperTrampoline) \
@@ -181,22 +183,22 @@ namespace internal {
DBG(Slot_DebugBreak) \
\
/* Type conversions */ \
- TFS(ToBoolean, TypeConversion, 1) \
- TFS(OrdinaryToPrimitive_Number, TypeConversion, 1) \
- TFS(OrdinaryToPrimitive_String, TypeConversion, 1) \
- TFS(NonPrimitiveToPrimitive_Default, TypeConversion, 1) \
- TFS(NonPrimitiveToPrimitive_Number, TypeConversion, 1) \
- TFS(NonPrimitiveToPrimitive_String, TypeConversion, 1) \
- TFS(StringToNumber, TypeConversion, 1) \
- TFS(ToName, TypeConversion, 1) \
- TFS(NonNumberToNumber, TypeConversion, 1) \
- TFS(ToNumber, TypeConversion, 1) \
- TFS(ToString, TypeConversion, 1) \
- TFS(ToInteger, TypeConversion, 1) \
- TFS(ToLength, TypeConversion, 1) \
- TFS(ClassOf, Typeof, 1) \
- TFS(Typeof, Typeof, 1) \
- TFS(GetSuperConstructor, Typeof, 1) \
+ TFC(ToBoolean, TypeConversion, 1) \
+ TFC(OrdinaryToPrimitive_Number, TypeConversion, 1) \
+ TFC(OrdinaryToPrimitive_String, TypeConversion, 1) \
+ TFC(NonPrimitiveToPrimitive_Default, TypeConversion, 1) \
+ TFC(NonPrimitiveToPrimitive_Number, TypeConversion, 1) \
+ TFC(NonPrimitiveToPrimitive_String, TypeConversion, 1) \
+ TFC(StringToNumber, TypeConversion, 1) \
+ TFC(ToName, TypeConversion, 1) \
+ TFC(NonNumberToNumber, TypeConversion, 1) \
+ TFC(ToNumber, TypeConversion, 1) \
+ TFC(ToString, TypeConversion, 1) \
+ TFC(ToInteger, TypeConversion, 1) \
+ TFC(ToLength, TypeConversion, 1) \
+ TFC(ClassOf, Typeof, 1) \
+ TFC(Typeof, Typeof, 1) \
+ TFC(GetSuperConstructor, Typeof, 1) \
\
/* Handlers */ \
TFH(LoadICProtoArray, BUILTIN, kNoExtraICState, LoadICProtoArray) \
@@ -224,9 +226,10 @@ namespace internal {
TFH(StoreIC_Uninitialized, BUILTIN, kNoExtraICState, StoreWithVector) \
TFH(StoreICStrict_Uninitialized, BUILTIN, kNoExtraICState, StoreWithVector) \
\
- TFS(ResolveNativePromise, ResolveNativePromise, 1) \
- TFS(RejectNativePromise, RejectNativePromise, 1) \
- TFS(PerformNativePromiseThen, PerformNativePromiseThen, 1) \
+ TFS(ResolveNativePromise, kPromise, kValue) \
+ TFS(RejectNativePromise, kPromise, kValue, kDebugEvent) \
+ TFS(PerformNativePromiseThen, kPromise, kResolveReaction, kRejectReaction, \
+ kResultPromise) \
\
/* Built-in functions for Javascript */ \
/* Special internal builtins */ \
@@ -457,7 +460,7 @@ namespace internal {
CPP(FunctionPrototypeToString) \
\
/* Belongs to Objects but is a dependency of GeneratorPrototypeResume */ \
- TFS(CreateIterResultObject, CreateIterResultObject, 1) \
+ TFS(CreateIterResultObject, kValue, kDone) \
\
/* Generator and Async */ \
CPP(GeneratorFunctionConstructor) \
@@ -603,25 +606,25 @@ namespace internal {
CPP(NumberPrototypeToString) \
/* ES6 #sec-number.prototype.valueof */ \
TFJ(NumberPrototypeValueOf, 0) \
- TFS(Add, BinaryOp, 1) \
- TFS(Subtract, BinaryOp, 1) \
- TFS(Multiply, BinaryOp, 1) \
- TFS(Divide, BinaryOp, 1) \
- TFS(Modulus, BinaryOp, 1) \
- TFS(BitwiseAnd, BinaryOp, 1) \
- TFS(BitwiseOr, BinaryOp, 1) \
- TFS(BitwiseXor, BinaryOp, 1) \
- TFS(ShiftLeft, BinaryOp, 1) \
- TFS(ShiftRight, BinaryOp, 1) \
- TFS(ShiftRightLogical, BinaryOp, 1) \
- TFS(LessThan, Compare, 1) \
- TFS(LessThanOrEqual, Compare, 1) \
- TFS(GreaterThan, Compare, 1) \
- TFS(GreaterThanOrEqual, Compare, 1) \
- TFS(Equal, Compare, 1) \
- TFS(StrictEqual, Compare, 1) \
- TFS(AddWithFeedback, BinaryOpWithVector, 1) \
- TFS(SubtractWithFeedback, BinaryOpWithVector, 1) \
+ TFC(Add, BinaryOp, 1) \
+ TFC(Subtract, BinaryOp, 1) \
+ TFC(Multiply, BinaryOp, 1) \
+ TFC(Divide, BinaryOp, 1) \
+ TFC(Modulus, BinaryOp, 1) \
+ TFC(BitwiseAnd, BinaryOp, 1) \
+ TFC(BitwiseOr, BinaryOp, 1) \
+ TFC(BitwiseXor, BinaryOp, 1) \
+ TFC(ShiftLeft, BinaryOp, 1) \
+ TFC(ShiftRight, BinaryOp, 1) \
+ TFC(ShiftRightLogical, BinaryOp, 1) \
+ TFC(LessThan, Compare, 1) \
+ TFC(LessThanOrEqual, Compare, 1) \
+ TFC(GreaterThan, Compare, 1) \
+ TFC(GreaterThanOrEqual, Compare, 1) \
+ TFC(Equal, Compare, 1) \
+ TFC(StrictEqual, Compare, 1) \
+ TFC(AddWithFeedback, BinaryOpWithVector, 1) \
+ TFC(SubtractWithFeedback, BinaryOpWithVector, 1) \
\
/* Object */ \
CPP(ObjectAssign) \
@@ -660,13 +663,13 @@ namespace internal {
CPP(ObjectValues) \
\
/* instanceof */ \
- TFS(OrdinaryHasInstance, Compare, 1) \
- TFS(InstanceOf, Compare, 1) \
+ TFC(OrdinaryHasInstance, Compare, 1) \
+ TFC(InstanceOf, Compare, 1) \
\
/* for-in */ \
- TFS(ForInFilter, ForInFilter, 1) \
- TFS(ForInNext, ForInNext, 1) \
- TFS(ForInPrepare, ForInPrepare, 3) \
+ TFS(ForInFilter, kKey, kObject) \
+ TFS(ForInNext, kObject, kCacheArray, kCacheType, kIndex) \
+ TFC(ForInPrepare, ForInPrepare, 3) \
\
/* Promise */ \
/* ES6 #sec-getcapabilitiesexecutor-functions */ \
@@ -687,7 +690,7 @@ namespace internal {
TFJ(PromiseCatch, 1, kOnRejected) \
/* ES #sec-fulfillpromise */ \
TFJ(ResolvePromise, 2, kPromise, kValue) \
- TFS(PromiseHandleReject, PromiseHandleReject, 1) \
+ TFS(PromiseHandleReject, kPromise, kOnReject, kException) \
TFJ(PromiseHandle, 5, kValue, kHandler, kDeferredPromise, \
kDeferredOnResolve, kDeferredOnReject) \
/* ES #sec-promise.resolve */ \
@@ -721,7 +724,7 @@ namespace internal {
CPP(ReflectSetPrototypeOf) \
\
/* RegExp */ \
- TFS(RegExpPrototypeExecSlow, RegExpPrototypeExecSlow, 1) \
+ TFS(RegExpPrototypeExecSlow, kReceiver, kString) \
CPP(RegExpCapture1Getter) \
CPP(RegExpCapture2Getter) \
CPP(RegExpCapture3Getter) \
@@ -768,11 +771,11 @@ namespace internal {
TFJ(RegExpPrototypeUnicodeGetter, 0) \
CPP(RegExpRightContextGetter) \
\
- TFS(RegExpReplace, RegExpReplace, 1) \
+ TFS(RegExpReplace, kRegExp, kString, kReplaceValue) \
/* ES #sec-regexp.prototype-@@replace */ \
TFJ(RegExpPrototypeReplace, 2, kString, kReplaceValue) \
\
- TFS(RegExpSplit, RegExpSplit, 1) \
+ TFS(RegExpSplit, kRegExp, kString, kLimit) \
/* ES #sec-regexp.prototype-@@split */ \
TFJ(RegExpPrototypeSplit, 2, kString, kLimit) \
\
@@ -904,21 +907,21 @@ namespace internal {
\
/* Wasm */ \
ASM(WasmCompileLazy) \
- TFS(WasmStackGuard, WasmRuntimeCall, 1) \
- TFS(ThrowWasmTrapUnreachable, WasmRuntimeCall, 1) \
- TFS(ThrowWasmTrapMemOutOfBounds, WasmRuntimeCall, 1) \
- TFS(ThrowWasmTrapDivByZero, WasmRuntimeCall, 1) \
- TFS(ThrowWasmTrapDivUnrepresentable, WasmRuntimeCall, 1) \
- TFS(ThrowWasmTrapRemByZero, WasmRuntimeCall, 1) \
- TFS(ThrowWasmTrapFloatUnrepresentable, WasmRuntimeCall, 1) \
- TFS(ThrowWasmTrapFuncInvalid, WasmRuntimeCall, 1) \
- TFS(ThrowWasmTrapFuncSigMismatch, WasmRuntimeCall, 1) \
+ TFC(WasmStackGuard, WasmRuntimeCall, 1) \
+ TFC(ThrowWasmTrapUnreachable, WasmRuntimeCall, 1) \
+ TFC(ThrowWasmTrapMemOutOfBounds, WasmRuntimeCall, 1) \
+ TFC(ThrowWasmTrapDivByZero, WasmRuntimeCall, 1) \
+ TFC(ThrowWasmTrapDivUnrepresentable, WasmRuntimeCall, 1) \
+ TFC(ThrowWasmTrapRemByZero, WasmRuntimeCall, 1) \
+ TFC(ThrowWasmTrapFloatUnrepresentable, WasmRuntimeCall, 1) \
+ TFC(ThrowWasmTrapFuncInvalid, WasmRuntimeCall, 1) \
+ TFC(ThrowWasmTrapFuncSigMismatch, WasmRuntimeCall, 1) \
\
/* AsyncGenerator */ \
\
- TFS(AsyncGeneratorResolve, AsyncGeneratorResolve, 1) \
- TFS(AsyncGeneratorReject, AsyncGeneratorReject, 1) \
- TFS(AsyncGeneratorResumeNext, AsyncGeneratorResumeNext, 1) \
+ TFS(AsyncGeneratorResolve, kGenerator, kValue, kDone) \
+ TFS(AsyncGeneratorReject, kGenerator, kValue) \
+ TFS(AsyncGeneratorResumeNext, kGenerator) \
\
/* AsyncGeneratorFunction( p1, p2, ... pn, body ) */ \
/* proposal-async-iteration/#sec-asyncgeneratorfunction-constructor */ \
@@ -960,20 +963,20 @@ namespace internal {
TFJ(AsyncIteratorValueUnwrap, 1, kValue)
#ifdef V8_I18N_SUPPORT
-#define BUILTIN_LIST(CPP, API, TFJ, TFS, TFH, ASM, DBG) \
- BUILTIN_LIST_BASE(CPP, API, TFJ, TFS, TFH, ASM, DBG) \
- \
- /* ES #sec-string.prototype.tolowercase */ \
- CPP(StringPrototypeToLowerCaseI18N) \
- /* ES #sec-string.prototype.touppercase */ \
- CPP(StringPrototypeToUpperCaseI18N) \
- /* ES #sec-string.prototype.normalize */ \
+#define BUILTIN_LIST(CPP, API, TFJ, TFC, TFS, TFH, ASM, DBG) \
+ BUILTIN_LIST_BASE(CPP, API, TFJ, TFC, TFS, TFH, ASM, DBG) \
+ \
+ /* ES #sec-string.prototype.tolowercase */ \
+ CPP(StringPrototypeToLowerCaseI18N) \
+ /* ES #sec-string.prototype.touppercase */ \
+ CPP(StringPrototypeToUpperCaseI18N) \
+ /* ES #sec-string.prototype.normalize */ \
CPP(StringPrototypeNormalizeI18N)
#else
-#define BUILTIN_LIST(CPP, API, TFJ, TFS, TFH, ASM, DBG) \
- BUILTIN_LIST_BASE(CPP, API, TFJ, TFS, TFH, ASM, DBG) \
- \
- /* (obsolete) Unibrow version */ \
+#define BUILTIN_LIST(CPP, API, TFJ, TFC, TFS, TFH, ASM, DBG) \
+ BUILTIN_LIST_BASE(CPP, API, TFJ, TFC, TFS, TFH, ASM, DBG) \
+ \
+ /* (obsolete) Unibrow version */ \
CPP(StringPrototypeNormalize)
#endif // V8_I18N_SUPPORT
@@ -999,19 +1002,23 @@ namespace internal {
#define IGNORE_BUILTIN(...)
-#define BUILTIN_LIST_ALL(V) BUILTIN_LIST(V, V, V, V, V, V, V)
+#define BUILTIN_LIST_ALL(V) BUILTIN_LIST(V, V, V, V, V, V, V, V)
#define BUILTIN_LIST_C(V) \
BUILTIN_LIST(V, V, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
- IGNORE_BUILTIN, IGNORE_BUILTIN)
+ IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
#define BUILTIN_LIST_A(V) \
BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
- IGNORE_BUILTIN, V, V)
+ IGNORE_BUILTIN, IGNORE_BUILTIN, V, V)
#define BUILTIN_LIST_DBG(V) \
BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
- IGNORE_BUILTIN, IGNORE_BUILTIN, V)
+ IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, V)
+
+#define BUILTIN_LIST_TFS(V) \
+ BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
+ V, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN)
#define BUILTINS_WITH_UNTAGGED_PARAMS(V) V(WasmCompileLazy)
« no previous file with comments | « src/builtins/builtins-async-generator-gen.cc ('k') | src/builtins/builtins-descriptors.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698