Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(706)

Side by Side Diff: pkg/kernel/lib/binary/ast_from_binary.dart

Issue 2680303002: Kernel debugging; service tests (Closed)
Patch Set: Address comments Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pkg/kernel/lib/ast.dart ('k') | pkg/kernel/lib/binary/ast_to_binary.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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 }
OLDNEW
« no previous file with comments | « pkg/kernel/lib/ast.dart ('k') | pkg/kernel/lib/binary/ast_to_binary.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698