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

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

Issue 2680303002: Kernel debugging; service tests (Closed)
Patch Set: Changes based on feedback. Also fixed regress_28443_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:
639 return new IntLiteral(int.parse(readStringReference())); 642 return new IntLiteral(int.parse(readStringReference()));
640 case Tag.DoubleLiteral: 643 case Tag.DoubleLiteral:
641 return new DoubleLiteral(double.parse(readStringReference())); 644 return new DoubleLiteral(double.parse(readStringReference()));
642 case Tag.TrueLiteral: 645 case Tag.TrueLiteral:
643 return new BoolLiteral(true); 646 return new BoolLiteral(true);
644 case Tag.FalseLiteral: 647 case Tag.FalseLiteral:
645 return new BoolLiteral(false); 648 return new BoolLiteral(false);
646 case Tag.NullLiteral: 649 case Tag.NullLiteral:
647 return new NullLiteral(); 650 return new NullLiteral();
648 case Tag.SymbolLiteral: 651 case Tag.SymbolLiteral:
649 return new SymbolLiteral(readStringReference()); 652 return new SymbolLiteral(readStringReference());
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 int offset = readOffset();
659 return new Rethrow()..fileOffset = offset;
656 case Tag.Throw: 660 case Tag.Throw:
657 int offset = readOffset(); 661 int offset = readOffset();
658 return new Throw(readExpression())..fileOffset = offset; 662 return new Throw(readExpression())..fileOffset = offset;
659 case Tag.ListLiteral: 663 case Tag.ListLiteral:
664 int offset = readOffset();
660 var typeArgument = readDartType(); 665 var typeArgument = readDartType();
661 return new ListLiteral(readExpressionList(), 666 return new ListLiteral(readExpressionList(),
662 typeArgument: typeArgument, isConst: false); 667 typeArgument: typeArgument, isConst: false)..fileOffset = offset;
663 case Tag.ConstListLiteral: 668 case Tag.ConstListLiteral:
669 int offset = readOffset();
664 var typeArgument = readDartType(); 670 var typeArgument = readDartType();
665 return new ListLiteral(readExpressionList(), 671 return new ListLiteral(readExpressionList(),
666 typeArgument: typeArgument, isConst: true); 672 typeArgument: typeArgument, isConst: true)..fileOffset = offset;
667 case Tag.MapLiteral: 673 case Tag.MapLiteral:
668 int offset = readOffset(); 674 int offset = readOffset();
669 var keyType = readDartType(); 675 var keyType = readDartType();
670 var valueType = readDartType(); 676 var valueType = readDartType();
671 return new MapLiteral(readMapEntryList(), 677 return new MapLiteral(readMapEntryList(),
672 keyType: keyType, 678 keyType: keyType,
673 valueType: valueType, 679 valueType: valueType,
674 isConst: false)..fileOffset = offset; 680 isConst: false)..fileOffset = offset;
675 case Tag.ConstMapLiteral: 681 case Tag.ConstMapLiteral:
676 int offset = readOffset(); 682 int offset = readOffset();
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
734 return new EmptyStatement(); 740 return new EmptyStatement();
735 case Tag.AssertStatement: 741 case Tag.AssertStatement:
736 return new AssertStatement(readExpression(), readExpressionOption()); 742 return new AssertStatement(readExpression(), readExpressionOption());
737 case Tag.LabeledStatement: 743 case Tag.LabeledStatement:
738 var label = new LabeledStatement(null); 744 var label = new LabeledStatement(null);
739 labelStack.add(label); 745 labelStack.add(label);
740 label.body = readStatement()..parent = label; 746 label.body = readStatement()..parent = label;
741 labelStack.removeLast(); 747 labelStack.removeLast();
742 return label; 748 return label;
743 case Tag.BreakStatement: 749 case Tag.BreakStatement:
750 int offset = readOffset();
744 int index = readUInt(); 751 int index = readUInt();
745 return new BreakStatement(labelStack[labelStackBase + index]); 752 return new BreakStatement(labelStack[labelStackBase + index])
753 ..fileOffset = offset;
746 case Tag.WhileStatement: 754 case Tag.WhileStatement:
747 return new WhileStatement(readExpression(), readStatement()); 755 return new WhileStatement(readExpression(), readStatement());
748 case Tag.DoStatement: 756 case Tag.DoStatement:
749 return new DoStatement(readStatement(), readExpression()); 757 return new DoStatement(readStatement(), readExpression());
750 case Tag.ForStatement: 758 case Tag.ForStatement:
751 int variableStackHeight = variableStack.length; 759 int variableStackHeight = variableStack.length;
752 var variables = readAndPushVariableDeclarationList(); 760 var variables = readAndPushVariableDeclarationList();
753 var condition = readExpressionOption(); 761 var condition = readExpressionOption();
754 var updates = readExpressionList(); 762 var updates = readExpressionList();
755 var body = readStatement(); 763 var body = readStatement();
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
953 } 961 }
954 962
955 VariableDeclaration readAndPushVariableDeclaration() { 963 VariableDeclaration readAndPushVariableDeclaration() {
956 var variable = readVariableDeclaration(); 964 var variable = readVariableDeclaration();
957 variableStack.add(variable); 965 variableStack.add(variable);
958 return variable; 966 return variable;
959 } 967 }
960 968
961 VariableDeclaration readVariableDeclaration() { 969 VariableDeclaration readVariableDeclaration() {
962 int offset = readOffset(); 970 int offset = readOffset();
971 int fileEqualsOffset = readOffset();
963 int flags = readByte(); 972 int flags = readByte();
964 return new VariableDeclaration(readStringOrNullIfEmpty(), 973 return new VariableDeclaration(readStringOrNullIfEmpty(),
965 type: readDartType(), 974 type: readDartType(),
966 inferredValue: readOptionalInferredValue(), 975 inferredValue: readOptionalInferredValue(),
967 initializer: readExpressionOption(), 976 initializer: readExpressionOption(),
968 isFinal: flags & 0x1 != 0, 977 isFinal: flags & 0x1 != 0,
969 isConst: flags & 0x2 != 0)..fileOffset = offset; 978 isConst: flags & 0x2 != 0)
979 ..fileOffset = offset
980 ..fileEqualsOffset = fileEqualsOffset;
970 } 981 }
971 982
972 int readOffset() { 983 int readOffset() {
973 // Offset is saved as unsigned, 984 // Offset is saved as unsigned,
974 // but actually ranges from -1 and up (thus the -1) 985 // but actually ranges from -1 and up (thus the -1)
975 return readUInt() - 1; 986 return readUInt() - 1;
976 } 987 }
977 } 988 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698