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

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

Issue 2680303002: Kernel debugging; service tests (Closed)
Patch Set: New failing test Created 3 years, 10 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
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 '../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 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 Map<String, Source> uriToSource = readUriToSource(); 180 Map<String, Source> uriToSource = readUriToSource();
181 importTable.length = readUInt(); 181 importTable.length = readUInt();
182 for (int i = 0; i < importTable.length; ++i) { 182 for (int i = 0; i < importTable.length; ++i) {
183 importTable[i] = new Library(null); 183 importTable[i] = new Library(null);
184 } 184 }
185 for (int i = 0; i < importTable.length; ++i) { 185 for (int i = 0; i < importTable.length; ++i) {
186 _currentLibrary = importTable[i]; 186 _currentLibrary = importTable[i];
187 readLibrary(); 187 readLibrary();
188 } 188 }
189 var mainMethod = readMemberReference(allowNull: true); 189 var mainMethod = readMemberReference(allowNull: true);
190 return new Program(importTable, uriToSource) 190 return new Program(importTable, uriToSource)..mainMethod = mainMethod;
191 ..mainMethod = mainMethod;
192 } 191 }
193 192
194 Map<String, Source> readUriToSource() { 193 Map<String, Source> readUriToSource() {
195 readSourceUriTable(); 194 readSourceUriTable();
196 int length = _sourceUriTable.length; 195 int length = _sourceUriTable.length;
197 Map<String, Source> uriToLineStarts = <String, Source>{}; 196 Map<String, Source> uriToLineStarts = <String, Source>{};
198 for (int i = 0; i < length; ++i) { 197 for (int i = 0; i < length; ++i) {
199 String uri = _sourceUriTable[i]; 198 String uri = _sourceUriTable[i];
200 String sourceCode = readStringEntry(); 199 String sourceCode = readStringEntry();
201 int lineCount = readUInt(); 200 int lineCount = readUInt();
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 readName(), readExpression(), readMemberReference(allowNull: true)); 567 readName(), readExpression(), readMemberReference(allowNull: true));
569 case Tag.DirectPropertyGet: 568 case Tag.DirectPropertyGet:
570 return new DirectPropertyGet(readExpression(), readMemberReference()); 569 return new DirectPropertyGet(readExpression(), readMemberReference());
571 case Tag.DirectPropertySet: 570 case Tag.DirectPropertySet:
572 return new DirectPropertySet( 571 return new DirectPropertySet(
573 readExpression(), readMemberReference(), readExpression()); 572 readExpression(), readMemberReference(), readExpression());
574 case Tag.StaticGet: 573 case Tag.StaticGet:
575 int offset = readOffset(); 574 int offset = readOffset();
576 return new StaticGet(readMemberReference())..fileOffset = offset; 575 return new StaticGet(readMemberReference())..fileOffset = offset;
577 case Tag.StaticSet: 576 case Tag.StaticSet:
578 return new StaticSet(readMemberReference(), readExpression()); 577 int offset = readOffset();
578 return new StaticSet(readMemberReference(), readExpression())
579 ..fileOffset = offset;
579 case Tag.MethodInvocation: 580 case Tag.MethodInvocation:
580 int offset = readOffset(); 581 int offset = readOffset();
581 return new MethodInvocation( 582 return new MethodInvocation(
582 readExpression(), 583 readExpression(),
583 readName(), 584 readName(),
584 readArguments(), 585 readArguments(),
585 readMemberReference(allowNull: true))..fileOffset = offset; 586 readMemberReference(allowNull: true))..fileOffset = offset;
586 case Tag.SuperMethodInvocation: 587 case Tag.SuperMethodInvocation:
587 int offset = readOffset(); 588 int offset = readOffset();
588 addTransformerFlag(TransformerFlag.superCalls); 589 addTransformerFlag(TransformerFlag.superCalls);
(...skipping 29 matching lines...) Expand all
618 readExpression(), readDartTypeOption()); 619 readExpression(), readDartTypeOption());
619 case Tag.StringConcatenation: 620 case Tag.StringConcatenation:
620 int offset = readOffset(); 621 int offset = readOffset();
621 return new StringConcatenation(readExpressionList()) 622 return new StringConcatenation(readExpressionList())
622 ..fileOffset = offset; 623 ..fileOffset = offset;
623 case Tag.IsExpression: 624 case Tag.IsExpression:
624 int offset = readOffset(); 625 int offset = readOffset();
625 return new IsExpression(readExpression(), readDartType()) 626 return new IsExpression(readExpression(), readDartType())
626 ..fileOffset = offset; 627 ..fileOffset = offset;
627 case Tag.AsExpression: 628 case Tag.AsExpression:
628 return new AsExpression(readExpression(), readDartType()); 629 int offset = readOffset();
630 return new AsExpression(readExpression(), readDartType())
631 ..fileOffset = offset;
629 case Tag.StringLiteral: 632 case Tag.StringLiteral:
630 return new StringLiteral(readStringReference()); 633 return new StringLiteral(readStringReference());
631 case Tag.SpecializedIntLiteral: 634 case Tag.SpecializedIntLiteral:
632 int biasedValue = tagByte & Tag.SpecializedPayloadMask; 635 int biasedValue = tagByte & Tag.SpecializedPayloadMask;
633 return new IntLiteral(biasedValue - Tag.SpecializedIntLiteralBias); 636 return new IntLiteral(biasedValue - Tag.SpecializedIntLiteralBias);
634 case Tag.PositiveIntLiteral: 637 case Tag.PositiveIntLiteral:
635 return new IntLiteral(readUInt()); 638 return new IntLiteral(readUInt());
636 case Tag.NegativeIntLiteral: 639 case Tag.NegativeIntLiteral:
637 return new IntLiteral(-readUInt()); 640 return new IntLiteral(-readUInt());
638 case Tag.BigIntLiteral: 641 case Tag.BigIntLiteral:
(...skipping 11 matching lines...) Expand all
650 case Tag.TypeLiteral: 653 case Tag.TypeLiteral:
651 return new TypeLiteral(readDartType()); 654 return new TypeLiteral(readDartType());
652 case Tag.ThisExpression: 655 case Tag.ThisExpression:
653 return new ThisExpression(); 656 return new ThisExpression();
654 case Tag.Rethrow: 657 case Tag.Rethrow:
655 return new Rethrow(); 658 return new Rethrow();
656 case Tag.Throw: 659 case Tag.Throw:
657 int offset = readOffset(); 660 int offset = readOffset();
658 return new Throw(readExpression())..fileOffset = offset; 661 return new Throw(readExpression())..fileOffset = offset;
659 case Tag.ListLiteral: 662 case Tag.ListLiteral:
663 int offset = readOffset();
660 var typeArgument = readDartType(); 664 var typeArgument = readDartType();
661 return new ListLiteral(readExpressionList(), 665 return new ListLiteral(readExpressionList(),
662 typeArgument: typeArgument, isConst: false); 666 typeArgument: typeArgument, isConst: false)..fileOffset = offset;
663 case Tag.ConstListLiteral: 667 case Tag.ConstListLiteral:
668 int offset = readOffset();
664 var typeArgument = readDartType(); 669 var typeArgument = readDartType();
665 return new ListLiteral(readExpressionList(), 670 return new ListLiteral(readExpressionList(),
666 typeArgument: typeArgument, isConst: true); 671 typeArgument: typeArgument, isConst: true)..fileOffset = offset;
667 case Tag.MapLiteral: 672 case Tag.MapLiteral:
668 int offset = readOffset(); 673 int offset = readOffset();
669 var keyType = readDartType(); 674 var keyType = readDartType();
670 var valueType = readDartType(); 675 var valueType = readDartType();
671 return new MapLiteral(readMapEntryList(), 676 return new MapLiteral(readMapEntryList(),
672 keyType: keyType, 677 keyType: keyType,
673 valueType: valueType, 678 valueType: valueType,
674 isConst: false)..fileOffset = offset; 679 isConst: false)..fileOffset = offset;
675 case Tag.ConstMapLiteral: 680 case Tag.ConstMapLiteral:
676 int offset = readOffset(); 681 int offset = readOffset();
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
734 return new EmptyStatement(); 739 return new EmptyStatement();
735 case Tag.AssertStatement: 740 case Tag.AssertStatement:
736 return new AssertStatement(readExpression(), readExpressionOption()); 741 return new AssertStatement(readExpression(), readExpressionOption());
737 case Tag.LabeledStatement: 742 case Tag.LabeledStatement:
738 var label = new LabeledStatement(null); 743 var label = new LabeledStatement(null);
739 labelStack.add(label); 744 labelStack.add(label);
740 label.body = readStatement()..parent = label; 745 label.body = readStatement()..parent = label;
741 labelStack.removeLast(); 746 labelStack.removeLast();
742 return label; 747 return label;
743 case Tag.BreakStatement: 748 case Tag.BreakStatement:
749 int offset = readOffset();
744 int index = readUInt(); 750 int index = readUInt();
745 return new BreakStatement(labelStack[labelStackBase + index]); 751 return new BreakStatement(labelStack[labelStackBase + index])
752 ..fileOffset = offset;
746 case Tag.WhileStatement: 753 case Tag.WhileStatement:
747 return new WhileStatement(readExpression(), readStatement()); 754 return new WhileStatement(readExpression(), readStatement());
748 case Tag.DoStatement: 755 case Tag.DoStatement:
749 return new DoStatement(readStatement(), readExpression()); 756 return new DoStatement(readStatement(), readExpression());
750 case Tag.ForStatement: 757 case Tag.ForStatement:
751 int variableStackHeight = variableStack.length; 758 int variableStackHeight = variableStack.length;
752 var variables = readAndPushVariableDeclarationList(); 759 var variables = readAndPushVariableDeclarationList();
753 var condition = readExpressionOption(); 760 var condition = readExpressionOption();
754 var updates = readExpressionList(); 761 var updates = readExpressionList();
755 var body = readStatement(); 762 var body = readStatement();
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
953 } 960 }
954 961
955 VariableDeclaration readAndPushVariableDeclaration() { 962 VariableDeclaration readAndPushVariableDeclaration() {
956 var variable = readVariableDeclaration(); 963 var variable = readVariableDeclaration();
957 variableStack.add(variable); 964 variableStack.add(variable);
958 return variable; 965 return variable;
959 } 966 }
960 967
961 VariableDeclaration readVariableDeclaration() { 968 VariableDeclaration readVariableDeclaration() {
962 int offset = readOffset(); 969 int offset = readOffset();
970 int fileEqualsOffset = readOffset();
963 int flags = readByte(); 971 int flags = readByte();
964 return new VariableDeclaration(readStringOrNullIfEmpty(), 972 return new VariableDeclaration(readStringOrNullIfEmpty(),
965 type: readDartType(), 973 type: readDartType(),
966 inferredValue: readOptionalInferredValue(), 974 inferredValue: readOptionalInferredValue(),
967 initializer: readExpressionOption(), 975 initializer: readExpressionOption(),
968 isFinal: flags & 0x1 != 0, 976 isFinal: flags & 0x1 != 0,
969 isConst: flags & 0x2 != 0)..fileOffset = offset; 977 isConst: flags & 0x2 != 0)
978 ..fileOffset = offset
979 ..fileEqualsOffset = fileEqualsOffset;
970 } 980 }
971 981
972 int readOffset() { 982 int readOffset() {
973 // Offset is saved as unsigned, 983 // Offset is saved as unsigned,
974 // but actually ranges from -1 and up (thus the -1) 984 // but actually ranges from -1 and up (thus the -1)
975 return readUInt() - 1; 985 return readUInt() - 1;
976 } 986 }
977 } 987 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698