| 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 '../ast.dart'; | 6 import '../ast.dart'; |
| 7 import 'tag.dart'; | 7 import 'tag.dart'; |
| 8 import 'loader.dart'; | 8 import 'loader.dart'; |
| 9 import 'dart:convert'; | 9 import 'dart:convert'; |
| 10 import 'package:kernel/transformations/flags.dart'; | 10 import 'package:kernel/transformations/flags.dart'; |
| (...skipping 577 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 588 readName(), readExpression(), readMemberReference(allowNull: true)); | 588 readName(), readExpression(), readMemberReference(allowNull: true)); |
| 589 case Tag.DirectPropertyGet: | 589 case Tag.DirectPropertyGet: |
| 590 return new DirectPropertyGet(readExpression(), readMemberReference()); | 590 return new DirectPropertyGet(readExpression(), readMemberReference()); |
| 591 case Tag.DirectPropertySet: | 591 case Tag.DirectPropertySet: |
| 592 return new DirectPropertySet( | 592 return new DirectPropertySet( |
| 593 readExpression(), readMemberReference(), readExpression()); | 593 readExpression(), readMemberReference(), readExpression()); |
| 594 case Tag.StaticGet: | 594 case Tag.StaticGet: |
| 595 int offset = readOffset(); | 595 int offset = readOffset(); |
| 596 return new StaticGet(readMemberReference())..fileOffset = offset; | 596 return new StaticGet(readMemberReference())..fileOffset = offset; |
| 597 case Tag.StaticSet: | 597 case Tag.StaticSet: |
| 598 return new StaticSet(readMemberReference(), readExpression()); | 598 int offset = readOffset(); |
| 599 return new StaticSet(readMemberReference(), readExpression()) |
| 600 ..fileOffset = offset; |
| 599 case Tag.MethodInvocation: | 601 case Tag.MethodInvocation: |
| 600 int offset = readOffset(); | 602 int offset = readOffset(); |
| 601 return new MethodInvocation( | 603 return new MethodInvocation( |
| 602 readExpression(), | 604 readExpression(), |
| 603 readName(), | 605 readName(), |
| 604 readArguments(), | 606 readArguments(), |
| 605 readMemberReference(allowNull: true))..fileOffset = offset; | 607 readMemberReference(allowNull: true))..fileOffset = offset; |
| 606 case Tag.SuperMethodInvocation: | 608 case Tag.SuperMethodInvocation: |
| 607 int offset = readOffset(); | 609 int offset = readOffset(); |
| 608 addTransformerFlag(TransformerFlag.superCalls); | 610 addTransformerFlag(TransformerFlag.superCalls); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 638 readExpression(), readDartTypeOption()); | 640 readExpression(), readDartTypeOption()); |
| 639 case Tag.StringConcatenation: | 641 case Tag.StringConcatenation: |
| 640 int offset = readOffset(); | 642 int offset = readOffset(); |
| 641 return new StringConcatenation(readExpressionList()) | 643 return new StringConcatenation(readExpressionList()) |
| 642 ..fileOffset = offset; | 644 ..fileOffset = offset; |
| 643 case Tag.IsExpression: | 645 case Tag.IsExpression: |
| 644 int offset = readOffset(); | 646 int offset = readOffset(); |
| 645 return new IsExpression(readExpression(), readDartType()) | 647 return new IsExpression(readExpression(), readDartType()) |
| 646 ..fileOffset = offset; | 648 ..fileOffset = offset; |
| 647 case Tag.AsExpression: | 649 case Tag.AsExpression: |
| 648 return new AsExpression(readExpression(), readDartType()); | 650 int offset = readOffset(); |
| 651 return new AsExpression(readExpression(), readDartType()) |
| 652 ..fileOffset = offset; |
| 649 case Tag.StringLiteral: | 653 case Tag.StringLiteral: |
| 650 return new StringLiteral(readStringReference()); | 654 return new StringLiteral(readStringReference()); |
| 651 case Tag.SpecializedIntLiteral: | 655 case Tag.SpecializedIntLiteral: |
| 652 int biasedValue = tagByte & Tag.SpecializedPayloadMask; | 656 int biasedValue = tagByte & Tag.SpecializedPayloadMask; |
| 653 return new IntLiteral(biasedValue - Tag.SpecializedIntLiteralBias); | 657 return new IntLiteral(biasedValue - Tag.SpecializedIntLiteralBias); |
| 654 case Tag.PositiveIntLiteral: | 658 case Tag.PositiveIntLiteral: |
| 655 return new IntLiteral(readUInt()); | 659 return new IntLiteral(readUInt()); |
| 656 case Tag.NegativeIntLiteral: | 660 case Tag.NegativeIntLiteral: |
| 657 return new IntLiteral(-readUInt()); | 661 return new IntLiteral(-readUInt()); |
| 658 case Tag.BigIntLiteral: | 662 case Tag.BigIntLiteral: |
| 659 return new IntLiteral(int.parse(readStringReference())); | 663 return new IntLiteral(int.parse(readStringReference())); |
| 660 case Tag.DoubleLiteral: | 664 case Tag.DoubleLiteral: |
| 661 return new DoubleLiteral(double.parse(readStringReference())); | 665 return new DoubleLiteral(double.parse(readStringReference())); |
| 662 case Tag.TrueLiteral: | 666 case Tag.TrueLiteral: |
| 663 return new BoolLiteral(true); | 667 return new BoolLiteral(true); |
| 664 case Tag.FalseLiteral: | 668 case Tag.FalseLiteral: |
| 665 return new BoolLiteral(false); | 669 return new BoolLiteral(false); |
| 666 case Tag.NullLiteral: | 670 case Tag.NullLiteral: |
| 667 return new NullLiteral(); | 671 return new NullLiteral(); |
| 668 case Tag.SymbolLiteral: | 672 case Tag.SymbolLiteral: |
| 669 return new SymbolLiteral(readStringReference()); | 673 return new SymbolLiteral(readStringReference()); |
| 670 case Tag.TypeLiteral: | 674 case Tag.TypeLiteral: |
| 671 return new TypeLiteral(readDartType()); | 675 return new TypeLiteral(readDartType()); |
| 672 case Tag.ThisExpression: | 676 case Tag.ThisExpression: |
| 673 return new ThisExpression(); | 677 return new ThisExpression(); |
| 674 case Tag.Rethrow: | 678 case Tag.Rethrow: |
| 675 return new Rethrow(); | 679 int offset = readOffset(); |
| 680 return new Rethrow()..fileOffset = offset; |
| 676 case Tag.Throw: | 681 case Tag.Throw: |
| 677 int offset = readOffset(); | 682 int offset = readOffset(); |
| 678 return new Throw(readExpression())..fileOffset = offset; | 683 return new Throw(readExpression())..fileOffset = offset; |
| 679 case Tag.ListLiteral: | 684 case Tag.ListLiteral: |
| 685 int offset = readOffset(); |
| 680 var typeArgument = readDartType(); | 686 var typeArgument = readDartType(); |
| 681 return new ListLiteral(readExpressionList(), | 687 return new ListLiteral(readExpressionList(), |
| 682 typeArgument: typeArgument, isConst: false); | 688 typeArgument: typeArgument, isConst: false)..fileOffset = offset; |
| 683 case Tag.ConstListLiteral: | 689 case Tag.ConstListLiteral: |
| 690 int offset = readOffset(); |
| 684 var typeArgument = readDartType(); | 691 var typeArgument = readDartType(); |
| 685 return new ListLiteral(readExpressionList(), | 692 return new ListLiteral(readExpressionList(), |
| 686 typeArgument: typeArgument, isConst: true); | 693 typeArgument: typeArgument, isConst: true)..fileOffset = offset; |
| 687 case Tag.MapLiteral: | 694 case Tag.MapLiteral: |
| 688 int offset = readOffset(); | 695 int offset = readOffset(); |
| 689 var keyType = readDartType(); | 696 var keyType = readDartType(); |
| 690 var valueType = readDartType(); | 697 var valueType = readDartType(); |
| 691 return new MapLiteral(readMapEntryList(), | 698 return new MapLiteral(readMapEntryList(), |
| 692 keyType: keyType, | 699 keyType: keyType, |
| 693 valueType: valueType, | 700 valueType: valueType, |
| 694 isConst: false)..fileOffset = offset; | 701 isConst: false)..fileOffset = offset; |
| 695 case Tag.ConstMapLiteral: | 702 case Tag.ConstMapLiteral: |
| 696 int offset = readOffset(); | 703 int offset = readOffset(); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 754 return new EmptyStatement(); | 761 return new EmptyStatement(); |
| 755 case Tag.AssertStatement: | 762 case Tag.AssertStatement: |
| 756 return new AssertStatement(readExpression(), readExpressionOption()); | 763 return new AssertStatement(readExpression(), readExpressionOption()); |
| 757 case Tag.LabeledStatement: | 764 case Tag.LabeledStatement: |
| 758 var label = new LabeledStatement(null); | 765 var label = new LabeledStatement(null); |
| 759 labelStack.add(label); | 766 labelStack.add(label); |
| 760 label.body = readStatement()..parent = label; | 767 label.body = readStatement()..parent = label; |
| 761 labelStack.removeLast(); | 768 labelStack.removeLast(); |
| 762 return label; | 769 return label; |
| 763 case Tag.BreakStatement: | 770 case Tag.BreakStatement: |
| 771 int offset = readOffset(); |
| 764 int index = readUInt(); | 772 int index = readUInt(); |
| 765 return new BreakStatement(labelStack[labelStackBase + index]); | 773 return new BreakStatement(labelStack[labelStackBase + index]) |
| 774 ..fileOffset = offset; |
| 766 case Tag.WhileStatement: | 775 case Tag.WhileStatement: |
| 767 return new WhileStatement(readExpression(), readStatement()); | 776 return new WhileStatement(readExpression(), readStatement()); |
| 768 case Tag.DoStatement: | 777 case Tag.DoStatement: |
| 769 return new DoStatement(readStatement(), readExpression()); | 778 return new DoStatement(readStatement(), readExpression()); |
| 770 case Tag.ForStatement: | 779 case Tag.ForStatement: |
| 771 int variableStackHeight = variableStack.length; | 780 int variableStackHeight = variableStack.length; |
| 772 var variables = readAndPushVariableDeclarationList(); | 781 var variables = readAndPushVariableDeclarationList(); |
| 773 var condition = readExpressionOption(); | 782 var condition = readExpressionOption(); |
| 774 var updates = readExpressionList(); | 783 var updates = readExpressionList(); |
| 775 var body = readStatement(); | 784 var body = readStatement(); |
| (...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 973 } | 982 } |
| 974 | 983 |
| 975 VariableDeclaration readAndPushVariableDeclaration() { | 984 VariableDeclaration readAndPushVariableDeclaration() { |
| 976 var variable = readVariableDeclaration(); | 985 var variable = readVariableDeclaration(); |
| 977 variableStack.add(variable); | 986 variableStack.add(variable); |
| 978 return variable; | 987 return variable; |
| 979 } | 988 } |
| 980 | 989 |
| 981 VariableDeclaration readVariableDeclaration() { | 990 VariableDeclaration readVariableDeclaration() { |
| 982 int offset = readOffset(); | 991 int offset = readOffset(); |
| 992 int fileEqualsOffset = readOffset(); |
| 983 int flags = readByte(); | 993 int flags = readByte(); |
| 984 return new VariableDeclaration(readStringOrNullIfEmpty(), | 994 return new VariableDeclaration(readStringOrNullIfEmpty(), |
| 985 type: readDartType(), | 995 type: readDartType(), |
| 986 inferredValue: readOptionalInferredValue(), | 996 inferredValue: readOptionalInferredValue(), |
| 987 initializer: readExpressionOption(), | 997 initializer: readExpressionOption(), |
| 988 isFinal: flags & 0x1 != 0, | 998 isFinal: flags & 0x1 != 0, |
| 989 isConst: flags & 0x2 != 0)..fileOffset = offset; | 999 isConst: flags & 0x2 != 0) |
| 1000 ..fileOffset = offset |
| 1001 ..fileEqualsOffset = fileEqualsOffset; |
| 990 } | 1002 } |
| 991 | 1003 |
| 992 int readOffset() { | 1004 int readOffset() { |
| 993 // Offset is saved as unsigned, | 1005 // Offset is saved as unsigned, |
| 994 // but actually ranges from -1 and up (thus the -1) | 1006 // but actually ranges from -1 and up (thus the -1) |
| 995 return readUInt() - 1; | 1007 return readUInt() - 1; |
| 996 } | 1008 } |
| 997 } | 1009 } |
| OLD | NEW |