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

Side by Side Diff: runtime/vm/constants_dbc.h

Issue 2335363002: DBC: Another allocation fast path (Closed)
Patch Set: Remove extra whitespace Created 4 years, 3 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 | runtime/vm/intermediate_language_dbc.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 (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #ifndef VM_CONSTANTS_DBC_H_ 5 #ifndef VM_CONSTANTS_DBC_H_
6 #define VM_CONSTANTS_DBC_H_ 6 #define VM_CONSTANTS_DBC_H_
7 7
8 #include "platform/globals.h" 8 #include "platform/globals.h"
9 #include "platform/assert.h" 9 #include "platform/assert.h"
10 #include "platform/utils.h" 10 #include "platform/utils.h"
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 // 324 //
325 // Try allocating an object with tags in PP[D] with no type arguments. 325 // Try allocating an object with tags in PP[D] with no type arguments.
326 // If allocation is successful, the result is stored in FP[rA], and 326 // If allocation is successful, the result is stored in FP[rA], and
327 // the next two instructions, which should be the (Allocate class; PopLocal) 327 // the next two instructions, which should be the (Allocate class; PopLocal)
328 // slow path are skipped 328 // slow path are skipped
329 // 329 //
330 // - AllocateT 330 // - AllocateT
331 // 331 //
332 // Allocate object of class SP[0] with type arguments SP[-1]. 332 // Allocate object of class SP[0] with type arguments SP[-1].
333 // 333 //
334 // - AllocateTOpt rA, D
335 //
336 // Similar to AllocateOpt with the difference that the offset of the
337 // type arguments in the resulting object is taken from the D field of the
338 // following Nop instruction, and on success 4 instructions are skipped and
339 // the object at the top of the stack is popped.
340 //
334 // - StoreIndexedTOS 341 // - StoreIndexedTOS
335 // 342 //
336 // Store SP[0] into array SP[-2] at index SP[-1]. No typechecking is done. 343 // Store SP[0] into array SP[-2] at index SP[-1]. No typechecking is done.
337 // SP[-2] is assumed to be a RawArray, SP[-1] to be a smi. 344 // SP[-2] is assumed to be a RawArray, SP[-1] to be a smi.
338 // 345 //
339 // - StoreIndexed rA, rB, rC 346 // - StoreIndexed rA, rB, rC
340 // 347 //
341 // Store FP[rC] into array FP[rA] at index FP[rB]. No typechecking is done. 348 // Store FP[rC] into array FP[rA] at index FP[rB]. No typechecking is done.
342 // FP[rA] is assumed to be a RawArray, FP[rB] to be a smi. 349 // FP[rA] is assumed to be a RawArray, FP[rB] to be a smi.
343 // 350 //
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 // 464 //
458 // - SetFrame A 465 // - SetFrame A
459 // 466 //
460 // Reinitialize SP assuming that current frame has size A. 467 // Reinitialize SP assuming that current frame has size A.
461 // Used to drop temporaries from the stack in the exception handler. 468 // Used to drop temporaries from the stack in the exception handler.
462 // 469 //
463 // - AllocateContext D 470 // - AllocateContext D
464 // 471 //
465 // Allocate Context object assuming for D context variables. 472 // Allocate Context object assuming for D context variables.
466 // 473 //
474 // - AllocateUninitializedContext rA, D
475 //
476 // Allocates an uninitialized context for D variables, and places the result
477 // in FP[rA]. On success, skips the next 2 instructions, which should be the
478 // slow path (AllocateContext D; PopLocal rA).
479 //
467 // - CloneContext 480 // - CloneContext
468 // 481 //
469 // Clone context stored in TOS. 482 // Clone context stored in TOS.
470 // 483 //
471 // - MoveSpecial rA, D 484 // - MoveSpecial rA, D
472 // 485 //
473 // Copy special values from inside interpreter to FP[rA]. Currently only 486 // Copy special values from inside interpreter to FP[rA]. Currently only
474 // used to pass exception object (D = 0) and stack trace object (D = 1) to 487 // used to pass exception object (D = 0) and stack trace object (D = 1) to
475 // catch handler. 488 // catch handler.
476 // 489 //
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
695 V(IfDGt, A_D, reg, reg, ___) \ 708 V(IfDGt, A_D, reg, reg, ___) \
696 V(IfNeStrictNum, A_D, reg, reg, ___) \ 709 V(IfNeStrictNum, A_D, reg, reg, ___) \
697 V(IfEqStrictNum, A_D, reg, reg, ___) \ 710 V(IfEqStrictNum, A_D, reg, reg, ___) \
698 V(IfEqNull, A, reg, ___, ___) \ 711 V(IfEqNull, A, reg, ___, ___) \
699 V(IfNeNull, A, reg, ___, ___) \ 712 V(IfNeNull, A, reg, ___, ___) \
700 V(CreateArrayTOS, 0, ___, ___, ___) \ 713 V(CreateArrayTOS, 0, ___, ___, ___) \
701 V(CreateArrayOpt, A_B_C, reg, reg, ___) \ 714 V(CreateArrayOpt, A_B_C, reg, reg, ___) \
702 V(Allocate, D, lit, ___, ___) \ 715 V(Allocate, D, lit, ___, ___) \
703 V(AllocateT, 0, ___, ___, ___) \ 716 V(AllocateT, 0, ___, ___, ___) \
704 V(AllocateOpt, A_D, reg, lit, ___) \ 717 V(AllocateOpt, A_D, reg, lit, ___) \
718 V(AllocateTOpt, A_D, reg, lit, ___) \
705 V(StoreIndexedTOS, 0, ___, ___, ___) \ 719 V(StoreIndexedTOS, 0, ___, ___, ___) \
706 V(StoreIndexed, A_B_C, reg, reg, reg) \ 720 V(StoreIndexed, A_B_C, reg, reg, reg) \
707 V(StoreIndexedUint8, A_B_C, reg, reg, reg) \ 721 V(StoreIndexedUint8, A_B_C, reg, reg, reg) \
708 V(StoreIndexedExternalUint8, A_B_C, reg, reg, reg) \ 722 V(StoreIndexedExternalUint8, A_B_C, reg, reg, reg) \
709 V(StoreIndexedOneByteString, A_B_C, reg, reg, reg) \ 723 V(StoreIndexedOneByteString, A_B_C, reg, reg, reg) \
710 V(StoreIndexedUint32, A_B_C, reg, reg, reg) \ 724 V(StoreIndexedUint32, A_B_C, reg, reg, reg) \
711 V(StoreIndexedFloat64, A_B_C, reg, reg, reg) \ 725 V(StoreIndexedFloat64, A_B_C, reg, reg, reg) \
712 V(StoreIndexed8Float64, A_B_C, reg, reg, reg) \ 726 V(StoreIndexed8Float64, A_B_C, reg, reg, reg) \
713 V(LoadIndexed, A_B_C, reg, reg, reg) \ 727 V(LoadIndexed, A_B_C, reg, reg, reg) \
714 V(LoadIndexedUint8, A_B_C, reg, reg, reg) \ 728 V(LoadIndexedUint8, A_B_C, reg, reg, reg) \
(...skipping 13 matching lines...) Expand all
728 V(LoadFieldTOS, D, num, ___, ___) \ 742 V(LoadFieldTOS, D, num, ___, ___) \
729 V(BooleanNegateTOS, 0, ___, ___, ___) \ 743 V(BooleanNegateTOS, 0, ___, ___, ___) \
730 V(BooleanNegate, A_D, reg, reg, ___) \ 744 V(BooleanNegate, A_D, reg, reg, ___) \
731 V(Throw, A, num, ___, ___) \ 745 V(Throw, A, num, ___, ___) \
732 V(Entry, A_B_C, num, num, num) \ 746 V(Entry, A_B_C, num, num, num) \
733 V(EntryOptional, A_B_C, num, num, num) \ 747 V(EntryOptional, A_B_C, num, num, num) \
734 V(EntryOptimized, A_D, num, num, ___) \ 748 V(EntryOptimized, A_D, num, num, ___) \
735 V(Frame, D, num, ___, ___) \ 749 V(Frame, D, num, ___, ___) \
736 V(SetFrame, A, num, ___, num) \ 750 V(SetFrame, A, num, ___, num) \
737 V(AllocateContext, D, num, ___, ___) \ 751 V(AllocateContext, D, num, ___, ___) \
752 V(AllocateUninitializedContext, A_D, reg, num, ___) \
738 V(CloneContext, 0, ___, ___, ___) \ 753 V(CloneContext, 0, ___, ___, ___) \
739 V(MoveSpecial, A_D, reg, num, ___) \ 754 V(MoveSpecial, A_D, reg, num, ___) \
740 V(InstantiateType, D, lit, ___, ___) \ 755 V(InstantiateType, D, lit, ___, ___) \
741 V(InstantiateTypeArgumentsTOS, A_D, num, lit, ___) \ 756 V(InstantiateTypeArgumentsTOS, A_D, num, lit, ___) \
742 V(InstanceOf, A, num, ___, ___) \ 757 V(InstanceOf, A, num, ___, ___) \
743 V(AssertAssignable, D, num, lit, ___) \ 758 V(AssertAssignable, D, num, lit, ___) \
744 V(AssertBoolean, A, num, ___, ___) \ 759 V(AssertBoolean, A, num, ___, ___) \
745 V(TestSmi, A_D, reg, reg, ___) \ 760 V(TestSmi, A_D, reg, reg, ___) \
746 V(TestCids, A_D, reg, num, ___) \ 761 V(TestCids, A_D, reg, num, ___) \
747 V(CheckSmi, A, reg, ___, ___) \ 762 V(CheckSmi, A, reg, ___, ___) \
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
890 905
891 // After a comparison, the condition NEXT_IS_TRUE means the following 906 // After a comparison, the condition NEXT_IS_TRUE means the following
892 // instruction is executed if the comparision is true and skipped over overwise. 907 // instruction is executed if the comparision is true and skipped over overwise.
893 // Conidition NEXT_IS_FALSE means the following instruction is executed if the 908 // Conidition NEXT_IS_FALSE means the following instruction is executed if the
894 // comparison is false and skipped over otherwise. 909 // comparison is false and skipped over otherwise.
895 enum Condition { NEXT_IS_TRUE, NEXT_IS_FALSE }; 910 enum Condition { NEXT_IS_TRUE, NEXT_IS_FALSE };
896 911
897 } // namespace dart 912 } // namespace dart
898 913
899 #endif // VM_CONSTANTS_DBC_H_ 914 #endif // VM_CONSTANTS_DBC_H_
OLDNEW
« no previous file with comments | « no previous file | runtime/vm/intermediate_language_dbc.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698