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

Side by Side Diff: pkg/fletchc/lib/src/fletch_class_builder.dart

Issue 1450393002: Roll sdk dependency to 34357cdad108dcba734949bd13bd28c76ea285e0 (Closed) Base URL: git@github.com:dart-lang/fletch.git@master
Patch Set: rebase Created 5 years, 1 month 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 Fletch project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Fletch 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.md file. 3 // BSD-style license that can be found in the LICENSE.md file.
4 4
5 library fletchc.fletch_class_builder; 5 library fletchc.fletch_class_builder;
6 6
7 import 'package:compiler/src/dart_types.dart'; 7 import 'package:compiler/src/dart_types.dart';
8 import 'package:compiler/src/elements/elements.dart'; 8 import 'package:compiler/src/elements/elements.dart';
9 import 'package:compiler/src/universe/universe.dart'; 9 import 'package:compiler/src/universe/selector.dart';
10 import 'package:persistent/persistent.dart'; 10 import 'package:persistent/persistent.dart';
11 11
12 import 'fletch_function_builder.dart'; 12 import 'fletch_function_builder.dart';
13 import 'fletch_context.dart'; 13 import 'fletch_context.dart';
14 import 'fletch_backend.dart'; 14 import 'fletch_backend.dart';
15 15
16 import '../fletch_system.dart'; 16 import '../fletch_system.dart';
17 import '../commands.dart'; 17 import '../commands.dart';
18 18
19 // TODO(ahe): Remove this import. 19 // TODO(ahe): Remove this import.
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 149
150 void updateImplicitAccessors(FletchBackend backend) { 150 void updateImplicitAccessors(FletchBackend backend) {
151 _implicitAccessorTable.clear(); 151 _implicitAccessorTable.clear();
152 // If we don't have an element (stub class), we don't have anything to 152 // If we don't have an element (stub class), we don't have anything to
153 // generate accessors for. 153 // generate accessors for.
154 if (element == null) return; 154 if (element == null) return;
155 // TODO(ajohnsen): Don't do this once dart2js can enqueue field getters in 155 // TODO(ajohnsen): Don't do this once dart2js can enqueue field getters in
156 // CodegenEnqueuer. 156 // CodegenEnqueuer.
157 int fieldIndex = superclassFields; 157 int fieldIndex = superclassFields;
158 element.implementation.forEachInstanceField((enclosing, field) { 158 element.implementation.forEachInstanceField((enclosing, field) {
159 var getter = new Selector.getter(field.name, field.library); 159 var getter = new Selector.getter(field.memberName);
160 int getterSelector = backend.context.toFletchSelector(getter); 160 int getterSelector = backend.context.toFletchSelector(getter);
161 _implicitAccessorTable[getterSelector] = backend.makeGetter(fieldIndex); 161 _implicitAccessorTable[getterSelector] = backend.makeGetter(fieldIndex);
162 162
163 if (!field.isFinal) { 163 if (!field.isFinal) {
164 var setter = new Selector.setter(field.name, field.library); 164 var setter = new Selector.setter(new Name(field.name, field.library));
165 var setterSelector = backend.context.toFletchSelector(setter); 165 var setterSelector = backend.context.toFletchSelector(setter);
166 _implicitAccessorTable[setterSelector] = backend.makeSetter(fieldIndex); 166 _implicitAccessorTable[setterSelector] = backend.makeSetter(fieldIndex);
167 } 167 }
168 168
169 fieldIndex++; 169 fieldIndex++;
170 }); 170 });
171 } 171 }
172 172
173 void createIsFunctionEntry(FletchBackend backend, int arity) { 173 void createIsFunctionEntry(FletchBackend backend, int arity) {
174 int fletchSelector = backend.context.toFletchIsSelector( 174 int fletchSelector = backend.context.toFletchIsSelector(
175 backend.compiler.functionClass); 175 backend.compiler.coreClasses.functionClass);
176 addIsSelector(fletchSelector); 176 addIsSelector(fletchSelector);
177 fletchSelector = backend.context.toFletchIsSelector( 177 fletchSelector = backend.context.toFletchIsSelector(
178 backend.compiler.functionClass, arity); 178 backend.compiler.coreClasses.functionClass, arity);
179 addIsSelector(fletchSelector); 179 addIsSelector(fletchSelector);
180 } 180 }
181 181
182 FletchClass finalizeClass( 182 FletchClass finalizeClass(
183 FletchContext context, 183 FletchContext context,
184 List<Command> commands) { 184 List<Command> commands) {
185 if (isBuiltin) { 185 if (isBuiltin) {
186 int nameId = context.getSymbolId(element.name); 186 int nameId = context.getSymbolId(element.name);
187 commands.add(new PushBuiltinClass(nameId, fields)); 187 commands.add(new PushBuiltinClass(nameId, fields));
188 } else { 188 } else {
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 } 271 }
272 272
273 void updateImplicitAccessors(FletchBackend backend) { 273 void updateImplicitAccessors(FletchBackend backend) {
274 // If we don't have an element (stub class), we don't have anything to 274 // If we don't have an element (stub class), we don't have anything to
275 // generate accessors for. 275 // generate accessors for.
276 if (element == null) return; 276 if (element == null) return;
277 // TODO(ajohnsen): Don't do this once dart2js can enqueue field getters in 277 // TODO(ajohnsen): Don't do this once dart2js can enqueue field getters in
278 // CodegenEnqueuer. 278 // CodegenEnqueuer.
279 int fieldIndex = superclassFields + extraFields; 279 int fieldIndex = superclassFields + extraFields;
280 element.implementation.forEachInstanceField((enclosing, field) { 280 element.implementation.forEachInstanceField((enclosing, field) {
281 var getter = new Selector.getter(field.name, field.library); 281 var getter = new Selector.getter(new Name(field.name, field.library));
282 int getterSelector = backend.context.toFletchSelector(getter); 282 int getterSelector = backend.context.toFletchSelector(getter);
283 _implicitAccessorTable[getterSelector] = backend.makeGetter(fieldIndex); 283 _implicitAccessorTable[getterSelector] = backend.makeGetter(fieldIndex);
284 284
285 if (!field.isFinal) { 285 if (!field.isFinal) {
286 var setter = new Selector.setter(field.name, field.library); 286 var setter = new Selector.setter(new Name(field.name, field.library));
287 var setterSelector = backend.context.toFletchSelector(setter); 287 var setterSelector = backend.context.toFletchSelector(setter);
288 _implicitAccessorTable[setterSelector] = backend.makeSetter(fieldIndex); 288 _implicitAccessorTable[setterSelector] = backend.makeSetter(fieldIndex);
289 } 289 }
290 290
291 fieldIndex++; 291 fieldIndex++;
292 }); 292 });
293 293
294 for (FieldElement field in _removedFields) { 294 for (FieldElement field in _removedFields) {
295 Selector getter = new Selector.getter(field.name, field.library); 295 Selector getter =
296 new Selector.getter(new Name(field.name, field.library));
296 int getterSelector = backend.context.toFletchSelector(getter); 297 int getterSelector = backend.context.toFletchSelector(getter);
297 _removedAccessors.add(getterSelector); 298 _removedAccessors.add(getterSelector);
298 299
299 if (!field.isFinal) { 300 if (!field.isFinal) {
300 Selector setter = new Selector.setter(field.name, field.library); 301 Selector setter =
302 new Selector.setter(new Name(field.name, field.library));
301 int setterSelector = backend.context.toFletchSelector(setter); 303 int setterSelector = backend.context.toFletchSelector(setter);
302 _removedAccessors.add(setterSelector); 304 _removedAccessors.add(setterSelector);
303 } 305 }
304 } 306 }
305 } 307 }
306 308
307 PersistentMap<int, int> computeMethodTable() { 309 PersistentMap<int, int> computeMethodTable() {
308 PersistentMap<int, int> methodTable = klass.methodTable; 310 PersistentMap<int, int> methodTable = klass.methodTable;
309 311
310 for (int selector in _removedAccessors) { 312 for (int selector in _removedAccessors) {
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 } 394 }
393 commands.add(new PushNewArray(afterFields.length * 2)); 395 commands.add(new PushNewArray(afterFields.length * 2));
394 396
395 // Finally, ask the runtime to change the schemas! 397 // Finally, ask the runtime to change the schemas!
396 int fieldCountDelta = afterFields.length - klass.fields.length; 398 int fieldCountDelta = afterFields.length - klass.fields.length;
397 commands.add(new ChangeSchemas(numberOfClasses, fieldCountDelta)); 399 commands.add(new ChangeSchemas(numberOfClasses, fieldCountDelta));
398 400
399 return true; 401 return true;
400 } 402 }
401 } 403 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698