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

Side by Side Diff: vm/intermediate_language.h

Issue 10827209: Unify class ids and snapshot object ids list so that we don't have disparate and sometimes confusin… (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 8 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « vm/il_printer.cc ('k') | vm/intermediate_language_ia32.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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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_INTERMEDIATE_LANGUAGE_H_ 5 #ifndef VM_INTERMEDIATE_LANGUAGE_H_
6 #define VM_INTERMEDIATE_LANGUAGE_H_ 6 #define VM_INTERMEDIATE_LANGUAGE_H_
7 7
8 #include "vm/allocation.h" 8 #include "vm/allocation.h"
9 #include "vm/ast.h" 9 #include "vm/ast.h"
10 #include "vm/growable_array.h" 10 #include "vm/growable_array.h"
(...skipping 611 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 class EqualityCompareComp : public ComparisonComp { 622 class EqualityCompareComp : public ComparisonComp {
623 public: 623 public:
624 EqualityCompareComp(intptr_t token_pos, 624 EqualityCompareComp(intptr_t token_pos,
625 intptr_t try_index, 625 intptr_t try_index,
626 Token::Kind kind, 626 Token::Kind kind,
627 Value* left, 627 Value* left,
628 Value* right) 628 Value* right)
629 : ComparisonComp(kind, left, right), 629 : ComparisonComp(kind, left, right),
630 token_pos_(token_pos), 630 token_pos_(token_pos),
631 try_index_(try_index), 631 try_index_(try_index),
632 receiver_class_id_(kObject) { 632 receiver_class_id_(kObjectCid) {
633 ASSERT((kind == Token::kEQ) || (kind == Token::kNE)); 633 ASSERT((kind == Token::kEQ) || (kind == Token::kNE));
634 } 634 }
635 635
636 DECLARE_COMPUTATION(EqualityCompare) 636 DECLARE_COMPUTATION(EqualityCompare)
637 637
638 intptr_t token_pos() const { return token_pos_; } 638 intptr_t token_pos() const { return token_pos_; }
639 intptr_t try_index() const { return try_index_; } 639 intptr_t try_index() const { return try_index_; }
640 640
641 void set_receiver_class_id(intptr_t value) { receiver_class_id_ = value; } 641 void set_receiver_class_id(intptr_t value) { receiver_class_id_ = value; }
642 intptr_t receiver_class_id() const { return receiver_class_id_; } 642 intptr_t receiver_class_id() const { return receiver_class_id_; }
(...skipping 13 matching lines...) Expand all
656 class RelationalOpComp : public ComparisonComp { 656 class RelationalOpComp : public ComparisonComp {
657 public: 657 public:
658 RelationalOpComp(intptr_t token_pos, 658 RelationalOpComp(intptr_t token_pos,
659 intptr_t try_index, 659 intptr_t try_index,
660 Token::Kind kind, 660 Token::Kind kind,
661 Value* left, 661 Value* left,
662 Value* right) 662 Value* right)
663 : ComparisonComp(kind, left, right), 663 : ComparisonComp(kind, left, right),
664 token_pos_(token_pos), 664 token_pos_(token_pos),
665 try_index_(try_index), 665 try_index_(try_index),
666 operands_class_id_(kObject) { 666 operands_class_id_(kObjectCid) {
667 ASSERT(Token::IsRelationalOperator(kind)); 667 ASSERT(Token::IsRelationalOperator(kind));
668 } 668 }
669 669
670 DECLARE_COMPUTATION(RelationalOp) 670 DECLARE_COMPUTATION(RelationalOp)
671 671
672 intptr_t token_pos() const { return token_pos_; } 672 intptr_t token_pos() const { return token_pos_; }
673 intptr_t try_index() const { return try_index_; } 673 intptr_t try_index() const { return try_index_; }
674 674
675 // TODO(srdjan): instead of class-id pass an enum that can differentiate 675 // TODO(srdjan): instead of class-id pass an enum that can differentiate
676 // between boxed and unboxed doubles and integers. 676 // between boxed and unboxed doubles and integers.
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
943 943
944 944
945 class LoadIndexedComp : public TemplateComputation<2> { 945 class LoadIndexedComp : public TemplateComputation<2> {
946 public: 946 public:
947 LoadIndexedComp(intptr_t token_pos, 947 LoadIndexedComp(intptr_t token_pos,
948 intptr_t try_index, 948 intptr_t try_index,
949 Value* array, 949 Value* array,
950 Value* index) 950 Value* index)
951 : token_pos_(token_pos), 951 : token_pos_(token_pos),
952 try_index_(try_index), 952 try_index_(try_index),
953 receiver_type_(kIllegalObjectKind) { 953 receiver_type_(kIllegalCid) {
954 ASSERT(array != NULL); 954 ASSERT(array != NULL);
955 ASSERT(index != NULL); 955 ASSERT(index != NULL);
956 inputs_[0] = array; 956 inputs_[0] = array;
957 inputs_[1] = index; 957 inputs_[1] = index;
958 } 958 }
959 959
960 DECLARE_COMPUTATION(LoadIndexed) 960 DECLARE_COMPUTATION(LoadIndexed)
961 961
962 intptr_t token_pos() const { return token_pos_; } 962 intptr_t token_pos() const { return token_pos_; }
963 intptr_t try_index() const { return try_index_; } 963 intptr_t try_index() const { return try_index_; }
964 Value* array() const { return inputs_[0]; } 964 Value* array() const { return inputs_[0]; }
965 Value* index() const { return inputs_[1]; } 965 Value* index() const { return inputs_[1]; }
966 966
967 void set_receiver_type(ObjectKind receiver_type) { 967 void set_receiver_type(intptr_t receiver_type) {
968 receiver_type_ = receiver_type; 968 receiver_type_ = receiver_type;
969 } 969 }
970 970
971 ObjectKind receiver_type() const { 971 intptr_t receiver_type() const {
972 return receiver_type_; 972 return receiver_type_;
973 } 973 }
974 974
975 virtual bool CanDeoptimize() const { return true; } 975 virtual bool CanDeoptimize() const { return true; }
976 976
977 private: 977 private:
978 const intptr_t token_pos_; 978 const intptr_t token_pos_;
979 const intptr_t try_index_; 979 const intptr_t try_index_;
980 ObjectKind receiver_type_; 980 intptr_t receiver_type_;
981 981
982 DISALLOW_COPY_AND_ASSIGN(LoadIndexedComp); 982 DISALLOW_COPY_AND_ASSIGN(LoadIndexedComp);
983 }; 983 };
984 984
985 985
986 // Not simply an InstanceCall because it has somewhat more complicated 986 // Not simply an InstanceCall because it has somewhat more complicated
987 // semantics: the value operand is preserved before the call. 987 // semantics: the value operand is preserved before the call.
988 class StoreIndexedComp : public TemplateComputation<3> { 988 class StoreIndexedComp : public TemplateComputation<3> {
989 public: 989 public:
990 StoreIndexedComp(intptr_t token_pos, 990 StoreIndexedComp(intptr_t token_pos,
991 intptr_t try_index, 991 intptr_t try_index,
992 Value* array, 992 Value* array,
993 Value* index, 993 Value* index,
994 Value* value) 994 Value* value)
995 : token_pos_(token_pos), 995 : token_pos_(token_pos),
996 try_index_(try_index), 996 try_index_(try_index),
997 receiver_type_(kIllegalObjectKind) { 997 receiver_type_(kIllegalCid) {
998 inputs_[0] = array; 998 inputs_[0] = array;
999 inputs_[1] = index; 999 inputs_[1] = index;
1000 inputs_[2] = value; 1000 inputs_[2] = value;
1001 } 1001 }
1002 1002
1003 DECLARE_COMPUTATION(StoreIndexed) 1003 DECLARE_COMPUTATION(StoreIndexed)
1004 1004
1005 intptr_t token_pos() const { return token_pos_; } 1005 intptr_t token_pos() const { return token_pos_; }
1006 intptr_t try_index() const { return try_index_; } 1006 intptr_t try_index() const { return try_index_; }
1007 Value* array() const { return inputs_[0]; } 1007 Value* array() const { return inputs_[0]; }
1008 Value* index() const { return inputs_[1]; } 1008 Value* index() const { return inputs_[1]; }
1009 Value* value() const { return inputs_[2]; } 1009 Value* value() const { return inputs_[2]; }
1010 1010
1011 void set_receiver_type(ObjectKind receiver_type) { 1011 void set_receiver_type(intptr_t receiver_type) {
1012 receiver_type_ = receiver_type; 1012 receiver_type_ = receiver_type;
1013 } 1013 }
1014 1014
1015 ObjectKind receiver_type() const { 1015 intptr_t receiver_type() const {
1016 return receiver_type_; 1016 return receiver_type_;
1017 } 1017 }
1018 1018
1019 virtual bool CanDeoptimize() const { return true; } 1019 virtual bool CanDeoptimize() const { return true; }
1020 1020
1021 private: 1021 private:
1022 const intptr_t token_pos_; 1022 const intptr_t token_pos_;
1023 const intptr_t try_index_; 1023 const intptr_t try_index_;
1024 ObjectKind receiver_type_; 1024 intptr_t receiver_type_;
1025 1025
1026 DISALLOW_COPY_AND_ASSIGN(StoreIndexedComp); 1026 DISALLOW_COPY_AND_ASSIGN(StoreIndexedComp);
1027 }; 1027 };
1028 1028
1029 1029
1030 // Note overrideable, built-in: value? false : true. 1030 // Note overrideable, built-in: value? false : true.
1031 class BooleanNegateComp : public TemplateComputation<1> { 1031 class BooleanNegateComp : public TemplateComputation<1> {
1032 public: 1032 public:
1033 explicit BooleanNegateComp(Value* value) { 1033 explicit BooleanNegateComp(Value* value) {
1034 inputs_[0] = value; 1034 inputs_[0] = value;
(...skipping 608 matching lines...) Expand 10 before | Expand all | Expand 10 after
1643 const intptr_t token_pos_; 1643 const intptr_t token_pos_;
1644 const intptr_t try_index_; 1644 const intptr_t try_index_;
1645 1645
1646 DISALLOW_COPY_AND_ASSIGN(CheckStackOverflowComp); 1646 DISALLOW_COPY_AND_ASSIGN(CheckStackOverflowComp);
1647 }; 1647 };
1648 1648
1649 1649
1650 class ToDoubleComp : public TemplateComputation<1> { 1650 class ToDoubleComp : public TemplateComputation<1> {
1651 public: 1651 public:
1652 ToDoubleComp(Value* value, 1652 ToDoubleComp(Value* value,
1653 ObjectKind from, 1653 intptr_t from,
1654 InstanceCallComp* instance_call) 1654 InstanceCallComp* instance_call)
1655 : from_(from), instance_call_(instance_call) { 1655 : from_(from), instance_call_(instance_call) {
1656 ASSERT(value != NULL); 1656 ASSERT(value != NULL);
1657 inputs_[0] = value; 1657 inputs_[0] = value;
1658 } 1658 }
1659 1659
1660 Value* value() const { return inputs_[0]; } 1660 Value* value() const { return inputs_[0]; }
1661 ObjectKind from() const { return from_; } 1661 intptr_t from() const { return from_; }
1662 1662
1663 InstanceCallComp* instance_call() const { return instance_call_; } 1663 InstanceCallComp* instance_call() const { return instance_call_; }
1664 1664
1665 virtual void PrintOperandsTo(BufferFormatter* f) const; 1665 virtual void PrintOperandsTo(BufferFormatter* f) const;
1666 1666
1667 DECLARE_COMPUTATION(ToDouble) 1667 DECLARE_COMPUTATION(ToDouble)
1668 1668
1669 virtual bool CanDeoptimize() const { return true; } 1669 virtual bool CanDeoptimize() const { return true; }
1670 1670
1671 private: 1671 private:
1672 const ObjectKind from_; 1672 const intptr_t from_;
1673 InstanceCallComp* instance_call_; 1673 InstanceCallComp* instance_call_;
1674 1674
1675 DISALLOW_COPY_AND_ASSIGN(ToDoubleComp); 1675 DISALLOW_COPY_AND_ASSIGN(ToDoubleComp);
1676 }; 1676 };
1677 1677
1678 1678
1679 #undef DECLARE_COMPUTATION 1679 #undef DECLARE_COMPUTATION
1680 1680
1681 1681
1682 // Implementation of type testers and cast functins. 1682 // Implementation of type testers and cast functins.
(...skipping 1082 matching lines...) Expand 10 before | Expand all | Expand 10 after
2765 const GrowableArray<BlockEntryInstr*>& block_order_; 2765 const GrowableArray<BlockEntryInstr*>& block_order_;
2766 2766
2767 private: 2767 private:
2768 DISALLOW_COPY_AND_ASSIGN(FlowGraphVisitor); 2768 DISALLOW_COPY_AND_ASSIGN(FlowGraphVisitor);
2769 }; 2769 };
2770 2770
2771 2771
2772 } // namespace dart 2772 } // namespace dart
2773 2773
2774 #endif // VM_INTERMEDIATE_LANGUAGE_H_ 2774 #endif // VM_INTERMEDIATE_LANGUAGE_H_
OLDNEW
« no previous file with comments | « vm/il_printer.cc ('k') | vm/intermediate_language_ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698