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 #if !defined(DART_PRECOMPILED_RUNTIME) | 4 #if !defined(DART_PRECOMPILED_RUNTIME) |
5 | 5 |
6 #include "vm/kernel_binary.h" | 6 #include "vm/kernel_binary.h" |
7 #include "platform/globals.h" | 7 #include "platform/globals.h" |
8 #include "vm/flags.h" | 8 #include "vm/flags.h" |
9 #include "vm/growable_array.h" | 9 #include "vm/growable_array.h" |
10 #include "vm/kernel.h" | 10 #include "vm/kernel.h" |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 | 126 |
127 String* String::ReadFrom(Reader* reader) { | 127 String* String::ReadFrom(Reader* reader) { |
128 TRACE_READ_OFFSET(); | 128 TRACE_READ_OFFSET(); |
129 return Reference::ReadStringFrom(reader); | 129 return Reference::ReadStringFrom(reader); |
130 } | 130 } |
131 | 131 |
132 | 132 |
133 String* String::ReadFromImpl(Reader* reader) { | 133 String* String::ReadFromImpl(Reader* reader) { |
134 TRACE_READ_OFFSET(); | 134 TRACE_READ_OFFSET(); |
135 uint32_t bytes = reader->ReadUInt(); | 135 uint32_t bytes = reader->ReadUInt(); |
136 String* string = new String(reader->Consume(bytes), bytes); | 136 return new String(reader->Consume(bytes), bytes); |
137 return string; | |
138 } | 137 } |
139 | 138 |
140 void StringTable::ReadFrom(Reader* reader) { | 139 void StringTable::ReadFrom(Reader* reader) { |
141 strings_.ReadFromStatic<StringImpl>(reader); | 140 strings_.ReadFromStatic<StringImpl>(reader); |
142 } | 141 } |
143 | 142 |
144 | 143 |
145 void SourceTable::ReadFrom(Reader* reader) { | 144 void SourceTable::ReadFrom(Reader* reader) { |
146 size_ = reader->helper()->program()->source_uri_table().strings().length(); | 145 size_ = reader->helper()->program()->source_uri_table().strings().length(); |
147 source_code_ = new String*[size_]; | 146 source_code_ = new String*[size_]; |
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
515 InvalidExpression* invalidExpression = new InvalidExpression(); | 514 InvalidExpression* invalidExpression = new InvalidExpression(); |
516 invalidExpression->kernel_offset_ = | 515 invalidExpression->kernel_offset_ = |
517 reader->offset() - 1; // -1 to include tag byte. | 516 reader->offset() - 1; // -1 to include tag byte. |
518 return invalidExpression; | 517 return invalidExpression; |
519 } | 518 } |
520 | 519 |
521 | 520 |
522 VariableGet* VariableGet::ReadFrom(Reader* reader) { | 521 VariableGet* VariableGet::ReadFrom(Reader* reader) { |
523 TRACE_READ_OFFSET(); | 522 TRACE_READ_OFFSET(); |
524 VariableGet* get = new VariableGet(); | 523 VariableGet* get = new VariableGet(); |
| 524 get->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
525 get->position_ = reader->ReadPosition(); | 525 get->position_ = reader->ReadPosition(); |
526 get->variable_ = reader->helper()->variables().Lookup(reader->ReadUInt()); | 526 get->variable_ = reader->helper()->variables().Lookup(reader->ReadUInt()); |
527 reader->ReadOptional<DartType>(); // Unused promoted type. | 527 reader->ReadOptional<DartType>(); // Unused promoted type. |
528 return get; | 528 return get; |
529 } | 529 } |
530 | 530 |
531 | 531 |
532 VariableGet* VariableGet::ReadFrom(Reader* reader, uint8_t payload) { | 532 VariableGet* VariableGet::ReadFrom(Reader* reader, uint8_t payload) { |
533 TRACE_READ_OFFSET(); | 533 TRACE_READ_OFFSET(); |
534 VariableGet* get = new VariableGet(); | 534 VariableGet* get = new VariableGet(); |
| 535 get->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
535 get->position_ = reader->ReadPosition(); | 536 get->position_ = reader->ReadPosition(); |
536 get->variable_ = reader->helper()->variables().Lookup(payload); | 537 get->variable_ = reader->helper()->variables().Lookup(payload); |
537 return get; | 538 return get; |
538 } | 539 } |
539 | 540 |
540 | 541 |
541 VariableSet* VariableSet::ReadFrom(Reader* reader) { | 542 VariableSet* VariableSet::ReadFrom(Reader* reader) { |
542 TRACE_READ_OFFSET(); | 543 TRACE_READ_OFFSET(); |
543 VariableSet* set = new VariableSet(); | 544 VariableSet* set = new VariableSet(); |
| 545 set->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
544 set->position_ = reader->ReadPosition(); | 546 set->position_ = reader->ReadPosition(); |
545 set->variable_ = reader->helper()->variables().Lookup(reader->ReadUInt()); | 547 set->variable_ = reader->helper()->variables().Lookup(reader->ReadUInt()); |
546 set->expression_ = Expression::ReadFrom(reader); | 548 set->expression_ = Expression::ReadFrom(reader); |
547 return set; | 549 return set; |
548 } | 550 } |
549 | 551 |
550 | 552 |
551 VariableSet* VariableSet::ReadFrom(Reader* reader, uint8_t payload) { | 553 VariableSet* VariableSet::ReadFrom(Reader* reader, uint8_t payload) { |
552 TRACE_READ_OFFSET(); | 554 TRACE_READ_OFFSET(); |
553 VariableSet* set = new VariableSet(); | 555 VariableSet* set = new VariableSet(); |
| 556 set->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
554 set->variable_ = reader->helper()->variables().Lookup(payload); | 557 set->variable_ = reader->helper()->variables().Lookup(payload); |
555 set->position_ = reader->ReadPosition(); | 558 set->position_ = reader->ReadPosition(); |
556 set->expression_ = Expression::ReadFrom(reader); | 559 set->expression_ = Expression::ReadFrom(reader); |
557 return set; | 560 return set; |
558 } | 561 } |
559 | 562 |
560 | 563 |
561 PropertyGet* PropertyGet::ReadFrom(Reader* reader) { | 564 PropertyGet* PropertyGet::ReadFrom(Reader* reader) { |
562 TRACE_READ_OFFSET(); | 565 TRACE_READ_OFFSET(); |
563 PropertyGet* get = new PropertyGet(); | 566 PropertyGet* get = new PropertyGet(); |
| 567 get->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
564 get->position_ = reader->ReadPosition(); | 568 get->position_ = reader->ReadPosition(); |
565 get->receiver_ = Expression::ReadFrom(reader); | 569 get->receiver_ = Expression::ReadFrom(reader); |
566 get->name_ = Name::ReadFrom(reader); | 570 get->name_ = Name::ReadFrom(reader); |
567 get->interface_target_reference_ = Reference::ReadMemberFrom(reader, true); | 571 get->interface_target_reference_ = Reference::ReadMemberFrom(reader, true); |
568 return get; | 572 return get; |
569 } | 573 } |
570 | 574 |
571 | 575 |
572 PropertySet* PropertySet::ReadFrom(Reader* reader) { | 576 PropertySet* PropertySet::ReadFrom(Reader* reader) { |
573 TRACE_READ_OFFSET(); | 577 TRACE_READ_OFFSET(); |
574 PropertySet* set = new PropertySet(); | 578 PropertySet* set = new PropertySet(); |
| 579 set->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
575 set->position_ = reader->ReadPosition(); | 580 set->position_ = reader->ReadPosition(); |
576 set->receiver_ = Expression::ReadFrom(reader); | 581 set->receiver_ = Expression::ReadFrom(reader); |
577 set->name_ = Name::ReadFrom(reader); | 582 set->name_ = Name::ReadFrom(reader); |
578 set->value_ = Expression::ReadFrom(reader); | 583 set->value_ = Expression::ReadFrom(reader); |
579 set->interface_target_reference_ = Reference::ReadMemberFrom(reader, true); | 584 set->interface_target_reference_ = Reference::ReadMemberFrom(reader, true); |
580 return set; | 585 return set; |
581 } | 586 } |
582 | 587 |
583 | 588 |
584 DirectPropertyGet* DirectPropertyGet::ReadFrom(Reader* reader) { | 589 DirectPropertyGet* DirectPropertyGet::ReadFrom(Reader* reader) { |
585 TRACE_READ_OFFSET(); | 590 TRACE_READ_OFFSET(); |
586 DirectPropertyGet* get = new DirectPropertyGet(); | 591 DirectPropertyGet* get = new DirectPropertyGet(); |
| 592 get->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
587 get->position_ = reader->ReadPosition(); | 593 get->position_ = reader->ReadPosition(); |
588 get->receiver_ = Expression::ReadFrom(reader); | 594 get->receiver_ = Expression::ReadFrom(reader); |
589 get->target_reference_ = Reference::ReadMemberFrom(reader); | 595 get->target_reference_ = Reference::ReadMemberFrom(reader); |
590 return get; | 596 return get; |
591 } | 597 } |
592 | 598 |
593 | 599 |
594 DirectPropertySet* DirectPropertySet::ReadFrom(Reader* reader) { | 600 DirectPropertySet* DirectPropertySet::ReadFrom(Reader* reader) { |
595 TRACE_READ_OFFSET(); | 601 TRACE_READ_OFFSET(); |
596 DirectPropertySet* set = new DirectPropertySet(); | 602 DirectPropertySet* set = new DirectPropertySet(); |
| 603 set->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
597 set->position_ = reader->ReadPosition(); | 604 set->position_ = reader->ReadPosition(); |
598 set->receiver_ = Expression::ReadFrom(reader); | 605 set->receiver_ = Expression::ReadFrom(reader); |
599 set->target_reference_ = Reference::ReadMemberFrom(reader); | 606 set->target_reference_ = Reference::ReadMemberFrom(reader); |
600 set->value_ = Expression::ReadFrom(reader); | 607 set->value_ = Expression::ReadFrom(reader); |
601 return set; | 608 return set; |
602 } | 609 } |
603 | 610 |
604 | 611 |
605 StaticGet* StaticGet::ReadFrom(Reader* reader) { | 612 StaticGet* StaticGet::ReadFrom(Reader* reader) { |
606 TRACE_READ_OFFSET(); | 613 TRACE_READ_OFFSET(); |
607 StaticGet* get = new StaticGet(); | 614 StaticGet* get = new StaticGet(); |
| 615 get->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
608 get->position_ = reader->ReadPosition(); | 616 get->position_ = reader->ReadPosition(); |
609 get->target_reference_ = Reference::ReadMemberFrom(reader); | 617 get->target_reference_ = Reference::ReadMemberFrom(reader); |
610 return get; | 618 return get; |
611 } | 619 } |
612 | 620 |
613 | 621 |
614 StaticSet* StaticSet::ReadFrom(Reader* reader) { | 622 StaticSet* StaticSet::ReadFrom(Reader* reader) { |
615 TRACE_READ_OFFSET(); | 623 TRACE_READ_OFFSET(); |
616 StaticSet* set = new StaticSet(); | 624 StaticSet* set = new StaticSet(); |
| 625 set->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
617 set->position_ = reader->ReadPosition(); | 626 set->position_ = reader->ReadPosition(); |
618 set->target_reference_ = Reference::ReadMemberFrom(reader); | 627 set->target_reference_ = Reference::ReadMemberFrom(reader); |
619 set->expression_ = Expression::ReadFrom(reader); | 628 set->expression_ = Expression::ReadFrom(reader); |
620 return set; | 629 return set; |
621 } | 630 } |
622 | 631 |
623 | 632 |
624 Arguments* Arguments::ReadFrom(Reader* reader) { | 633 Arguments* Arguments::ReadFrom(Reader* reader) { |
625 TRACE_READ_OFFSET(); | 634 TRACE_READ_OFFSET(); |
626 Arguments* arguments = new Arguments(); | 635 Arguments* arguments = new Arguments(); |
627 arguments->types().ReadFromStatic<DartType>(reader); | 636 arguments->types().ReadFromStatic<DartType>(reader); |
628 arguments->positional().ReadFromStatic<Expression>(reader); | 637 arguments->positional().ReadFromStatic<Expression>(reader); |
629 arguments->named().ReadFromStatic<NamedExpression>(reader); | 638 arguments->named().ReadFromStatic<NamedExpression>(reader); |
630 return arguments; | 639 return arguments; |
631 } | 640 } |
632 | 641 |
633 | 642 |
634 NamedExpression* NamedExpression::ReadFrom(Reader* reader) { | 643 NamedExpression* NamedExpression::ReadFrom(Reader* reader) { |
635 TRACE_READ_OFFSET(); | 644 TRACE_READ_OFFSET(); |
636 String* name = Reference::ReadStringFrom(reader); | 645 String* name = Reference::ReadStringFrom(reader); |
637 Expression* expression = Expression::ReadFrom(reader); | 646 Expression* expression = Expression::ReadFrom(reader); |
638 return new NamedExpression(name, expression); | 647 return new NamedExpression(name, expression); |
639 } | 648 } |
640 | 649 |
641 | 650 |
642 MethodInvocation* MethodInvocation::ReadFrom(Reader* reader) { | 651 MethodInvocation* MethodInvocation::ReadFrom(Reader* reader) { |
643 TRACE_READ_OFFSET(); | 652 TRACE_READ_OFFSET(); |
644 MethodInvocation* invocation = new MethodInvocation(); | 653 MethodInvocation* invocation = new MethodInvocation(); |
| 654 invocation->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
645 invocation->position_ = reader->ReadPosition(); | 655 invocation->position_ = reader->ReadPosition(); |
646 invocation->receiver_ = Expression::ReadFrom(reader); | 656 invocation->receiver_ = Expression::ReadFrom(reader); |
647 invocation->name_ = Name::ReadFrom(reader); | 657 invocation->name_ = Name::ReadFrom(reader); |
648 invocation->arguments_ = Arguments::ReadFrom(reader); | 658 invocation->arguments_ = Arguments::ReadFrom(reader); |
649 invocation->interface_target_reference_ = | 659 invocation->interface_target_reference_ = |
650 Reference::ReadMemberFrom(reader, true); | 660 Reference::ReadMemberFrom(reader, true); |
651 return invocation; | 661 return invocation; |
652 } | 662 } |
653 | 663 |
654 | 664 |
655 DirectMethodInvocation* DirectMethodInvocation::ReadFrom(Reader* reader) { | 665 DirectMethodInvocation* DirectMethodInvocation::ReadFrom(Reader* reader) { |
656 TRACE_READ_OFFSET(); | 666 TRACE_READ_OFFSET(); |
657 DirectMethodInvocation* invocation = new DirectMethodInvocation(); | 667 DirectMethodInvocation* invocation = new DirectMethodInvocation(); |
| 668 invocation->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
658 invocation->receiver_ = Expression::ReadFrom(reader); | 669 invocation->receiver_ = Expression::ReadFrom(reader); |
659 invocation->target_reference_ = Reference::ReadMemberFrom(reader); | 670 invocation->target_reference_ = Reference::ReadMemberFrom(reader); |
660 invocation->arguments_ = Arguments::ReadFrom(reader); | 671 invocation->arguments_ = Arguments::ReadFrom(reader); |
661 return invocation; | 672 return invocation; |
662 } | 673 } |
663 | 674 |
664 | 675 |
665 StaticInvocation* StaticInvocation::ReadFrom(Reader* reader, bool is_const) { | 676 StaticInvocation* StaticInvocation::ReadFrom(Reader* reader, bool is_const) { |
666 TRACE_READ_OFFSET(); | 677 TRACE_READ_OFFSET(); |
667 StaticInvocation* invocation = new StaticInvocation(); | 678 StaticInvocation* invocation = new StaticInvocation(); |
| 679 invocation->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
668 invocation->is_const_ = is_const; | 680 invocation->is_const_ = is_const; |
669 invocation->position_ = reader->ReadPosition(); | 681 invocation->position_ = reader->ReadPosition(); |
670 invocation->procedure_reference_ = Reference::ReadMemberFrom(reader); | 682 invocation->procedure_reference_ = Reference::ReadMemberFrom(reader); |
671 invocation->arguments_ = Arguments::ReadFrom(reader); | 683 invocation->arguments_ = Arguments::ReadFrom(reader); |
672 return invocation; | 684 return invocation; |
673 } | 685 } |
674 | 686 |
675 | 687 |
676 ConstructorInvocation* ConstructorInvocation::ReadFrom(Reader* reader, | 688 ConstructorInvocation* ConstructorInvocation::ReadFrom(Reader* reader, |
677 bool is_const) { | 689 bool is_const) { |
678 TRACE_READ_OFFSET(); | 690 TRACE_READ_OFFSET(); |
679 ConstructorInvocation* invocation = new ConstructorInvocation(); | 691 ConstructorInvocation* invocation = new ConstructorInvocation(); |
| 692 invocation->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
680 invocation->is_const_ = is_const; | 693 invocation->is_const_ = is_const; |
681 invocation->position_ = reader->ReadPosition(); | 694 invocation->position_ = reader->ReadPosition(); |
682 invocation->target_reference_ = Reference::ReadMemberFrom(reader); | 695 invocation->target_reference_ = Reference::ReadMemberFrom(reader); |
683 invocation->arguments_ = Arguments::ReadFrom(reader); | 696 invocation->arguments_ = Arguments::ReadFrom(reader); |
684 return invocation; | 697 return invocation; |
685 } | 698 } |
686 | 699 |
687 | 700 |
688 Not* Not::ReadFrom(Reader* reader) { | 701 Not* Not::ReadFrom(Reader* reader) { |
689 TRACE_READ_OFFSET(); | 702 TRACE_READ_OFFSET(); |
690 Not* n = new Not(); | 703 Not* n = new Not(); |
| 704 n->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
691 n->expression_ = Expression::ReadFrom(reader); | 705 n->expression_ = Expression::ReadFrom(reader); |
692 return n; | 706 return n; |
693 } | 707 } |
694 | 708 |
695 | 709 |
696 LogicalExpression* LogicalExpression::ReadFrom(Reader* reader) { | 710 LogicalExpression* LogicalExpression::ReadFrom(Reader* reader) { |
697 TRACE_READ_OFFSET(); | 711 TRACE_READ_OFFSET(); |
698 LogicalExpression* expr = new LogicalExpression(); | 712 LogicalExpression* expr = new LogicalExpression(); |
| 713 expr->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
699 expr->left_ = Expression::ReadFrom(reader); | 714 expr->left_ = Expression::ReadFrom(reader); |
700 expr->operator_ = static_cast<Operator>(reader->ReadByte()); | 715 expr->operator_ = static_cast<Operator>(reader->ReadByte()); |
701 expr->right_ = Expression::ReadFrom(reader); | 716 expr->right_ = Expression::ReadFrom(reader); |
702 return expr; | 717 return expr; |
703 } | 718 } |
704 | 719 |
705 | 720 |
706 ConditionalExpression* ConditionalExpression::ReadFrom(Reader* reader) { | 721 ConditionalExpression* ConditionalExpression::ReadFrom(Reader* reader) { |
707 TRACE_READ_OFFSET(); | 722 TRACE_READ_OFFSET(); |
708 ConditionalExpression* expr = new ConditionalExpression(); | 723 ConditionalExpression* expr = new ConditionalExpression(); |
| 724 expr->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
709 expr->condition_ = Expression::ReadFrom(reader); | 725 expr->condition_ = Expression::ReadFrom(reader); |
710 expr->then_ = Expression::ReadFrom(reader); | 726 expr->then_ = Expression::ReadFrom(reader); |
711 expr->otherwise_ = Expression::ReadFrom(reader); | 727 expr->otherwise_ = Expression::ReadFrom(reader); |
712 reader->ReadOptional<DartType>(); // Unused static type. | 728 reader->ReadOptional<DartType>(); // Unused static type. |
713 return expr; | 729 return expr; |
714 } | 730 } |
715 | 731 |
716 | 732 |
717 StringConcatenation* StringConcatenation::ReadFrom(Reader* reader) { | 733 StringConcatenation* StringConcatenation::ReadFrom(Reader* reader) { |
718 TRACE_READ_OFFSET(); | 734 TRACE_READ_OFFSET(); |
719 StringConcatenation* concat = new StringConcatenation(); | 735 StringConcatenation* concat = new StringConcatenation(); |
| 736 concat->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
720 concat->position_ = reader->ReadPosition(); | 737 concat->position_ = reader->ReadPosition(); |
721 concat->expressions_.ReadFromStatic<Expression>(reader); | 738 concat->expressions_.ReadFromStatic<Expression>(reader); |
722 return concat; | 739 return concat; |
723 } | 740 } |
724 | 741 |
725 | 742 |
726 IsExpression* IsExpression::ReadFrom(Reader* reader) { | 743 IsExpression* IsExpression::ReadFrom(Reader* reader) { |
727 TRACE_READ_OFFSET(); | 744 TRACE_READ_OFFSET(); |
728 IsExpression* expr = new IsExpression(); | 745 IsExpression* expr = new IsExpression(); |
| 746 expr->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
729 expr->position_ = reader->ReadPosition(); | 747 expr->position_ = reader->ReadPosition(); |
730 expr->operand_ = Expression::ReadFrom(reader); | 748 expr->operand_ = Expression::ReadFrom(reader); |
731 expr->type_ = DartType::ReadFrom(reader); | 749 expr->type_ = DartType::ReadFrom(reader); |
732 return expr; | 750 return expr; |
733 } | 751 } |
734 | 752 |
735 | 753 |
736 AsExpression* AsExpression::ReadFrom(Reader* reader) { | 754 AsExpression* AsExpression::ReadFrom(Reader* reader) { |
737 TRACE_READ_OFFSET(); | 755 TRACE_READ_OFFSET(); |
738 AsExpression* expr = new AsExpression(); | 756 AsExpression* expr = new AsExpression(); |
| 757 expr->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
739 expr->position_ = reader->ReadPosition(); | 758 expr->position_ = reader->ReadPosition(); |
740 expr->operand_ = Expression::ReadFrom(reader); | 759 expr->operand_ = Expression::ReadFrom(reader); |
741 expr->type_ = DartType::ReadFrom(reader); | 760 expr->type_ = DartType::ReadFrom(reader); |
742 return expr; | 761 return expr; |
743 } | 762 } |
744 | 763 |
745 | 764 |
746 StringLiteral* StringLiteral::ReadFrom(Reader* reader) { | 765 StringLiteral* StringLiteral::ReadFrom(Reader* reader) { |
747 TRACE_READ_OFFSET(); | 766 TRACE_READ_OFFSET(); |
748 intptr_t offset = reader->offset() - 1; // -1 to include tag byte. | 767 intptr_t offset = reader->offset() - 1; // -1 to include tag byte. |
749 StringLiteral* lit = new StringLiteral(Reference::ReadStringFrom(reader)); | 768 StringLiteral* lit = new StringLiteral(Reference::ReadStringFrom(reader)); |
750 lit->kernel_offset_ = offset; | 769 lit->kernel_offset_ = offset; |
751 return lit; | 770 return lit; |
752 } | 771 } |
753 | 772 |
754 | 773 |
755 BigintLiteral* BigintLiteral::ReadFrom(Reader* reader) { | 774 BigintLiteral* BigintLiteral::ReadFrom(Reader* reader) { |
756 TRACE_READ_OFFSET(); | 775 TRACE_READ_OFFSET(); |
757 return new BigintLiteral(Reference::ReadStringFrom(reader)); | 776 intptr_t offset = reader->offset() - 1; // -1 to include tag byte. |
| 777 BigintLiteral* lit = new BigintLiteral(Reference::ReadStringFrom(reader)); |
| 778 lit->kernel_offset_ = offset; |
| 779 return lit; |
758 } | 780 } |
759 | 781 |
760 | 782 |
761 IntLiteral* IntLiteral::ReadFrom(Reader* reader, bool is_negative) { | 783 IntLiteral* IntLiteral::ReadFrom(Reader* reader, bool is_negative) { |
762 TRACE_READ_OFFSET(); | 784 TRACE_READ_OFFSET(); |
763 IntLiteral* literal = new IntLiteral(); | 785 IntLiteral* literal = new IntLiteral(); |
764 literal->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. | 786 literal->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
765 literal->value_ = is_negative ? -static_cast<int64_t>(reader->ReadUInt()) | 787 literal->value_ = is_negative ? -static_cast<int64_t>(reader->ReadUInt()) |
766 : reader->ReadUInt(); | 788 : reader->ReadUInt(); |
767 return literal; | 789 return literal; |
768 } | 790 } |
769 | 791 |
770 | 792 |
771 IntLiteral* IntLiteral::ReadFrom(Reader* reader, uint8_t payload) { | 793 IntLiteral* IntLiteral::ReadFrom(Reader* reader, uint8_t payload) { |
772 TRACE_READ_OFFSET(); | 794 TRACE_READ_OFFSET(); |
773 IntLiteral* literal = new IntLiteral(); | 795 IntLiteral* literal = new IntLiteral(); |
774 literal->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. | 796 literal->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
775 literal->value_ = static_cast<int32_t>(payload) - SpecializedIntLiteralBias; | 797 literal->value_ = static_cast<int32_t>(payload) - SpecializedIntLiteralBias; |
776 return literal; | 798 return literal; |
777 } | 799 } |
778 | 800 |
779 | 801 |
780 DoubleLiteral* DoubleLiteral::ReadFrom(Reader* reader) { | 802 DoubleLiteral* DoubleLiteral::ReadFrom(Reader* reader) { |
781 TRACE_READ_OFFSET(); | 803 TRACE_READ_OFFSET(); |
782 DoubleLiteral* literal = new DoubleLiteral(); | 804 DoubleLiteral* literal = new DoubleLiteral(); |
| 805 literal->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
783 literal->value_ = Reference::ReadStringFrom(reader); | 806 literal->value_ = Reference::ReadStringFrom(reader); |
784 return literal; | 807 return literal; |
785 } | 808 } |
786 | 809 |
787 | 810 |
788 BoolLiteral* BoolLiteral::ReadFrom(Reader* reader, bool value) { | 811 BoolLiteral* BoolLiteral::ReadFrom(Reader* reader, bool value) { |
789 TRACE_READ_OFFSET(); | 812 TRACE_READ_OFFSET(); |
790 BoolLiteral* lit = new BoolLiteral(); | 813 BoolLiteral* lit = new BoolLiteral(); |
791 lit->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. | 814 lit->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
792 lit->value_ = value; | 815 lit->value_ = value; |
793 return lit; | 816 return lit; |
794 } | 817 } |
795 | 818 |
796 | 819 |
797 NullLiteral* NullLiteral::ReadFrom(Reader* reader) { | 820 NullLiteral* NullLiteral::ReadFrom(Reader* reader) { |
798 TRACE_READ_OFFSET(); | 821 TRACE_READ_OFFSET(); |
799 NullLiteral* lit = new NullLiteral(); | 822 NullLiteral* lit = new NullLiteral(); |
800 lit->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. | 823 lit->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
801 return lit; | 824 return lit; |
802 } | 825 } |
803 | 826 |
804 | 827 |
805 SymbolLiteral* SymbolLiteral::ReadFrom(Reader* reader) { | 828 SymbolLiteral* SymbolLiteral::ReadFrom(Reader* reader) { |
806 TRACE_READ_OFFSET(); | 829 TRACE_READ_OFFSET(); |
807 SymbolLiteral* lit = new SymbolLiteral(); | 830 SymbolLiteral* lit = new SymbolLiteral(); |
| 831 lit->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
808 lit->value_ = Reference::ReadStringFrom(reader); | 832 lit->value_ = Reference::ReadStringFrom(reader); |
809 return lit; | 833 return lit; |
810 } | 834 } |
811 | 835 |
812 | 836 |
813 TypeLiteral* TypeLiteral::ReadFrom(Reader* reader) { | 837 TypeLiteral* TypeLiteral::ReadFrom(Reader* reader) { |
814 TRACE_READ_OFFSET(); | 838 TRACE_READ_OFFSET(); |
815 TypeLiteral* literal = new TypeLiteral(); | 839 TypeLiteral* literal = new TypeLiteral(); |
| 840 literal->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
816 literal->type_ = DartType::ReadFrom(reader); | 841 literal->type_ = DartType::ReadFrom(reader); |
817 return literal; | 842 return literal; |
818 } | 843 } |
819 | 844 |
820 | 845 |
821 ThisExpression* ThisExpression::ReadFrom(Reader* reader) { | 846 ThisExpression* ThisExpression::ReadFrom(Reader* reader) { |
822 TRACE_READ_OFFSET(); | 847 TRACE_READ_OFFSET(); |
823 ThisExpression* this_expr = new ThisExpression(); | 848 ThisExpression* this_expr = new ThisExpression(); |
824 this_expr->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. | 849 this_expr->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
825 return this_expr; | 850 return this_expr; |
826 } | 851 } |
827 | 852 |
828 | 853 |
829 Rethrow* Rethrow::ReadFrom(Reader* reader) { | 854 Rethrow* Rethrow::ReadFrom(Reader* reader) { |
830 TRACE_READ_OFFSET(); | 855 TRACE_READ_OFFSET(); |
831 Rethrow* rethrow = new Rethrow(); | 856 Rethrow* rethrow = new Rethrow(); |
832 rethrow->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. | 857 rethrow->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
833 rethrow->position_ = reader->ReadPosition(); | 858 rethrow->position_ = reader->ReadPosition(); |
834 return rethrow; | 859 return rethrow; |
835 } | 860 } |
836 | 861 |
837 | 862 |
838 Throw* Throw::ReadFrom(Reader* reader) { | 863 Throw* Throw::ReadFrom(Reader* reader) { |
839 TRACE_READ_OFFSET(); | 864 TRACE_READ_OFFSET(); |
840 Throw* t = new Throw(); | 865 Throw* t = new Throw(); |
| 866 t->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
841 t->position_ = reader->ReadPosition(); | 867 t->position_ = reader->ReadPosition(); |
842 t->expression_ = Expression::ReadFrom(reader); | 868 t->expression_ = Expression::ReadFrom(reader); |
843 return t; | 869 return t; |
844 } | 870 } |
845 | 871 |
846 | 872 |
847 ListLiteral* ListLiteral::ReadFrom(Reader* reader, bool is_const) { | 873 ListLiteral* ListLiteral::ReadFrom(Reader* reader, bool is_const) { |
848 TRACE_READ_OFFSET(); | 874 TRACE_READ_OFFSET(); |
849 ListLiteral* literal = new ListLiteral(); | 875 ListLiteral* literal = new ListLiteral(); |
| 876 literal->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
850 literal->is_const_ = is_const; | 877 literal->is_const_ = is_const; |
851 literal->position_ = reader->ReadPosition(); | 878 literal->position_ = reader->ReadPosition(); |
852 literal->type_ = DartType::ReadFrom(reader); | 879 literal->type_ = DartType::ReadFrom(reader); |
853 literal->expressions_.ReadFromStatic<Expression>(reader); | 880 literal->expressions_.ReadFromStatic<Expression>(reader); |
854 return literal; | 881 return literal; |
855 } | 882 } |
856 | 883 |
857 | 884 |
858 MapLiteral* MapLiteral::ReadFrom(Reader* reader, bool is_const) { | 885 MapLiteral* MapLiteral::ReadFrom(Reader* reader, bool is_const) { |
859 TRACE_READ_OFFSET(); | 886 TRACE_READ_OFFSET(); |
860 MapLiteral* literal = new MapLiteral(); | 887 MapLiteral* literal = new MapLiteral(); |
| 888 literal->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
861 literal->is_const_ = is_const; | 889 literal->is_const_ = is_const; |
862 literal->position_ = reader->ReadPosition(); | 890 literal->position_ = reader->ReadPosition(); |
863 literal->key_type_ = DartType::ReadFrom(reader); | 891 literal->key_type_ = DartType::ReadFrom(reader); |
864 literal->value_type_ = DartType::ReadFrom(reader); | 892 literal->value_type_ = DartType::ReadFrom(reader); |
865 literal->entries_.ReadFromStatic<MapEntry>(reader); | 893 literal->entries_.ReadFromStatic<MapEntry>(reader); |
866 return literal; | 894 return literal; |
867 } | 895 } |
868 | 896 |
869 | 897 |
870 MapEntry* MapEntry::ReadFrom(Reader* reader) { | 898 MapEntry* MapEntry::ReadFrom(Reader* reader) { |
871 MapEntry* entry = new MapEntry(); | 899 MapEntry* entry = new MapEntry(); |
872 entry->key_ = Expression::ReadFrom(reader); | 900 entry->key_ = Expression::ReadFrom(reader); |
873 entry->value_ = Expression::ReadFrom(reader); | 901 entry->value_ = Expression::ReadFrom(reader); |
874 return entry; | 902 return entry; |
875 } | 903 } |
876 | 904 |
877 | 905 |
878 AwaitExpression* AwaitExpression::ReadFrom(Reader* reader) { | 906 AwaitExpression* AwaitExpression::ReadFrom(Reader* reader) { |
879 TRACE_READ_OFFSET(); | 907 TRACE_READ_OFFSET(); |
880 AwaitExpression* await = new AwaitExpression(); | 908 AwaitExpression* await = new AwaitExpression(); |
| 909 await->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
881 await->operand_ = Expression::ReadFrom(reader); | 910 await->operand_ = Expression::ReadFrom(reader); |
882 return await; | 911 return await; |
883 } | 912 } |
884 | 913 |
885 | 914 |
886 FunctionExpression* FunctionExpression::ReadFrom(Reader* reader) { | 915 FunctionExpression* FunctionExpression::ReadFrom(Reader* reader) { |
887 TRACE_READ_OFFSET(); | 916 TRACE_READ_OFFSET(); |
888 VariableScope<ReaderHelper> parameters(reader->helper()); | 917 VariableScope<ReaderHelper> parameters(reader->helper()); |
889 FunctionExpression* expr = new FunctionExpression(); | 918 FunctionExpression* expr = new FunctionExpression(); |
890 expr->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. | 919 expr->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1234 decl->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. | 1263 decl->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. |
1235 decl->position_ = reader->ReadPosition(); | 1264 decl->position_ = reader->ReadPosition(); |
1236 decl->variable_ = VariableDeclaration::ReadFromImpl(reader, false); | 1265 decl->variable_ = VariableDeclaration::ReadFromImpl(reader, false); |
1237 VariableScope<ReaderHelper> parameters(reader->helper()); | 1266 VariableScope<ReaderHelper> parameters(reader->helper()); |
1238 decl->function_ = FunctionNode::ReadFrom(reader); | 1267 decl->function_ = FunctionNode::ReadFrom(reader); |
1239 return decl; | 1268 return decl; |
1240 } | 1269 } |
1241 | 1270 |
1242 | 1271 |
1243 Name* Name::ReadFrom(Reader* reader) { | 1272 Name* Name::ReadFrom(Reader* reader) { |
1244 String* string = Reference::ReadStringFrom(reader); | 1273 String* name = Reference::ReadStringFrom(reader); |
1245 if (string->size() >= 1 && string->buffer()[0] == '_') { | 1274 if (name->size() >= 1 && name->buffer()[0] == '_') { |
1246 CanonicalName* library_reference = reader->ReadCanonicalNameReference(); | 1275 CanonicalName* library_reference = reader->ReadCanonicalNameReference(); |
1247 return new Name(string, library_reference); | 1276 return new Name(name, library_reference); |
1248 } else { | 1277 } else { |
1249 return new Name(string, NULL); | 1278 return new Name(name, NULL); |
1250 } | 1279 } |
1251 } | 1280 } |
1252 | 1281 |
1253 | 1282 |
1254 DartType* DartType::ReadFrom(Reader* reader) { | 1283 DartType* DartType::ReadFrom(Reader* reader) { |
1255 TRACE_READ_OFFSET(); | 1284 TRACE_READ_OFFSET(); |
1256 Tag tag = reader->ReadTag(); | 1285 Tag tag = reader->ReadTag(); |
1257 switch (tag) { | 1286 switch (tag) { |
1258 case kInvalidType: | 1287 case kInvalidType: |
1259 return InvalidType::ReadFrom(reader); | 1288 return InvalidType::ReadFrom(reader); |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1440 | 1469 |
1441 kernel::Program* ReadPrecompiledKernelFromBuffer(const uint8_t* buffer, | 1470 kernel::Program* ReadPrecompiledKernelFromBuffer(const uint8_t* buffer, |
1442 intptr_t buffer_length) { | 1471 intptr_t buffer_length) { |
1443 kernel::Reader reader(buffer, buffer_length); | 1472 kernel::Reader reader(buffer, buffer_length); |
1444 return kernel::Program::ReadFrom(&reader); | 1473 return kernel::Program::ReadFrom(&reader); |
1445 } | 1474 } |
1446 | 1475 |
1447 | 1476 |
1448 } // namespace dart | 1477 } // namespace dart |
1449 #endif // !defined(DART_PRECOMPILED_RUNTIME) | 1478 #endif // !defined(DART_PRECOMPILED_RUNTIME) |
OLD | NEW |