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

Unified Diff: pkg/kernel/lib/binary/ast_to_binary.dart

Issue 2626613002: More offsets in kernel (Closed)
Patch Set: Fixed FileOffset storage for classes in binary.md Created 3 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/kernel/lib/binary/ast_from_binary.dart ('k') | runtime/vm/kernel.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/kernel/lib/binary/ast_to_binary.dart
diff --git a/pkg/kernel/lib/binary/ast_to_binary.dart b/pkg/kernel/lib/binary/ast_to_binary.dart
index 37dd80ea77ba44aec7fce76800ce623f594d03c8..6d3dabda980afd5aa453172db000a029a3974d87 100644
--- a/pkg/kernel/lib/binary/ast_to_binary.dart
+++ b/pkg/kernel/lib/binary/ast_to_binary.dart
@@ -203,11 +203,11 @@ class BinaryPrinter extends Visitor {
}
}
- writeOffset(TreeNode node) {
+ writeOffset(TreeNode node, int offset) {
// TODO(jensj): Delta-encoding.
// File offset ranges from -1 and up,
// but is here saved as unsigned (thus the +1)
- writeUInt30(node.fileOffset + 1);
+ writeUInt30(offset + 1);
}
void visitClassReference(Class node) {
@@ -290,6 +290,7 @@ class BinaryPrinter extends Visitor {
}
if (node.isMixinApplication) {
writeByte(Tag.MixinClass);
+ writeOffset(node, node.fileOffset);
writeByte(flags);
writeStringReference(node.name ?? '');
writeUriReference(node.fileUri ?? '');
@@ -303,6 +304,7 @@ class BinaryPrinter extends Visitor {
_typeParameterIndexer.exit(node.typeParameters);
} else {
writeByte(Tag.NormalClass);
+ writeOffset(node, node.fileOffset);
writeByte(flags);
writeStringReference(node.name ?? '');
writeUriReference(node.fileUri ?? '');
@@ -323,6 +325,8 @@ class BinaryPrinter extends Visitor {
visitConstructor(Constructor node) {
_variableIndexer = new VariableIndexer();
writeByte(Tag.Constructor);
+ writeOffset(node, node.fileOffset);
+ writeOffset(node, node.fileEndOffset);
writeByte(node.flags);
writeName(node.name ?? _emptyName);
writeAnnotationList(node.annotations);
@@ -338,6 +342,8 @@ class BinaryPrinter extends Visitor {
visitProcedure(Procedure node) {
_variableIndexer = new VariableIndexer();
writeByte(Tag.Procedure);
+ writeOffset(node, node.fileOffset);
+ writeOffset(node, node.fileEndOffset);
writeByte(node.kind.index);
writeByte(node.flags);
writeName(node.name ?? '');
@@ -350,7 +356,8 @@ class BinaryPrinter extends Visitor {
visitField(Field node) {
_variableIndexer = new VariableIndexer();
writeByte(Tag.Field);
- writeOffset(node);
+ writeOffset(node, node.fileOffset);
+ writeOffset(node, node.fileEndOffset);
writeByte(node.flags);
writeName(node.name ?? '');
writeUriReference(node.fileUri ?? '');
@@ -397,7 +404,10 @@ class BinaryPrinter extends Visitor {
_switchCaseIndexer = new SwitchCaseIndexer();
// Note: FunctionNode has no tag.
_typeParameterIndexer.enter(node.typeParameters);
+ writeOffset(node, node.fileOffset);
+ writeOffset(node, node.fileEndOffset);
writeByte(node.asyncMarker.index);
+ writeByte(node.debuggable ? 1 : 0);
writeNodeList(node.typeParameters);
writeUInt30(node.requiredParameterCount);
writeVariableDeclarationList(node.positionalParameters);
@@ -422,8 +432,10 @@ class BinaryPrinter extends Visitor {
if (index & Tag.SpecializedPayloadMask == index &&
node.promotedType == null) {
writeByte(Tag.SpecializedVariableGet + index);
+ writeOffset(node, node.fileOffset);
} else {
writeByte(Tag.VariableGet);
+ writeOffset(node, node.fileOffset);
writeUInt30(_variableIndexer[node.variable]);
writeOptionalNode(node.promotedType);
}
@@ -434,9 +446,11 @@ class BinaryPrinter extends Visitor {
int index = _variableIndexer[node.variable];
if (index & Tag.SpecializedPayloadMask == index) {
writeByte(Tag.SpecializedVariableSet + index);
+ writeOffset(node, node.fileOffset);
writeNode(node.value);
} else {
writeByte(Tag.VariableSet);
+ writeOffset(node, node.fileOffset);
writeUInt30(_variableIndexer[node.variable]);
writeNode(node.value);
}
@@ -444,7 +458,7 @@ class BinaryPrinter extends Visitor {
visitPropertyGet(PropertyGet node) {
writeByte(Tag.PropertyGet);
- writeOffset(node);
+ writeOffset(node, node.fileOffset);
writeNode(node.receiver);
writeName(node.name);
writeMemberReference(node.interfaceTarget, allowNull: true);
@@ -452,7 +466,7 @@ class BinaryPrinter extends Visitor {
visitPropertySet(PropertySet node) {
writeByte(Tag.PropertySet);
- writeOffset(node);
+ writeOffset(node, node.fileOffset);
writeNode(node.receiver);
writeName(node.name);
writeNode(node.value);
@@ -487,7 +501,7 @@ class BinaryPrinter extends Visitor {
visitStaticGet(StaticGet node) {
writeByte(Tag.StaticGet);
- writeOffset(node);
+ writeOffset(node, node.fileOffset);
writeMemberReference(node.target);
}
@@ -499,7 +513,7 @@ class BinaryPrinter extends Visitor {
visitMethodInvocation(MethodInvocation node) {
writeByte(Tag.MethodInvocation);
- writeOffset(node);
+ writeOffset(node, node.fileOffset);
writeNode(node.receiver);
writeName(node.name);
writeNode(node.arguments);
@@ -508,7 +522,7 @@ class BinaryPrinter extends Visitor {
visitSuperMethodInvocation(SuperMethodInvocation node) {
writeByte(Tag.SuperMethodInvocation);
- writeOffset(node);
+ writeOffset(node, node.fileOffset);
writeName(node.name);
writeNode(node.arguments);
writeMemberReference(node.interfaceTarget, allowNull: true);
@@ -523,7 +537,7 @@ class BinaryPrinter extends Visitor {
visitStaticInvocation(StaticInvocation node) {
writeByte(node.isConst ? Tag.ConstStaticInvocation : Tag.StaticInvocation);
- writeOffset(node);
+ writeOffset(node, node.fileOffset);
writeMemberReference(node.target);
writeNode(node.arguments);
}
@@ -532,7 +546,7 @@ class BinaryPrinter extends Visitor {
writeByte(node.isConst
? Tag.ConstConstructorInvocation
: Tag.ConstructorInvocation);
- writeOffset(node);
+ writeOffset(node, node.fileOffset);
writeMemberReference(node.target);
writeNode(node.arguments);
}
@@ -580,11 +594,13 @@ class BinaryPrinter extends Visitor {
visitStringConcatenation(StringConcatenation node) {
writeByte(Tag.StringConcatenation);
+ writeOffset(node, node.fileOffset);
writeNodeList(node.expressions);
}
visitIsExpression(IsExpression node) {
writeByte(Tag.IsExpression);
+ writeOffset(node, node.fileOffset);
writeNode(node.operand);
writeNode(node.type);
}
@@ -655,7 +671,7 @@ class BinaryPrinter extends Visitor {
visitThrow(Throw node) {
writeByte(Tag.Throw);
- writeOffset(node);
+ writeOffset(node, node.fileOffset);
writeNode(node.expression);
}
@@ -667,6 +683,7 @@ class BinaryPrinter extends Visitor {
visitMapLiteral(MapLiteral node) {
writeByte(node.isConst ? Tag.ConstMapLiteral : Tag.MapLiteral);
+ writeOffset(node, node.fileOffset);
writeNode(node.keyType);
writeNode(node.valueType);
writeNodeList(node.entries);
@@ -801,6 +818,7 @@ class BinaryPrinter extends Visitor {
visitReturnStatement(ReturnStatement node) {
writeByte(Tag.ReturnStatement);
+ writeOffset(node, node.fileOffset);
writeOptionalNode(node.expression);
}
@@ -828,6 +846,7 @@ class BinaryPrinter extends Visitor {
visitYieldStatement(YieldStatement node) {
writeByte(Tag.YieldStatement);
+ writeOffset(node, node.fileOffset);
writeByte(node.flags);
writeNode(node.expression);
}
@@ -838,6 +857,7 @@ class BinaryPrinter extends Visitor {
}
void writeVariableDeclaration(VariableDeclaration node) {
+ writeOffset(node, node.fileOffset);
writeByte(node.flags);
writeStringReference(node.name ?? '');
writeNode(node.type);
@@ -863,6 +883,7 @@ class BinaryPrinter extends Visitor {
visitFunctionDeclaration(FunctionDeclaration node) {
writeByte(Tag.FunctionDeclaration);
+ writeOffset(node, node.fileOffset);
writeVariableDeclaration(node.variable);
writeNode(node.function);
}
« no previous file with comments | « pkg/kernel/lib/binary/ast_from_binary.dart ('k') | runtime/vm/kernel.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698