Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 RUNTIME_VM_KERNEL_H_ | 5 #ifndef RUNTIME_VM_KERNEL_H_ |
| 6 #define RUNTIME_VM_KERNEL_H_ | 6 #define RUNTIME_VM_KERNEL_H_ |
| 7 | 7 |
| 8 #if !defined(DART_PRECOMPILED_RUNTIME) | 8 #if !defined(DART_PRECOMPILED_RUNTIME) |
| 9 #include "platform/assert.h" | 9 #include "platform/assert.h" |
| 10 #include "vm/allocation.h" | 10 #include "vm/allocation.h" |
| (...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 349 virtual Node::NodeType Type() { return Node::kType##klass; } | 349 virtual Node::NodeType Type() { return Node::kType##klass; } |
| 350 | 350 |
| 351 #define DEFINE_IS_OPERATION(klass) \ | 351 #define DEFINE_IS_OPERATION(klass) \ |
| 352 virtual bool Is##klass() { return false; } | 352 virtual bool Is##klass() { return false; } |
| 353 | 353 |
| 354 #define DEFINE_ALL_IS_OPERATIONS() \ | 354 #define DEFINE_ALL_IS_OPERATIONS() \ |
| 355 KERNEL_NODES_DO(DEFINE_IS_OPERATION) \ | 355 KERNEL_NODES_DO(DEFINE_IS_OPERATION) \ |
| 356 DEFINE_IS_OPERATION(TreeNode) \ | 356 DEFINE_IS_OPERATION(TreeNode) \ |
| 357 KERNEL_TREE_NODES_DO(DEFINE_IS_OPERATION) | 357 KERNEL_TREE_NODES_DO(DEFINE_IS_OPERATION) |
| 358 | 358 |
| 359 class LinkedNode; | |
| 360 class Library; | |
| 361 class Class; | |
| 362 class Member; | |
| 363 class Field; | |
| 364 class Constructor; | |
| 365 class Procedure; | |
|
kustermann
2017/02/01 13:00:55
sort
asgerf
2017/02/02 12:30:28
Done.
| |
| 366 | |
| 367 class CanonicalName { | |
| 368 public: | |
| 369 String* name() { return name_; } | |
| 370 CanonicalName* parent() { return parent_; } | |
| 371 LinkedNode* definition() { return definition_; } | |
| 372 bool is_referenced() { return is_referenced_; } | |
| 373 void set_referenced(bool referenced) { is_referenced_ = referenced; } | |
| 374 | |
| 375 void LinkTo(LinkedNode* definition); | |
| 376 void Unlink(); | |
| 377 CanonicalName* AddChild(String* name); | |
| 378 | |
| 379 Library* AsLibrary(); | |
| 380 Class* AsClass(); | |
| 381 Member* AsMember(); | |
| 382 Field* AsField(); | |
| 383 Constructor* AsConstructor(); | |
| 384 Procedure* AsProcedure(); | |
| 385 | |
| 386 static CanonicalName* NewRoot(); | |
| 387 | |
| 388 private: | |
| 389 CanonicalName(); | |
| 390 | |
| 391 bool is_referenced_; | |
| 392 Ref<CanonicalName> parent_; | |
| 393 Ref<String> name_; | |
| 394 Ref<LinkedNode> definition_; | |
| 395 }; | |
| 396 | |
| 359 | 397 |
| 360 class Node { | 398 class Node { |
| 361 public: | 399 public: |
| 362 virtual ~Node(); | 400 virtual ~Node(); |
| 363 | 401 |
| 364 enum NodeType { | 402 enum NodeType { |
| 365 #define DO(name) kType##name, | 403 #define DO(name) kType##name, |
| 366 KERNEL_ALL_NODES_DO(DO) | 404 KERNEL_ALL_NODES_DO(DO) |
| 367 #undef DO | 405 #undef DO |
| 368 | 406 |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 393 virtual void AcceptTreeVisitor(TreeVisitor* visitor) = 0; | 431 virtual void AcceptTreeVisitor(TreeVisitor* visitor) = 0; |
| 394 | 432 |
| 395 protected: | 433 protected: |
| 396 TreeNode() {} | 434 TreeNode() {} |
| 397 | 435 |
| 398 private: | 436 private: |
| 399 DISALLOW_COPY_AND_ASSIGN(TreeNode); | 437 DISALLOW_COPY_AND_ASSIGN(TreeNode); |
| 400 }; | 438 }; |
| 401 | 439 |
| 402 | 440 |
| 403 class Library : public TreeNode { | 441 class LinkedNode : public TreeNode { |
| 442 public: | |
| 443 virtual ~LinkedNode(); | |
| 444 | |
| 445 CanonicalName* canonical_name() { return canonical_name_; } | |
| 446 | |
| 447 protected: | |
| 448 LinkedNode() {} | |
| 449 | |
| 450 private: | |
| 451 Ref<CanonicalName> canonical_name_; | |
| 452 | |
| 453 friend class CanonicalName; | |
| 454 | |
| 455 DISALLOW_COPY_AND_ASSIGN(LinkedNode); | |
| 456 }; | |
| 457 | |
| 458 | |
| 459 class Library : public LinkedNode { | |
| 404 public: | 460 public: |
| 405 Library* ReadFrom(Reader* reader); | 461 Library* ReadFrom(Reader* reader); |
| 406 | 462 |
| 407 virtual ~Library(); | 463 virtual ~Library(); |
| 408 | 464 |
| 409 DEFINE_CASTING_OPERATIONS(Library); | 465 DEFINE_CASTING_OPERATIONS(Library); |
| 410 | 466 |
| 411 virtual void AcceptTreeVisitor(TreeVisitor* visitor); | 467 virtual void AcceptTreeVisitor(TreeVisitor* visitor); |
| 412 virtual void VisitChildren(Visitor* visitor); | 468 virtual void VisitChildren(Visitor* visitor); |
| 413 | 469 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 450 Ref<String> import_uri_; | 506 Ref<String> import_uri_; |
| 451 intptr_t source_uri_index_; | 507 intptr_t source_uri_index_; |
| 452 List<Class> classes_; | 508 List<Class> classes_; |
| 453 List<Field> fields_; | 509 List<Field> fields_; |
| 454 List<Procedure> procedures_; | 510 List<Procedure> procedures_; |
| 455 | 511 |
| 456 DISALLOW_COPY_AND_ASSIGN(Library); | 512 DISALLOW_COPY_AND_ASSIGN(Library); |
| 457 }; | 513 }; |
| 458 | 514 |
| 459 | 515 |
| 460 class Class : public TreeNode { | 516 class Class : public LinkedNode { |
| 461 public: | 517 public: |
| 462 Class* ReadFrom(Reader* reader); | 518 Class* ReadFrom(Reader* reader); |
| 463 | 519 |
| 464 virtual ~Class(); | 520 virtual ~Class(); |
| 465 | 521 |
| 466 DEFINE_CASTING_OPERATIONS(Class); | 522 DEFINE_CASTING_OPERATIONS(Class); |
| 467 | 523 |
| 468 virtual void AcceptTreeVisitor(TreeVisitor* visitor); | 524 virtual void AcceptTreeVisitor(TreeVisitor* visitor); |
| 469 virtual void AcceptClassVisitor(ClassVisitor* visitor) = 0; | 525 virtual void AcceptClassVisitor(ClassVisitor* visitor) = 0; |
| 470 virtual void AcceptReferenceVisitor(ClassReferenceVisitor* visitor) = 0; | 526 virtual void AcceptReferenceVisitor(ClassReferenceVisitor* visitor) = 0; |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 573 List<Constructor> constructors_; | 629 List<Constructor> constructors_; |
| 574 | 630 |
| 575 // Dummy instances which are empty lists. | 631 // Dummy instances which are empty lists. |
| 576 List<Field> fields_; | 632 List<Field> fields_; |
| 577 List<Procedure> procedures_; | 633 List<Procedure> procedures_; |
| 578 | 634 |
| 579 DISALLOW_COPY_AND_ASSIGN(MixinClass); | 635 DISALLOW_COPY_AND_ASSIGN(MixinClass); |
| 580 }; | 636 }; |
| 581 | 637 |
| 582 | 638 |
| 583 class Member : public TreeNode { | 639 class Member : public LinkedNode { |
| 584 public: | 640 public: |
| 585 virtual ~Member(); | 641 virtual ~Member(); |
| 586 | 642 |
| 587 DEFINE_CASTING_OPERATIONS(Member); | 643 DEFINE_CASTING_OPERATIONS(Member); |
| 588 | 644 |
| 589 virtual void AcceptTreeVisitor(TreeVisitor* visitor); | 645 virtual void AcceptTreeVisitor(TreeVisitor* visitor); |
| 590 virtual void AcceptMemberVisitor(MemberVisitor* visitor) = 0; | 646 virtual void AcceptMemberVisitor(MemberVisitor* visitor) = 0; |
| 591 virtual void AcceptReferenceVisitor(MemberReferenceVisitor* visitor) = 0; | 647 virtual void AcceptReferenceVisitor(MemberReferenceVisitor* visitor) = 0; |
| 592 | 648 |
| 593 TreeNode* parent() { return parent_; } | 649 TreeNode* parent() { return parent_; } |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 789 public: | 845 public: |
| 790 static FieldInitializer* ReadFromImpl(Reader* reader); | 846 static FieldInitializer* ReadFromImpl(Reader* reader); |
| 791 | 847 |
| 792 virtual ~FieldInitializer(); | 848 virtual ~FieldInitializer(); |
| 793 | 849 |
| 794 DEFINE_CASTING_OPERATIONS(FieldInitializer); | 850 DEFINE_CASTING_OPERATIONS(FieldInitializer); |
| 795 | 851 |
| 796 virtual void AcceptInitializerVisitor(InitializerVisitor* visitor); | 852 virtual void AcceptInitializerVisitor(InitializerVisitor* visitor); |
| 797 virtual void VisitChildren(Visitor* visitor); | 853 virtual void VisitChildren(Visitor* visitor); |
| 798 | 854 |
| 799 Field* field() { return field_; } | 855 Field* field() { return field_reference_->AsField(); } |
| 800 Expression* value() { return value_; } | 856 Expression* value() { return value_; } |
| 801 | 857 |
| 802 private: | 858 private: |
| 803 FieldInitializer() {} | 859 FieldInitializer() {} |
| 804 | 860 |
| 805 Ref<Field> field_; | 861 Ref<CanonicalName> field_reference_; |
| 806 Child<Expression> value_; | 862 Child<Expression> value_; |
| 807 | 863 |
| 808 DISALLOW_COPY_AND_ASSIGN(FieldInitializer); | 864 DISALLOW_COPY_AND_ASSIGN(FieldInitializer); |
| 809 }; | 865 }; |
| 810 | 866 |
| 811 | 867 |
| 812 class SuperInitializer : public Initializer { | 868 class SuperInitializer : public Initializer { |
| 813 public: | 869 public: |
| 814 static SuperInitializer* ReadFromImpl(Reader* reader); | 870 static SuperInitializer* ReadFromImpl(Reader* reader); |
| 815 | 871 |
| 816 virtual ~SuperInitializer(); | 872 virtual ~SuperInitializer(); |
| 817 | 873 |
| 818 DEFINE_CASTING_OPERATIONS(SuperInitializer); | 874 DEFINE_CASTING_OPERATIONS(SuperInitializer); |
| 819 | 875 |
| 820 virtual void AcceptInitializerVisitor(InitializerVisitor* visitor); | 876 virtual void AcceptInitializerVisitor(InitializerVisitor* visitor); |
| 821 virtual void VisitChildren(Visitor* visitor); | 877 virtual void VisitChildren(Visitor* visitor); |
| 822 | 878 |
| 823 Constructor* target() { return target_; } | 879 Constructor* target() { return target_reference_->AsConstructor(); } |
| 824 Arguments* arguments() { return arguments_; } | 880 Arguments* arguments() { return arguments_; } |
| 825 | 881 |
| 826 private: | 882 private: |
| 827 SuperInitializer() {} | 883 SuperInitializer() {} |
| 828 | 884 |
| 829 Ref<Constructor> target_; | 885 Ref<CanonicalName> target_reference_; |
| 830 Child<Arguments> arguments_; | 886 Child<Arguments> arguments_; |
| 831 | 887 |
| 832 DISALLOW_COPY_AND_ASSIGN(SuperInitializer); | 888 DISALLOW_COPY_AND_ASSIGN(SuperInitializer); |
| 833 }; | 889 }; |
| 834 | 890 |
| 835 | 891 |
| 836 class RedirectingInitializer : public Initializer { | 892 class RedirectingInitializer : public Initializer { |
| 837 public: | 893 public: |
| 838 static RedirectingInitializer* ReadFromImpl(Reader* reader); | 894 static RedirectingInitializer* ReadFromImpl(Reader* reader); |
| 839 | 895 |
| 840 virtual ~RedirectingInitializer(); | 896 virtual ~RedirectingInitializer(); |
| 841 | 897 |
| 842 DEFINE_CASTING_OPERATIONS(RedirectingInitializer); | 898 DEFINE_CASTING_OPERATIONS(RedirectingInitializer); |
| 843 | 899 |
| 844 virtual void AcceptInitializerVisitor(InitializerVisitor* visitor); | 900 virtual void AcceptInitializerVisitor(InitializerVisitor* visitor); |
| 845 virtual void VisitChildren(Visitor* visitor); | 901 virtual void VisitChildren(Visitor* visitor); |
| 846 | 902 |
| 847 Constructor* target() { return target_; } | 903 Constructor* target() { return target_reference_->AsConstructor(); } |
| 848 Arguments* arguments() { return arguments_; } | 904 Arguments* arguments() { return arguments_; } |
| 849 | 905 |
| 850 private: | 906 private: |
| 851 RedirectingInitializer() {} | 907 RedirectingInitializer() {} |
| 852 | 908 |
| 853 Ref<Constructor> target_; | 909 Ref<CanonicalName> target_reference_; |
| 854 Child<Arguments> arguments_; | 910 Child<Arguments> arguments_; |
| 855 | 911 |
| 856 DISALLOW_COPY_AND_ASSIGN(RedirectingInitializer); | 912 DISALLOW_COPY_AND_ASSIGN(RedirectingInitializer); |
| 857 }; | 913 }; |
| 858 | 914 |
| 859 | 915 |
| 860 class LocalInitializer : public Initializer { | 916 class LocalInitializer : public Initializer { |
| 861 public: | 917 public: |
| 862 static LocalInitializer* ReadFromImpl(Reader* reader); | 918 static LocalInitializer* ReadFromImpl(Reader* reader); |
| 863 | 919 |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1032 virtual void VisitChildren(Visitor* visitor); | 1088 virtual void VisitChildren(Visitor* visitor); |
| 1033 | 1089 |
| 1034 Expression* receiver() { return receiver_; } | 1090 Expression* receiver() { return receiver_; } |
| 1035 Name* name() { return name_; } | 1091 Name* name() { return name_; } |
| 1036 | 1092 |
| 1037 private: | 1093 private: |
| 1038 PropertyGet() {} | 1094 PropertyGet() {} |
| 1039 | 1095 |
| 1040 Child<Expression> receiver_; | 1096 Child<Expression> receiver_; |
| 1041 Child<Name> name_; | 1097 Child<Name> name_; |
| 1042 Ref<Member> interfaceTarget_; | 1098 Ref<CanonicalName> interface_target_reference_; |
| 1043 | 1099 |
| 1044 DISALLOW_COPY_AND_ASSIGN(PropertyGet); | 1100 DISALLOW_COPY_AND_ASSIGN(PropertyGet); |
| 1045 }; | 1101 }; |
| 1046 | 1102 |
| 1047 | 1103 |
| 1048 class PropertySet : public Expression { | 1104 class PropertySet : public Expression { |
| 1049 public: | 1105 public: |
| 1050 static PropertySet* ReadFrom(Reader* reader); | 1106 static PropertySet* ReadFrom(Reader* reader); |
| 1051 | 1107 |
| 1052 virtual ~PropertySet(); | 1108 virtual ~PropertySet(); |
| 1053 | 1109 |
| 1054 DEFINE_CASTING_OPERATIONS(PropertySet); | 1110 DEFINE_CASTING_OPERATIONS(PropertySet); |
| 1055 | 1111 |
| 1056 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); | 1112 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); |
| 1057 virtual void VisitChildren(Visitor* visitor); | 1113 virtual void VisitChildren(Visitor* visitor); |
| 1058 | 1114 |
| 1059 Expression* receiver() { return receiver_; } | 1115 Expression* receiver() { return receiver_; } |
| 1060 Name* name() { return name_; } | 1116 Name* name() { return name_; } |
| 1061 Expression* value() { return value_; } | 1117 Expression* value() { return value_; } |
| 1062 | 1118 |
| 1063 private: | 1119 private: |
| 1064 PropertySet() {} | 1120 PropertySet() {} |
| 1065 | 1121 |
| 1066 Child<Expression> receiver_; | 1122 Child<Expression> receiver_; |
| 1067 Child<Name> name_; | 1123 Child<Name> name_; |
| 1068 Child<Expression> value_; | 1124 Child<Expression> value_; |
| 1069 Ref<Member> interfaceTarget_; | 1125 Ref<CanonicalName> interface_target_reference_; |
| 1070 | 1126 |
| 1071 DISALLOW_COPY_AND_ASSIGN(PropertySet); | 1127 DISALLOW_COPY_AND_ASSIGN(PropertySet); |
| 1072 }; | 1128 }; |
| 1073 | 1129 |
| 1074 | 1130 |
| 1075 class DirectPropertyGet : public Expression { | 1131 class DirectPropertyGet : public Expression { |
| 1076 public: | 1132 public: |
| 1077 static DirectPropertyGet* ReadFrom(Reader* reader); | 1133 static DirectPropertyGet* ReadFrom(Reader* reader); |
| 1078 | 1134 |
| 1079 virtual ~DirectPropertyGet(); | 1135 virtual ~DirectPropertyGet(); |
| 1080 | 1136 |
| 1081 DEFINE_CASTING_OPERATIONS(DirectPropertyGet); | 1137 DEFINE_CASTING_OPERATIONS(DirectPropertyGet); |
| 1082 | 1138 |
| 1083 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); | 1139 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); |
| 1084 virtual void VisitChildren(Visitor* visitor); | 1140 virtual void VisitChildren(Visitor* visitor); |
| 1085 | 1141 |
| 1086 Expression* receiver() { return receiver_; } | 1142 Expression* receiver() { return receiver_; } |
| 1087 Member* target() { return target_; } | 1143 Member* target() { return target_reference_->AsMember(); } |
| 1088 | 1144 |
| 1089 private: | 1145 private: |
| 1090 DirectPropertyGet() {} | 1146 DirectPropertyGet() {} |
| 1091 | 1147 |
| 1092 Child<Expression> receiver_; | 1148 Child<Expression> receiver_; |
| 1093 Ref<Member> target_; | 1149 Ref<CanonicalName> target_reference_; |
| 1094 | 1150 |
| 1095 DISALLOW_COPY_AND_ASSIGN(DirectPropertyGet); | 1151 DISALLOW_COPY_AND_ASSIGN(DirectPropertyGet); |
| 1096 }; | 1152 }; |
| 1097 | 1153 |
| 1098 | 1154 |
| 1099 class DirectPropertySet : public Expression { | 1155 class DirectPropertySet : public Expression { |
| 1100 public: | 1156 public: |
| 1101 static DirectPropertySet* ReadFrom(Reader* reader); | 1157 static DirectPropertySet* ReadFrom(Reader* reader); |
| 1102 | 1158 |
| 1103 virtual ~DirectPropertySet(); | 1159 virtual ~DirectPropertySet(); |
| 1104 | 1160 |
| 1105 DEFINE_CASTING_OPERATIONS(DirectPropertySet); | 1161 DEFINE_CASTING_OPERATIONS(DirectPropertySet); |
| 1106 | 1162 |
| 1107 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); | 1163 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); |
| 1108 virtual void VisitChildren(Visitor* visitor); | 1164 virtual void VisitChildren(Visitor* visitor); |
| 1109 | 1165 |
| 1110 Expression* receiver() { return receiver_; } | 1166 Expression* receiver() { return receiver_; } |
| 1111 Member* target() { return target_; } | 1167 Member* target() { return target_reference_->AsMember(); } |
| 1112 Expression* value() { return value_; } | 1168 Expression* value() { return value_; } |
| 1113 | 1169 |
| 1114 private: | 1170 private: |
| 1115 DirectPropertySet() {} | 1171 DirectPropertySet() {} |
| 1116 | 1172 |
| 1117 Child<Expression> receiver_; | 1173 Child<Expression> receiver_; |
| 1118 Ref<Member> target_; | 1174 Ref<CanonicalName> target_reference_; |
| 1119 Child<Expression> value_; | 1175 Child<Expression> value_; |
| 1120 | 1176 |
| 1121 DISALLOW_COPY_AND_ASSIGN(DirectPropertySet); | 1177 DISALLOW_COPY_AND_ASSIGN(DirectPropertySet); |
| 1122 }; | 1178 }; |
| 1123 | 1179 |
| 1124 | 1180 |
| 1125 class StaticGet : public Expression { | 1181 class StaticGet : public Expression { |
| 1126 public: | 1182 public: |
| 1127 static StaticGet* ReadFrom(Reader* reader); | 1183 static StaticGet* ReadFrom(Reader* reader); |
| 1128 | 1184 |
| 1129 virtual ~StaticGet(); | 1185 virtual ~StaticGet(); |
| 1130 | 1186 |
| 1131 DEFINE_CASTING_OPERATIONS(StaticGet); | 1187 DEFINE_CASTING_OPERATIONS(StaticGet); |
| 1132 | 1188 |
| 1133 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); | 1189 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); |
| 1134 virtual void VisitChildren(Visitor* visitor); | 1190 virtual void VisitChildren(Visitor* visitor); |
| 1135 | 1191 |
| 1136 Member* target() { return target_; } | 1192 Member* target() { return target_reference_->AsMember(); } |
| 1137 | 1193 |
| 1138 private: | 1194 private: |
| 1139 StaticGet() {} | 1195 StaticGet() {} |
| 1140 | 1196 |
| 1141 Ref<Member> target_; | 1197 Ref<CanonicalName> target_reference_; |
| 1142 | 1198 |
| 1143 DISALLOW_COPY_AND_ASSIGN(StaticGet); | 1199 DISALLOW_COPY_AND_ASSIGN(StaticGet); |
| 1144 }; | 1200 }; |
| 1145 | 1201 |
| 1146 | 1202 |
| 1147 class StaticSet : public Expression { | 1203 class StaticSet : public Expression { |
| 1148 public: | 1204 public: |
| 1149 static StaticSet* ReadFrom(Reader* reader); | 1205 static StaticSet* ReadFrom(Reader* reader); |
| 1150 | 1206 |
| 1151 virtual ~StaticSet(); | 1207 virtual ~StaticSet(); |
| 1152 | 1208 |
| 1153 DEFINE_CASTING_OPERATIONS(StaticSet); | 1209 DEFINE_CASTING_OPERATIONS(StaticSet); |
| 1154 | 1210 |
| 1155 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); | 1211 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); |
| 1156 virtual void VisitChildren(Visitor* visitor); | 1212 virtual void VisitChildren(Visitor* visitor); |
| 1157 | 1213 |
| 1158 Member* target() { return target_; } | 1214 Member* target() { return target_reference_->AsMember(); } |
| 1159 Expression* expression() { return expression_; } | 1215 Expression* expression() { return expression_; } |
| 1160 | 1216 |
| 1161 private: | 1217 private: |
| 1162 StaticSet() {} | 1218 StaticSet() {} |
| 1163 | 1219 |
| 1164 Ref<Member> target_; | 1220 Ref<CanonicalName> target_reference_; |
| 1165 Child<Expression> expression_; | 1221 Child<Expression> expression_; |
| 1166 | 1222 |
| 1167 DISALLOW_COPY_AND_ASSIGN(StaticSet); | 1223 DISALLOW_COPY_AND_ASSIGN(StaticSet); |
| 1168 }; | 1224 }; |
| 1169 | 1225 |
| 1170 | 1226 |
| 1171 class Arguments : public TreeNode { | 1227 class Arguments : public TreeNode { |
| 1172 public: | 1228 public: |
| 1173 static Arguments* ReadFrom(Reader* reader); | 1229 static Arguments* ReadFrom(Reader* reader); |
| 1174 | 1230 |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1236 Expression* receiver() { return receiver_; } | 1292 Expression* receiver() { return receiver_; } |
| 1237 Name* name() { return name_; } | 1293 Name* name() { return name_; } |
| 1238 Arguments* arguments() { return arguments_; } | 1294 Arguments* arguments() { return arguments_; } |
| 1239 | 1295 |
| 1240 private: | 1296 private: |
| 1241 MethodInvocation() {} | 1297 MethodInvocation() {} |
| 1242 | 1298 |
| 1243 Child<Expression> receiver_; | 1299 Child<Expression> receiver_; |
| 1244 Child<Name> name_; | 1300 Child<Name> name_; |
| 1245 Child<Arguments> arguments_; | 1301 Child<Arguments> arguments_; |
| 1246 Ref<Member> interfaceTarget_; | 1302 Ref<CanonicalName> interface_target_reference_; |
| 1247 | 1303 |
| 1248 DISALLOW_COPY_AND_ASSIGN(MethodInvocation); | 1304 DISALLOW_COPY_AND_ASSIGN(MethodInvocation); |
| 1249 }; | 1305 }; |
| 1250 | 1306 |
| 1251 | 1307 |
| 1252 class DirectMethodInvocation : public Expression { | 1308 class DirectMethodInvocation : public Expression { |
| 1253 public: | 1309 public: |
| 1254 static DirectMethodInvocation* ReadFrom(Reader* reader); | 1310 static DirectMethodInvocation* ReadFrom(Reader* reader); |
| 1255 | 1311 |
| 1256 virtual ~DirectMethodInvocation(); | 1312 virtual ~DirectMethodInvocation(); |
| 1257 | 1313 |
| 1258 DEFINE_CASTING_OPERATIONS(DirectMethodInvocation); | 1314 DEFINE_CASTING_OPERATIONS(DirectMethodInvocation); |
| 1259 | 1315 |
| 1260 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); | 1316 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); |
| 1261 virtual void VisitChildren(Visitor* visitor); | 1317 virtual void VisitChildren(Visitor* visitor); |
| 1262 | 1318 |
| 1263 Expression* receiver() { return receiver_; } | 1319 Expression* receiver() { return receiver_; } |
| 1264 Procedure* target() { return target_; } | 1320 Procedure* target() { return target_reference_->AsProcedure(); } |
| 1265 Arguments* arguments() { return arguments_; } | 1321 Arguments* arguments() { return arguments_; } |
| 1266 | 1322 |
| 1267 private: | 1323 private: |
| 1268 DirectMethodInvocation() {} | 1324 DirectMethodInvocation() {} |
| 1269 | 1325 |
| 1270 Child<Expression> receiver_; | 1326 Child<Expression> receiver_; |
| 1271 Ref<Procedure> target_; | 1327 Ref<CanonicalName> target_reference_; |
| 1272 Child<Arguments> arguments_; | 1328 Child<Arguments> arguments_; |
| 1273 | 1329 |
| 1274 DISALLOW_COPY_AND_ASSIGN(DirectMethodInvocation); | 1330 DISALLOW_COPY_AND_ASSIGN(DirectMethodInvocation); |
| 1275 }; | 1331 }; |
| 1276 | 1332 |
| 1277 | 1333 |
| 1278 class StaticInvocation : public Expression { | 1334 class StaticInvocation : public Expression { |
| 1279 public: | 1335 public: |
| 1280 static StaticInvocation* ReadFrom(Reader* reader, bool is_const); | 1336 static StaticInvocation* ReadFrom(Reader* reader, bool is_const); |
| 1281 ~StaticInvocation(); | 1337 ~StaticInvocation(); |
| 1282 | 1338 |
| 1283 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); | 1339 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); |
| 1284 virtual void VisitChildren(Visitor* visitor); | 1340 virtual void VisitChildren(Visitor* visitor); |
| 1285 | 1341 |
| 1286 Procedure* procedure() { return procedure_; } | 1342 Procedure* procedure() { return procedure_reference_->AsProcedure(); } |
| 1287 Arguments* arguments() { return arguments_; } | 1343 Arguments* arguments() { return arguments_; } |
| 1288 bool is_const() { return is_const_; } | 1344 bool is_const() { return is_const_; } |
| 1289 | 1345 |
| 1290 private: | 1346 private: |
| 1291 StaticInvocation() {} | 1347 StaticInvocation() {} |
| 1292 | 1348 |
| 1293 Ref<Procedure> procedure_; | 1349 Ref<CanonicalName> procedure_reference_; |
| 1294 Child<Arguments> arguments_; | 1350 Child<Arguments> arguments_; |
| 1295 bool is_const_; | 1351 bool is_const_; |
| 1296 | 1352 |
| 1297 DISALLOW_COPY_AND_ASSIGN(StaticInvocation); | 1353 DISALLOW_COPY_AND_ASSIGN(StaticInvocation); |
| 1298 }; | 1354 }; |
| 1299 | 1355 |
| 1300 | 1356 |
| 1301 class ConstructorInvocation : public Expression { | 1357 class ConstructorInvocation : public Expression { |
| 1302 public: | 1358 public: |
| 1303 static ConstructorInvocation* ReadFrom(Reader* reader, bool is_const); | 1359 static ConstructorInvocation* ReadFrom(Reader* reader, bool is_const); |
| 1304 | 1360 |
| 1305 virtual ~ConstructorInvocation(); | 1361 virtual ~ConstructorInvocation(); |
| 1306 | 1362 |
| 1307 DEFINE_CASTING_OPERATIONS(ConstructorInvocation); | 1363 DEFINE_CASTING_OPERATIONS(ConstructorInvocation); |
| 1308 | 1364 |
| 1309 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); | 1365 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); |
| 1310 virtual void VisitChildren(Visitor* visitor); | 1366 virtual void VisitChildren(Visitor* visitor); |
| 1311 | 1367 |
| 1312 bool is_const() { return is_const_; } | 1368 bool is_const() { return is_const_; } |
| 1313 Constructor* target() { return target_; } | 1369 Constructor* target() { return target_reference_->AsConstructor(); } |
| 1314 Arguments* arguments() { return arguments_; } | 1370 Arguments* arguments() { return arguments_; } |
| 1315 | 1371 |
| 1316 private: | 1372 private: |
| 1317 ConstructorInvocation() {} | 1373 ConstructorInvocation() {} |
| 1318 | 1374 |
| 1319 bool is_const_; | 1375 bool is_const_; |
| 1320 Ref<Constructor> target_; | 1376 Ref<CanonicalName> target_reference_; |
| 1321 Child<Arguments> arguments_; | 1377 Child<Arguments> arguments_; |
| 1322 | 1378 |
| 1323 DISALLOW_COPY_AND_ASSIGN(ConstructorInvocation); | 1379 DISALLOW_COPY_AND_ASSIGN(ConstructorInvocation); |
| 1324 }; | 1380 }; |
| 1325 | 1381 |
| 1326 | 1382 |
| 1327 class Not : public Expression { | 1383 class Not : public Expression { |
| 1328 public: | 1384 public: |
| 1329 static Not* ReadFrom(Reader* reader); | 1385 static Not* ReadFrom(Reader* reader); |
| 1330 | 1386 |
| (...skipping 1125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2456 static Name* ReadFrom(Reader* reader); | 2512 static Name* ReadFrom(Reader* reader); |
| 2457 | 2513 |
| 2458 virtual ~Name(); | 2514 virtual ~Name(); |
| 2459 | 2515 |
| 2460 DEFINE_CASTING_OPERATIONS(Name); | 2516 DEFINE_CASTING_OPERATIONS(Name); |
| 2461 | 2517 |
| 2462 virtual void AcceptVisitor(Visitor* visitor); | 2518 virtual void AcceptVisitor(Visitor* visitor); |
| 2463 virtual void VisitChildren(Visitor* visitor); | 2519 virtual void VisitChildren(Visitor* visitor); |
| 2464 | 2520 |
| 2465 String* string() { return string_; } | 2521 String* string() { return string_; } |
| 2466 Library* library() { return library_; } | 2522 Library* library() { |
| 2523 if (library_reference_ == NULL) return NULL; | |
| 2524 return library_reference_->AsLibrary(); | |
| 2525 } | |
| 2467 | 2526 |
| 2468 private: | 2527 private: |
| 2469 Name(String* string, Library* library) | 2528 Name(String* string, CanonicalName* library_reference) |
| 2470 : string_(string), library_(library) {} // NOLINT | 2529 : string_(string), library_reference_(library_reference) {} // NOLINT |
| 2471 | 2530 |
| 2472 Ref<String> string_; | 2531 Ref<String> string_; |
| 2473 Ref<Library> library_; | 2532 Ref<CanonicalName> library_reference_; |
| 2474 | 2533 |
| 2475 DISALLOW_COPY_AND_ASSIGN(Name); | 2534 DISALLOW_COPY_AND_ASSIGN(Name); |
| 2476 }; | 2535 }; |
| 2477 | 2536 |
| 2478 | 2537 |
| 2479 class InferredValue : public Node { | 2538 class InferredValue : public Node { |
| 2480 public: | 2539 public: |
| 2481 static const uint8_t kNull = 1 << 0; | 2540 static const uint8_t kNull = 1 << 0; |
| 2482 static const uint8_t kInteger = 1 << 1; | 2541 static const uint8_t kInteger = 1 << 1; |
| 2483 static const uint8_t kDouble = 1 << 2; | 2542 static const uint8_t kDouble = 1 << 2; |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 2507 bool CanBeNull() { return (value_bits_ & kNull) != 0; } | 2566 bool CanBeNull() { return (value_bits_ & kNull) != 0; } |
| 2508 bool CanBeInteger() { return (value_bits_ & kInteger) != 0; } | 2567 bool CanBeInteger() { return (value_bits_ & kInteger) != 0; } |
| 2509 bool CanBeDouble() { return (value_bits_ & kDouble) != 0; } | 2568 bool CanBeDouble() { return (value_bits_ & kDouble) != 0; } |
| 2510 bool CanBeString() { return (value_bits_ & kString) != 0; } | 2569 bool CanBeString() { return (value_bits_ & kString) != 0; } |
| 2511 | 2570 |
| 2512 bool IsAlwaysNull() { return value_bits_ == kNull; } | 2571 bool IsAlwaysNull() { return value_bits_ == kNull; } |
| 2513 bool IsAlwaysInteger() { return value_bits_ == kInteger; } | 2572 bool IsAlwaysInteger() { return value_bits_ == kInteger; } |
| 2514 bool IsAlwaysDouble() { return value_bits_ == kDouble; } | 2573 bool IsAlwaysDouble() { return value_bits_ == kDouble; } |
| 2515 bool IsAlwaysString() { return value_bits_ == kString; } | 2574 bool IsAlwaysString() { return value_bits_ == kString; } |
| 2516 | 2575 |
| 2517 Class* klass() { return klass_; } | 2576 Class* klass() { return klass_reference_->AsClass(); } |
| 2518 BaseClassKind kind() { return kind_; } | 2577 BaseClassKind kind() { return kind_; } |
| 2519 uint8_t value_bits() { return value_bits_; } | 2578 uint8_t value_bits() { return value_bits_; } |
| 2520 | 2579 |
| 2521 private: | 2580 private: |
| 2522 InferredValue() {} | 2581 InferredValue() {} |
| 2523 | 2582 |
| 2524 Ref<Class> klass_; | 2583 Ref<CanonicalName> klass_reference_; |
| 2525 BaseClassKind kind_; | 2584 BaseClassKind kind_; |
| 2526 uint8_t value_bits_; | 2585 uint8_t value_bits_; |
| 2527 | 2586 |
| 2528 DISALLOW_COPY_AND_ASSIGN(InferredValue); | 2587 DISALLOW_COPY_AND_ASSIGN(InferredValue); |
| 2529 }; | 2588 }; |
| 2530 | 2589 |
| 2531 | 2590 |
| 2532 class DartType : public Node { | 2591 class DartType : public Node { |
| 2533 public: | 2592 public: |
| 2534 static DartType* ReadFrom(Reader* reader); | 2593 static DartType* ReadFrom(Reader* reader); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2600 | 2659 |
| 2601 DISALLOW_COPY_AND_ASSIGN(VoidType); | 2660 DISALLOW_COPY_AND_ASSIGN(VoidType); |
| 2602 }; | 2661 }; |
| 2603 | 2662 |
| 2604 | 2663 |
| 2605 class InterfaceType : public DartType { | 2664 class InterfaceType : public DartType { |
| 2606 public: | 2665 public: |
| 2607 static InterfaceType* ReadFrom(Reader* reader); | 2666 static InterfaceType* ReadFrom(Reader* reader); |
| 2608 static InterfaceType* ReadFrom(Reader* reader, bool _without_type_arguments_); | 2667 static InterfaceType* ReadFrom(Reader* reader, bool _without_type_arguments_); |
| 2609 | 2668 |
| 2610 explicit InterfaceType(Class* klass) : klass_(klass) {} | 2669 explicit InterfaceType(CanonicalName* klass_reference) |
| 2670 : klass_reference_(klass_reference) {} | |
| 2611 virtual ~InterfaceType(); | 2671 virtual ~InterfaceType(); |
| 2612 | 2672 |
| 2613 DEFINE_CASTING_OPERATIONS(InterfaceType); | 2673 DEFINE_CASTING_OPERATIONS(InterfaceType); |
| 2614 | 2674 |
| 2615 virtual void AcceptDartTypeVisitor(DartTypeVisitor* visitor); | 2675 virtual void AcceptDartTypeVisitor(DartTypeVisitor* visitor); |
| 2616 virtual void VisitChildren(Visitor* visitor); | 2676 virtual void VisitChildren(Visitor* visitor); |
| 2617 | 2677 |
| 2618 Class* klass() { return klass_; } | 2678 Class* klass() { return klass_reference_->AsClass(); } |
| 2619 List<DartType>& type_arguments() { return type_arguments_; } | 2679 List<DartType>& type_arguments() { return type_arguments_; } |
| 2620 | 2680 |
| 2621 private: | 2681 private: |
| 2622 InterfaceType() {} | 2682 InterfaceType() {} |
| 2623 | 2683 |
| 2624 Ref<Class> klass_; | 2684 Ref<CanonicalName> klass_reference_; |
| 2625 List<DartType> type_arguments_; | 2685 List<DartType> type_arguments_; |
| 2626 | 2686 |
| 2627 DISALLOW_COPY_AND_ASSIGN(InterfaceType); | 2687 DISALLOW_COPY_AND_ASSIGN(InterfaceType); |
| 2628 }; | 2688 }; |
| 2629 | 2689 |
| 2630 | 2690 |
| 2631 class FunctionType : public DartType { | 2691 class FunctionType : public DartType { |
| 2632 public: | 2692 public: |
| 2633 static FunctionType* ReadFrom(Reader* reader); | 2693 static FunctionType* ReadFrom(Reader* reader); |
| 2634 static FunctionType* ReadFrom(Reader* reader, bool _without_type_arguments_); | 2694 static FunctionType* ReadFrom(Reader* reader, bool _without_type_arguments_); |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2719 | 2779 |
| 2720 DEFINE_CASTING_OPERATIONS(Program); | 2780 DEFINE_CASTING_OPERATIONS(Program); |
| 2721 | 2781 |
| 2722 virtual void AcceptTreeVisitor(TreeVisitor* visitor); | 2782 virtual void AcceptTreeVisitor(TreeVisitor* visitor); |
| 2723 virtual void VisitChildren(Visitor* visitor); | 2783 virtual void VisitChildren(Visitor* visitor); |
| 2724 | 2784 |
| 2725 StringTable& string_table() { return string_table_; } | 2785 StringTable& string_table() { return string_table_; } |
| 2726 StringTable& source_uri_table() { return source_uri_table_; } | 2786 StringTable& source_uri_table() { return source_uri_table_; } |
| 2727 SourceTable& source_table() { return source_table_; } | 2787 SourceTable& source_table() { return source_table_; } |
| 2728 List<Library>& libraries() { return libraries_; } | 2788 List<Library>& libraries() { return libraries_; } |
| 2729 Procedure* main_method() { return main_method_; } | 2789 Procedure* main_method() { |
| 2790 if (main_method_reference_ == NULL) return NULL; | |
| 2791 return main_method_reference_->AsProcedure(); | |
| 2792 } | |
| 2793 CanonicalName* canonical_name_root() { return canonical_name_root_; } | |
| 2730 | 2794 |
| 2731 private: | 2795 private: |
| 2732 Program() {} | 2796 Program() {} |
| 2733 | 2797 |
| 2798 Child<CanonicalName> canonical_name_root_; | |
| 2734 List<Library> libraries_; | 2799 List<Library> libraries_; |
| 2735 Ref<Procedure> main_method_; | 2800 Ref<CanonicalName> main_method_reference_; |
| 2736 StringTable string_table_; | 2801 StringTable string_table_; |
| 2737 StringTable source_uri_table_; | 2802 StringTable source_uri_table_; |
| 2738 SourceTable source_table_; | 2803 SourceTable source_table_; |
| 2739 | 2804 |
| 2740 DISALLOW_COPY_AND_ASSIGN(Program); | 2805 DISALLOW_COPY_AND_ASSIGN(Program); |
| 2741 }; | 2806 }; |
| 2742 | 2807 |
| 2743 | 2808 |
| 2744 class Reference : public AllStatic { | 2809 class Reference : public AllStatic { |
| 2745 public: | 2810 public: |
| 2746 static Member* ReadMemberFrom(Reader* reader, bool allow_null = false); | 2811 static CanonicalName* ReadMemberFrom(Reader* reader, bool allow_null = false); |
| 2747 | 2812 |
| 2748 static Class* ReadClassFrom(Reader* reader, bool allow_null = false); | 2813 static CanonicalName* ReadClassFrom(Reader* reader, bool allow_null = false); |
| 2749 | 2814 |
| 2750 static String* ReadStringFrom(Reader* reader); | 2815 static String* ReadStringFrom(Reader* reader); |
| 2751 }; | 2816 }; |
| 2752 | 2817 |
| 2753 | 2818 |
| 2754 class ExpressionVisitor { | 2819 class ExpressionVisitor { |
| 2755 public: | 2820 public: |
| 2756 virtual ~ExpressionVisitor() {} | 2821 virtual ~ExpressionVisitor() {} |
| 2757 | 2822 |
| 2758 virtual void VisitDefaultExpression(Expression* node) = 0; | 2823 virtual void VisitDefaultExpression(Expression* node) = 0; |
| (...skipping 405 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3164 | 3229 |
| 3165 kernel::Program* ReadPrecompiledKernelFromBuffer(const uint8_t* buffer, | 3230 kernel::Program* ReadPrecompiledKernelFromBuffer(const uint8_t* buffer, |
| 3166 intptr_t buffer_length); | 3231 intptr_t buffer_length); |
| 3167 | 3232 |
| 3168 | 3233 |
| 3169 | 3234 |
| 3170 } // namespace dart | 3235 } // namespace dart |
| 3171 | 3236 |
| 3172 #endif // !defined(DART_PRECOMPILED_RUNTIME) | 3237 #endif // !defined(DART_PRECOMPILED_RUNTIME) |
| 3173 #endif // RUNTIME_VM_KERNEL_H_ | 3238 #endif // RUNTIME_VM_KERNEL_H_ |
| OLD | NEW |