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

Side by Side Diff: pkg/compiler/lib/src/serialization/impact_serialization.dart

Issue 1873573004: Serialize TreeElements (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Check only the last test to avoid timeout. 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, 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 4
5 library dart2js.serialization.impact; 5 library dart2js.serialization.impact;
6 6
7 import '../dart_types.dart'; 7 import '../dart_types.dart';
8 import '../common/resolution.dart'; 8 import '../common/resolution.dart';
9 import '../constants/expressions.dart'; 9 import '../constants/expressions.dart';
10 import '../elements/elements.dart'; 10 import '../elements/elements.dart';
11 import '../universe/call_structure.dart'; 11 import '../universe/call_structure.dart';
12 import '../universe/selector.dart'; 12 import '../universe/selector.dart';
13 import '../universe/world_impact.dart'; 13 import '../universe/world_impact.dart';
14 import '../universe/use.dart'; 14 import '../universe/use.dart';
15 import '../util/enumset.dart'; 15 import '../util/enumset.dart';
16 16
17 import 'keys.dart'; 17 import 'keys.dart';
18 import 'serialization.dart'; 18 import 'serialization.dart';
19 import 'serialization_util.dart';
19 20
20 /// Visitor that serializes a [ResolutionImpact] object using an 21 /// Visitor that serializes a [ResolutionImpact] object using an
21 /// [ObjectEncoder]. 22 /// [ObjectEncoder].
22 class ImpactSerializer implements WorldImpactVisitor { 23 class ImpactSerializer implements WorldImpactVisitor {
23 final ObjectEncoder objectEncoder; 24 final ObjectEncoder objectEncoder;
24 final ListEncoder staticUses; 25 final ListEncoder staticUses;
25 final ListEncoder dynamicUses; 26 final ListEncoder dynamicUses;
26 final ListEncoder typeUses; 27 final ListEncoder typeUses;
27 28
28 ImpactSerializer(ObjectEncoder objectEncoder) 29 ImpactSerializer(ObjectEncoder objectEncoder)
(...skipping 24 matching lines...) Expand all
53 useEncoder.setType(Key.TYPE, use.type); 54 useEncoder.setType(Key.TYPE, use.type);
54 useEncoder.setBool(Key.IS_CONST, use.isConstant); 55 useEncoder.setBool(Key.IS_CONST, use.isConstant);
55 useEncoder.setBool(Key.IS_EMPTY, use.isEmpty); 56 useEncoder.setBool(Key.IS_EMPTY, use.isEmpty);
56 } 57 }
57 } 58 }
58 } 59 }
59 60
60 @override 61 @override
61 void visitDynamicUse(DynamicUse dynamicUse) { 62 void visitDynamicUse(DynamicUse dynamicUse) {
62 ObjectEncoder object = dynamicUses.createObject(); 63 ObjectEncoder object = dynamicUses.createObject();
63 object.setEnum(Key.KIND, dynamicUse.selector.kind); 64 serializeSelector(dynamicUse.selector, object);
64
65 object.setInt(
66 Key.ARGUMENTS, dynamicUse.selector.callStructure.argumentCount);
67 object.setStrings(
68 Key.NAMED_ARGUMENTS, dynamicUse.selector.callStructure.namedArguments);
69
70 object.setString(Key.NAME, dynamicUse.selector.memberName.text);
71 object.setBool(Key.IS_SETTER, dynamicUse.selector.memberName.isSetter);
72 if (dynamicUse.selector.memberName.library != null) {
73 object.setElement(Key.LIBRARY, dynamicUse.selector.memberName.library);
74 }
75 } 65 }
76 66
77 @override 67 @override
78 void visitStaticUse(StaticUse staticUse) { 68 void visitStaticUse(StaticUse staticUse) {
79 if (staticUse.element.isGenerativeConstructor && 69 if (staticUse.element.isGenerativeConstructor &&
80 staticUse.element.enclosingClass.isUnnamedMixinApplication) { 70 staticUse.element.enclosingClass.isUnnamedMixinApplication) {
81 // TODO(johnniwinther): Handle static use of forwarding constructors. 71 // TODO(johnniwinther): Handle static use of forwarding constructors.
82 return; 72 return;
83 } 73 }
84 ObjectEncoder object = staticUses.createObject(); 74 ObjectEncoder object = staticUses.createObject();
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 ObjectDecoder object = staticUseDecoder.getObject(index); 119 ObjectDecoder object = staticUseDecoder.getObject(index);
130 StaticUseKind kind = object.getEnum(Key.KIND, StaticUseKind.values); 120 StaticUseKind kind = object.getEnum(Key.KIND, StaticUseKind.values);
131 Element element = object.getElement(Key.ELEMENT); 121 Element element = object.getElement(Key.ELEMENT);
132 staticUses.add(new StaticUse.internal(element, kind)); 122 staticUses.add(new StaticUse.internal(element, kind));
133 } 123 }
134 124
135 ListDecoder dynamicUseDecoder = objectDecoder.getList(Key.DYNAMIC_USES); 125 ListDecoder dynamicUseDecoder = objectDecoder.getList(Key.DYNAMIC_USES);
136 List<DynamicUse> dynamicUses = <DynamicUse>[]; 126 List<DynamicUse> dynamicUses = <DynamicUse>[];
137 for (int index = 0; index < dynamicUseDecoder.length; index++) { 127 for (int index = 0; index < dynamicUseDecoder.length; index++) {
138 ObjectDecoder object = dynamicUseDecoder.getObject(index); 128 ObjectDecoder object = dynamicUseDecoder.getObject(index);
139 SelectorKind kind = object.getEnum(Key.KIND, SelectorKind.values); 129 Selector selector = deserializeSelector(object);
140 int argumentCount = object.getInt(Key.ARGUMENTS); 130 dynamicUses.add(new DynamicUse(selector, null));
141 List<String> namedArguments =
142 object.getStrings(Key.NAMED_ARGUMENTS, isOptional: true);
143 String name = object.getString(Key.NAME);
144 bool isSetter = object.getBool(Key.IS_SETTER);
145 LibraryElement library = object.getElement(Key.LIBRARY, isOptional: true);
146 dynamicUses.add(new DynamicUse(
147 new Selector(kind, new Name(name, library, isSetter: isSetter),
148 new CallStructure(argumentCount, namedArguments)),
149 null));
150 } 131 }
151 132
152 ListDecoder typeUseDecoder = objectDecoder.getList(Key.TYPE_USES); 133 ListDecoder typeUseDecoder = objectDecoder.getList(Key.TYPE_USES);
153 List<TypeUse> typeUses = <TypeUse>[]; 134 List<TypeUse> typeUses = <TypeUse>[];
154 for (int index = 0; index < typeUseDecoder.length; index++) { 135 for (int index = 0; index < typeUseDecoder.length; index++) {
155 ObjectDecoder object = typeUseDecoder.getObject(index); 136 ObjectDecoder object = typeUseDecoder.getObject(index);
156 TypeUseKind kind = object.getEnum(Key.KIND, TypeUseKind.values); 137 TypeUseKind kind = object.getEnum(Key.KIND, TypeUseKind.values);
157 DartType type = object.getType(Key.TYPE); 138 DartType type = object.getType(Key.TYPE);
158 typeUses.add(new TypeUse.internal(type, kind)); 139 typeUses.add(new TypeUse.internal(type, kind));
159 } 140 }
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 constSymbolNames: constSymbolNames, 182 constSymbolNames: constSymbolNames,
202 constantLiterals: constantLiterals, 183 constantLiterals: constantLiterals,
203 dynamicUses: dynamicUses, 184 dynamicUses: dynamicUses,
204 features: features, 185 features: features,
205 listLiterals: listLiterals, 186 listLiterals: listLiterals,
206 mapLiterals: mapLiterals, 187 mapLiterals: mapLiterals,
207 staticUses: staticUses, 188 staticUses: staticUses,
208 typeUses: typeUses); 189 typeUses: typeUses);
209 } 190 }
210 } 191 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/serialization/equivalence.dart ('k') | pkg/compiler/lib/src/serialization/keys.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698