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

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

Issue 2860823002: Introduce classes for string and name indexes (Closed)
Patch Set: Created 3 years, 7 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 | « runtime/vm/bootstrap_nocore.cc ('k') | runtime/vm/kernel_binary.h » ('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 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 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 285
286 // The number of entries in the table. 286 // The number of entries in the table.
287 intptr_t size_; 287 intptr_t size_;
288 288
289 // An array of sources. 289 // An array of sources.
290 Source* sources_; 290 Source* sources_;
291 291
292 DISALLOW_COPY_AND_ASSIGN(SourceTable); 292 DISALLOW_COPY_AND_ASSIGN(SourceTable);
293 }; 293 };
294 294
295
296 class StringIndex {
297 public:
298 StringIndex() : value_(-1) {}
299 explicit StringIndex(int value) : value_(value) {}
300
301 operator int() const { return value_; }
302
303 private:
304 int value_;
305 };
306
307
308 class NameIndex {
309 public:
310 NameIndex() : value_(-1) {}
311 explicit NameIndex(int value) : value_(value) {}
312
313 operator int() const { return value_; }
314
315 private:
316 int value_;
317 };
318
319
295 // Forward declare all classes. 320 // Forward declare all classes.
296 #define DO(name) class name; 321 #define DO(name) class name;
297 KERNEL_ALL_NODES_DO(DO) 322 KERNEL_ALL_NODES_DO(DO)
298 KERNEL_VISITORS_DO(DO) 323 KERNEL_VISITORS_DO(DO)
299 #undef DO 324 #undef DO
300 325
301 326
302 #define DEFINE_CASTING_OPERATIONS(klass) \ 327 #define DEFINE_CASTING_OPERATIONS(klass) \
303 virtual bool Is##klass() { return true; } \ 328 virtual bool Is##klass() { return true; } \
304 \ 329 \
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 396
372 private: 397 private:
373 DISALLOW_COPY_AND_ASSIGN(TreeNode); 398 DISALLOW_COPY_AND_ASSIGN(TreeNode);
374 }; 399 };
375 400
376 401
377 class LinkedNode : public TreeNode { 402 class LinkedNode : public TreeNode {
378 public: 403 public:
379 virtual ~LinkedNode(); 404 virtual ~LinkedNode();
380 405
381 intptr_t canonical_name() { return canonical_name_; } 406 NameIndex canonical_name() { return canonical_name_; }
382 407
383 protected: 408 protected:
384 LinkedNode() {} 409 LinkedNode() {}
385 410
386 intptr_t canonical_name_; 411 NameIndex canonical_name_;
387 412
388 private: 413 private:
389 DISALLOW_COPY_AND_ASSIGN(LinkedNode); 414 DISALLOW_COPY_AND_ASSIGN(LinkedNode);
390 }; 415 };
391 416
392 417
393 class Library : public LinkedNode { 418 class Library : public LinkedNode {
394 public: 419 public:
395 Library* ReadFrom(Reader* reader); 420 Library* ReadFrom(Reader* reader);
396 421
397 virtual ~Library(); 422 virtual ~Library();
398 423
399 DEFINE_CASTING_OPERATIONS(Library); 424 DEFINE_CASTING_OPERATIONS(Library);
400 425
401 virtual void AcceptTreeVisitor(TreeVisitor* visitor); 426 virtual void AcceptTreeVisitor(TreeVisitor* visitor);
402 virtual void VisitChildren(Visitor* visitor); 427 virtual void VisitChildren(Visitor* visitor);
403 428
404 intptr_t import_uri() { return import_uri_index_; } 429 StringIndex import_uri() { return import_uri_index_; }
405 intptr_t source_uri_index() { return source_uri_index_; } 430 intptr_t source_uri_index() { return source_uri_index_; }
406 intptr_t name() { return name_index_; } 431 StringIndex name() { return name_index_; }
407 List<Typedef>& typedefs() { return typedefs_; } 432 List<Typedef>& typedefs() { return typedefs_; }
408 List<Class>& classes() { return classes_; } 433 List<Class>& classes() { return classes_; }
409 List<Field>& fields() { return fields_; } 434 List<Field>& fields() { return fields_; }
410 List<Procedure>& procedures() { return procedures_; } 435 List<Procedure>& procedures() { return procedures_; }
411 436
412 const uint8_t* kernel_data() { return kernel_data_; } 437 const uint8_t* kernel_data() { return kernel_data_; }
413 intptr_t kernel_data_size() { return kernel_data_size_; } 438 intptr_t kernel_data_size() { return kernel_data_size_; }
414 439
415 private: 440 private:
416 Library() : name_index_(-1), kernel_data_(NULL), kernel_data_size_(-1) {} 441 Library() : kernel_data_(NULL), kernel_data_size_(-1) {}
417 442
418 template <typename T> 443 template <typename T>
419 friend class List; 444 friend class List;
420 445
421 intptr_t name_index_; 446 StringIndex name_index_;
422 intptr_t import_uri_index_; 447 StringIndex import_uri_index_;
423 intptr_t source_uri_index_; 448 intptr_t source_uri_index_;
424 List<Typedef> typedefs_; 449 List<Typedef> typedefs_;
425 List<Class> classes_; 450 List<Class> classes_;
426 List<Field> fields_; 451 List<Field> fields_;
427 List<Procedure> procedures_; 452 List<Procedure> procedures_;
428 const uint8_t* kernel_data_; 453 const uint8_t* kernel_data_;
429 intptr_t kernel_data_size_; 454 intptr_t kernel_data_size_;
430 455
431 DISALLOW_COPY_AND_ASSIGN(Library); 456 DISALLOW_COPY_AND_ASSIGN(Library);
432 }; 457 };
433 458
434 459
435 class Typedef : public LinkedNode { 460 class Typedef : public LinkedNode {
436 public: 461 public:
437 Typedef* ReadFrom(Reader* reader); 462 Typedef* ReadFrom(Reader* reader);
438 463
439 virtual ~Typedef(); 464 virtual ~Typedef();
440 465
441 DEFINE_CASTING_OPERATIONS(Typedef); 466 DEFINE_CASTING_OPERATIONS(Typedef);
442 467
443 virtual void AcceptTreeVisitor(TreeVisitor* visitor); 468 virtual void AcceptTreeVisitor(TreeVisitor* visitor);
444 virtual void VisitChildren(Visitor* visitor); 469 virtual void VisitChildren(Visitor* visitor);
445 470
446 Library* parent() { return parent_; } 471 Library* parent() { return parent_; }
447 intptr_t name() { return name_index_; } 472 StringIndex name() { return name_index_; }
448 intptr_t source_uri_index() { return source_uri_index_; } 473 intptr_t source_uri_index() { return source_uri_index_; }
449 TokenPosition position() { return position_; } 474 TokenPosition position() { return position_; }
450 TypeParameterList& type_parameters() { return type_parameters_; } 475 TypeParameterList& type_parameters() { return type_parameters_; }
451 DartType* type() { return type_; } 476 DartType* type() { return type_; }
452 477
453 protected: 478 protected:
454 Typedef() : position_(TokenPosition::kNoSource) {} 479 Typedef() : position_(TokenPosition::kNoSource) {}
455 480
456 private: 481 private:
457 template <typename T> 482 template <typename T>
458 friend class List; 483 friend class List;
459 484
485 StringIndex name_index_;
460 Ref<Library> parent_; 486 Ref<Library> parent_;
461 intptr_t name_index_;
462 intptr_t source_uri_index_; 487 intptr_t source_uri_index_;
463 TokenPosition position_; 488 TokenPosition position_;
464 TypeParameterList type_parameters_; 489 TypeParameterList type_parameters_;
465 Child<DartType> type_; 490 Child<DartType> type_;
466 }; 491 };
467 492
468 493
469 class Class : public LinkedNode { 494 class Class : public LinkedNode {
470 public: 495 public:
471 Class* ReadFrom(Reader* reader); 496 Class* ReadFrom(Reader* reader);
472 497
473 virtual ~Class(); 498 virtual ~Class();
474 499
475 DEFINE_CASTING_OPERATIONS(Class); 500 DEFINE_CASTING_OPERATIONS(Class);
476 501
477 virtual void AcceptTreeVisitor(TreeVisitor* visitor); 502 virtual void AcceptTreeVisitor(TreeVisitor* visitor);
478 virtual void AcceptClassVisitor(ClassVisitor* visitor) = 0; 503 virtual void AcceptClassVisitor(ClassVisitor* visitor) = 0;
479 504
480 Library* parent() { return parent_; } 505 Library* parent() { return parent_; }
481 intptr_t name() { return name_index_; } 506 StringIndex name() { return name_index_; }
482 intptr_t source_uri_index() { return source_uri_index_; } 507 intptr_t source_uri_index() { return source_uri_index_; }
483 bool is_abstract() { return is_abstract_; } 508 bool is_abstract() { return is_abstract_; }
484 List<Expression>& annotations() { return annotations_; } 509 List<Expression>& annotations() { return annotations_; }
485 TokenPosition position() { return position_; } 510 TokenPosition position() { return position_; }
486 511
487 virtual List<TypeParameter>& type_parameters() = 0; 512 virtual List<TypeParameter>& type_parameters() = 0;
488 virtual List<InterfaceType>& implemented_classes() = 0; 513 virtual List<InterfaceType>& implemented_classes() = 0;
489 virtual List<Field>& fields() = 0; 514 virtual List<Field>& fields() = 0;
490 virtual List<Constructor>& constructors() = 0; 515 virtual List<Constructor>& constructors() = 0;
491 virtual List<Procedure>& procedures() = 0; 516 virtual List<Procedure>& procedures() = 0;
492 517
493 protected: 518 protected:
494 Class() : is_abstract_(false), position_(TokenPosition::kNoSource) {} 519 Class() : is_abstract_(false), position_(TokenPosition::kNoSource) {}
495 520
496 private: 521 private:
497 template <typename T> 522 template <typename T>
498 friend class List; 523 friend class List;
499 524
525 StringIndex name_index_;
500 Ref<Library> parent_; 526 Ref<Library> parent_;
501 intptr_t name_index_;
502 intptr_t source_uri_index_; 527 intptr_t source_uri_index_;
503 bool is_abstract_; 528 bool is_abstract_;
504 List<Expression> annotations_; 529 List<Expression> annotations_;
505 TokenPosition position_; 530 TokenPosition position_;
506 531
507 DISALLOW_COPY_AND_ASSIGN(Class); 532 DISALLOW_COPY_AND_ASSIGN(Class);
508 }; 533 };
509 534
510 535
511 class NormalClass : public Class { 536 class NormalClass : public Class {
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
789 public: 814 public:
790 static FieldInitializer* ReadFromImpl(Reader* reader); 815 static FieldInitializer* ReadFromImpl(Reader* reader);
791 816
792 virtual ~FieldInitializer(); 817 virtual ~FieldInitializer();
793 818
794 DEFINE_CASTING_OPERATIONS(FieldInitializer); 819 DEFINE_CASTING_OPERATIONS(FieldInitializer);
795 820
796 virtual void AcceptInitializerVisitor(InitializerVisitor* visitor); 821 virtual void AcceptInitializerVisitor(InitializerVisitor* visitor);
797 virtual void VisitChildren(Visitor* visitor); 822 virtual void VisitChildren(Visitor* visitor);
798 823
799 intptr_t field() { return field_reference_; } 824 NameIndex field() { return field_reference_; }
800 Expression* value() { return value_; } 825 Expression* value() { return value_; }
801 826
802 private: 827 private:
803 FieldInitializer() {} 828 FieldInitializer() {}
804 829
805 intptr_t field_reference_; // Field canonical name. 830 NameIndex field_reference_; // Field canonical name.
806 Child<Expression> value_; 831 Child<Expression> value_;
807 832
808 DISALLOW_COPY_AND_ASSIGN(FieldInitializer); 833 DISALLOW_COPY_AND_ASSIGN(FieldInitializer);
809 }; 834 };
810 835
811 836
812 class SuperInitializer : public Initializer { 837 class SuperInitializer : public Initializer {
813 public: 838 public:
814 static SuperInitializer* ReadFromImpl(Reader* reader); 839 static SuperInitializer* ReadFromImpl(Reader* reader);
815 840
816 virtual ~SuperInitializer(); 841 virtual ~SuperInitializer();
817 842
818 DEFINE_CASTING_OPERATIONS(SuperInitializer); 843 DEFINE_CASTING_OPERATIONS(SuperInitializer);
819 844
820 virtual void AcceptInitializerVisitor(InitializerVisitor* visitor); 845 virtual void AcceptInitializerVisitor(InitializerVisitor* visitor);
821 virtual void VisitChildren(Visitor* visitor); 846 virtual void VisitChildren(Visitor* visitor);
822 847
823 intptr_t target() { return target_reference_; } 848 NameIndex target() { return target_reference_; }
824 Arguments* arguments() { return arguments_; } 849 Arguments* arguments() { return arguments_; }
825 850
826 private: 851 private:
827 SuperInitializer() {} 852 SuperInitializer() {}
828 853
829 intptr_t target_reference_; // Constructor canonical name. 854 NameIndex target_reference_; // Constructor canonical name.
830 Child<Arguments> arguments_; 855 Child<Arguments> arguments_;
831 856
832 DISALLOW_COPY_AND_ASSIGN(SuperInitializer); 857 DISALLOW_COPY_AND_ASSIGN(SuperInitializer);
833 }; 858 };
834 859
835 860
836 class RedirectingInitializer : public Initializer { 861 class RedirectingInitializer : public Initializer {
837 public: 862 public:
838 static RedirectingInitializer* ReadFromImpl(Reader* reader); 863 static RedirectingInitializer* ReadFromImpl(Reader* reader);
839 864
840 virtual ~RedirectingInitializer(); 865 virtual ~RedirectingInitializer();
841 866
842 DEFINE_CASTING_OPERATIONS(RedirectingInitializer); 867 DEFINE_CASTING_OPERATIONS(RedirectingInitializer);
843 868
844 virtual void AcceptInitializerVisitor(InitializerVisitor* visitor); 869 virtual void AcceptInitializerVisitor(InitializerVisitor* visitor);
845 virtual void VisitChildren(Visitor* visitor); 870 virtual void VisitChildren(Visitor* visitor);
846 871
847 intptr_t target() { return target_reference_; } 872 NameIndex target() { return target_reference_; }
848 Arguments* arguments() { return arguments_; } 873 Arguments* arguments() { return arguments_; }
849 874
850 private: 875 private:
851 RedirectingInitializer() {} 876 RedirectingInitializer() {}
852 877
853 intptr_t target_reference_; // Constructor canonical name. 878 NameIndex target_reference_; // Constructor canonical name.
854 Child<Arguments> arguments_; 879 Child<Arguments> arguments_;
855 880
856 DISALLOW_COPY_AND_ASSIGN(RedirectingInitializer); 881 DISALLOW_COPY_AND_ASSIGN(RedirectingInitializer);
857 }; 882 };
858 883
859 884
860 class LocalInitializer : public Initializer { 885 class LocalInitializer : public Initializer {
861 public: 886 public:
862 static LocalInitializer* ReadFromImpl(Reader* reader); 887 static LocalInitializer* ReadFromImpl(Reader* reader);
863 888
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
1032 1057
1033 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); 1058 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor);
1034 virtual void VisitChildren(Visitor* visitor); 1059 virtual void VisitChildren(Visitor* visitor);
1035 1060
1036 Expression* receiver() { return receiver_; } 1061 Expression* receiver() { return receiver_; }
1037 Name* name() { return name_; } 1062 Name* name() { return name_; }
1038 1063
1039 private: 1064 private:
1040 PropertyGet() {} 1065 PropertyGet() {}
1041 1066
1067 NameIndex interface_target_reference_;
1042 Child<Expression> receiver_; 1068 Child<Expression> receiver_;
1043 Child<Name> name_; 1069 Child<Name> name_;
1044 intptr_t interface_target_reference_;
1045 1070
1046 DISALLOW_COPY_AND_ASSIGN(PropertyGet); 1071 DISALLOW_COPY_AND_ASSIGN(PropertyGet);
1047 }; 1072 };
1048 1073
1049 1074
1050 class PropertySet : public Expression { 1075 class PropertySet : public Expression {
1051 public: 1076 public:
1052 static PropertySet* ReadFrom(Reader* reader); 1077 static PropertySet* ReadFrom(Reader* reader);
1053 1078
1054 virtual ~PropertySet(); 1079 virtual ~PropertySet();
1055 1080
1056 DEFINE_CASTING_OPERATIONS(PropertySet); 1081 DEFINE_CASTING_OPERATIONS(PropertySet);
1057 1082
1058 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); 1083 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor);
1059 virtual void VisitChildren(Visitor* visitor); 1084 virtual void VisitChildren(Visitor* visitor);
1060 1085
1061 Expression* receiver() { return receiver_; } 1086 Expression* receiver() { return receiver_; }
1062 Name* name() { return name_; } 1087 Name* name() { return name_; }
1063 Expression* value() { return value_; } 1088 Expression* value() { return value_; }
1064 1089
1065 private: 1090 private:
1066 PropertySet() {} 1091 PropertySet() {}
1067 1092
1093 NameIndex interface_target_reference_;
1068 Child<Expression> receiver_; 1094 Child<Expression> receiver_;
1069 Child<Name> name_; 1095 Child<Name> name_;
1070 Child<Expression> value_; 1096 Child<Expression> value_;
1071 intptr_t interface_target_reference_;
1072 1097
1073 DISALLOW_COPY_AND_ASSIGN(PropertySet); 1098 DISALLOW_COPY_AND_ASSIGN(PropertySet);
1074 }; 1099 };
1075 1100
1076 1101
1077 class DirectPropertyGet : public Expression { 1102 class DirectPropertyGet : public Expression {
1078 public: 1103 public:
1079 static DirectPropertyGet* ReadFrom(Reader* reader); 1104 static DirectPropertyGet* ReadFrom(Reader* reader);
1080 1105
1081 virtual ~DirectPropertyGet(); 1106 virtual ~DirectPropertyGet();
1082 1107
1083 DEFINE_CASTING_OPERATIONS(DirectPropertyGet); 1108 DEFINE_CASTING_OPERATIONS(DirectPropertyGet);
1084 1109
1085 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); 1110 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor);
1086 virtual void VisitChildren(Visitor* visitor); 1111 virtual void VisitChildren(Visitor* visitor);
1087 1112
1088 Expression* receiver() { return receiver_; } 1113 Expression* receiver() { return receiver_; }
1089 intptr_t target() { return target_reference_; } 1114 NameIndex target() { return target_reference_; }
1090 1115
1091 private: 1116 private:
1092 DirectPropertyGet() {} 1117 DirectPropertyGet() {}
1093 1118
1119 NameIndex target_reference_; // Member canonical name.
1094 Child<Expression> receiver_; 1120 Child<Expression> receiver_;
1095 intptr_t target_reference_; // Member canonical name.
1096 1121
1097 DISALLOW_COPY_AND_ASSIGN(DirectPropertyGet); 1122 DISALLOW_COPY_AND_ASSIGN(DirectPropertyGet);
1098 }; 1123 };
1099 1124
1100 1125
1101 class DirectPropertySet : public Expression { 1126 class DirectPropertySet : public Expression {
1102 public: 1127 public:
1103 static DirectPropertySet* ReadFrom(Reader* reader); 1128 static DirectPropertySet* ReadFrom(Reader* reader);
1104 1129
1105 virtual ~DirectPropertySet(); 1130 virtual ~DirectPropertySet();
1106 1131
1107 DEFINE_CASTING_OPERATIONS(DirectPropertySet); 1132 DEFINE_CASTING_OPERATIONS(DirectPropertySet);
1108 1133
1109 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); 1134 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor);
1110 virtual void VisitChildren(Visitor* visitor); 1135 virtual void VisitChildren(Visitor* visitor);
1111 1136
1137 NameIndex target() { return target_reference_; }
1112 Expression* receiver() { return receiver_; } 1138 Expression* receiver() { return receiver_; }
1113 intptr_t target() { return target_reference_; }
1114 Expression* value() { return value_; } 1139 Expression* value() { return value_; }
1115 1140
1116 private: 1141 private:
1117 DirectPropertySet() {} 1142 DirectPropertySet() {}
1118 1143
1144 NameIndex target_reference_; // Member canonical name.
1119 Child<Expression> receiver_; 1145 Child<Expression> receiver_;
1120 intptr_t target_reference_; // Member canonical name.
1121 Child<Expression> value_; 1146 Child<Expression> value_;
1122 1147
1123 DISALLOW_COPY_AND_ASSIGN(DirectPropertySet); 1148 DISALLOW_COPY_AND_ASSIGN(DirectPropertySet);
1124 }; 1149 };
1125 1150
1126 1151
1127 class StaticGet : public Expression { 1152 class StaticGet : public Expression {
1128 public: 1153 public:
1129 explicit StaticGet(intptr_t target) : target_reference_(target) {} 1154 explicit StaticGet(NameIndex target) : target_reference_(target) {}
1130 1155
1131 static StaticGet* ReadFrom(Reader* reader); 1156 static StaticGet* ReadFrom(Reader* reader);
1132 1157
1133 virtual ~StaticGet(); 1158 virtual ~StaticGet();
1134 1159
1135 DEFINE_CASTING_OPERATIONS(StaticGet); 1160 DEFINE_CASTING_OPERATIONS(StaticGet);
1136 1161
1137 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); 1162 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor);
1138 virtual void VisitChildren(Visitor* visitor); 1163 virtual void VisitChildren(Visitor* visitor);
1139 1164
1140 intptr_t target() { return target_reference_; } 1165 NameIndex target() { return target_reference_; }
1141 1166
1142 private: 1167 private:
1143 StaticGet() {} 1168 StaticGet() {}
1144 1169
1145 intptr_t target_reference_; // Member canonical name. 1170 NameIndex target_reference_; // Member canonical name.
1146 1171
1147 DISALLOW_COPY_AND_ASSIGN(StaticGet); 1172 DISALLOW_COPY_AND_ASSIGN(StaticGet);
1148 }; 1173 };
1149 1174
1150 1175
1151 class StaticSet : public Expression { 1176 class StaticSet : public Expression {
1152 public: 1177 public:
1153 static StaticSet* ReadFrom(Reader* reader); 1178 static StaticSet* ReadFrom(Reader* reader);
1154 1179
1155 virtual ~StaticSet(); 1180 virtual ~StaticSet();
1156 1181
1157 DEFINE_CASTING_OPERATIONS(StaticSet); 1182 DEFINE_CASTING_OPERATIONS(StaticSet);
1158 1183
1159 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); 1184 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor);
1160 virtual void VisitChildren(Visitor* visitor); 1185 virtual void VisitChildren(Visitor* visitor);
1161 1186
1162 intptr_t target() { return target_reference_; } 1187 NameIndex target() { return target_reference_; }
1163 Expression* expression() { return expression_; } 1188 Expression* expression() { return expression_; }
1164 1189
1165 private: 1190 private:
1166 StaticSet() {} 1191 StaticSet() {}
1167 1192
1168 intptr_t target_reference_; // Member canonical name. 1193 NameIndex target_reference_; // Member canonical name.
1169 Child<Expression> expression_; 1194 Child<Expression> expression_;
1170 1195
1171 DISALLOW_COPY_AND_ASSIGN(StaticSet); 1196 DISALLOW_COPY_AND_ASSIGN(StaticSet);
1172 }; 1197 };
1173 1198
1174 1199
1175 class Arguments : public TreeNode { 1200 class Arguments : public TreeNode {
1176 public: 1201 public:
1177 static Arguments* ReadFrom(Reader* reader); 1202 static Arguments* ReadFrom(Reader* reader);
1178 1203
(...skipping 18 matching lines...) Expand all
1197 List<NamedExpression> named_; 1222 List<NamedExpression> named_;
1198 1223
1199 DISALLOW_COPY_AND_ASSIGN(Arguments); 1224 DISALLOW_COPY_AND_ASSIGN(Arguments);
1200 }; 1225 };
1201 1226
1202 1227
1203 class NamedExpression : public TreeNode { 1228 class NamedExpression : public TreeNode {
1204 public: 1229 public:
1205 static NamedExpression* ReadFrom(Reader* reader); 1230 static NamedExpression* ReadFrom(Reader* reader);
1206 1231
1207 NamedExpression(intptr_t name_index, Expression* expr) 1232 NamedExpression(StringIndex name_index, Expression* expr)
1208 : name_index_(name_index), expression_(expr) {} 1233 : name_index_(name_index), expression_(expr) {}
1209 virtual ~NamedExpression(); 1234 virtual ~NamedExpression();
1210 1235
1211 DEFINE_CASTING_OPERATIONS(NamedExpression); 1236 DEFINE_CASTING_OPERATIONS(NamedExpression);
1212 1237
1213 virtual void AcceptTreeVisitor(TreeVisitor* visitor); 1238 virtual void AcceptTreeVisitor(TreeVisitor* visitor);
1214 virtual void VisitChildren(Visitor* visitor); 1239 virtual void VisitChildren(Visitor* visitor);
1215 1240
1216 intptr_t name() { return name_index_; } 1241 StringIndex name() { return name_index_; }
1217 Expression* expression() { return expression_; } 1242 Expression* expression() { return expression_; }
1218 1243
1219 private: 1244 private:
1220 NamedExpression() {} 1245 NamedExpression() {}
1221 1246
1222 intptr_t name_index_; 1247 StringIndex name_index_;
1223 Child<Expression> expression_; 1248 Child<Expression> expression_;
1224 1249
1225 DISALLOW_COPY_AND_ASSIGN(NamedExpression); 1250 DISALLOW_COPY_AND_ASSIGN(NamedExpression);
1226 }; 1251 };
1227 1252
1228 1253
1229 class MethodInvocation : public Expression { 1254 class MethodInvocation : public Expression {
1230 public: 1255 public:
1231 static MethodInvocation* ReadFrom(Reader* reader); 1256 static MethodInvocation* ReadFrom(Reader* reader);
1232 1257
1233 virtual ~MethodInvocation(); 1258 virtual ~MethodInvocation();
1234 1259
1235 DEFINE_CASTING_OPERATIONS(MethodInvocation); 1260 DEFINE_CASTING_OPERATIONS(MethodInvocation);
1236 1261
1237 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); 1262 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor);
1238 virtual void VisitChildren(Visitor* visitor); 1263 virtual void VisitChildren(Visitor* visitor);
1239 1264
1240 Expression* receiver() { return receiver_; } 1265 Expression* receiver() { return receiver_; }
1241 Name* name() { return name_; } 1266 Name* name() { return name_; }
1242 Arguments* arguments() { return arguments_; } 1267 Arguments* arguments() { return arguments_; }
1243 1268
1244 private: 1269 private:
1245 MethodInvocation() {} 1270 MethodInvocation() {}
1246 1271
1272 NameIndex interface_target_reference_;
1247 Child<Expression> receiver_; 1273 Child<Expression> receiver_;
1248 Child<Name> name_; 1274 Child<Name> name_;
1249 Child<Arguments> arguments_; 1275 Child<Arguments> arguments_;
1250 intptr_t interface_target_reference_;
1251 1276
1252 DISALLOW_COPY_AND_ASSIGN(MethodInvocation); 1277 DISALLOW_COPY_AND_ASSIGN(MethodInvocation);
1253 }; 1278 };
1254 1279
1255 1280
1256 class DirectMethodInvocation : public Expression { 1281 class DirectMethodInvocation : public Expression {
1257 public: 1282 public:
1258 static DirectMethodInvocation* ReadFrom(Reader* reader); 1283 static DirectMethodInvocation* ReadFrom(Reader* reader);
1259 1284
1260 virtual ~DirectMethodInvocation(); 1285 virtual ~DirectMethodInvocation();
1261 1286
1262 DEFINE_CASTING_OPERATIONS(DirectMethodInvocation); 1287 DEFINE_CASTING_OPERATIONS(DirectMethodInvocation);
1263 1288
1264 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); 1289 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor);
1265 virtual void VisitChildren(Visitor* visitor); 1290 virtual void VisitChildren(Visitor* visitor);
1266 1291
1267 Expression* receiver() { return receiver_; } 1292 Expression* receiver() { return receiver_; }
1268 intptr_t target() { return target_reference_; } 1293 NameIndex target() { return target_reference_; }
1269 Arguments* arguments() { return arguments_; } 1294 Arguments* arguments() { return arguments_; }
1270 1295
1271 private: 1296 private:
1272 DirectMethodInvocation() {} 1297 DirectMethodInvocation() {}
1273 1298
1299 NameIndex target_reference_; // Procedure canonical name.
1274 Child<Expression> receiver_; 1300 Child<Expression> receiver_;
1275 intptr_t target_reference_; // Procedure canonical name.
1276 Child<Arguments> arguments_; 1301 Child<Arguments> arguments_;
1277 1302
1278 DISALLOW_COPY_AND_ASSIGN(DirectMethodInvocation); 1303 DISALLOW_COPY_AND_ASSIGN(DirectMethodInvocation);
1279 }; 1304 };
1280 1305
1281 1306
1282 class StaticInvocation : public Expression { 1307 class StaticInvocation : public Expression {
1283 public: 1308 public:
1284 static StaticInvocation* ReadFrom(Reader* reader, bool is_const); 1309 static StaticInvocation* ReadFrom(Reader* reader, bool is_const);
1285 ~StaticInvocation(); 1310 ~StaticInvocation();
1286 1311
1287 DEFINE_CASTING_OPERATIONS(StaticInvocation); 1312 DEFINE_CASTING_OPERATIONS(StaticInvocation);
1288 1313
1289 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); 1314 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor);
1290 virtual void VisitChildren(Visitor* visitor); 1315 virtual void VisitChildren(Visitor* visitor);
1291 1316
1292 intptr_t procedure() { return procedure_reference_; } 1317 NameIndex procedure() { return procedure_reference_; }
1293 Arguments* arguments() { return arguments_; } 1318 Arguments* arguments() { return arguments_; }
1294 bool is_const() { return is_const_; } 1319 bool is_const() { return is_const_; }
1295 1320
1296 private: 1321 private:
1297 StaticInvocation() {} 1322 StaticInvocation() {}
1298 1323
1299 intptr_t procedure_reference_; // Procedure canonical name. 1324 NameIndex procedure_reference_; // Procedure canonical name.
1325 bool is_const_;
1300 Child<Arguments> arguments_; 1326 Child<Arguments> arguments_;
1301 bool is_const_;
1302 1327
1303 DISALLOW_COPY_AND_ASSIGN(StaticInvocation); 1328 DISALLOW_COPY_AND_ASSIGN(StaticInvocation);
1304 }; 1329 };
1305 1330
1306 1331
1307 class ConstructorInvocation : public Expression { 1332 class ConstructorInvocation : public Expression {
1308 public: 1333 public:
1309 static ConstructorInvocation* ReadFrom(Reader* reader, bool is_const); 1334 static ConstructorInvocation* ReadFrom(Reader* reader, bool is_const);
1310 1335
1311 virtual ~ConstructorInvocation(); 1336 virtual ~ConstructorInvocation();
1312 1337
1313 DEFINE_CASTING_OPERATIONS(ConstructorInvocation); 1338 DEFINE_CASTING_OPERATIONS(ConstructorInvocation);
1314 1339
1315 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); 1340 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor);
1316 virtual void VisitChildren(Visitor* visitor); 1341 virtual void VisitChildren(Visitor* visitor);
1317 1342
1318 bool is_const() { return is_const_; } 1343 bool is_const() { return is_const_; }
1319 intptr_t target() { return target_reference_; } 1344 NameIndex target() { return target_reference_; }
1320 Arguments* arguments() { return arguments_; } 1345 Arguments* arguments() { return arguments_; }
1321 1346
1322 private: 1347 private:
1323 ConstructorInvocation() {} 1348 ConstructorInvocation() {}
1324 1349
1325 bool is_const_; 1350 bool is_const_;
1326 intptr_t target_reference_; // Constructor canonical name. 1351 NameIndex target_reference_; // Constructor canonical name.
1327 Child<Arguments> arguments_; 1352 Child<Arguments> arguments_;
1328 1353
1329 DISALLOW_COPY_AND_ASSIGN(ConstructorInvocation); 1354 DISALLOW_COPY_AND_ASSIGN(ConstructorInvocation);
1330 }; 1355 };
1331 1356
1332 1357
1333 class Not : public Expression { 1358 class Not : public Expression {
1334 public: 1359 public:
1335 static Not* ReadFrom(Reader* reader); 1360 static Not* ReadFrom(Reader* reader);
1336 1361
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
1485 virtual void VisitChildren(Visitor* visitor); 1510 virtual void VisitChildren(Visitor* visitor);
1486 }; 1511 };
1487 1512
1488 1513
1489 class StringLiteral : public BasicLiteral { 1514 class StringLiteral : public BasicLiteral {
1490 public: 1515 public:
1491 static StringLiteral* ReadFrom(Reader* reader); 1516 static StringLiteral* ReadFrom(Reader* reader);
1492 1517
1493 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); 1518 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor);
1494 1519
1495 explicit StringLiteral(intptr_t string_index) : value_index_(string_index) {} 1520 explicit StringLiteral(StringIndex string_index)
1521 : value_index_(string_index) {}
1496 virtual ~StringLiteral(); 1522 virtual ~StringLiteral();
1497 1523
1498 DEFINE_CASTING_OPERATIONS(StringLiteral); 1524 DEFINE_CASTING_OPERATIONS(StringLiteral);
1499 1525
1500 intptr_t value() { return value_index_; } 1526 StringIndex value() { return value_index_; }
1501 1527
1502 protected: 1528 protected:
1503 StringLiteral() {} 1529 StringLiteral() {}
1504 1530
1505 intptr_t value_index_; 1531 StringIndex value_index_;
1506 1532
1507 private: 1533 private:
1508 DISALLOW_COPY_AND_ASSIGN(StringLiteral); 1534 DISALLOW_COPY_AND_ASSIGN(StringLiteral);
1509 }; 1535 };
1510 1536
1511 1537
1512 class BigintLiteral : public StringLiteral { 1538 class BigintLiteral : public StringLiteral {
1513 public: 1539 public:
1514 static BigintLiteral* ReadFrom(Reader* reader); 1540 static BigintLiteral* ReadFrom(Reader* reader);
1515 1541
1516 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); 1542 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor);
1517 1543
1518 explicit BigintLiteral(intptr_t string_index) : StringLiteral(string_index) {} 1544 explicit BigintLiteral(StringIndex string_index)
1545 : StringLiteral(string_index) {}
1519 virtual ~BigintLiteral(); 1546 virtual ~BigintLiteral();
1520 1547
1521 DEFINE_CASTING_OPERATIONS(BigintLiteral); 1548 DEFINE_CASTING_OPERATIONS(BigintLiteral);
1522 1549
1523 private: 1550 private:
1524 BigintLiteral() {} 1551 BigintLiteral() {}
1525 1552
1526 DISALLOW_COPY_AND_ASSIGN(BigintLiteral); 1553 DISALLOW_COPY_AND_ASSIGN(BigintLiteral);
1527 }; 1554 };
1528 1555
(...skipping 23 matching lines...) Expand all
1552 class DoubleLiteral : public BasicLiteral { 1579 class DoubleLiteral : public BasicLiteral {
1553 public: 1580 public:
1554 static DoubleLiteral* ReadFrom(Reader* reader); 1581 static DoubleLiteral* ReadFrom(Reader* reader);
1555 1582
1556 virtual ~DoubleLiteral(); 1583 virtual ~DoubleLiteral();
1557 1584
1558 DEFINE_CASTING_OPERATIONS(DoubleLiteral); 1585 DEFINE_CASTING_OPERATIONS(DoubleLiteral);
1559 1586
1560 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); 1587 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor);
1561 1588
1562 intptr_t value() { return value_index_; } 1589 StringIndex value() { return value_index_; }
1563 1590
1564 private: 1591 private:
1565 DoubleLiteral() {} 1592 DoubleLiteral() {}
1566 1593
1567 intptr_t value_index_; 1594 StringIndex value_index_;
1568 1595
1569 DISALLOW_COPY_AND_ASSIGN(DoubleLiteral); 1596 DISALLOW_COPY_AND_ASSIGN(DoubleLiteral);
1570 }; 1597 };
1571 1598
1572 1599
1573 class BoolLiteral : public BasicLiteral { 1600 class BoolLiteral : public BasicLiteral {
1574 public: 1601 public:
1575 static BoolLiteral* ReadFrom(Reader* reader, bool value); 1602 static BoolLiteral* ReadFrom(Reader* reader, bool value);
1576 1603
1577 virtual ~BoolLiteral(); 1604 virtual ~BoolLiteral();
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1612 public: 1639 public:
1613 static SymbolLiteral* ReadFrom(Reader* reader); 1640 static SymbolLiteral* ReadFrom(Reader* reader);
1614 1641
1615 virtual ~SymbolLiteral(); 1642 virtual ~SymbolLiteral();
1616 1643
1617 DEFINE_CASTING_OPERATIONS(SymbolLiteral); 1644 DEFINE_CASTING_OPERATIONS(SymbolLiteral);
1618 1645
1619 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); 1646 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor);
1620 virtual void VisitChildren(Visitor* visitor); 1647 virtual void VisitChildren(Visitor* visitor);
1621 1648
1622 intptr_t value() { return value_index_; } 1649 StringIndex value() { return value_index_; }
1623 1650
1624 private: 1651 private:
1625 SymbolLiteral() {} 1652 SymbolLiteral() {}
1626 1653
1627 intptr_t value_index_; 1654 StringIndex value_index_;
1628 1655
1629 DISALLOW_COPY_AND_ASSIGN(SymbolLiteral); 1656 DISALLOW_COPY_AND_ASSIGN(SymbolLiteral);
1630 }; 1657 };
1631 1658
1632 1659
1633 class TypeLiteral : public Expression { 1660 class TypeLiteral : public Expression {
1634 public: 1661 public:
1635 static TypeLiteral* ReadFrom(Reader* reader); 1662 static TypeLiteral* ReadFrom(Reader* reader);
1636 1663
1637 virtual ~TypeLiteral(); 1664 virtual ~TypeLiteral();
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
1963 public: 1990 public:
1964 static ClosureCreation* ReadFrom(Reader* reader); 1991 static ClosureCreation* ReadFrom(Reader* reader);
1965 1992
1966 virtual ~ClosureCreation(); 1993 virtual ~ClosureCreation();
1967 1994
1968 DEFINE_CASTING_OPERATIONS(ClosureCreation); 1995 DEFINE_CASTING_OPERATIONS(ClosureCreation);
1969 1996
1970 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); 1997 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor);
1971 virtual void VisitChildren(Visitor* visitor); 1998 virtual void VisitChildren(Visitor* visitor);
1972 1999
1973 intptr_t top_level_function() { return top_level_function_reference_; } 2000 NameIndex top_level_function() { return top_level_function_reference_; }
1974 Expression* context_vector() { return context_vector_; } 2001 Expression* context_vector() { return context_vector_; }
1975 FunctionType* function_type() { return function_type_; } 2002 FunctionType* function_type() { return function_type_; }
1976 2003
1977 private: 2004 private:
1978 ClosureCreation() {} 2005 ClosureCreation() {}
1979 2006
1980 intptr_t top_level_function_reference_; // Procedure canonical name. 2007 NameIndex top_level_function_reference_; // Procedure canonical name.
1981 Child<Expression> context_vector_; 2008 Child<Expression> context_vector_;
1982 Child<FunctionType> function_type_; 2009 Child<FunctionType> function_type_;
1983 2010
1984 DISALLOW_COPY_AND_ASSIGN(ClosureCreation); 2011 DISALLOW_COPY_AND_ASSIGN(ClosureCreation);
1985 }; 2012 };
1986 2013
1987 2014
1988 class Statement : public TreeNode { 2015 class Statement : public TreeNode {
1989 public: 2016 public:
1990 static Statement* ReadFrom(Reader* reader); 2017 static Statement* ReadFrom(Reader* reader);
(...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after
2525 virtual ~VariableDeclaration(); 2552 virtual ~VariableDeclaration();
2526 2553
2527 DEFINE_CASTING_OPERATIONS(VariableDeclaration); 2554 DEFINE_CASTING_OPERATIONS(VariableDeclaration);
2528 2555
2529 virtual void AcceptStatementVisitor(StatementVisitor* visitor); 2556 virtual void AcceptStatementVisitor(StatementVisitor* visitor);
2530 virtual void VisitChildren(Visitor* visitor); 2557 virtual void VisitChildren(Visitor* visitor);
2531 2558
2532 bool IsConst() { return (flags_ & kFlagConst) == kFlagConst; } 2559 bool IsConst() { return (flags_ & kFlagConst) == kFlagConst; }
2533 bool IsFinal() { return (flags_ & kFlagFinal) == kFlagFinal; } 2560 bool IsFinal() { return (flags_ & kFlagFinal) == kFlagFinal; }
2534 2561
2535 intptr_t name() { return name_index_; } 2562 StringIndex name() { return name_index_; }
2536 DartType* type() { return type_; } 2563 DartType* type() { return type_; }
2537 Expression* initializer() { return initializer_; } 2564 Expression* initializer() { return initializer_; }
2538 TokenPosition equals_position() { return equals_position_; } 2565 TokenPosition equals_position() { return equals_position_; }
2539 TokenPosition end_position() { return end_position_; } 2566 TokenPosition end_position() { return end_position_; }
2540 void set_end_position(TokenPosition position) { end_position_ = position; } 2567 void set_end_position(TokenPosition position) { end_position_ = position; }
2541 2568
2542 private: 2569 private:
2543 VariableDeclaration() 2570 VariableDeclaration()
2544 : equals_position_(TokenPosition::kNoSourcePos), 2571 : equals_position_(TokenPosition::kNoSourcePos),
2545 end_position_(TokenPosition::kNoSource) {} 2572 end_position_(TokenPosition::kNoSource) {}
2546 2573
2547 template <typename T> 2574 template <typename T>
2548 friend class List; 2575 friend class List;
2549 2576
2577 StringIndex name_index_;
2550 word flags_; 2578 word flags_;
2551 intptr_t name_index_;
2552 Child<DartType> type_; 2579 Child<DartType> type_;
2553 Child<Expression> initializer_; 2580 Child<Expression> initializer_;
2554 TokenPosition equals_position_; 2581 TokenPosition equals_position_;
2555 TokenPosition end_position_; 2582 TokenPosition end_position_;
2556 2583
2557 DISALLOW_COPY_AND_ASSIGN(VariableDeclaration); 2584 DISALLOW_COPY_AND_ASSIGN(VariableDeclaration);
2558 }; 2585 };
2559 2586
2560 2587
2561 class FunctionDeclaration : public Statement { 2588 class FunctionDeclaration : public Statement {
(...skipping 24 matching lines...) Expand all
2586 public: 2613 public:
2587 static Name* ReadFrom(Reader* reader); 2614 static Name* ReadFrom(Reader* reader);
2588 2615
2589 virtual ~Name(); 2616 virtual ~Name();
2590 2617
2591 DEFINE_CASTING_OPERATIONS(Name); 2618 DEFINE_CASTING_OPERATIONS(Name);
2592 2619
2593 virtual void AcceptVisitor(Visitor* visitor); 2620 virtual void AcceptVisitor(Visitor* visitor);
2594 virtual void VisitChildren(Visitor* visitor); 2621 virtual void VisitChildren(Visitor* visitor);
2595 2622
2596 intptr_t string_index() { return string_index_; } 2623 StringIndex string_index() { return string_index_; }
2597 intptr_t library() { return library_reference_; } 2624 NameIndex library() { return library_reference_; }
2598 2625
2599 private: 2626 private:
2600 Name(intptr_t string_index, intptr_t library_reference) 2627 Name(intptr_t string_index, intptr_t library_reference)
2601 : string_index_(string_index), 2628 : string_index_(string_index),
2602 library_reference_(library_reference) {} // NOLINT 2629 library_reference_(library_reference) {} // NOLINT
2603 2630
2604 intptr_t string_index_; 2631 StringIndex string_index_;
2605 intptr_t library_reference_; // Library canonical name. 2632 NameIndex library_reference_; // Library canonical name.
2606 2633
2607 DISALLOW_COPY_AND_ASSIGN(Name); 2634 DISALLOW_COPY_AND_ASSIGN(Name);
2608 }; 2635 };
2609 2636
2610 2637
2611 class DartType : public Node { 2638 class DartType : public Node {
2612 public: 2639 public:
2613 static DartType* ReadFrom(Reader* reader); 2640 static DartType* ReadFrom(Reader* reader);
2614 2641
2615 virtual ~DartType(); 2642 virtual ~DartType();
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
2679 2706
2680 DISALLOW_COPY_AND_ASSIGN(VoidType); 2707 DISALLOW_COPY_AND_ASSIGN(VoidType);
2681 }; 2708 };
2682 2709
2683 2710
2684 class InterfaceType : public DartType { 2711 class InterfaceType : public DartType {
2685 public: 2712 public:
2686 static InterfaceType* ReadFrom(Reader* reader); 2713 static InterfaceType* ReadFrom(Reader* reader);
2687 static InterfaceType* ReadFrom(Reader* reader, bool _without_type_arguments_); 2714 static InterfaceType* ReadFrom(Reader* reader, bool _without_type_arguments_);
2688 2715
2689 explicit InterfaceType(intptr_t class_reference) 2716 explicit InterfaceType(NameIndex class_reference)
2690 : class_reference_(class_reference) {} 2717 : class_reference_(class_reference) {}
2691 virtual ~InterfaceType(); 2718 virtual ~InterfaceType();
2692 2719
2693 DEFINE_CASTING_OPERATIONS(InterfaceType); 2720 DEFINE_CASTING_OPERATIONS(InterfaceType);
2694 2721
2695 virtual void AcceptDartTypeVisitor(DartTypeVisitor* visitor); 2722 virtual void AcceptDartTypeVisitor(DartTypeVisitor* visitor);
2696 virtual void VisitChildren(Visitor* visitor); 2723 virtual void VisitChildren(Visitor* visitor);
2697 2724
2698 intptr_t klass() { return class_reference_; } 2725 NameIndex klass() { return class_reference_; }
2699 List<DartType>& type_arguments() { return type_arguments_; } 2726 List<DartType>& type_arguments() { return type_arguments_; }
2700 2727
2701 private: 2728 private:
2702 InterfaceType() {} 2729 InterfaceType() {}
2703 2730
2704 intptr_t class_reference_; // Class canonical name. 2731 NameIndex class_reference_; // Class canonical name.
2705 List<DartType> type_arguments_; 2732 List<DartType> type_arguments_;
2706 2733
2707 DISALLOW_COPY_AND_ASSIGN(InterfaceType); 2734 DISALLOW_COPY_AND_ASSIGN(InterfaceType);
2708 }; 2735 };
2709 2736
2710 2737
2711 class TypedefType : public DartType { 2738 class TypedefType : public DartType {
2712 public: 2739 public:
2713 static TypedefType* ReadFrom(Reader* reader); 2740 static TypedefType* ReadFrom(Reader* reader);
2714 2741
2715 explicit TypedefType(intptr_t class_reference) 2742 explicit TypedefType(NameIndex class_reference)
2716 : typedef_reference_(class_reference) {} 2743 : typedef_reference_(class_reference) {}
2717 virtual ~TypedefType(); 2744 virtual ~TypedefType();
2718 2745
2719 DEFINE_CASTING_OPERATIONS(TypedefType); 2746 DEFINE_CASTING_OPERATIONS(TypedefType);
2720 2747
2721 virtual void AcceptDartTypeVisitor(DartTypeVisitor* visitor); 2748 virtual void AcceptDartTypeVisitor(DartTypeVisitor* visitor);
2722 virtual void VisitChildren(Visitor* visitor); 2749 virtual void VisitChildren(Visitor* visitor);
2723 2750
2724 intptr_t typedef_reference() { return typedef_reference_; } 2751 NameIndex typedef_reference() { return typedef_reference_; }
2725 List<DartType>& type_arguments() { return type_arguments_; } 2752 List<DartType>& type_arguments() { return type_arguments_; }
2726 2753
2727 private: 2754 private:
2728 TypedefType() {} 2755 TypedefType() {}
2729 2756
2730 intptr_t typedef_reference_; // Typedef canonical name. 2757 NameIndex typedef_reference_; // Typedef canonical name.
2731 List<DartType> type_arguments_; 2758 List<DartType> type_arguments_;
2732 2759
2733 DISALLOW_COPY_AND_ASSIGN(TypedefType); 2760 DISALLOW_COPY_AND_ASSIGN(TypedefType);
2734 }; 2761 };
2735 2762
2736 2763
2737 class NamedParameter { 2764 class NamedParameter {
2738 public: 2765 public:
2739 static NamedParameter* ReadFrom(Reader* reader); 2766 static NamedParameter* ReadFrom(Reader* reader);
2740 2767
2741 NamedParameter(intptr_t name_index, DartType* type) 2768 NamedParameter(StringIndex name_index, DartType* type)
2742 : name_index_(name_index), type_(type) {} 2769 : name_index_(name_index), type_(type) {}
2743 2770
2744 intptr_t name() { return name_index_; } 2771 StringIndex name() { return name_index_; }
2745 DartType* type() { return type_; } 2772 DartType* type() { return type_; }
2746 2773
2747 private: 2774 private:
2748 NamedParameter() : name_index_(-1) {} 2775 NamedParameter() {}
2749 2776
2750 intptr_t name_index_; 2777 StringIndex name_index_;
2751 Child<DartType> type_; 2778 Child<DartType> type_;
2752 2779
2753 DISALLOW_COPY_AND_ASSIGN(NamedParameter); 2780 DISALLOW_COPY_AND_ASSIGN(NamedParameter);
2754 }; 2781 };
2755 2782
2756 2783
2757 class FunctionType : public DartType { 2784 class FunctionType : public DartType {
2758 public: 2785 public:
2759 static FunctionType* ReadFrom(Reader* reader); 2786 static FunctionType* ReadFrom(Reader* reader);
2760 static FunctionType* ReadFrom(Reader* reader, bool _without_type_arguments_); 2787 static FunctionType* ReadFrom(Reader* reader, bool _without_type_arguments_);
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
2829 public: 2856 public:
2830 TypeParameter* ReadFrom(Reader* reader); 2857 TypeParameter* ReadFrom(Reader* reader);
2831 2858
2832 virtual ~TypeParameter(); 2859 virtual ~TypeParameter();
2833 2860
2834 DEFINE_CASTING_OPERATIONS(TypeParameter); 2861 DEFINE_CASTING_OPERATIONS(TypeParameter);
2835 2862
2836 virtual void AcceptTreeVisitor(TreeVisitor* visitor); 2863 virtual void AcceptTreeVisitor(TreeVisitor* visitor);
2837 virtual void VisitChildren(Visitor* visitor); 2864 virtual void VisitChildren(Visitor* visitor);
2838 2865
2839 intptr_t name() { return name_index_; } 2866 StringIndex name() { return name_index_; }
2840 DartType* bound() { return bound_; } 2867 DartType* bound() { return bound_; }
2841 2868
2842 private: 2869 private:
2843 TypeParameter() {} 2870 TypeParameter() {}
2844 2871
2845 template <typename T> 2872 template <typename T>
2846 friend class List; 2873 friend class List;
2847 friend class TypeParameterList; 2874 friend class TypeParameterList;
2848 2875
2849 intptr_t name_index_; 2876 StringIndex name_index_;
2850 Child<DartType> bound_; 2877 Child<DartType> bound_;
2851 2878
2852 DISALLOW_COPY_AND_ASSIGN(TypeParameter); 2879 DISALLOW_COPY_AND_ASSIGN(TypeParameter);
2853 }; 2880 };
2854 2881
2855 2882
2856 class Program : public TreeNode { 2883 class Program : public TreeNode {
2857 public: 2884 public:
2858 static Program* ReadFrom(Reader* reader); 2885 static Program* ReadFrom(Reader* reader);
2859 2886
2860 virtual ~Program(); 2887 virtual ~Program();
2861 2888
2862 DEFINE_CASTING_OPERATIONS(Program); 2889 DEFINE_CASTING_OPERATIONS(Program);
2863 2890
2864 virtual void AcceptTreeVisitor(TreeVisitor* visitor); 2891 virtual void AcceptTreeVisitor(TreeVisitor* visitor);
2865 virtual void VisitChildren(Visitor* visitor); 2892 virtual void VisitChildren(Visitor* visitor);
2866 2893
2867 SourceTable& source_table() { return source_table_; } 2894 SourceTable& source_table() { return source_table_; }
2868 List<Library>& libraries() { return libraries_; } 2895 List<Library>& libraries() { return libraries_; }
2869 intptr_t main_method() { return main_method_reference_; } 2896 NameIndex main_method() { return main_method_reference_; }
2870 MallocGrowableArray<MallocGrowableArray<intptr_t>*> valid_token_positions; 2897 MallocGrowableArray<MallocGrowableArray<intptr_t>*> valid_token_positions;
2871 MallocGrowableArray<MallocGrowableArray<intptr_t>*> yield_token_positions; 2898 MallocGrowableArray<MallocGrowableArray<intptr_t>*> yield_token_positions;
2872 intptr_t string_table_offset() { return string_table_offset_; } 2899 intptr_t string_table_offset() { return string_table_offset_; }
2873 intptr_t name_table_offset() { return name_table_offset_; } 2900 intptr_t name_table_offset() { return name_table_offset_; }
2874 2901
2875 private: 2902 private:
2876 Program() {} 2903 Program() {}
2877 2904
2905 NameIndex main_method_reference_; // Procedure.
2878 List<Library> libraries_; 2906 List<Library> libraries_;
2879 intptr_t main_method_reference_; // Procedure.
2880 SourceTable source_table_; 2907 SourceTable source_table_;
2881 2908
2882 // The offset from the start of the binary to the start of the string table. 2909 // The offset from the start of the binary to the start of the string table.
2883 intptr_t string_table_offset_; 2910 intptr_t string_table_offset_;
2884 2911
2885 // The offset from the start of the binary to the canonical name table. 2912 // The offset from the start of the binary to the canonical name table.
2886 intptr_t name_table_offset_; 2913 intptr_t name_table_offset_;
2887 2914
2888 DISALLOW_COPY_AND_ASSIGN(Program); 2915 DISALLOW_COPY_AND_ASSIGN(Program);
2889 }; 2916 };
2890 2917
2891 2918
2892 class Reference : public AllStatic { 2919 class Reference : public AllStatic {
2893 public: 2920 public:
2894 // Read canonical name references. 2921 // Read canonical name references.
2895 static intptr_t ReadMemberFrom(Reader* reader, bool allow_null = false); 2922 static NameIndex ReadMemberFrom(Reader* reader, bool allow_null = false);
2896 static intptr_t ReadClassFrom(Reader* reader, bool allow_null = false); 2923 static NameIndex ReadClassFrom(Reader* reader, bool allow_null = false);
2897 static intptr_t ReadTypedefFrom(Reader* reader); 2924 static NameIndex ReadTypedefFrom(Reader* reader);
2898 }; 2925 };
2899 2926
2900 2927
2901 class ExpressionVisitor { 2928 class ExpressionVisitor {
2902 public: 2929 public:
2903 virtual ~ExpressionVisitor() {} 2930 virtual ~ExpressionVisitor() {}
2904 2931
2905 virtual void VisitDefaultExpression(Expression* node) = 0; 2932 virtual void VisitDefaultExpression(Expression* node) = 0;
2906 virtual void VisitDefaultBasicLiteral(BasicLiteral* node) { 2933 virtual void VisitDefaultBasicLiteral(BasicLiteral* node) {
2907 VisitDefaultExpression(node); 2934 VisitDefaultExpression(node);
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after
3289 } // namespace kernel 3316 } // namespace kernel
3290 3317
3291 kernel::Program* ReadPrecompiledKernelFromBuffer(const uint8_t* buffer, 3318 kernel::Program* ReadPrecompiledKernelFromBuffer(const uint8_t* buffer,
3292 intptr_t buffer_length); 3319 intptr_t buffer_length);
3293 3320
3294 3321
3295 } // namespace dart 3322 } // namespace dart
3296 3323
3297 #endif // !defined(DART_PRECOMPILED_RUNTIME) 3324 #endif // !defined(DART_PRECOMPILED_RUNTIME)
3298 #endif // RUNTIME_VM_KERNEL_H_ 3325 #endif // RUNTIME_VM_KERNEL_H_
OLDNEW
« no previous file with comments | « runtime/vm/bootstrap_nocore.cc ('k') | runtime/vm/kernel_binary.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698