Index: pkg/kernel/binary.md |
diff --git a/pkg/kernel/binary.md b/pkg/kernel/binary.md |
index a8fa1409fe911658d668282eb3e117e2371a6b04..5f3d560e2364238198ac61ac0bdee458ccfdcede 100644 |
--- a/pkg/kernel/binary.md |
+++ b/pkg/kernel/binary.md |
@@ -46,6 +46,12 @@ type List<T> { |
UInt length; |
T[length] items; |
} |
+ |
+// Untagged pairs. |
+type Pair<T0, T1> { |
+ T0 first; |
+ T1 second; |
+} |
``` |
A string table consists of an array of end offsets and a payload array of |
@@ -346,6 +352,7 @@ type InvalidExpression extends Expression { |
type VariableGet extends Expression { |
Byte tag = 20; |
FileOffset fileOffset; |
+ UInt variableDeclarationPosition; // Byte offset in the binary for the variable declaration. |
VariableReference variable; |
} |
@@ -353,11 +360,13 @@ type SpecializedVariableGet extends Expression { |
Byte tag = 128 + N; // Where 0 <= N < 8. |
// Equivalent to a VariableGet with index N. |
FileOffset fileOffset; |
+ UInt variableDeclarationPosition; // Byte offset in the binary for the variable declaration. |
} |
type VariableSet extends Expression { |
Byte tag = 21; |
FileOffset fileOffset; |
+ UInt variableDeclarationPosition; // Byte offset in the binary for the variable declaration. |
VariableReference variable; |
Expression value; |
} |
@@ -365,6 +374,7 @@ type VariableSet extends Expression { |
type SpecializedVariableSet extends Expression { |
Byte tag = 136 + N; // Where 0 <= N < 8. |
FileOffset fileOffset; |
+ UInt variableDeclarationPosition; // Byte offset in the binary for the variable declaration. |
Expression value; |
// Equivalent to VariableSet with index N. |
} |
@@ -429,6 +439,7 @@ type StaticSet extends Expression { |
type Arguments { |
// Note: there is no tag on Arguments. |
+ UInt numArguments; // equals positional.length + named.length |
List<DartType> types; |
List<Expression> positional; |
List<NamedExpression> named; |
@@ -782,8 +793,7 @@ type SwitchStatement extends Statement { |
type SwitchCase { |
// Note: there is no tag on SwitchCase |
- List<Expression> expressions; |
- FileOffset[expressions.length] expressionOffsets; // 1-to-1 with expressions. |
+ List<Pair<FileOffset, Expression>> expressions; |
Byte isDefault; // 1 if default, 0 is not default. |
Statement body; |
} |
@@ -819,6 +829,7 @@ type ReturnStatement extends Statement { |
type TryCatch extends Statement { |
Byte tag = 75; |
Statement body; |
+ Byte anyCatchNeedsStackTrace; // 1 if any catch needs a stacktrace (have a stacktrace variable). |
List<Catch> catches; |
} |
@@ -910,6 +921,7 @@ type FunctionType extends DartType { |
Byte tag = 94; |
List<TypeParameter> typeParameters; |
UInt requiredParameterCount; |
+ UInt totalParameterCount; // positionalParameters.length + namedParameters.length |
List<DartType> positionalParameters; |
List<NamedDartType> namedParameters; |
DartType returnType; |
@@ -949,7 +961,10 @@ type TypeParameterType extends DartType { |
// the class type parameters in a constructor refer to those declared on the |
// class. |
UInt index; |
- |
+ |
+ // Byte offset in the binary for the type declaration. |
+ // Note: This can also be 0, which is a 'forward reference' and is not to be used. |
+ UInt typeParameterPosition; |
Option<DartType> bound; |
} |