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 |