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

Unified Diff: pkg/compiler/lib/src/serialization/resolved_ast_serialization.dart

Issue 1896843002: Store and serialize NativeBehavior in TreeElements. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments. Created 4 years, 8 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
Index: pkg/compiler/lib/src/serialization/resolved_ast_serialization.dart
diff --git a/pkg/compiler/lib/src/serialization/resolved_ast_serialization.dart b/pkg/compiler/lib/src/serialization/resolved_ast_serialization.dart
index 0d1efa37258d7e5f89b9ad1add55bd990b83166f..c15f2439e7aad4451221fa6765744f4215c31501 100644
--- a/pkg/compiler/lib/src/serialization/resolved_ast_serialization.dart
+++ b/pkg/compiler/lib/src/serialization/resolved_ast_serialization.dart
@@ -56,13 +56,15 @@ enum AstKind {
/// Serializer for [ResolvedAst]s.
class ResolvedAstSerializer extends Visitor {
+ final SerializerPlugin nativeDataSerializer;
final ObjectEncoder objectEncoder;
final ResolvedAst resolvedAst;
final AstIndexComputer indexComputer = new AstIndexComputer();
final Map<int, ObjectEncoder> nodeData = <int, ObjectEncoder>{};
ListEncoder _nodeDataEncoder;
- ResolvedAstSerializer(this.objectEncoder, this.resolvedAst);
+ ResolvedAstSerializer(
+ this.objectEncoder, this.resolvedAst, this.nativeDataSerializer);
AstElement get element => resolvedAst.element;
@@ -239,6 +241,11 @@ class ResolvedAstSerializer extends Visitor {
getNodeDataEncoder(node).setInt(
Key.JUMP_TARGET_DEFINITION, getJumpTargetId(jumpTargetDefinition));
}
+ var nativeData = elements.getNativeData(node);
+ if (nativeData != null) {
+ nativeDataSerializer.onData(
+ nativeData, getNodeDataEncoder(node).createObject(Key.NATIVE));
+ }
node.visitChildren(this);
}
@@ -305,14 +312,18 @@ class ResolvedAstDeserializer {
/// Deserializes the [ResolvedAst] for [element] from [objectDecoder].
/// [parsing] and [getBeginToken] are used for parsing the [Node] for
/// [element] from its source code.
- static ResolvedAst deserialize(Element element, ObjectDecoder objectDecoder,
- ParsingContext parsing, Token getBeginToken(Uri uri, int charOffset)) {
+ static ResolvedAst deserialize(
+ Element element,
+ ObjectDecoder objectDecoder,
+ ParsingContext parsing,
+ Token getBeginToken(Uri uri, int charOffset),
+ DeserializerPlugin nativeDataDeserializer) {
ResolvedAstKind kind =
objectDecoder.getEnum(Key.KIND, ResolvedAstKind.values);
switch (kind) {
case ResolvedAstKind.PARSED:
- return deserializeParsed(
- element, objectDecoder, parsing, getBeginToken);
+ return deserializeParsed(element, objectDecoder, parsing, getBeginToken,
+ nativeDataDeserializer);
case ResolvedAstKind.DEFAULT_CONSTRUCTOR:
case ResolvedAstKind.FORWARDING_CONSTRUCTOR:
return new SynthesizedResolvedAst(element, kind);
@@ -325,7 +336,8 @@ class ResolvedAstDeserializer {
Element element,
ObjectDecoder objectDecoder,
ParsingContext parsing,
- Token getBeginToken(Uri uri, int charOffset)) {
+ Token getBeginToken(Uri uri, int charOffset),
+ DeserializerPlugin nativeDataDeserializer) {
CompilationUnitElement compilationUnit = element.compilationUnit;
DiagnosticReporter reporter = parsing.reporter;
@@ -600,6 +612,14 @@ class ResolvedAstDeserializer {
if (targetLabelId != null) {
elements.registerTargetLabel(node, labelDefinitions[targetLabelId]);
}
+ ObjectDecoder nativeDataDecoder =
+ objectDecoder.getObject(Key.NATIVE, isOptional: true);
+ if (nativeDataDecoder != null) {
+ var nativeData = nativeDataDeserializer.onData(nativeDataDecoder);
+ if (nativeData != null) {
+ elements.registerNativeData(node, nativeData);
+ }
+ }
}
}
return new ParsedResolvedAst(element, root, body, elements);
« no previous file with comments | « pkg/compiler/lib/src/serialization/modelz.dart ('k') | pkg/compiler/lib/src/serialization/serialization.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698