| 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 library kernel.ast_from_binary; | 4 library kernel.ast_from_binary; |
| 5 | 5 |
| 6 import 'dart:convert'; | 6 import 'dart:convert'; |
| 7 | 7 |
| 8 import '../ast.dart'; | 8 import '../ast.dart'; |
| 9 import '../transformations/flags.dart'; | 9 import '../transformations/flags.dart'; |
| 10 import 'tag.dart'; | 10 import 'tag.dart'; |
| (...skipping 671 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 682 return new DirectPropertyGet.byReference( | 682 return new DirectPropertyGet.byReference( |
| 683 readExpression(), readMemberReference()); | 683 readExpression(), readMemberReference()); |
| 684 case Tag.DirectPropertySet: | 684 case Tag.DirectPropertySet: |
| 685 return new DirectPropertySet.byReference( | 685 return new DirectPropertySet.byReference( |
| 686 readExpression(), readMemberReference(), readExpression()); | 686 readExpression(), readMemberReference(), readExpression()); |
| 687 case Tag.StaticGet: | 687 case Tag.StaticGet: |
| 688 int offset = readOffset(); | 688 int offset = readOffset(); |
| 689 return new StaticGet.byReference(readMemberReference()) | 689 return new StaticGet.byReference(readMemberReference()) |
| 690 ..fileOffset = offset; | 690 ..fileOffset = offset; |
| 691 case Tag.StaticSet: | 691 case Tag.StaticSet: |
| 692 int offset = readOffset(); |
| 692 return new StaticSet.byReference( | 693 return new StaticSet.byReference( |
| 693 readMemberReference(), readExpression()); | 694 readMemberReference(), readExpression())..fileOffset = offset; |
| 694 case Tag.MethodInvocation: | 695 case Tag.MethodInvocation: |
| 695 int offset = readOffset(); | 696 int offset = readOffset(); |
| 696 return new MethodInvocation.byReference( | 697 return new MethodInvocation.byReference( |
| 697 readExpression(), | 698 readExpression(), |
| 698 readName(), | 699 readName(), |
| 699 readArguments(), | 700 readArguments(), |
| 700 readMemberReference(allowNull: true))..fileOffset = offset; | 701 readMemberReference(allowNull: true))..fileOffset = offset; |
| 701 case Tag.SuperMethodInvocation: | 702 case Tag.SuperMethodInvocation: |
| 702 int offset = readOffset(); | 703 int offset = readOffset(); |
| 703 addTransformerFlag(TransformerFlag.superCalls); | 704 addTransformerFlag(TransformerFlag.superCalls); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 737 readExpression(), readDartTypeOption()); | 738 readExpression(), readDartTypeOption()); |
| 738 case Tag.StringConcatenation: | 739 case Tag.StringConcatenation: |
| 739 int offset = readOffset(); | 740 int offset = readOffset(); |
| 740 return new StringConcatenation(readExpressionList()) | 741 return new StringConcatenation(readExpressionList()) |
| 741 ..fileOffset = offset; | 742 ..fileOffset = offset; |
| 742 case Tag.IsExpression: | 743 case Tag.IsExpression: |
| 743 int offset = readOffset(); | 744 int offset = readOffset(); |
| 744 return new IsExpression(readExpression(), readDartType()) | 745 return new IsExpression(readExpression(), readDartType()) |
| 745 ..fileOffset = offset; | 746 ..fileOffset = offset; |
| 746 case Tag.AsExpression: | 747 case Tag.AsExpression: |
| 747 return new AsExpression(readExpression(), readDartType()); | 748 int offset = readOffset(); |
| 749 return new AsExpression(readExpression(), readDartType()) |
| 750 ..fileOffset = offset; |
| 748 case Tag.StringLiteral: | 751 case Tag.StringLiteral: |
| 749 return new StringLiteral(readStringReference()); | 752 return new StringLiteral(readStringReference()); |
| 750 case Tag.SpecializedIntLiteral: | 753 case Tag.SpecializedIntLiteral: |
| 751 int biasedValue = tagByte & Tag.SpecializedPayloadMask; | 754 int biasedValue = tagByte & Tag.SpecializedPayloadMask; |
| 752 return new IntLiteral(biasedValue - Tag.SpecializedIntLiteralBias); | 755 return new IntLiteral(biasedValue - Tag.SpecializedIntLiteralBias); |
| 753 case Tag.PositiveIntLiteral: | 756 case Tag.PositiveIntLiteral: |
| 754 return new IntLiteral(readUInt()); | 757 return new IntLiteral(readUInt()); |
| 755 case Tag.NegativeIntLiteral: | 758 case Tag.NegativeIntLiteral: |
| 756 return new IntLiteral(-readUInt()); | 759 return new IntLiteral(-readUInt()); |
| 757 case Tag.BigIntLiteral: | 760 case Tag.BigIntLiteral: |
| 758 return new IntLiteral(int.parse(readStringReference())); | 761 return new IntLiteral(int.parse(readStringReference())); |
| 759 case Tag.DoubleLiteral: | 762 case Tag.DoubleLiteral: |
| 760 return new DoubleLiteral(double.parse(readStringReference())); | 763 return new DoubleLiteral(double.parse(readStringReference())); |
| 761 case Tag.TrueLiteral: | 764 case Tag.TrueLiteral: |
| 762 return new BoolLiteral(true); | 765 return new BoolLiteral(true); |
| 763 case Tag.FalseLiteral: | 766 case Tag.FalseLiteral: |
| 764 return new BoolLiteral(false); | 767 return new BoolLiteral(false); |
| 765 case Tag.NullLiteral: | 768 case Tag.NullLiteral: |
| 766 return new NullLiteral(); | 769 return new NullLiteral(); |
| 767 case Tag.SymbolLiteral: | 770 case Tag.SymbolLiteral: |
| 768 return new SymbolLiteral(readStringReference()); | 771 return new SymbolLiteral(readStringReference()); |
| 769 case Tag.TypeLiteral: | 772 case Tag.TypeLiteral: |
| 770 return new TypeLiteral(readDartType()); | 773 return new TypeLiteral(readDartType()); |
| 771 case Tag.ThisExpression: | 774 case Tag.ThisExpression: |
| 772 return new ThisExpression(); | 775 return new ThisExpression(); |
| 773 case Tag.Rethrow: | 776 case Tag.Rethrow: |
| 774 return new Rethrow(); | 777 int offset = readOffset(); |
| 778 return new Rethrow()..fileOffset = offset; |
| 775 case Tag.Throw: | 779 case Tag.Throw: |
| 776 int offset = readOffset(); | 780 int offset = readOffset(); |
| 777 return new Throw(readExpression())..fileOffset = offset; | 781 return new Throw(readExpression())..fileOffset = offset; |
| 778 case Tag.ListLiteral: | 782 case Tag.ListLiteral: |
| 783 int offset = readOffset(); |
| 779 var typeArgument = readDartType(); | 784 var typeArgument = readDartType(); |
| 780 return new ListLiteral(readExpressionList(), | 785 return new ListLiteral(readExpressionList(), |
| 781 typeArgument: typeArgument, isConst: false); | 786 typeArgument: typeArgument, isConst: false)..fileOffset = offset; |
| 782 case Tag.ConstListLiteral: | 787 case Tag.ConstListLiteral: |
| 788 int offset = readOffset(); |
| 783 var typeArgument = readDartType(); | 789 var typeArgument = readDartType(); |
| 784 return new ListLiteral(readExpressionList(), | 790 return new ListLiteral(readExpressionList(), |
| 785 typeArgument: typeArgument, isConst: true); | 791 typeArgument: typeArgument, isConst: true)..fileOffset = offset; |
| 786 case Tag.MapLiteral: | 792 case Tag.MapLiteral: |
| 787 int offset = readOffset(); | 793 int offset = readOffset(); |
| 788 var keyType = readDartType(); | 794 var keyType = readDartType(); |
| 789 var valueType = readDartType(); | 795 var valueType = readDartType(); |
| 790 return new MapLiteral(readMapEntryList(), | 796 return new MapLiteral(readMapEntryList(), |
| 791 keyType: keyType, | 797 keyType: keyType, |
| 792 valueType: valueType, | 798 valueType: valueType, |
| 793 isConst: false)..fileOffset = offset; | 799 isConst: false)..fileOffset = offset; |
| 794 case Tag.ConstMapLiteral: | 800 case Tag.ConstMapLiteral: |
| 795 int offset = readOffset(); | 801 int offset = readOffset(); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 853 return new EmptyStatement(); | 859 return new EmptyStatement(); |
| 854 case Tag.AssertStatement: | 860 case Tag.AssertStatement: |
| 855 return new AssertStatement(readExpression(), readExpressionOption()); | 861 return new AssertStatement(readExpression(), readExpressionOption()); |
| 856 case Tag.LabeledStatement: | 862 case Tag.LabeledStatement: |
| 857 var label = new LabeledStatement(null); | 863 var label = new LabeledStatement(null); |
| 858 labelStack.add(label); | 864 labelStack.add(label); |
| 859 label.body = readStatement()..parent = label; | 865 label.body = readStatement()..parent = label; |
| 860 labelStack.removeLast(); | 866 labelStack.removeLast(); |
| 861 return label; | 867 return label; |
| 862 case Tag.BreakStatement: | 868 case Tag.BreakStatement: |
| 869 int offset = readOffset(); |
| 863 int index = readUInt(); | 870 int index = readUInt(); |
| 864 return new BreakStatement(labelStack[labelStackBase + index]); | 871 return new BreakStatement(labelStack[labelStackBase + index]) |
| 872 ..fileOffset = offset; |
| 865 case Tag.WhileStatement: | 873 case Tag.WhileStatement: |
| 866 return new WhileStatement(readExpression(), readStatement()); | 874 return new WhileStatement(readExpression(), readStatement()); |
| 867 case Tag.DoStatement: | 875 case Tag.DoStatement: |
| 868 return new DoStatement(readStatement(), readExpression()); | 876 return new DoStatement(readStatement(), readExpression()); |
| 869 case Tag.ForStatement: | 877 case Tag.ForStatement: |
| 870 int variableStackHeight = variableStack.length; | 878 int variableStackHeight = variableStack.length; |
| 871 var variables = readAndPushVariableDeclarationList(); | 879 var variables = readAndPushVariableDeclarationList(); |
| 872 var condition = readExpressionOption(); | 880 var condition = readExpressionOption(); |
| 873 var updates = readExpressionList(); | 881 var updates = readExpressionList(); |
| 874 var body = readStatement(); | 882 var body = readStatement(); |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1074 } | 1082 } |
| 1075 | 1083 |
| 1076 VariableDeclaration readAndPushVariableDeclaration() { | 1084 VariableDeclaration readAndPushVariableDeclaration() { |
| 1077 var variable = readVariableDeclaration(); | 1085 var variable = readVariableDeclaration(); |
| 1078 variableStack.add(variable); | 1086 variableStack.add(variable); |
| 1079 return variable; | 1087 return variable; |
| 1080 } | 1088 } |
| 1081 | 1089 |
| 1082 VariableDeclaration readVariableDeclaration() { | 1090 VariableDeclaration readVariableDeclaration() { |
| 1083 int offset = readOffset(); | 1091 int offset = readOffset(); |
| 1092 int fileEqualsOffset = readOffset(); |
| 1084 int flags = readByte(); | 1093 int flags = readByte(); |
| 1085 return new VariableDeclaration(readStringOrNullIfEmpty(), | 1094 return new VariableDeclaration(readStringOrNullIfEmpty(), |
| 1086 type: readDartType(), | 1095 type: readDartType(), |
| 1087 inferredValue: readOptionalInferredValue(), | 1096 inferredValue: readOptionalInferredValue(), |
| 1088 initializer: readExpressionOption(), | 1097 initializer: readExpressionOption(), |
| 1089 isFinal: flags & 0x1 != 0, | 1098 isFinal: flags & 0x1 != 0, |
| 1090 isConst: flags & 0x2 != 0)..fileOffset = offset; | 1099 isConst: flags & 0x2 != 0) |
| 1100 ..fileOffset = offset |
| 1101 ..fileEqualsOffset = fileEqualsOffset; |
| 1091 } | 1102 } |
| 1092 | 1103 |
| 1093 int readOffset() { | 1104 int readOffset() { |
| 1094 // Offset is saved as unsigned, | 1105 // Offset is saved as unsigned, |
| 1095 // but actually ranges from -1 and up (thus the -1) | 1106 // but actually ranges from -1 and up (thus the -1) |
| 1096 return readUInt() - 1; | 1107 return readUInt() - 1; |
| 1097 } | 1108 } |
| 1098 } | 1109 } |
| OLD | NEW |