| Index: pkg/dartino_compiler/lib/src/dartino_class_builder.dart
|
| diff --git a/pkg/fletchc/lib/src/fletch_class_builder.dart b/pkg/dartino_compiler/lib/src/dartino_class_builder.dart
|
| similarity index 78%
|
| rename from pkg/fletchc/lib/src/fletch_class_builder.dart
|
| rename to pkg/dartino_compiler/lib/src/dartino_class_builder.dart
|
| index 85e8dd44a5e75e74cf6fe2fefb8982228e033f8d..d897e1c2f60373db3615eb6d2c7fa419aab34f89 100644
|
| --- a/pkg/fletchc/lib/src/fletch_class_builder.dart
|
| +++ b/pkg/dartino_compiler/lib/src/dartino_class_builder.dart
|
| @@ -2,28 +2,28 @@
|
| // for details. All rights reserved. Use of this source code is governed by a
|
| // BSD-style license that can be found in the LICENSE.md file.
|
|
|
| -library fletchc.fletch_class_builder;
|
| +library dartino_compiler.dartino_class_builder;
|
|
|
| import 'package:compiler/src/dart_types.dart';
|
| import 'package:compiler/src/elements/elements.dart';
|
| import 'package:compiler/src/universe/selector.dart';
|
| import 'package:persistent/persistent.dart';
|
|
|
| -import 'fletch_function_builder.dart';
|
| -import 'fletch_context.dart';
|
| -import 'fletch_backend.dart';
|
| +import 'dartino_function_builder.dart';
|
| +import 'dartino_context.dart';
|
| +import 'dartino_backend.dart';
|
|
|
| -import '../fletch_system.dart';
|
| +import '../dartino_system.dart';
|
| import '../vm_commands.dart';
|
|
|
| // TODO(ahe): Remove this import.
|
| -import '../incremental/fletchc_incremental.dart' show
|
| +import '../incremental/dartino_compiler_incremental.dart' show
|
| IncrementalCompilationFailed;
|
|
|
| -abstract class FletchClassBuilder {
|
| +abstract class DartinoClassBuilder {
|
| int get classId;
|
| ClassElement get element;
|
| - FletchClassBuilder get superclass;
|
| + DartinoClassBuilder get superclass;
|
| int get fields;
|
|
|
| /**
|
| @@ -36,8 +36,8 @@ abstract class FletchClassBuilder {
|
|
|
| bool get hasSuperClass => superclass != null;
|
|
|
| - void addToMethodTable(int selector, FletchFunctionBuilder functionBuilder);
|
| - void removeFromMethodTable(FletchFunctionBase function);
|
| + void addToMethodTable(int selector, DartinoFunctionBuilder functionBuilder);
|
| + void removeFromMethodTable(DartinoFunctionBase function);
|
|
|
| void addField(FieldElement field);
|
| void removeField(FieldElement field);
|
| @@ -45,14 +45,14 @@ abstract class FletchClassBuilder {
|
| // Add a selector for is-tests. The selector is only to be hit with the
|
| // InvokeTest bytecode, as the function is not guraranteed to be valid.
|
| void addIsSelector(int selector);
|
| - void createIsFunctionEntry(FletchBackend backend, int arity);
|
| - void updateImplicitAccessors(FletchBackend backend);
|
| + void createIsFunctionEntry(DartinoBackend backend, int arity);
|
| + void updateImplicitAccessors(DartinoBackend backend);
|
|
|
| - FletchClass finalizeClass(
|
| - FletchContext context,
|
| + DartinoClass finalizeClass(
|
| + DartinoContext context,
|
| List<VmCommand> commands);
|
|
|
| - // The method table for a class is a mapping from Fletch's integer
|
| + // The method table for a class is a mapping from Dartino's integer
|
| // selectors to method ids. It contains all methods defined for a
|
| // class including the implicit accessors. The returned map is not sorted.
|
| // TODO(ajohnsen): Remove once not used by feature_test anymore.
|
| @@ -76,10 +76,10 @@ void forEachField(ClassElement c, void action(FieldElement field)) {
|
| }
|
| }
|
|
|
| -class FletchNewClassBuilder extends FletchClassBuilder {
|
| +class DartinoNewClassBuilder extends DartinoClassBuilder {
|
| final int classId;
|
| final ClassElement element;
|
| - final FletchClassBuilder superclass;
|
| + final DartinoClassBuilder superclass;
|
| final bool isBuiltin;
|
|
|
| // The extra fields are synthetic fields not represented in any Dart source
|
| @@ -88,9 +88,9 @@ class FletchNewClassBuilder extends FletchClassBuilder {
|
| final int extraFields;
|
|
|
| final Map<int, int> _implicitAccessorTable = <int, int>{};
|
| - final Map<int, FletchFunctionBase> _methodTable = <int, FletchFunctionBase>{};
|
| + final Map<int, DartinoFunctionBase> _methodTable = <int, DartinoFunctionBase>{};
|
|
|
| - FletchNewClassBuilder(
|
| + DartinoNewClassBuilder(
|
| this.classId,
|
| this.element,
|
| this.superclass,
|
| @@ -107,7 +107,7 @@ class FletchNewClassBuilder extends FletchClassBuilder {
|
| return count;
|
| }
|
|
|
| - void addToMethodTable(int selector, FletchFunctionBuilder functionBuilder) {
|
| + void addToMethodTable(int selector, DartinoFunctionBuilder functionBuilder) {
|
| _methodTable[selector] = functionBuilder;
|
| }
|
|
|
| @@ -122,7 +122,7 @@ class FletchNewClassBuilder extends FletchClassBuilder {
|
| "Can't remove a field ($field) from a new class ($element)");
|
| }
|
|
|
| - void removeFromMethodTable(FletchFunctionBase function) {
|
| + void removeFromMethodTable(DartinoFunctionBase function) {
|
| throw new StateError("Methods should not be removed from a new class.");
|
| }
|
|
|
| @@ -137,7 +137,7 @@ class FletchNewClassBuilder extends FletchClassBuilder {
|
| ..addAll(_methodTable.keys);
|
| for (int selector in selectors) {
|
| if (_methodTable.containsKey(selector)) {
|
| - FletchFunctionBase function = _methodTable[selector];
|
| + DartinoFunctionBase function = _methodTable[selector];
|
| int functionId = function == null ? 0 : function.functionId;
|
| result = result.insert(selector, functionId);
|
| } else {
|
| @@ -147,7 +147,7 @@ class FletchNewClassBuilder extends FletchClassBuilder {
|
| return result;
|
| }
|
|
|
| - void updateImplicitAccessors(FletchBackend backend) {
|
| + void updateImplicitAccessors(DartinoBackend backend) {
|
| _implicitAccessorTable.clear();
|
| // If we don't have an element (stub class), we don't have anything to
|
| // generate accessors for.
|
| @@ -157,12 +157,12 @@ class FletchNewClassBuilder extends FletchClassBuilder {
|
| int fieldIndex = superclassFields;
|
| element.implementation.forEachInstanceField((enclosing, field) {
|
| var getter = new Selector.getter(field.memberName);
|
| - int getterSelector = backend.context.toFletchSelector(getter);
|
| + int getterSelector = backend.context.toDartinoSelector(getter);
|
| _implicitAccessorTable[getterSelector] = backend.makeGetter(fieldIndex);
|
|
|
| if (!field.isFinal) {
|
| var setter = new Selector.setter(new Name(field.name, field.library));
|
| - var setterSelector = backend.context.toFletchSelector(setter);
|
| + var setterSelector = backend.context.toDartinoSelector(setter);
|
| _implicitAccessorTable[setterSelector] = backend.makeSetter(fieldIndex);
|
| }
|
|
|
| @@ -170,17 +170,17 @@ class FletchNewClassBuilder extends FletchClassBuilder {
|
| });
|
| }
|
|
|
| - void createIsFunctionEntry(FletchBackend backend, int arity) {
|
| - int fletchSelector = backend.context.toFletchIsSelector(
|
| + void createIsFunctionEntry(DartinoBackend backend, int arity) {
|
| + int dartinoSelector = backend.context.toDartinoIsSelector(
|
| backend.compiler.coreClasses.functionClass);
|
| - addIsSelector(fletchSelector);
|
| - fletchSelector = backend.context.toFletchIsSelector(
|
| + addIsSelector(dartinoSelector);
|
| + dartinoSelector = backend.context.toDartinoIsSelector(
|
| backend.compiler.coreClasses.functionClass, arity);
|
| - addIsSelector(fletchSelector);
|
| + addIsSelector(dartinoSelector);
|
| }
|
|
|
| - FletchClass finalizeClass(
|
| - FletchContext context,
|
| + DartinoClass finalizeClass(
|
| + DartinoContext context,
|
| List<VmCommand> commands) {
|
| if (isBuiltin) {
|
| int nameId = context.getSymbolId(element.name);
|
| @@ -206,9 +206,9 @@ class FletchNewClassBuilder extends FletchClassBuilder {
|
| fieldsList[index++] = field;
|
| });
|
|
|
| - return new FletchClass(
|
| + return new DartinoClass(
|
| classId,
|
| - // TODO(ajohnsen): Take name in FletchClassBuilder constructor.
|
| + // TODO(ajohnsen): Take name in DartinoClassBuilder constructor.
|
| element == null ? '<internal>' : element.name,
|
| element,
|
| superclass == null ? -1 : superclass.classId,
|
| @@ -217,16 +217,16 @@ class FletchNewClassBuilder extends FletchClassBuilder {
|
| fieldsList);
|
| }
|
|
|
| - String toString() => "FletchClassBuilder($element, $classId)";
|
| + String toString() => "DartinoClassBuilder($element, $classId)";
|
| }
|
|
|
| -class FletchPatchClassBuilder extends FletchClassBuilder {
|
| - final FletchClass klass;
|
| - final FletchClassBuilder superclass;
|
| +class DartinoPatchClassBuilder extends DartinoClassBuilder {
|
| + final DartinoClass klass;
|
| + final DartinoClassBuilder superclass;
|
|
|
| final Map<int, int> _implicitAccessorTable = <int, int>{};
|
| - final Map<int, FletchFunctionBase> _newMethods = <int, FletchFunctionBase>{};
|
| - final Set<FletchFunctionBase> _removedMethods = new Set<FletchFunctionBase>();
|
| + final Map<int, DartinoFunctionBase> _newMethods = <int, DartinoFunctionBase>{};
|
| + final Set<DartinoFunctionBase> _removedMethods = new Set<DartinoFunctionBase>();
|
| final Set<FieldElement> _removedFields = new Set<FieldElement>();
|
| final List<int> _removedAccessors = <int>[];
|
| bool _fieldsChanged = false;
|
| @@ -236,17 +236,17 @@ class FletchPatchClassBuilder extends FletchClassBuilder {
|
| int extraFields = 0;
|
|
|
| // TODO(ajohnsen): Can the element change?
|
| - FletchPatchClassBuilder(this.klass, this.superclass);
|
| + DartinoPatchClassBuilder(this.klass, this.superclass);
|
|
|
| int get classId => klass.classId;
|
| ClassElement get element => klass.element;
|
| int get fields => klass.fields.length;
|
|
|
| - void addToMethodTable(int selector, FletchFunctionBuilder functionBuilder) {
|
| + void addToMethodTable(int selector, DartinoFunctionBuilder functionBuilder) {
|
| _newMethods[selector] = functionBuilder;
|
| }
|
|
|
| - void removeFromMethodTable(FletchFunctionBase function) {
|
| + void removeFromMethodTable(DartinoFunctionBase function) {
|
| assert(function != null);
|
| _removedMethods.add(function);
|
| }
|
| @@ -266,11 +266,11 @@ class FletchPatchClassBuilder extends FletchClassBuilder {
|
| // TODO(ajohnsen): Implement.
|
| }
|
|
|
| - void createIsFunctionEntry(FletchBackend backend, int arity) {
|
| + void createIsFunctionEntry(DartinoBackend backend, int arity) {
|
| // TODO(ajohnsen): Implement.
|
| }
|
|
|
| - void updateImplicitAccessors(FletchBackend backend) {
|
| + void updateImplicitAccessors(DartinoBackend backend) {
|
| // If we don't have an element (stub class), we don't have anything to
|
| // generate accessors for.
|
| if (element == null) return;
|
| @@ -279,12 +279,12 @@ class FletchPatchClassBuilder extends FletchClassBuilder {
|
| int fieldIndex = superclassFields + extraFields;
|
| element.implementation.forEachInstanceField((enclosing, field) {
|
| var getter = new Selector.getter(new Name(field.name, field.library));
|
| - int getterSelector = backend.context.toFletchSelector(getter);
|
| + int getterSelector = backend.context.toDartinoSelector(getter);
|
| _implicitAccessorTable[getterSelector] = backend.makeGetter(fieldIndex);
|
|
|
| if (!field.isFinal) {
|
| var setter = new Selector.setter(new Name(field.name, field.library));
|
| - var setterSelector = backend.context.toFletchSelector(setter);
|
| + var setterSelector = backend.context.toDartinoSelector(setter);
|
| _implicitAccessorTable[setterSelector] = backend.makeSetter(fieldIndex);
|
| }
|
|
|
| @@ -294,13 +294,13 @@ class FletchPatchClassBuilder extends FletchClassBuilder {
|
| for (FieldElement field in _removedFields) {
|
| Selector getter =
|
| new Selector.getter(new Name(field.name, field.library));
|
| - int getterSelector = backend.context.toFletchSelector(getter);
|
| + int getterSelector = backend.context.toDartinoSelector(getter);
|
| _removedAccessors.add(getterSelector);
|
|
|
| if (!field.isFinal) {
|
| Selector setter =
|
| new Selector.setter(new Name(field.name, field.library));
|
| - int setterSelector = backend.context.toFletchSelector(setter);
|
| + int setterSelector = backend.context.toDartinoSelector(setter);
|
| _removedAccessors.add(setterSelector);
|
| }
|
| }
|
| @@ -313,7 +313,7 @@ class FletchPatchClassBuilder extends FletchClassBuilder {
|
| methodTable = methodTable.delete(selector);
|
| }
|
|
|
| - for (FletchFunctionBase function in _removedMethods) {
|
| + for (DartinoFunctionBase function in _removedMethods) {
|
| methodTable.forEachKeyValue((int selector, int functionId) {
|
| if (functionId == function.functionId) {
|
| methodTable = methodTable.delete(selector);
|
| @@ -326,15 +326,15 @@ class FletchPatchClassBuilder extends FletchClassBuilder {
|
| methodTable = methodTable.insert(selector, functionId);
|
| });
|
|
|
| - _newMethods.forEach((int selector, FletchFunctionBase function) {
|
| + _newMethods.forEach((int selector, DartinoFunctionBase function) {
|
| methodTable = methodTable.insert(selector, function.functionId);
|
| });
|
|
|
| return methodTable;
|
| }
|
|
|
| - FletchClass finalizeClass(
|
| - FletchContext context,
|
| + DartinoClass finalizeClass(
|
| + DartinoContext context,
|
| List<VmCommand> commands) {
|
| // TODO(ajohnsen): We need to figure out when to do this. It should be after
|
| // we have updated class fields, but before we hit 'computeSystem'.
|
| @@ -353,9 +353,9 @@ class FletchPatchClassBuilder extends FletchClassBuilder {
|
| List<FieldElement> fieldsList = <FieldElement>[];
|
| forEachField(element, (field) { fieldsList.add(field); });
|
|
|
| - return new FletchClass(
|
| + return new DartinoClass(
|
| classId,
|
| - // TODO(ajohnsen): Take name in FletchClassBuilder constructor.
|
| + // TODO(ajohnsen): Take name in DartinoClassBuilder constructor.
|
| element == null ? '<internal>' : element.name,
|
| element,
|
| superclass == null ? -1 : superclass.classId,
|
|
|