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

Side by Side Diff: src/builtins.h

Issue 2033423002: [builtins] Turn LoadIC_Miss and LoadIC_Slow builtins to TurboFan code stubs. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@load-ic-stub-tf
Patch Set: Rebasing Created 4 years, 6 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 unified diff | Download patch
« no previous file with comments | « no previous file | src/builtins.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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_H_ 5 #ifndef V8_BUILTINS_H_
6 #define V8_BUILTINS_H_ 6 #define V8_BUILTINS_H_
7 7
8 #include "src/base/flags.h" 8 #include "src/base/flags.h"
9 #include "src/handles.h" 9 #include "src/handles.h"
10 10
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 V(NotifyStubFailure, BUILTIN, kNoExtraICState) \ 246 V(NotifyStubFailure, BUILTIN, kNoExtraICState) \
247 V(NotifyStubFailureSaveDoubles, BUILTIN, kNoExtraICState) \ 247 V(NotifyStubFailureSaveDoubles, BUILTIN, kNoExtraICState) \
248 \ 248 \
249 V(InterpreterEntryTrampoline, BUILTIN, kNoExtraICState) \ 249 V(InterpreterEntryTrampoline, BUILTIN, kNoExtraICState) \
250 V(InterpreterMarkBaselineOnReturn, BUILTIN, kNoExtraICState) \ 250 V(InterpreterMarkBaselineOnReturn, BUILTIN, kNoExtraICState) \
251 V(InterpreterPushArgsAndCall, BUILTIN, kNoExtraICState) \ 251 V(InterpreterPushArgsAndCall, BUILTIN, kNoExtraICState) \
252 V(InterpreterPushArgsAndTailCall, BUILTIN, kNoExtraICState) \ 252 V(InterpreterPushArgsAndTailCall, BUILTIN, kNoExtraICState) \
253 V(InterpreterPushArgsAndConstruct, BUILTIN, kNoExtraICState) \ 253 V(InterpreterPushArgsAndConstruct, BUILTIN, kNoExtraICState) \
254 V(InterpreterEnterBytecodeDispatch, BUILTIN, kNoExtraICState) \ 254 V(InterpreterEnterBytecodeDispatch, BUILTIN, kNoExtraICState) \
255 \ 255 \
256 V(LoadIC_Miss, BUILTIN, kNoExtraICState) \
257 V(KeyedLoadIC_Miss, BUILTIN, kNoExtraICState) \ 256 V(KeyedLoadIC_Miss, BUILTIN, kNoExtraICState) \
258 V(StoreIC_Miss, BUILTIN, kNoExtraICState) \ 257 V(StoreIC_Miss, BUILTIN, kNoExtraICState) \
259 V(KeyedStoreIC_Miss, BUILTIN, kNoExtraICState) \ 258 V(KeyedStoreIC_Miss, BUILTIN, kNoExtraICState) \
260 V(LoadIC_Getter_ForDeopt, LOAD_IC, kNoExtraICState) \ 259 V(LoadIC_Getter_ForDeopt, LOAD_IC, kNoExtraICState) \
261 V(KeyedLoadIC_Megamorphic, KEYED_LOAD_IC, kNoExtraICState) \ 260 V(KeyedLoadIC_Megamorphic, KEYED_LOAD_IC, kNoExtraICState) \
262 \ 261 \
263 V(StoreIC_Setter_ForDeopt, STORE_IC, StoreICState::kStrictModeState) \ 262 V(StoreIC_Setter_ForDeopt, STORE_IC, StoreICState::kStrictModeState) \
264 \ 263 \
265 V(StoreIC_Megamorphic, STORE_IC, kNoExtraICState) \ 264 V(StoreIC_Megamorphic, STORE_IC, kNoExtraICState) \
266 V(StoreIC_Megamorphic_Strict, STORE_IC, StoreICState::kStrictModeState) \ 265 V(StoreIC_Megamorphic_Strict, STORE_IC, StoreICState::kStrictModeState) \
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 V(ArrayIsArray, 2) \ 331 V(ArrayIsArray, 2) \
333 V(StringFromCharCode, 2) \ 332 V(StringFromCharCode, 2) \
334 V(StringPrototypeCharAt, 2) \ 333 V(StringPrototypeCharAt, 2) \
335 V(StringPrototypeCharCodeAt, 2) \ 334 V(StringPrototypeCharCodeAt, 2) \
336 V(TypedArrayPrototypeByteLength, 1) \ 335 V(TypedArrayPrototypeByteLength, 1) \
337 V(TypedArrayPrototypeByteOffset, 1) \ 336 V(TypedArrayPrototypeByteOffset, 1) \
338 V(TypedArrayPrototypeLength, 1) \ 337 V(TypedArrayPrototypeLength, 1) \
339 V(AtomicsLoad, 3) \ 338 V(AtomicsLoad, 3) \
340 V(AtomicsStore, 4) 339 V(AtomicsStore, 4)
341 340
341 // Define list of builtins implemented in TurboFan (with CallStub linkage).
342 #define BUILTIN_LIST_S(V) \
343 V(LoadIC_Miss, BUILTIN, kNoExtraICState, LoadWithVector) \
344 V(LoadIC_Slow, HANDLER, Code::LOAD_IC, LoadWithVector)
345
342 // Define list of builtin handlers implemented in assembly. 346 // Define list of builtin handlers implemented in assembly.
343 #define BUILTIN_LIST_H(V) \ 347 #define BUILTIN_LIST_H(V) \
344 V(LoadIC_Slow, LOAD_IC) \
345 V(KeyedLoadIC_Slow, KEYED_LOAD_IC) \ 348 V(KeyedLoadIC_Slow, KEYED_LOAD_IC) \
346 V(StoreIC_Slow, STORE_IC) \ 349 V(StoreIC_Slow, STORE_IC) \
347 V(KeyedStoreIC_Slow, KEYED_STORE_IC) \ 350 V(KeyedStoreIC_Slow, KEYED_STORE_IC) \
348 V(LoadIC_Normal, LOAD_IC) \ 351 V(LoadIC_Normal, LOAD_IC) \
349 V(StoreIC_Normal, STORE_IC) 352 V(StoreIC_Normal, STORE_IC)
350 353
351 // Define list of builtins used by the debugger implemented in assembly. 354 // Define list of builtins used by the debugger implemented in assembly.
352 #define BUILTIN_LIST_DEBUG_A(V) \ 355 #define BUILTIN_LIST_DEBUG_A(V) \
353 V(Return_DebugBreak, BUILTIN, kNoExtraICState) \ 356 V(Return_DebugBreak, BUILTIN, kNoExtraICState) \
354 V(Slot_DebugBreak, BUILTIN, kNoExtraICState) \ 357 V(Slot_DebugBreak, BUILTIN, kNoExtraICState) \
(...skipping 15 matching lines...) Expand all
370 // Garbage collection support. 373 // Garbage collection support.
371 void IterateBuiltins(ObjectVisitor* v); 374 void IterateBuiltins(ObjectVisitor* v);
372 375
373 // Disassembler support. 376 // Disassembler support.
374 const char* Lookup(byte* pc); 377 const char* Lookup(byte* pc);
375 378
376 enum Name { 379 enum Name {
377 #define DEF_ENUM_C(name, ignore) k##name, 380 #define DEF_ENUM_C(name, ignore) k##name,
378 #define DEF_ENUM_A(name, kind, extra) k##name, 381 #define DEF_ENUM_A(name, kind, extra) k##name,
379 #define DEF_ENUM_T(name, argc) k##name, 382 #define DEF_ENUM_T(name, argc) k##name,
383 #define DEF_ENUM_S(name, kind, extra, interface_descriptor) k##name,
380 #define DEF_ENUM_H(name, kind) k##name, 384 #define DEF_ENUM_H(name, kind) k##name,
381 BUILTIN_LIST_C(DEF_ENUM_C) BUILTIN_LIST_A(DEF_ENUM_A) 385 BUILTIN_LIST_C(DEF_ENUM_C) BUILTIN_LIST_A(DEF_ENUM_A)
382 BUILTIN_LIST_T(DEF_ENUM_T) BUILTIN_LIST_H(DEF_ENUM_H) 386 BUILTIN_LIST_T(DEF_ENUM_T) BUILTIN_LIST_S(DEF_ENUM_S)
383 BUILTIN_LIST_DEBUG_A(DEF_ENUM_A) 387 BUILTIN_LIST_H(DEF_ENUM_H) BUILTIN_LIST_DEBUG_A(DEF_ENUM_A)
384 #undef DEF_ENUM_C 388 #undef DEF_ENUM_C
385 #undef DEF_ENUM_A 389 #undef DEF_ENUM_A
386 #undef DEF_ENUM_T 390 #undef DEF_ENUM_T
391 #undef DEF_ENUM_S
387 #undef DEF_ENUM_H 392 #undef DEF_ENUM_H
388 builtin_count 393 builtin_count
389 }; 394 };
390 395
391 enum CFunctionId { 396 enum CFunctionId {
392 #define DEF_ENUM_C(name, ignore) c_##name, 397 #define DEF_ENUM_C(name, ignore) c_##name,
393 BUILTIN_LIST_C(DEF_ENUM_C) 398 BUILTIN_LIST_C(DEF_ENUM_C)
394 #undef DEF_ENUM_C 399 #undef DEF_ENUM_C
395 cfunction_count 400 cfunction_count
396 }; 401 };
397 402
398 #define DECLARE_BUILTIN_ACCESSOR_C(name, ignore) Handle<Code> name(); 403 #define DECLARE_BUILTIN_ACCESSOR_C(name, ignore) Handle<Code> name();
399 #define DECLARE_BUILTIN_ACCESSOR_A(name, kind, extra) Handle<Code> name(); 404 #define DECLARE_BUILTIN_ACCESSOR_A(name, kind, extra) Handle<Code> name();
400 #define DECLARE_BUILTIN_ACCESSOR_T(name, argc) Handle<Code> name(); 405 #define DECLARE_BUILTIN_ACCESSOR_T(name, argc) Handle<Code> name();
406 #define DECLARE_BUILTIN_ACCESSOR_S(name, kind, extra, interface_descriptor) \
407 Handle<Code> name();
401 #define DECLARE_BUILTIN_ACCESSOR_H(name, kind) Handle<Code> name(); 408 #define DECLARE_BUILTIN_ACCESSOR_H(name, kind) Handle<Code> name();
402 BUILTIN_LIST_C(DECLARE_BUILTIN_ACCESSOR_C) 409 BUILTIN_LIST_C(DECLARE_BUILTIN_ACCESSOR_C)
403 BUILTIN_LIST_A(DECLARE_BUILTIN_ACCESSOR_A) 410 BUILTIN_LIST_A(DECLARE_BUILTIN_ACCESSOR_A)
404 BUILTIN_LIST_T(DECLARE_BUILTIN_ACCESSOR_T) 411 BUILTIN_LIST_T(DECLARE_BUILTIN_ACCESSOR_T)
412 BUILTIN_LIST_S(DECLARE_BUILTIN_ACCESSOR_S)
405 BUILTIN_LIST_H(DECLARE_BUILTIN_ACCESSOR_H) 413 BUILTIN_LIST_H(DECLARE_BUILTIN_ACCESSOR_H)
406 BUILTIN_LIST_DEBUG_A(DECLARE_BUILTIN_ACCESSOR_A) 414 BUILTIN_LIST_DEBUG_A(DECLARE_BUILTIN_ACCESSOR_A)
407 #undef DECLARE_BUILTIN_ACCESSOR_C 415 #undef DECLARE_BUILTIN_ACCESSOR_C
408 #undef DECLARE_BUILTIN_ACCESSOR_A 416 #undef DECLARE_BUILTIN_ACCESSOR_A
409 #undef DECLARE_BUILTIN_ACCESSOR_T 417 #undef DECLARE_BUILTIN_ACCESSOR_T
418 #undef DECLARE_BUILTIN_ACCESSOR_S
410 #undef DECLARE_BUILTIN_ACCESSOR_H 419 #undef DECLARE_BUILTIN_ACCESSOR_H
411 420
412 // Convenience wrappers. 421 // Convenience wrappers.
413 Handle<Code> CallFunction( 422 Handle<Code> CallFunction(
414 ConvertReceiverMode = ConvertReceiverMode::kAny, 423 ConvertReceiverMode = ConvertReceiverMode::kAny,
415 TailCallMode tail_call_mode = TailCallMode::kDisallow); 424 TailCallMode tail_call_mode = TailCallMode::kDisallow);
416 Handle<Code> Call(ConvertReceiverMode = ConvertReceiverMode::kAny, 425 Handle<Code> Call(ConvertReceiverMode = ConvertReceiverMode::kAny,
417 TailCallMode tail_call_mode = TailCallMode::kDisallow); 426 TailCallMode tail_call_mode = TailCallMode::kDisallow);
418 Handle<Code> CallBoundFunction(TailCallMode tail_call_mode); 427 Handle<Code> CallBoundFunction(TailCallMode tail_call_mode);
419 Handle<Code> InterpreterPushArgsAndCall(TailCallMode tail_call_mode); 428 Handle<Code> InterpreterPushArgsAndCall(TailCallMode tail_call_mode);
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
720 friend class BuiltinFunctionTable; 729 friend class BuiltinFunctionTable;
721 friend class Isolate; 730 friend class Isolate;
722 731
723 DISALLOW_COPY_AND_ASSIGN(Builtins); 732 DISALLOW_COPY_AND_ASSIGN(Builtins);
724 }; 733 };
725 734
726 } // namespace internal 735 } // namespace internal
727 } // namespace v8 736 } // namespace v8
728 737
729 #endif // V8_BUILTINS_H_ 738 #endif // V8_BUILTINS_H_
OLDNEW
« no previous file with comments | « no previous file | src/builtins.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698