| OLD | NEW |
| 1 This file describes the binary format of Dart Kernel. | 1 This file describes the binary format of Dart Kernel. |
| 2 | 2 |
| 3 Notation | 3 Notation |
| 4 -------- | 4 -------- |
| 5 Bitmasks are described with the syntax: | 5 Bitmasks are described with the syntax: |
| 6 ```scala | 6 ```scala |
| 7 Byte flags (flag1, flag2, ..., flagN) | 7 Byte flags (flag1, flag2, ..., flagN) |
| 8 ``` | 8 ``` |
| 9 where 'flag<N>' is the N-th least significant bit, | 9 where 'flag<N>' is the N-th least significant bit, |
| 10 (so flag1 is the least significant bit). | 10 (so flag1 is the least significant bit). |
| (...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 441 } | 441 } |
| 442 | 442 |
| 443 type StaticGet extends Expression { | 443 type StaticGet extends Expression { |
| 444 Byte tag = 26; | 444 Byte tag = 26; |
| 445 FileOffset fileOffset; | 445 FileOffset fileOffset; |
| 446 MemberReference target; | 446 MemberReference target; |
| 447 } | 447 } |
| 448 | 448 |
| 449 type StaticSet extends Expression { | 449 type StaticSet extends Expression { |
| 450 Byte tag = 27; | 450 Byte tag = 27; |
| 451 FileOffset fileOffset; |
| 451 MemberReference target; | 452 MemberReference target; |
| 452 Expression value; | 453 Expression value; |
| 453 } | 454 } |
| 454 | 455 |
| 455 type Arguments { | 456 type Arguments { |
| 456 // Note: there is no tag on Arguments. | 457 // Note: there is no tag on Arguments. |
| 457 List<DartType> types; | 458 List<DartType> types; |
| 458 List<Expression> positional; | 459 List<Expression> positional; |
| 459 List<NamedExpression> named; | 460 List<NamedExpression> named; |
| 460 } | 461 } |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 551 | 552 |
| 552 type IsExpression extends Expression { | 553 type IsExpression extends Expression { |
| 553 Byte tag = 37; | 554 Byte tag = 37; |
| 554 FileOffset fileOffset; | 555 FileOffset fileOffset; |
| 555 Expression operand; | 556 Expression operand; |
| 556 DartType type; | 557 DartType type; |
| 557 } | 558 } |
| 558 | 559 |
| 559 type AsExpression extends Expression { | 560 type AsExpression extends Expression { |
| 560 Byte tag = 38; | 561 Byte tag = 38; |
| 562 FileOffset fileOffset; |
| 561 Expression operand; | 563 Expression operand; |
| 562 DartType type; | 564 DartType type; |
| 563 } | 565 } |
| 564 | 566 |
| 565 type StringLiteral extends Expression { | 567 type StringLiteral extends Expression { |
| 566 Byte tag = 39; | 568 Byte tag = 39; |
| 567 StringReference value; | 569 StringReference value; |
| 568 } | 570 } |
| 569 | 571 |
| 570 type SpecializedIntLiteral extends Expression { | 572 type SpecializedIntLiteral extends Expression { |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 613 Byte tag = 45; | 615 Byte tag = 45; |
| 614 DartType type; | 616 DartType type; |
| 615 } | 617 } |
| 616 | 618 |
| 617 type ThisExpression extends Expression { | 619 type ThisExpression extends Expression { |
| 618 Byte tag = 46; | 620 Byte tag = 46; |
| 619 } | 621 } |
| 620 | 622 |
| 621 type Rethrow extends Expression { | 623 type Rethrow extends Expression { |
| 622 Byte tag = 47; | 624 Byte tag = 47; |
| 625 FileOffset fileOffset; |
| 623 } | 626 } |
| 624 | 627 |
| 625 type Throw extends Expression { | 628 type Throw extends Expression { |
| 626 Byte tag = 48; | 629 Byte tag = 48; |
| 627 FileOffset fileOffset; | 630 FileOffset fileOffset; |
| 628 Expression value; | 631 Expression value; |
| 629 } | 632 } |
| 630 | 633 |
| 631 type ListLiteral extends Expression { | 634 type ListLiteral extends Expression { |
| 632 Byte tag = 49; | 635 Byte tag = 49; |
| 636 FileOffset fileOffset; |
| 633 DartType typeArgument; | 637 DartType typeArgument; |
| 634 List<Expression> values; | 638 List<Expression> values; |
| 635 } | 639 } |
| 636 | 640 |
| 637 type ConstListLiteral extends Expression { | 641 type ConstListLiteral extends Expression { |
| 638 Byte tag = 58; // Note: tag is out of order. | 642 Byte tag = 58; // Note: tag is out of order. |
| 643 FileOffset fileOffset; |
| 639 DartType typeArgument; | 644 DartType typeArgument; |
| 640 List<Expression> values; | 645 List<Expression> values; |
| 641 } | 646 } |
| 642 | 647 |
| 643 type MapLiteral extends Expression { | 648 type MapLiteral extends Expression { |
| 644 Byte tag = 50; | 649 Byte tag = 50; |
| 645 FileOffset fileOffset; | 650 FileOffset fileOffset; |
| 646 DartType keyType; | 651 DartType keyType; |
| 647 DartType valueType; | 652 DartType valueType; |
| 648 List<MapEntry> entries; | 653 List<MapEntry> entries; |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 713 Option<Expression> message; | 718 Option<Expression> message; |
| 714 } | 719 } |
| 715 | 720 |
| 716 type LabeledStatement extends Statement { | 721 type LabeledStatement extends Statement { |
| 717 Byte tag = 65; | 722 Byte tag = 65; |
| 718 Statement body; | 723 Statement body; |
| 719 } | 724 } |
| 720 | 725 |
| 721 type BreakStatement extends Statement { | 726 type BreakStatement extends Statement { |
| 722 Byte tag = 66; | 727 Byte tag = 66; |
| 728 FileOffset fileOffset; |
| 723 | 729 |
| 724 // Reference to the Nth LabeledStatement in scope, with 0 being the | 730 // Reference to the Nth LabeledStatement in scope, with 0 being the |
| 725 // outermost enclosing labeled statement within the same FunctionNode. | 731 // outermost enclosing labeled statement within the same FunctionNode. |
| 726 // | 732 // |
| 727 // Labels are not in scope across function boundaries. | 733 // Labels are not in scope across function boundaries. |
| 728 UInt labelIndex; | 734 UInt labelIndex; |
| 729 } | 735 } |
| 730 | 736 |
| 731 type WhileStatement extends Statement { | 737 type WhileStatement extends Statement { |
| 732 Byte tag = 67; | 738 Byte tag = 67; |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 828 Byte flags (isYieldStar); | 834 Byte flags (isYieldStar); |
| 829 Expression expression; | 835 Expression expression; |
| 830 } | 836 } |
| 831 | 837 |
| 832 type VariableDeclarationStatement extends Statement { | 838 type VariableDeclarationStatement extends Statement { |
| 833 Byte tag = 78; | 839 Byte tag = 78; |
| 834 VariableDeclaration variable; | 840 VariableDeclaration variable; |
| 835 } | 841 } |
| 836 | 842 |
| 837 type VariableDeclaration { | 843 type VariableDeclaration { |
| 844 // The offset for the variable declaration, i.e. the offset of the start of |
| 845 // the declaration. |
| 838 FileOffset fileOffset; | 846 FileOffset fileOffset; |
| 847 |
| 848 // The offset for the equal sign in the declaration (if it contains one). |
| 849 // If it does not contain one this should be -1. |
| 850 FileOffset fileEqualsOffset; |
| 851 |
| 839 Byte flags (isFinal, isConst); | 852 Byte flags (isFinal, isConst); |
| 840 // For named parameters, this is the parameter name. | 853 // For named parameters, this is the parameter name. |
| 841 // For other variables, the name is cosmetic, may be empty, | 854 // For other variables, the name is cosmetic, may be empty, |
| 842 // and is not necessarily unique. | 855 // and is not necessarily unique. |
| 843 StringReference name; | 856 StringReference name; |
| 844 DartType type; | 857 DartType type; |
| 845 Option<InferredValue> inferredValue; | 858 Option<InferredValue> inferredValue; |
| 846 | 859 |
| 847 // For statements and for-loops, this is the initial value. | 860 // For statements and for-loops, this is the initial value. |
| 848 // For optional parameters, this is the default value (if given). | 861 // For optional parameters, this is the default value (if given). |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 940 | 953 |
| 941 /* enum BaseClassKind { None, Exact, Subclass, Subtype, } */ | 954 /* enum BaseClassKind { None, Exact, Subclass, Subtype, } */ |
| 942 | 955 |
| 943 type InferredValue { | 956 type InferredValue { |
| 944 ClassReference baseClass; // May be NullReference if kind = None. | 957 ClassReference baseClass; // May be NullReference if kind = None. |
| 945 Byte kind; // Index into BaseClassKind. | 958 Byte kind; // Index into BaseClassKind. |
| 946 Byte valueBits; // See lib/type_propagation/type_propagation.dart | 959 Byte valueBits; // See lib/type_propagation/type_propagation.dart |
| 947 } | 960 } |
| 948 | 961 |
| 949 ``` | 962 ``` |
| OLD | NEW |