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 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
236 DISALLOW_COPY_AND_ASSIGN(List); | 236 DISALLOW_COPY_AND_ASSIGN(List); |
237 }; | 237 }; |
238 | 238 |
239 | 239 |
240 class TypeParameterList : public List<TypeParameter> { | 240 class TypeParameterList : public List<TypeParameter> { |
241 public: | 241 public: |
242 void ReadFrom(Reader* reader); | 242 void ReadFrom(Reader* reader); |
243 }; | 243 }; |
244 | 244 |
245 | 245 |
246 template <typename A, typename B> | |
247 class Tuple { | |
248 public: | |
249 static Tuple<A, B>* ReadFrom(Reader* reader); | |
250 | |
251 Tuple(A* a, B* b) : first_(a), second_(b) {} | |
252 | |
253 A* first() { return first_; } | |
254 B* second() { return second_; } | |
255 | |
256 private: | |
257 Tuple() {} | |
258 | |
259 Ref<A> first_; | |
260 Child<B> second_; | |
261 | |
262 DISALLOW_COPY_AND_ASSIGN(Tuple); | |
263 }; | |
264 | |
265 | |
266 class String { | |
267 public: | |
268 // Read a string reference, which is an index into the string table. | |
269 static String* ReadFrom(Reader* reader); | |
270 | |
271 // Read a string implementation given its size. | |
272 static String* ReadRaw(Reader* reader, intptr_t size); | |
273 | |
274 String(intptr_t offset, int size) : offset_(offset), size_(size) {} | |
275 | |
276 intptr_t offset() { return offset_; } | |
277 int size() { return size_; } | |
278 | |
279 bool is_empty() { return size_ == 0; } | |
280 | |
281 private: | |
282 intptr_t offset_; | |
283 int size_; | |
284 | |
285 DISALLOW_COPY_AND_ASSIGN(String); | |
286 }; | |
287 | |
288 | |
289 class StringTable { | |
290 public: | |
291 void ReadFrom(Reader* reader); | |
292 | |
293 List<String>& strings() { return strings_; } | |
294 | |
295 private: | |
296 StringTable() {} | |
297 | |
298 friend class Program; | |
299 | |
300 List<String> strings_; | |
301 | |
302 DISALLOW_COPY_AND_ASSIGN(StringTable); | |
303 }; | |
304 | |
305 | |
306 class Source { | 246 class Source { |
307 public: | 247 public: |
308 ~Source(); | 248 ~Source(); |
309 | 249 |
310 private: | 250 private: |
311 uint8_t* uri_; // UTF-8 encoded. | 251 uint8_t* uri_; // UTF-8 encoded. |
312 intptr_t uri_size_; // In bytes. | 252 intptr_t uri_size_; // In bytes. |
313 uint8_t* source_code_; // UTF-8 encoded. | 253 uint8_t* source_code_; // UTF-8 encoded. |
314 intptr_t source_code_size_; // In bytes. | 254 intptr_t source_code_size_; // In bytes. |
315 intptr_t* line_starts_; | 255 intptr_t* line_starts_; |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
383 class Field; | 323 class Field; |
384 class Library; | 324 class Library; |
385 class LinkedNode; | 325 class LinkedNode; |
386 class Member; | 326 class Member; |
387 class Procedure; | 327 class Procedure; |
388 | 328 |
389 class CanonicalName { | 329 class CanonicalName { |
390 public: | 330 public: |
391 ~CanonicalName(); | 331 ~CanonicalName(); |
392 | 332 |
393 String* name() { return name_; } | 333 intptr_t name() { return name_index_; } |
394 CanonicalName* parent() { return parent_; } | 334 CanonicalName* parent() { return parent_; } |
395 bool is_referenced() { return is_referenced_; } | 335 bool is_referenced() { return is_referenced_; } |
396 void set_referenced(bool referenced) { is_referenced_ = referenced; } | 336 void set_referenced(bool referenced) { is_referenced_ = referenced; } |
397 | 337 |
398 CanonicalName* AddChild(String* string); | 338 CanonicalName* AddChild(intptr_t string_index); |
399 | 339 |
400 static CanonicalName* NewRoot(); | 340 static CanonicalName* NewRoot(); |
401 | 341 |
402 private: | 342 private: |
403 CanonicalName(); | 343 CanonicalName(); |
404 | 344 |
405 CanonicalName* parent_; | 345 CanonicalName* parent_; |
406 String* name_; | 346 intptr_t name_index_; |
407 MallocGrowableArray<CanonicalName*> children_; | 347 MallocGrowableArray<CanonicalName*> children_; |
408 bool is_referenced_; | 348 bool is_referenced_; |
409 | 349 |
410 DISALLOW_COPY_AND_ASSIGN(CanonicalName); | 350 DISALLOW_COPY_AND_ASSIGN(CanonicalName); |
411 }; | 351 }; |
412 | 352 |
413 | 353 |
414 class Node { | 354 class Node { |
415 public: | 355 public: |
416 virtual ~Node(); | 356 virtual ~Node(); |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
481 public: | 421 public: |
482 Library* ReadFrom(Reader* reader); | 422 Library* ReadFrom(Reader* reader); |
483 | 423 |
484 virtual ~Library(); | 424 virtual ~Library(); |
485 | 425 |
486 DEFINE_CASTING_OPERATIONS(Library); | 426 DEFINE_CASTING_OPERATIONS(Library); |
487 | 427 |
488 virtual void AcceptTreeVisitor(TreeVisitor* visitor); | 428 virtual void AcceptTreeVisitor(TreeVisitor* visitor); |
489 virtual void VisitChildren(Visitor* visitor); | 429 virtual void VisitChildren(Visitor* visitor); |
490 | 430 |
491 String* import_uri() { return import_uri_; } | 431 intptr_t import_uri() { return import_uri_index_; } |
492 intptr_t source_uri_index() { return source_uri_index_; } | 432 intptr_t source_uri_index() { return source_uri_index_; } |
493 String* name() { return name_; } | 433 intptr_t name() { return name_index_; } |
494 List<Typedef>& typedefs() { return typedefs_; } | 434 List<Typedef>& typedefs() { return typedefs_; } |
495 List<Class>& classes() { return classes_; } | 435 List<Class>& classes() { return classes_; } |
496 List<Field>& fields() { return fields_; } | 436 List<Field>& fields() { return fields_; } |
497 List<Procedure>& procedures() { return procedures_; } | 437 List<Procedure>& procedures() { return procedures_; } |
498 | 438 |
499 const uint8_t* kernel_data() { return kernel_data_; } | 439 const uint8_t* kernel_data() { return kernel_data_; } |
500 intptr_t kernel_data_size() { return kernel_data_size_; } | 440 intptr_t kernel_data_size() { return kernel_data_size_; } |
501 | 441 |
502 private: | 442 private: |
503 Library() : name_(NULL), kernel_data_(NULL), kernel_data_size_(-1) {} | 443 Library() : name_index_(-1), kernel_data_(NULL), kernel_data_size_(-1) {} |
504 | 444 |
505 template <typename T> | 445 template <typename T> |
506 friend class List; | 446 friend class List; |
507 | 447 |
508 Ref<String> name_; | 448 intptr_t name_index_; |
509 Ref<String> import_uri_; | 449 intptr_t import_uri_index_; |
510 intptr_t source_uri_index_; | 450 intptr_t source_uri_index_; |
511 List<Typedef> typedefs_; | 451 List<Typedef> typedefs_; |
512 List<Class> classes_; | 452 List<Class> classes_; |
513 List<Field> fields_; | 453 List<Field> fields_; |
514 List<Procedure> procedures_; | 454 List<Procedure> procedures_; |
515 const uint8_t* kernel_data_; | 455 const uint8_t* kernel_data_; |
516 intptr_t kernel_data_size_; | 456 intptr_t kernel_data_size_; |
517 | 457 |
518 DISALLOW_COPY_AND_ASSIGN(Library); | 458 DISALLOW_COPY_AND_ASSIGN(Library); |
519 }; | 459 }; |
520 | 460 |
521 | 461 |
522 class Typedef : public LinkedNode { | 462 class Typedef : public LinkedNode { |
523 public: | 463 public: |
524 Typedef* ReadFrom(Reader* reader); | 464 Typedef* ReadFrom(Reader* reader); |
525 | 465 |
526 virtual ~Typedef(); | 466 virtual ~Typedef(); |
527 | 467 |
528 DEFINE_CASTING_OPERATIONS(Typedef); | 468 DEFINE_CASTING_OPERATIONS(Typedef); |
529 | 469 |
530 virtual void AcceptTreeVisitor(TreeVisitor* visitor); | 470 virtual void AcceptTreeVisitor(TreeVisitor* visitor); |
531 virtual void VisitChildren(Visitor* visitor); | 471 virtual void VisitChildren(Visitor* visitor); |
532 | 472 |
533 Library* parent() { return parent_; } | 473 Library* parent() { return parent_; } |
534 String* name() { return name_; } | 474 intptr_t name() { return name_index_; } |
535 intptr_t source_uri_index() { return source_uri_index_; } | 475 intptr_t source_uri_index() { return source_uri_index_; } |
536 TokenPosition position() { return position_; } | 476 TokenPosition position() { return position_; } |
537 TypeParameterList& type_parameters() { return type_parameters_; } | 477 TypeParameterList& type_parameters() { return type_parameters_; } |
538 DartType* type() { return type_; } | 478 DartType* type() { return type_; } |
539 | 479 |
540 protected: | 480 protected: |
541 Typedef() : position_(TokenPosition::kNoSource) {} | 481 Typedef() : position_(TokenPosition::kNoSource) {} |
542 | 482 |
543 private: | 483 private: |
544 template <typename T> | 484 template <typename T> |
545 friend class List; | 485 friend class List; |
546 | 486 |
547 Ref<Library> parent_; | 487 Ref<Library> parent_; |
548 Ref<String> name_; | 488 intptr_t name_index_; |
549 intptr_t source_uri_index_; | 489 intptr_t source_uri_index_; |
550 TokenPosition position_; | 490 TokenPosition position_; |
551 TypeParameterList type_parameters_; | 491 TypeParameterList type_parameters_; |
552 Child<DartType> type_; | 492 Child<DartType> type_; |
553 }; | 493 }; |
554 | 494 |
555 | 495 |
556 class Class : public LinkedNode { | 496 class Class : public LinkedNode { |
557 public: | 497 public: |
558 Class* ReadFrom(Reader* reader); | 498 Class* ReadFrom(Reader* reader); |
559 | 499 |
560 virtual ~Class(); | 500 virtual ~Class(); |
561 | 501 |
562 DEFINE_CASTING_OPERATIONS(Class); | 502 DEFINE_CASTING_OPERATIONS(Class); |
563 | 503 |
564 virtual void AcceptTreeVisitor(TreeVisitor* visitor); | 504 virtual void AcceptTreeVisitor(TreeVisitor* visitor); |
565 virtual void AcceptClassVisitor(ClassVisitor* visitor) = 0; | 505 virtual void AcceptClassVisitor(ClassVisitor* visitor) = 0; |
566 | 506 |
567 Library* parent() { return parent_; } | 507 Library* parent() { return parent_; } |
568 String* name() { return name_; } | 508 intptr_t name() { return name_index_; } |
569 intptr_t source_uri_index() { return source_uri_index_; } | 509 intptr_t source_uri_index() { return source_uri_index_; } |
570 bool is_abstract() { return is_abstract_; } | 510 bool is_abstract() { return is_abstract_; } |
571 List<Expression>& annotations() { return annotations_; } | 511 List<Expression>& annotations() { return annotations_; } |
572 TokenPosition position() { return position_; } | 512 TokenPosition position() { return position_; } |
573 | 513 |
574 virtual List<TypeParameter>& type_parameters() = 0; | 514 virtual List<TypeParameter>& type_parameters() = 0; |
575 virtual List<InterfaceType>& implemented_classes() = 0; | 515 virtual List<InterfaceType>& implemented_classes() = 0; |
576 virtual List<Field>& fields() = 0; | 516 virtual List<Field>& fields() = 0; |
577 virtual List<Constructor>& constructors() = 0; | 517 virtual List<Constructor>& constructors() = 0; |
578 virtual List<Procedure>& procedures() = 0; | 518 virtual List<Procedure>& procedures() = 0; |
579 | 519 |
580 protected: | 520 protected: |
581 Class() : is_abstract_(false), position_(TokenPosition::kNoSource) {} | 521 Class() : is_abstract_(false), position_(TokenPosition::kNoSource) {} |
582 | 522 |
583 private: | 523 private: |
584 template <typename T> | 524 template <typename T> |
585 friend class List; | 525 friend class List; |
586 | 526 |
587 Ref<Library> parent_; | 527 Ref<Library> parent_; |
588 Ref<String> name_; | 528 intptr_t name_index_; |
589 intptr_t source_uri_index_; | 529 intptr_t source_uri_index_; |
590 bool is_abstract_; | 530 bool is_abstract_; |
591 List<Expression> annotations_; | 531 List<Expression> annotations_; |
592 TokenPosition position_; | 532 TokenPosition position_; |
593 | 533 |
594 DISALLOW_COPY_AND_ASSIGN(Class); | 534 DISALLOW_COPY_AND_ASSIGN(Class); |
595 }; | 535 }; |
596 | 536 |
597 | 537 |
598 class NormalClass : public Class { | 538 class NormalClass : public Class { |
(...skipping 685 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1284 List<NamedExpression> named_; | 1224 List<NamedExpression> named_; |
1285 | 1225 |
1286 DISALLOW_COPY_AND_ASSIGN(Arguments); | 1226 DISALLOW_COPY_AND_ASSIGN(Arguments); |
1287 }; | 1227 }; |
1288 | 1228 |
1289 | 1229 |
1290 class NamedExpression : public TreeNode { | 1230 class NamedExpression : public TreeNode { |
1291 public: | 1231 public: |
1292 static NamedExpression* ReadFrom(Reader* reader); | 1232 static NamedExpression* ReadFrom(Reader* reader); |
1293 | 1233 |
1294 NamedExpression(String* name, Expression* expr) | 1234 NamedExpression(intptr_t name_index, Expression* expr) |
1295 : name_(name), expression_(expr) {} | 1235 : name_index_(name_index), expression_(expr) {} |
1296 virtual ~NamedExpression(); | 1236 virtual ~NamedExpression(); |
1297 | 1237 |
1298 DEFINE_CASTING_OPERATIONS(NamedExpression); | 1238 DEFINE_CASTING_OPERATIONS(NamedExpression); |
1299 | 1239 |
1300 virtual void AcceptTreeVisitor(TreeVisitor* visitor); | 1240 virtual void AcceptTreeVisitor(TreeVisitor* visitor); |
1301 virtual void VisitChildren(Visitor* visitor); | 1241 virtual void VisitChildren(Visitor* visitor); |
1302 | 1242 |
1303 String* name() { return name_; } | 1243 intptr_t name() { return name_index_; } |
1304 Expression* expression() { return expression_; } | 1244 Expression* expression() { return expression_; } |
1305 | 1245 |
1306 private: | 1246 private: |
1307 NamedExpression() {} | 1247 NamedExpression() {} |
1308 | 1248 |
1309 Ref<String> name_; | 1249 intptr_t name_index_; |
1310 Child<Expression> expression_; | 1250 Child<Expression> expression_; |
1311 | 1251 |
1312 DISALLOW_COPY_AND_ASSIGN(NamedExpression); | 1252 DISALLOW_COPY_AND_ASSIGN(NamedExpression); |
1313 }; | 1253 }; |
1314 | 1254 |
1315 | 1255 |
1316 class MethodInvocation : public Expression { | 1256 class MethodInvocation : public Expression { |
1317 public: | 1257 public: |
1318 static MethodInvocation* ReadFrom(Reader* reader); | 1258 static MethodInvocation* ReadFrom(Reader* reader); |
1319 | 1259 |
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1572 virtual void VisitChildren(Visitor* visitor); | 1512 virtual void VisitChildren(Visitor* visitor); |
1573 }; | 1513 }; |
1574 | 1514 |
1575 | 1515 |
1576 class StringLiteral : public BasicLiteral { | 1516 class StringLiteral : public BasicLiteral { |
1577 public: | 1517 public: |
1578 static StringLiteral* ReadFrom(Reader* reader); | 1518 static StringLiteral* ReadFrom(Reader* reader); |
1579 | 1519 |
1580 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); | 1520 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); |
1581 | 1521 |
1582 explicit StringLiteral(String* string) : value_(string) {} | 1522 explicit StringLiteral(intptr_t string_index) : value_index_(string_index) {} |
1583 virtual ~StringLiteral(); | 1523 virtual ~StringLiteral(); |
1584 | 1524 |
1585 DEFINE_CASTING_OPERATIONS(StringLiteral); | 1525 DEFINE_CASTING_OPERATIONS(StringLiteral); |
1586 | 1526 |
1587 String* value() { return value_; } | 1527 intptr_t value() { return value_index_; } |
1588 | 1528 |
1589 protected: | 1529 protected: |
1590 StringLiteral() {} | 1530 StringLiteral() {} |
1591 | 1531 |
1592 Ref<String> value_; | 1532 intptr_t value_index_; |
1593 | 1533 |
1594 private: | 1534 private: |
1595 DISALLOW_COPY_AND_ASSIGN(StringLiteral); | 1535 DISALLOW_COPY_AND_ASSIGN(StringLiteral); |
1596 }; | 1536 }; |
1597 | 1537 |
1598 | 1538 |
1599 class BigintLiteral : public StringLiteral { | 1539 class BigintLiteral : public StringLiteral { |
1600 public: | 1540 public: |
1601 static BigintLiteral* ReadFrom(Reader* reader); | 1541 static BigintLiteral* ReadFrom(Reader* reader); |
1602 | 1542 |
1603 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); | 1543 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); |
1604 | 1544 |
1605 explicit BigintLiteral(String* string) : StringLiteral(string) {} | 1545 explicit BigintLiteral(intptr_t string_index) : StringLiteral(string_index) {} |
1606 virtual ~BigintLiteral(); | 1546 virtual ~BigintLiteral(); |
1607 | 1547 |
1608 DEFINE_CASTING_OPERATIONS(BigintLiteral); | 1548 DEFINE_CASTING_OPERATIONS(BigintLiteral); |
1609 | 1549 |
1610 private: | 1550 private: |
1611 BigintLiteral() {} | 1551 BigintLiteral() {} |
1612 | 1552 |
1613 DISALLOW_COPY_AND_ASSIGN(BigintLiteral); | 1553 DISALLOW_COPY_AND_ASSIGN(BigintLiteral); |
1614 }; | 1554 }; |
1615 | 1555 |
(...skipping 23 matching lines...) Expand all Loading... |
1639 class DoubleLiteral : public BasicLiteral { | 1579 class DoubleLiteral : public BasicLiteral { |
1640 public: | 1580 public: |
1641 static DoubleLiteral* ReadFrom(Reader* reader); | 1581 static DoubleLiteral* ReadFrom(Reader* reader); |
1642 | 1582 |
1643 virtual ~DoubleLiteral(); | 1583 virtual ~DoubleLiteral(); |
1644 | 1584 |
1645 DEFINE_CASTING_OPERATIONS(DoubleLiteral); | 1585 DEFINE_CASTING_OPERATIONS(DoubleLiteral); |
1646 | 1586 |
1647 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); | 1587 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); |
1648 | 1588 |
1649 String* value() { return value_; } | 1589 intptr_t value() { return value_index_; } |
1650 | 1590 |
1651 private: | 1591 private: |
1652 DoubleLiteral() {} | 1592 DoubleLiteral() {} |
1653 | 1593 |
1654 Ref<String> value_; | 1594 intptr_t value_index_; |
1655 | 1595 |
1656 DISALLOW_COPY_AND_ASSIGN(DoubleLiteral); | 1596 DISALLOW_COPY_AND_ASSIGN(DoubleLiteral); |
1657 }; | 1597 }; |
1658 | 1598 |
1659 | 1599 |
1660 class BoolLiteral : public BasicLiteral { | 1600 class BoolLiteral : public BasicLiteral { |
1661 public: | 1601 public: |
1662 static BoolLiteral* ReadFrom(Reader* reader, bool value); | 1602 static BoolLiteral* ReadFrom(Reader* reader, bool value); |
1663 | 1603 |
1664 virtual ~BoolLiteral(); | 1604 virtual ~BoolLiteral(); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1699 public: | 1639 public: |
1700 static SymbolLiteral* ReadFrom(Reader* reader); | 1640 static SymbolLiteral* ReadFrom(Reader* reader); |
1701 | 1641 |
1702 virtual ~SymbolLiteral(); | 1642 virtual ~SymbolLiteral(); |
1703 | 1643 |
1704 DEFINE_CASTING_OPERATIONS(SymbolLiteral); | 1644 DEFINE_CASTING_OPERATIONS(SymbolLiteral); |
1705 | 1645 |
1706 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); | 1646 virtual void AcceptExpressionVisitor(ExpressionVisitor* visitor); |
1707 virtual void VisitChildren(Visitor* visitor); | 1647 virtual void VisitChildren(Visitor* visitor); |
1708 | 1648 |
1709 String* value() { return value_; } | 1649 intptr_t value() { return value_index_; } |
1710 | 1650 |
1711 private: | 1651 private: |
1712 SymbolLiteral() {} | 1652 SymbolLiteral() {} |
1713 | 1653 |
1714 Ref<String> value_; | 1654 intptr_t value_index_; |
1715 | 1655 |
1716 DISALLOW_COPY_AND_ASSIGN(SymbolLiteral); | 1656 DISALLOW_COPY_AND_ASSIGN(SymbolLiteral); |
1717 }; | 1657 }; |
1718 | 1658 |
1719 | 1659 |
1720 class TypeLiteral : public Expression { | 1660 class TypeLiteral : public Expression { |
1721 public: | 1661 public: |
1722 static TypeLiteral* ReadFrom(Reader* reader); | 1662 static TypeLiteral* ReadFrom(Reader* reader); |
1723 | 1663 |
1724 virtual ~TypeLiteral(); | 1664 virtual ~TypeLiteral(); |
(...skipping 887 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2612 virtual ~VariableDeclaration(); | 2552 virtual ~VariableDeclaration(); |
2613 | 2553 |
2614 DEFINE_CASTING_OPERATIONS(VariableDeclaration); | 2554 DEFINE_CASTING_OPERATIONS(VariableDeclaration); |
2615 | 2555 |
2616 virtual void AcceptStatementVisitor(StatementVisitor* visitor); | 2556 virtual void AcceptStatementVisitor(StatementVisitor* visitor); |
2617 virtual void VisitChildren(Visitor* visitor); | 2557 virtual void VisitChildren(Visitor* visitor); |
2618 | 2558 |
2619 bool IsConst() { return (flags_ & kFlagConst) == kFlagConst; } | 2559 bool IsConst() { return (flags_ & kFlagConst) == kFlagConst; } |
2620 bool IsFinal() { return (flags_ & kFlagFinal) == kFlagFinal; } | 2560 bool IsFinal() { return (flags_ & kFlagFinal) == kFlagFinal; } |
2621 | 2561 |
2622 String* name() { return name_; } | 2562 intptr_t name() { return name_index_; } |
2623 DartType* type() { return type_; } | 2563 DartType* type() { return type_; } |
2624 Expression* initializer() { return initializer_; } | 2564 Expression* initializer() { return initializer_; } |
2625 TokenPosition equals_position() { return equals_position_; } | 2565 TokenPosition equals_position() { return equals_position_; } |
2626 TokenPosition end_position() { return end_position_; } | 2566 TokenPosition end_position() { return end_position_; } |
2627 void set_end_position(TokenPosition position) { end_position_ = position; } | 2567 void set_end_position(TokenPosition position) { end_position_ = position; } |
2628 | 2568 |
2629 private: | 2569 private: |
2630 VariableDeclaration() | 2570 VariableDeclaration() |
2631 : equals_position_(TokenPosition::kNoSourcePos), | 2571 : equals_position_(TokenPosition::kNoSourcePos), |
2632 end_position_(TokenPosition::kNoSource) {} | 2572 end_position_(TokenPosition::kNoSource) {} |
2633 | 2573 |
2634 template <typename T> | 2574 template <typename T> |
2635 friend class List; | 2575 friend class List; |
2636 | 2576 |
2637 word flags_; | 2577 word flags_; |
2638 Ref<String> name_; | 2578 intptr_t name_index_; |
2639 Child<DartType> type_; | 2579 Child<DartType> type_; |
2640 Child<Expression> initializer_; | 2580 Child<Expression> initializer_; |
2641 TokenPosition equals_position_; | 2581 TokenPosition equals_position_; |
2642 TokenPosition end_position_; | 2582 TokenPosition end_position_; |
2643 | 2583 |
2644 DISALLOW_COPY_AND_ASSIGN(VariableDeclaration); | 2584 DISALLOW_COPY_AND_ASSIGN(VariableDeclaration); |
2645 }; | 2585 }; |
2646 | 2586 |
2647 | 2587 |
2648 class FunctionDeclaration : public Statement { | 2588 class FunctionDeclaration : public Statement { |
(...skipping 24 matching lines...) Expand all Loading... |
2673 public: | 2613 public: |
2674 static Name* ReadFrom(Reader* reader); | 2614 static Name* ReadFrom(Reader* reader); |
2675 | 2615 |
2676 virtual ~Name(); | 2616 virtual ~Name(); |
2677 | 2617 |
2678 DEFINE_CASTING_OPERATIONS(Name); | 2618 DEFINE_CASTING_OPERATIONS(Name); |
2679 | 2619 |
2680 virtual void AcceptVisitor(Visitor* visitor); | 2620 virtual void AcceptVisitor(Visitor* visitor); |
2681 virtual void VisitChildren(Visitor* visitor); | 2621 virtual void VisitChildren(Visitor* visitor); |
2682 | 2622 |
2683 String* string() { return string_; } | 2623 intptr_t string_index() { return string_index_; } |
2684 CanonicalName* library() { return library_reference_; } | 2624 CanonicalName* library() { return library_reference_; } |
2685 | 2625 |
2686 private: | 2626 private: |
2687 Name(String* string, CanonicalName* library_reference) | 2627 Name(intptr_t string_index, CanonicalName* library_reference) |
2688 : string_(string), library_reference_(library_reference) {} // NOLINT | 2628 : string_index_(string_index), |
| 2629 library_reference_(library_reference) {} // NOLINT |
2689 | 2630 |
2690 Ref<String> string_; | 2631 intptr_t string_index_; |
2691 Ref<CanonicalName> library_reference_; // Library. | 2632 Ref<CanonicalName> library_reference_; // Library. |
2692 | 2633 |
2693 DISALLOW_COPY_AND_ASSIGN(Name); | 2634 DISALLOW_COPY_AND_ASSIGN(Name); |
2694 }; | 2635 }; |
2695 | 2636 |
2696 | 2637 |
2697 class DartType : public Node { | 2638 class DartType : public Node { |
2698 public: | 2639 public: |
2699 static DartType* ReadFrom(Reader* reader); | 2640 static DartType* ReadFrom(Reader* reader); |
2700 | 2641 |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2813 private: | 2754 private: |
2814 TypedefType() {} | 2755 TypedefType() {} |
2815 | 2756 |
2816 Ref<CanonicalName> typedef_reference_; // Typedef. | 2757 Ref<CanonicalName> typedef_reference_; // Typedef. |
2817 List<DartType> type_arguments_; | 2758 List<DartType> type_arguments_; |
2818 | 2759 |
2819 DISALLOW_COPY_AND_ASSIGN(TypedefType); | 2760 DISALLOW_COPY_AND_ASSIGN(TypedefType); |
2820 }; | 2761 }; |
2821 | 2762 |
2822 | 2763 |
| 2764 class NamedParameter { |
| 2765 public: |
| 2766 static NamedParameter* ReadFrom(Reader* reader); |
| 2767 |
| 2768 NamedParameter(intptr_t name_index, DartType* type) |
| 2769 : name_index_(name_index), type_(type) {} |
| 2770 |
| 2771 intptr_t name() { return name_index_; } |
| 2772 DartType* type() { return type_; } |
| 2773 |
| 2774 private: |
| 2775 NamedParameter() : name_index_(-1) {} |
| 2776 |
| 2777 intptr_t name_index_; |
| 2778 Child<DartType> type_; |
| 2779 |
| 2780 DISALLOW_COPY_AND_ASSIGN(NamedParameter); |
| 2781 }; |
| 2782 |
| 2783 |
2823 class FunctionType : public DartType { | 2784 class FunctionType : public DartType { |
2824 public: | 2785 public: |
2825 static FunctionType* ReadFrom(Reader* reader); | 2786 static FunctionType* ReadFrom(Reader* reader); |
2826 static FunctionType* ReadFrom(Reader* reader, bool _without_type_arguments_); | 2787 static FunctionType* ReadFrom(Reader* reader, bool _without_type_arguments_); |
2827 | 2788 |
2828 virtual ~FunctionType(); | 2789 virtual ~FunctionType(); |
2829 | 2790 |
2830 DEFINE_CASTING_OPERATIONS(FunctionType); | 2791 DEFINE_CASTING_OPERATIONS(FunctionType); |
2831 | 2792 |
2832 virtual void AcceptDartTypeVisitor(DartTypeVisitor* visitor); | 2793 virtual void AcceptDartTypeVisitor(DartTypeVisitor* visitor); |
2833 virtual void VisitChildren(Visitor* visitor); | 2794 virtual void VisitChildren(Visitor* visitor); |
2834 | 2795 |
2835 TypeParameterList& type_parameters() { return type_parameters_; } | 2796 TypeParameterList& type_parameters() { return type_parameters_; } |
2836 int required_parameter_count() { return required_parameter_count_; } | 2797 int required_parameter_count() { return required_parameter_count_; } |
2837 List<DartType>& positional_parameters() { return positional_parameters_; } | 2798 List<DartType>& positional_parameters() { return positional_parameters_; } |
2838 List<Tuple<String, DartType> >& named_parameters() { | 2799 List<NamedParameter>& named_parameters() { return named_parameters_; } |
2839 return named_parameters_; | |
2840 } | |
2841 DartType* return_type() { return return_type_; } | 2800 DartType* return_type() { return return_type_; } |
2842 | 2801 |
2843 private: | 2802 private: |
2844 FunctionType() {} | 2803 FunctionType() {} |
2845 | 2804 |
2846 TypeParameterList type_parameters_; | 2805 TypeParameterList type_parameters_; |
2847 int required_parameter_count_; | 2806 int required_parameter_count_; |
2848 List<DartType> positional_parameters_; | 2807 List<DartType> positional_parameters_; |
2849 List<Tuple<String, DartType> > named_parameters_; | 2808 List<NamedParameter> named_parameters_; |
2850 Child<DartType> return_type_; | 2809 Child<DartType> return_type_; |
2851 | 2810 |
2852 DISALLOW_COPY_AND_ASSIGN(FunctionType); | 2811 DISALLOW_COPY_AND_ASSIGN(FunctionType); |
2853 }; | 2812 }; |
2854 | 2813 |
2855 | 2814 |
2856 class TypeParameterType : public DartType { | 2815 class TypeParameterType : public DartType { |
2857 public: | 2816 public: |
2858 static TypeParameterType* ReadFrom(Reader* reader); | 2817 static TypeParameterType* ReadFrom(Reader* reader); |
2859 | 2818 |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2897 public: | 2856 public: |
2898 TypeParameter* ReadFrom(Reader* reader); | 2857 TypeParameter* ReadFrom(Reader* reader); |
2899 | 2858 |
2900 virtual ~TypeParameter(); | 2859 virtual ~TypeParameter(); |
2901 | 2860 |
2902 DEFINE_CASTING_OPERATIONS(TypeParameter); | 2861 DEFINE_CASTING_OPERATIONS(TypeParameter); |
2903 | 2862 |
2904 virtual void AcceptTreeVisitor(TreeVisitor* visitor); | 2863 virtual void AcceptTreeVisitor(TreeVisitor* visitor); |
2905 virtual void VisitChildren(Visitor* visitor); | 2864 virtual void VisitChildren(Visitor* visitor); |
2906 | 2865 |
2907 String* name() { return name_; } | 2866 intptr_t name() { return name_index_; } |
2908 DartType* bound() { return bound_; } | 2867 DartType* bound() { return bound_; } |
2909 | 2868 |
2910 private: | 2869 private: |
2911 TypeParameter() {} | 2870 TypeParameter() {} |
2912 | 2871 |
2913 template <typename T> | 2872 template <typename T> |
2914 friend class List; | 2873 friend class List; |
2915 friend class TypeParameterList; | 2874 friend class TypeParameterList; |
2916 | 2875 |
2917 Ref<String> name_; | 2876 intptr_t name_index_; |
2918 Child<DartType> bound_; | 2877 Child<DartType> bound_; |
2919 | 2878 |
2920 DISALLOW_COPY_AND_ASSIGN(TypeParameter); | 2879 DISALLOW_COPY_AND_ASSIGN(TypeParameter); |
2921 }; | 2880 }; |
2922 | 2881 |
2923 | 2882 |
2924 class Program : public TreeNode { | 2883 class Program : public TreeNode { |
2925 public: | 2884 public: |
2926 static Program* ReadFrom(Reader* reader); | 2885 static Program* ReadFrom(Reader* reader); |
2927 | 2886 |
2928 virtual ~Program(); | 2887 virtual ~Program(); |
2929 | 2888 |
2930 DEFINE_CASTING_OPERATIONS(Program); | 2889 DEFINE_CASTING_OPERATIONS(Program); |
2931 | 2890 |
2932 virtual void AcceptTreeVisitor(TreeVisitor* visitor); | 2891 virtual void AcceptTreeVisitor(TreeVisitor* visitor); |
2933 virtual void VisitChildren(Visitor* visitor); | 2892 virtual void VisitChildren(Visitor* visitor); |
2934 | 2893 |
2935 StringTable& string_table() { return string_table_; } | |
2936 SourceTable& source_table() { return source_table_; } | 2894 SourceTable& source_table() { return source_table_; } |
2937 List<Library>& libraries() { return libraries_; } | 2895 List<Library>& libraries() { return libraries_; } |
2938 CanonicalName* main_method() { return main_method_reference_; } | 2896 CanonicalName* main_method() { return main_method_reference_; } |
2939 CanonicalName* canonical_name_root() { return canonical_name_root_; } | 2897 CanonicalName* canonical_name_root() { return canonical_name_root_; } |
2940 MallocGrowableArray<MallocGrowableArray<intptr_t>*> valid_token_positions; | 2898 MallocGrowableArray<MallocGrowableArray<intptr_t>*> valid_token_positions; |
2941 MallocGrowableArray<MallocGrowableArray<intptr_t>*> yield_token_positions; | 2899 MallocGrowableArray<MallocGrowableArray<intptr_t>*> yield_token_positions; |
2942 intptr_t string_data_offset() { return string_data_offset_; } | 2900 intptr_t string_table_offset() { return string_table_offset_; } |
2943 | 2901 |
2944 private: | 2902 private: |
2945 Program() {} | 2903 Program() {} |
2946 | 2904 |
2947 Child<CanonicalName> canonical_name_root_; | 2905 Child<CanonicalName> canonical_name_root_; |
2948 List<Library> libraries_; | 2906 List<Library> libraries_; |
2949 Ref<CanonicalName> main_method_reference_; // Procedure. | 2907 Ref<CanonicalName> main_method_reference_; // Procedure. |
2950 StringTable string_table_; | |
2951 SourceTable source_table_; | 2908 SourceTable source_table_; |
2952 | 2909 |
2953 // The offset from the start of the binary to the start of the UTF-8 encoded | 2910 // The offset from the start of the binary to the start of the string table. |
2954 // string data. | 2911 intptr_t string_table_offset_; |
2955 intptr_t string_data_offset_; | |
2956 | 2912 |
2957 DISALLOW_COPY_AND_ASSIGN(Program); | 2913 DISALLOW_COPY_AND_ASSIGN(Program); |
2958 }; | 2914 }; |
2959 | 2915 |
2960 | 2916 |
2961 class Reference : public AllStatic { | 2917 class Reference : public AllStatic { |
2962 public: | 2918 public: |
2963 static CanonicalName* ReadMemberFrom(Reader* reader, bool allow_null = false); | 2919 static CanonicalName* ReadMemberFrom(Reader* reader, bool allow_null = false); |
2964 | 2920 |
2965 static CanonicalName* ReadClassFrom(Reader* reader, bool allow_null = false); | 2921 static CanonicalName* ReadClassFrom(Reader* reader, bool allow_null = false); |
2966 | 2922 |
2967 static CanonicalName* ReadTypedefFrom(Reader* reader); | 2923 static CanonicalName* ReadTypedefFrom(Reader* reader); |
2968 | |
2969 static String* ReadStringFrom(Reader* reader); | |
2970 }; | 2924 }; |
2971 | 2925 |
2972 | 2926 |
2973 class ExpressionVisitor { | 2927 class ExpressionVisitor { |
2974 public: | 2928 public: |
2975 virtual ~ExpressionVisitor() {} | 2929 virtual ~ExpressionVisitor() {} |
2976 | 2930 |
2977 virtual void VisitDefaultExpression(Expression* node) = 0; | 2931 virtual void VisitDefaultExpression(Expression* node) = 0; |
2978 virtual void VisitDefaultBasicLiteral(BasicLiteral* node) { | 2932 virtual void VisitDefaultBasicLiteral(BasicLiteral* node) { |
2979 VisitDefaultExpression(node); | 2933 VisitDefaultExpression(node); |
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3361 } // namespace kernel | 3315 } // namespace kernel |
3362 | 3316 |
3363 kernel::Program* ReadPrecompiledKernelFromBuffer(const uint8_t* buffer, | 3317 kernel::Program* ReadPrecompiledKernelFromBuffer(const uint8_t* buffer, |
3364 intptr_t buffer_length); | 3318 intptr_t buffer_length); |
3365 | 3319 |
3366 | 3320 |
3367 } // namespace dart | 3321 } // namespace dart |
3368 | 3322 |
3369 #endif // !defined(DART_PRECOMPILED_RUNTIME) | 3323 #endif // !defined(DART_PRECOMPILED_RUNTIME) |
3370 #endif // RUNTIME_VM_KERNEL_H_ | 3324 #endif // RUNTIME_VM_KERNEL_H_ |
OLD | NEW |