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

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

Issue 2854393002: [kernel] [partial] Streaming of kernel binary without AST nodes (Closed)
Patch Set: Address comments; small fixes; rebased. Created 3 years, 7 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/ast.dart ('k') | pkg/kernel/lib/binary/ast_to_binary.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/kernel/lib/binary/ast_from_binary.dart
diff --git a/pkg/kernel/lib/binary/ast_from_binary.dart b/pkg/kernel/lib/binary/ast_from_binary.dart
index e5af2a3c15128688b872bfda65d12f65ce669224..db11ce40f4a7c4407325d0faa7505ab603fd04c8 100644
--- a/pkg/kernel/lib/binary/ast_from_binary.dart
+++ b/pkg/kernel/lib/binary/ast_from_binary.dart
@@ -665,19 +665,23 @@ class BinaryBuilder {
return new InvalidExpression();
case Tag.VariableGet:
int offset = readOffset();
+ readUInt(); // offset of the variable declaration in the binary.
return new VariableGet(readVariableReference(), readDartTypeOption())
..fileOffset = offset;
case Tag.SpecializedVariableGet:
int index = tagByte & Tag.SpecializedPayloadMask;
int offset = readOffset();
+ readUInt(); // offset of the variable declaration in the binary.
return new VariableGet(variableStack[index])..fileOffset = offset;
case Tag.VariableSet:
int offset = readOffset();
+ readUInt(); // offset of the variable declaration in the binary.
return new VariableSet(readVariableReference(), readExpression())
..fileOffset = offset;
case Tag.SpecializedVariableSet:
int index = tagByte & Tag.SpecializedPayloadMask;
int offset = readOffset();
+ readUInt(); // offset of the variable declaration in the binary.
return new VariableSet(variableStack[index], readExpression())
..fileOffset = offset;
case Tag.PropertyGet:
@@ -949,10 +953,12 @@ class BinaryBuilder {
switchCaseStack.addAll(cases);
for (int i = 0; i < cases.length; ++i) {
var caseNode = cases[i];
- _fillTreeNodeList(caseNode.expressions, readExpression, caseNode);
- caseNode.expressionOffsets.length = caseNode.expressions.length;
- for (int i = 0; i < caseNode.expressionOffsets.length; ++i) {
+ int length = readUInt();
+ caseNode.expressions.length = length;
+ caseNode.expressionOffsets.length = length;
+ for (int i = 0; i < length; ++i) {
caseNode.expressionOffsets[i] = readOffset();
+ caseNode.expressions[i] = readExpression()..parent = caseNode;
}
caseNode.isDefault = readByte() == 1;
caseNode.body = readStatement()..parent = caseNode;
@@ -969,7 +975,9 @@ class BinaryBuilder {
int offset = readOffset();
return new ReturnStatement(readExpressionOption())..fileOffset = offset;
case Tag.TryCatch:
- return new TryCatch(readStatement(), readCatchList());
+ Statement body = readStatement();
+ readByte(); // whether any catch needs a stacktrace.
+ return new TryCatch(body, readCatchList());
case Tag.TryFinally:
return new TryFinally(readStatement(), readStatement());
case Tag.YieldStatement:
@@ -1070,8 +1078,10 @@ class BinaryBuilder {
int typeParameterStackHeight = typeParameterStack.length;
var typeParameters = readAndPushTypeParameterList();
var requiredParameterCount = readUInt();
+ var totalParameterCount = readUInt();
var positional = readDartTypeList();
var named = readNamedTypeList();
+ assert(positional.length + named.length == totalParameterCount);
var returnType = readDartType();
typeParameterStack.length = typeParameterStackHeight;
return new FunctionType(positional, returnType,
@@ -1084,6 +1094,7 @@ class BinaryBuilder {
return new FunctionType(positional, returnType);
case Tag.TypeParameterType:
int index = readUInt();
+ readUInt(); // offset of the TypeParameter declaration in the binary.
var bound = readDartTypeOption();
return new TypeParameterType(typeParameterStack[index], bound);
default:
@@ -1117,9 +1128,11 @@ class BinaryBuilder {
}
Arguments readArguments() {
+ var numArguments = readUInt();
var typeArguments = readDartTypeList();
var positional = readExpressionList();
var named = readNamedExpressionList();
+ assert(numArguments == positional.length + named.length);
return new Arguments(positional, types: typeArguments, named: named);
}
« 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