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

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

Issue 2149993006: DBC: Make unoptimized static calls call through ICData (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 5 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
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 511 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 V(Move, A_X, reg, xeg, ___) \ 522 V(Move, A_X, reg, xeg, ___) \
523 V(Swap, A_X, reg, xeg, ___) \ 523 V(Swap, A_X, reg, xeg, ___) \
524 V(Push, X, xeg, ___, ___) \ 524 V(Push, X, xeg, ___, ___) \
525 V(LoadConstant, A_D, reg, lit, ___) \ 525 V(LoadConstant, A_D, reg, lit, ___) \
526 V(LoadClassId, A_D, reg, reg, ___) \ 526 V(LoadClassId, A_D, reg, reg, ___) \
527 V(LoadClassIdTOS, 0, ___, ___, ___) \ 527 V(LoadClassIdTOS, 0, ___, ___, ___) \
528 V(PushConstant, D, lit, ___, ___) \ 528 V(PushConstant, D, lit, ___, ___) \
529 V(StoreLocal, X, xeg, ___, ___) \ 529 V(StoreLocal, X, xeg, ___, ___) \
530 V(PopLocal, X, xeg, ___, ___) \ 530 V(PopLocal, X, xeg, ___, ___) \
531 V(StaticCall, A_D, num, num, ___) \ 531 V(StaticCall, A_D, num, num, ___) \
532 V(OptimizedStaticCall, A_D, num, num, ___) \
532 V(InstanceCall1, A_D, num, num, ___) \ 533 V(InstanceCall1, A_D, num, num, ___) \
533 V(InstanceCall2, A_D, num, num, ___) \ 534 V(InstanceCall2, A_D, num, num, ___) \
534 V(InstanceCall1Opt, A_D, num, num, ___) \ 535 V(InstanceCall1Opt, A_D, num, num, ___) \
535 V(InstanceCall2Opt, A_D, num, num, ___) \ 536 V(InstanceCall2Opt, A_D, num, num, ___) \
536 V(NativeCall, 0, ___, ___, ___) \ 537 V(NativeCall, 0, ___, ___, ___) \
537 V(NativeBootstrapCall, 0, ___, ___, ___) \ 538 V(NativeBootstrapCall, 0, ___, ___, ___) \
538 V(OneByteStringFromCharCode, A_X, reg, xeg, ___) \ 539 V(OneByteStringFromCharCode, A_X, reg, xeg, ___) \
539 V(StringToCharCode, A_X, reg, xeg, ___) \ 540 V(StringToCharCode, A_X, reg, xeg, ___) \
540 V(AddTOS, 0, ___, ___, ___) \ 541 V(AddTOS, 0, ___, ___, ___) \
541 V(SubTOS, 0, ___, ___, ___) \ 542 V(SubTOS, 0, ___, ___, ___) \
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 return (bc >> kDShift) & kDMask; 688 return (bc >> kDShift) & kDMask;
688 } 689 }
689 690
690 DART_FORCE_INLINE static Opcode DecodeOpcode(Instr bc) { 691 DART_FORCE_INLINE static Opcode DecodeOpcode(Instr bc) {
691 return static_cast<Opcode>(bc & 0xFF); 692 return static_cast<Opcode>(bc & 0xFF);
692 } 693 }
693 694
694 DART_FORCE_INLINE static bool IsCallOpcode(Instr instr) { 695 DART_FORCE_INLINE static bool IsCallOpcode(Instr instr) {
695 switch (DecodeOpcode(instr)) { 696 switch (DecodeOpcode(instr)) {
696 case Bytecode::kStaticCall: 697 case Bytecode::kStaticCall:
698 case Bytecode::kOptimizedStaticCall:
697 case Bytecode::kInstanceCall1: 699 case Bytecode::kInstanceCall1:
698 case Bytecode::kInstanceCall2: 700 case Bytecode::kInstanceCall2:
699 case Bytecode::kInstanceCall1Opt: 701 case Bytecode::kInstanceCall1Opt:
700 case Bytecode::kInstanceCall2Opt: 702 case Bytecode::kInstanceCall2Opt:
701 case Bytecode::kDebugBreak: 703 case Bytecode::kDebugBreak:
702 return true; 704 return true;
703 705
704 default: 706 default:
705 return false; 707 return false;
706 } 708 }
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
745 747
746 // After a comparison, the condition NEXT_IS_TRUE means the following 748 // After a comparison, the condition NEXT_IS_TRUE means the following
747 // instruction is executed if the comparision is true and skipped over overwise. 749 // instruction is executed if the comparision is true and skipped over overwise.
748 // Conidition NEXT_IS_FALSE means the following instruction is executed if the 750 // Conidition NEXT_IS_FALSE means the following instruction is executed if the
749 // comparison is false and skipped over otherwise. 751 // comparison is false and skipped over otherwise.
750 enum Condition { NEXT_IS_TRUE, NEXT_IS_FALSE }; 752 enum Condition { NEXT_IS_TRUE, NEXT_IS_FALSE };
751 753
752 } // namespace dart 754 } // namespace dart
753 755
754 #endif // VM_CONSTANTS_DBC_H_ 756 #endif // VM_CONSTANTS_DBC_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698