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

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

Issue 2680303002: Kernel debugging; service tests (Closed)
Patch Set: Correct file offset when calling on field (mind the rebase) 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 577 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698