Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2017 the V8 project authors. All rights reserved. | 1 // Copyright 2017 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_BUILTINS_BUILTINS_DEFINITIONS_H_ | 5 #ifndef V8_BUILTINS_BUILTINS_DEFINITIONS_H_ |
| 6 #define V8_BUILTINS_BUILTINS_DEFINITIONS_H_ | 6 #define V8_BUILTINS_BUILTINS_DEFINITIONS_H_ |
| 7 | 7 |
| 8 namespace v8 { | 8 namespace v8 { |
| 9 namespace internal { | 9 namespace internal { |
| 10 | 10 |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 150 ASM(InOptimizationQueue) \ | 150 ASM(InOptimizationQueue) \ |
| 151 ASM(InstantiateAsmJs) \ | 151 ASM(InstantiateAsmJs) \ |
| 152 ASM(MarkCodeAsToBeExecutedOnce) \ | 152 ASM(MarkCodeAsToBeExecutedOnce) \ |
| 153 ASM(MarkCodeAsExecutedOnce) \ | 153 ASM(MarkCodeAsExecutedOnce) \ |
| 154 ASM(MarkCodeAsExecutedTwice) \ | 154 ASM(MarkCodeAsExecutedTwice) \ |
| 155 ASM(NotifyDeoptimized) \ | 155 ASM(NotifyDeoptimized) \ |
| 156 ASM(NotifySoftDeoptimized) \ | 156 ASM(NotifySoftDeoptimized) \ |
| 157 ASM(NotifyLazyDeoptimized) \ | 157 ASM(NotifyLazyDeoptimized) \ |
| 158 ASM(NotifyStubFailure) \ | 158 ASM(NotifyStubFailure) \ |
| 159 ASM(NotifyStubFailureSaveDoubles) \ | 159 ASM(NotifyStubFailureSaveDoubles) \ |
| 160 ASM(NotifyBuiltinContinuation) \ | |
| 161 \ | |
| 162 /* Trampolines called when returning from a deoptimization that expects */ \ | |
| 163 /* to continue in a JavaScript builtin to finish the functionality of a */ \ | |
| 164 /* an TF-inlined version of builtin that has side-effects. */ \ | |
| 165 /* Each restores input register values that the builtin expects from a */ \ | |
| 166 /* BuiltinContinuationFrame, tear down that frame, and then jump to the */ \ | |
| 167 /* stashed-away builtin's address. After the trampoline completes, */ \ | |
| 168 /* it appears to the called JavaScript builtin that it had been directly */ \ | |
| 169 /* invoked by the frame above it. When the builtin returns, execution */ \ | |
| 170 /* resumes normally in the calling frame, processing any return result */ \ | |
| 171 /* from the JavaScript builtin, again as if it had called the builtin */ \ | |
| 172 /* directly. */ \ | |
|
Jarin
2017/05/24 06:41:22
Nit: This would read better if it was written as a
Michael Starzinger
2017/05/24 13:54:59
+1
danno
2017/06/06 12:04:51
Done.
danno
2017/06/06 12:04:51
Done.
| |
| 173 /* There are two variants of the stub that differ in their handling of a */ \ | |
| 174 /* value returned by the next frame deeper on the stack. For LAZY deopts, */ \ | |
| 175 /* the return value (e.g. rax on x64) is explicitly passed as an extra */ \ | |
| 176 /* stack parameter to the JavaScript builtin by the "WithResult" */ \ | |
| 177 /* trampoline variant. The plain variant is used in EAGER deopt contexts */ \ | |
| 178 /* and has no such special handling. */ \ | |
| 179 ASM(ContinueToCodeStubBuiltin) \ | |
| 180 ASM(ContinueToCodeStubBuiltinWithResult) \ | |
| 181 ASM(ContinueToJavaScriptBuiltin) \ | |
| 182 ASM(ContinueToJavaScriptBuiltinWithResult) \ | |
| 183 \ | |
| 160 ASM(OnStackReplacement) \ | 184 ASM(OnStackReplacement) \ |
| 161 \ | 185 \ |
| 162 /* API callback handling */ \ | 186 /* API callback handling */ \ |
| 163 API(HandleApiCall) \ | 187 API(HandleApiCall) \ |
| 164 API(HandleApiCallAsFunction) \ | 188 API(HandleApiCallAsFunction) \ |
| 165 API(HandleApiCallAsConstructor) \ | 189 API(HandleApiCallAsConstructor) \ |
| 166 \ | 190 \ |
| 167 /* Adapters for Turbofan into runtime */ \ | 191 /* Adapters for Turbofan into runtime */ \ |
| 168 ASM(AllocateInNewSpace) \ | 192 ASM(AllocateInNewSpace) \ |
| 169 ASM(AllocateInOldSpace) \ | 193 ASM(AllocateInOldSpace) \ |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 261 TFJ(FastArrayShift, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \ | 285 TFJ(FastArrayShift, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \ |
| 262 /* ES6 #sec-array.prototype.slice */ \ | 286 /* ES6 #sec-array.prototype.slice */ \ |
| 263 CPP(ArraySlice) \ | 287 CPP(ArraySlice) \ |
| 264 /* ES6 #sec-array.prototype.splice */ \ | 288 /* ES6 #sec-array.prototype.splice */ \ |
| 265 CPP(ArraySplice) \ | 289 CPP(ArraySplice) \ |
| 266 /* ES6 #sec-array.prototype.unshift */ \ | 290 /* ES6 #sec-array.prototype.unshift */ \ |
| 267 CPP(ArrayUnshift) \ | 291 CPP(ArrayUnshift) \ |
| 268 /* ES6 #sec-array.prototype.foreach */ \ | 292 /* ES6 #sec-array.prototype.foreach */ \ |
| 269 TFS(ArrayForEachLoopContinuation, kReceiver, kCallbackFn, kThisArg, kArray, \ | 293 TFS(ArrayForEachLoopContinuation, kReceiver, kCallbackFn, kThisArg, kArray, \ |
| 270 kObject, kInitialK, kLength, kTo) \ | 294 kObject, kInitialK, kLength, kTo) \ |
| 295 TFJ(ArrayForEachLoopEagerDeoptContinuation, 4, kCallbackFn, kThisArg, \ | |
| 296 kInitialK, kLength) \ | |
| 297 TFJ(ArrayForEachLoopLazyDeoptContinuation, 5, kCallbackFn, kThisArg, \ | |
| 298 kInitialK, kLength, kResult) \ | |
| 271 TFJ(ArrayForEach, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \ | 299 TFJ(ArrayForEach, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \ |
| 272 /* ES6 #sec-array.prototype.every */ \ | 300 /* ES6 #sec-array.prototype.every */ \ |
| 273 TFS(ArrayEveryLoopContinuation, kReceiver, kCallbackFn, kThisArg, kArray, \ | 301 TFS(ArrayEveryLoopContinuation, kReceiver, kCallbackFn, kThisArg, kArray, \ |
| 274 kObject, kInitialK, kLength, kTo) \ | 302 kObject, kInitialK, kLength, kTo) \ |
| 275 TFJ(ArrayEvery, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \ | 303 TFJ(ArrayEvery, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \ |
| 276 /* ES6 #sec-array.prototype.some */ \ | 304 /* ES6 #sec-array.prototype.some */ \ |
| 277 TFS(ArraySomeLoopContinuation, kReceiver, kCallbackFn, kThisArg, kArray, \ | 305 TFS(ArraySomeLoopContinuation, kReceiver, kCallbackFn, kThisArg, kArray, \ |
| 278 kObject, kInitialK, kLength, kTo) \ | 306 kObject, kInitialK, kLength, kTo) \ |
| 279 TFJ(ArraySome, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \ | 307 TFJ(ArraySome, SharedFunctionInfo::kDontAdaptArgumentsSentinel) \ |
| 280 /* ES6 #sec-array.prototype.filter */ \ | 308 /* ES6 #sec-array.prototype.filter */ \ |
| (...skipping 770 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1051 IGNORE_BUILTIN, IGNORE_BUILTIN, V, V) | 1079 IGNORE_BUILTIN, IGNORE_BUILTIN, V, V) |
| 1052 | 1080 |
| 1053 #define BUILTIN_LIST_DBG(V) \ | 1081 #define BUILTIN_LIST_DBG(V) \ |
| 1054 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \ | 1082 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \ |
| 1055 IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, V) | 1083 IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, V) |
| 1056 | 1084 |
| 1057 #define BUILTIN_LIST_TFS(V) \ | 1085 #define BUILTIN_LIST_TFS(V) \ |
| 1058 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \ | 1086 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \ |
| 1059 V, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN) | 1087 V, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN) |
| 1060 | 1088 |
| 1089 #define BUILTIN_LIST_TFJ(V) \ | |
| 1090 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, V, IGNORE_BUILTIN, \ | |
| 1091 IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN) | |
| 1092 | |
| 1093 #define BUILTIN_LIST_TFC(V) \ | |
| 1094 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, V, \ | |
| 1095 IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN) | |
| 1096 | |
| 1061 #define BUILTINS_WITH_UNTAGGED_PARAMS(V) V(WasmCompileLazy) | 1097 #define BUILTINS_WITH_UNTAGGED_PARAMS(V) V(WasmCompileLazy) |
| 1062 | 1098 |
| 1063 } // namespace internal | 1099 } // namespace internal |
| 1064 } // namespace v8 | 1100 } // namespace v8 |
| 1065 | 1101 |
| 1066 #endif // V8_BUILTINS_BUILTINS_DEFINITIONS_H_ | 1102 #endif // V8_BUILTINS_BUILTINS_DEFINITIONS_H_ |
| OLD | NEW |