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

Unified Diff: pkg/dartino_compiler/lib/src/dartino_backend.dart

Issue 1659163007: Rename fletch -> dartino (Closed) Base URL: https://github.com/dartino/sdk.git@master
Patch Set: address comments Created 4 years, 11 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/dartino_compiler/lib/src/dartino_backend.dart
diff --git a/pkg/fletchc/lib/src/fletch_backend.dart b/pkg/dartino_compiler/lib/src/dartino_backend.dart
similarity index 81%
rename from pkg/fletchc/lib/src/fletch_backend.dart
rename to pkg/dartino_compiler/lib/src/dartino_backend.dart
index 9470a09cfa631f8c34db352e197cfcc1fdad0399..cedd360e3723aa726f29e8f7d9ec0a9e08752b38 100644
--- a/pkg/fletchc/lib/src/fletch_backend.dart
+++ b/pkg/dartino_compiler/lib/src/dartino_backend.dart
@@ -2,7 +2,7 @@
// 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_backend;
+library dartino_compiler.dartino_backend;
import 'dart:async' show
Future;
@@ -104,25 +104,25 @@ import 'package:compiler/src/library_loader.dart' show
import 'package:persistent/persistent.dart' show
PersistentMap;
-import 'fletch_function_builder.dart' show
- FletchFunctionBuilder;
+import 'dartino_function_builder.dart' show
+ DartinoFunctionBuilder;
-import 'fletch_class_builder.dart' show
- FletchClassBuilder;
+import 'dartino_class_builder.dart' show
+ DartinoClassBuilder;
-import 'fletch_system_builder.dart' show
- FletchSystemBuilder;
+import 'dartino_system_builder.dart' show
+ DartinoSystemBuilder;
import '../incremental_backend.dart' show
- IncrementalFletchBackend;
+ IncrementalDartinoBackend;
-import 'fletch_enqueuer.dart' show
- FletchEnqueueTask,
+import 'dartino_enqueuer.dart' show
+ DartinoEnqueueTask,
shouldReportEnqueuingOfElement;
-import 'fletch_registry.dart' show
+import 'dartino_registry.dart' show
ClosureKind,
- FletchRegistry;
+ DartinoRegistry;
import 'diagnostic.dart' show
throwInternalError;
@@ -142,8 +142,8 @@ import 'debug_info.dart';
import 'debug_info_constructor_codegen.dart';
import 'debug_info_function_codegen.dart';
import 'debug_info_lazy_field_initializer_codegen.dart';
-import 'fletch_context.dart';
-import 'fletch_selector.dart';
+import 'dartino_context.dart';
+import 'dartino_selector.dart';
import 'function_codegen.dart';
import 'lazy_field_initializer_codegen.dart';
import 'constructor_codegen.dart';
@@ -151,41 +151,41 @@ import 'closure_environment.dart';
import '../bytecodes.dart';
import '../vm_commands.dart';
-import '../fletch_system.dart';
+import '../dartino_system.dart';
import 'package:compiler/src/common/resolution.dart';
-const FletchSystem BASE_FLETCH_SYSTEM = const FletchSystem(
- const PersistentMap<int, FletchFunction>(),
- const PersistentMap<Element, FletchFunction>(),
- const PersistentMap<ConstructorElement, FletchFunction>(),
+const DartinoSystem BASE_DARTINO_SYSTEM = const DartinoSystem(
+ const PersistentMap<int, DartinoFunction>(),
+ const PersistentMap<Element, DartinoFunction>(),
+ const PersistentMap<ConstructorElement, DartinoFunction>(),
const PersistentMap<int, int>(),
- const PersistentMap<int, FletchClass>(),
- const PersistentMap<ClassElement, FletchClass>(),
- const PersistentMap<int, FletchConstant>(),
- const PersistentMap<ConstantValue, FletchConstant>(),
+ const PersistentMap<int, DartinoClass>(),
+ const PersistentMap<ClassElement, DartinoClass>(),
+ const PersistentMap<int, DartinoConstant>(),
+ const PersistentMap<ConstantValue, DartinoConstant>(),
const PersistentMap<int, String>(),
const PersistentMap<int, int>(),
const PersistentMap<int, int>(),
- const PersistentMap<ParameterStubSignature, FletchFunction>());
+ const PersistentMap<ParameterStubSignature, DartinoFunction>());
-class FletchBackend extends Backend
- implements IncrementalFletchBackend {
+class DartinoBackend extends Backend
+ implements IncrementalDartinoBackend {
static const String growableListName = '_GrowableList';
static const String constantListName = '_ConstantList';
static const String constantByteListName = '_ConstantByteList';
static const String constantMapName = '_ConstantMap';
- static const String fletchNoSuchMethodErrorName = 'FletchNoSuchMethodError';
+ static const String dartinoNoSuchMethodErrorName = 'DartinoNoSuchMethodError';
static const String noSuchMethodName = '_noSuchMethod';
static const String noSuchMethodTrampolineName = '_noSuchMethodTrampoline';
- final FletchContext context;
+ final DartinoContext context;
final DartConstantTask constantCompilerTask;
/// Constructors that need to have an initilizer compiled. See
/// [compilePendingConstructorInitializers].
- final Queue<FletchFunctionBuilder> pendingConstructorInitializers =
- new Queue<FletchFunctionBuilder>();
+ final Queue<DartinoFunctionBuilder> pendingConstructorInitializers =
+ new Queue<DartinoFunctionBuilder>();
final Set<FunctionElement> externals = new Set<FunctionElement>();
@@ -193,90 +193,90 @@ class FletchBackend extends Backend
final Map<ClassElement, Set<ClassElement>> directSubclasses =
<ClassElement, Set<ClassElement>>{};
- /// Set of classes that have special meaning to the Fletch VM. They're
+ /// Set of classes that have special meaning to the Dartino VM. They're
/// created using [PushBuiltinClass] instead of [PushNewClass].
- // TODO(ahe): Move this to FletchSystem?
+ // TODO(ahe): Move this to DartinoSystem?
final Set<ClassElement> builtinClasses = new Set<ClassElement>();
- // TODO(ahe): This should be invalidated by a new [FletchSystem].
+ // TODO(ahe): This should be invalidated by a new [DartinoSystem].
final Map<MemberElement, ClosureEnvironment> closureEnvironments =
<MemberElement, ClosureEnvironment>{};
- // TODO(ahe): This should be moved to [FletchSystem].
- final Map<FunctionElement, FletchClassBuilder> closureClasses =
- <FunctionElement, FletchClassBuilder>{};
+ // TODO(ahe): This should be moved to [DartinoSystem].
+ final Map<FunctionElement, DartinoClassBuilder> closureClasses =
+ <FunctionElement, DartinoClassBuilder>{};
- // TODO(ahe): This should be moved to [FletchSystem].
- final Map<FieldElement, FletchFunctionBuilder> lazyFieldInitializers =
- <FieldElement, FletchFunctionBuilder>{};
+ // TODO(ahe): This should be moved to [DartinoSystem].
+ final Map<FieldElement, DartinoFunctionBuilder> lazyFieldInitializers =
+ <FieldElement, DartinoFunctionBuilder>{};
- // TODO(ahe): This should be moved to [FletchSystem].
- Map<FletchClassBuilder, FletchFunctionBuilder> tearoffFunctions;
+ // TODO(ahe): This should be moved to [DartinoSystem].
+ Map<DartinoClassBuilder, DartinoFunctionBuilder> tearoffFunctions;
- FletchCompilerImplementation get compiler => super.compiler;
+ DartinoCompilerImplementation get compiler => super.compiler;
- LibraryElement fletchSystemLibrary;
- LibraryElement fletchFFILibrary;
+ LibraryElement dartinoSystemLibrary;
+ LibraryElement dartinoFFILibrary;
LibraryElement collectionLibrary;
LibraryElement mathLibrary;
LibraryElement get asyncLibrary => compiler.asyncLibrary;
- LibraryElement fletchLibrary;
+ LibraryElement dartinoLibrary;
- FunctionElement fletchSystemEntry;
+ FunctionElement dartinoSystemEntry;
- FunctionElement fletchExternalInvokeMain;
+ FunctionElement dartinoExternalInvokeMain;
- FunctionElement fletchExternalYield;
+ FunctionElement dartinoExternalYield;
- FunctionElement fletchExternalNativeError;
+ FunctionElement dartinoExternalNativeError;
- FunctionElement fletchExternalCoroutineChange;
+ FunctionElement dartinoExternalCoroutineChange;
- FunctionElement fletchUnresolved;
- FunctionElement fletchCompileError;
+ FunctionElement dartinoUnresolved;
+ FunctionElement dartinoCompileError;
- FletchClassBuilder compiledObjectClass;
+ DartinoClassBuilder compiledObjectClass;
ClassElement smiClass;
ClassElement mintClass;
ClassElement growableListClass;
- ClassElement fletchNoSuchMethodErrorClass;
+ ClassElement dartinoNoSuchMethodErrorClass;
ClassElement bigintClass;
ClassElement uint32DigitsClass;
- FletchClassBuilder compiledClosureClass;
+ DartinoClassBuilder compiledClosureClass;
/// Holds a reference to the class Coroutine if it exists.
ClassElement coroutineClass;
- FletchSystemBuilder systemBuilder;
+ DartinoSystemBuilder systemBuilder;
final Set<FunctionElement> alwaysEnqueue = new Set<FunctionElement>();
- FletchImpactTransformer impactTransformer;
+ DartinoImpactTransformer impactTransformer;
- FletchBackend(FletchCompilerImplementation compiler)
+ DartinoBackend(DartinoCompilerImplementation compiler)
: this.context = compiler.context,
this.constantCompilerTask = new DartConstantTask(compiler),
- this.systemBuilder = new FletchSystemBuilder(BASE_FLETCH_SYSTEM),
+ this.systemBuilder = new DartinoSystemBuilder(BASE_DARTINO_SYSTEM),
super(compiler) {
- this.impactTransformer = new FletchImpactTransformer(this);
+ this.impactTransformer = new DartinoImpactTransformer(this);
}
- void newSystemBuilder(FletchSystem predecessorSystem) {
- systemBuilder = new FletchSystemBuilder(predecessorSystem);
+ void newSystemBuilder(DartinoSystem predecessorSystem) {
+ systemBuilder = new DartinoSystemBuilder(predecessorSystem);
}
- FletchClassBuilder registerClassElement(ClassElement element) {
+ DartinoClassBuilder registerClassElement(ClassElement element) {
if (element == null) return null;
assert(element.isDeclaration);
- FletchClassBuilder classBuilder =
+ DartinoClassBuilder classBuilder =
systemBuilder.lookupClassBuilderByElement(element);
if (classBuilder != null) return classBuilder;
directSubclasses[element] = new Set<ClassElement>();
- FletchClassBuilder superclass = registerClassElement(element.superclass);
+ DartinoClassBuilder superclass = registerClassElement(element.superclass);
if (superclass != null) {
Set<ClassElement> subclasses = directSubclasses[element.superclass];
subclasses.add(element);
@@ -284,7 +284,7 @@ class FletchBackend extends Backend
classBuilder = systemBuilder.newClassBuilder(
element, superclass, builtinClasses.contains(element));
- // TODO(ajohnsen): Currently, the FletchRegistry does not enqueue fields.
+ // TODO(ajohnsen): Currently, the DartinoRegistry does not enqueue fields.
// This is a workaround, where we basically add getters for all fields.
classBuilder.updateImplicitAccessors(this);
@@ -297,9 +297,9 @@ class FletchBackend extends Backend
return classBuilder;
}
- FletchClassBuilder createCallableStubClass(
- int fields, int arity, FletchClassBuilder superclass) {
- FletchClassBuilder classBuilder = systemBuilder.newClassBuilder(
+ DartinoClassBuilder createCallableStubClass(
+ int fields, int arity, DartinoClassBuilder superclass) {
+ DartinoClassBuilder classBuilder = systemBuilder.newClassBuilder(
null, superclass, false, extraFields: fields);
classBuilder.createIsFunctionEntry(this, arity);
return classBuilder;
@@ -318,12 +318,12 @@ class FletchBackend extends Backend
bool methodNeedsRti(FunctionElement function) => false;
void enqueueHelpers(ResolutionEnqueuer world, Registry incomingRegistry) {
- FletchRegistry registry = new FletchRegistry(compiler);
+ DartinoRegistry registry = new DartinoRegistry(compiler);
compiler.patchAnnotationClass = patchAnnotationClass;
bool hasMissingHelpers = false;
loadHelperMethods((String name) {
- LibraryElement library = fletchSystemLibrary;
+ LibraryElement library = dartinoSystemLibrary;
Element helper = library.findLocal(name);
// TODO(ahe): Make it cleaner.
if (helper != null && helper.isAbstractField) {
@@ -343,11 +343,11 @@ class FletchBackend extends Backend
"Some implementation methods are missing, see details above");
}
world.registerStaticUse(
- new StaticUse.staticInvoke(fletchCompileError, CallStructure.ONE_ARG));
+ new StaticUse.staticInvoke(dartinoCompileError, CallStructure.ONE_ARG));
world.registerStaticUse(
- new StaticUse.staticInvoke(fletchSystemEntry, CallStructure.ONE_ARG));
+ new StaticUse.staticInvoke(dartinoSystemEntry, CallStructure.ONE_ARG));
world.registerStaticUse(
- new StaticUse.staticInvoke(fletchUnresolved, CallStructure.ONE_ARG));
+ new StaticUse.staticInvoke(dartinoUnresolved, CallStructure.ONE_ARG));
loadHelperClasses((
String name,
@@ -421,17 +421,17 @@ class FletchBackend extends Backend
return helper;
}
- fletchSystemEntry = findHelper('entry');
- fletchExternalInvokeMain = findExternal('invokeMain');
- fletchExternalYield = findExternal('yield');
- fletchExternalCoroutineChange = findExternal('coroutineChange');
- fletchExternalNativeError = findExternal('nativeError');
- fletchUnresolved = findExternal('unresolved');
- fletchCompileError = findExternal('compileError');
+ dartinoSystemEntry = findHelper('entry');
+ dartinoExternalInvokeMain = findExternal('invokeMain');
+ dartinoExternalYield = findExternal('yield');
+ dartinoExternalCoroutineChange = findExternal('coroutineChange');
+ dartinoExternalNativeError = findExternal('nativeError');
+ dartinoUnresolved = findExternal('unresolved');
+ dartinoCompileError = findExternal('compileError');
}
void loadHelperClasses(
- FletchClassBuilder loadClass(
+ DartinoClassBuilder loadClass(
String name,
LibraryElement library,
{bool builtin})) {
@@ -445,31 +445,31 @@ class FletchBackend extends Backend
loadClass("_OneByteString", compiler.coreLibrary, builtin: true);
loadClass("_TwoByteString", compiler.coreLibrary, builtin: true);
// TODO(ahe): Register _ConstantList through ResolutionCallbacks.
- loadClass(constantListName, fletchSystemLibrary, builtin: true);
- loadClass(constantByteListName, fletchSystemLibrary, builtin: true);
- loadClass(constantMapName, fletchSystemLibrary, builtin: true);
+ loadClass(constantListName, dartinoSystemLibrary, builtin: true);
+ loadClass(constantByteListName, dartinoSystemLibrary, builtin: true);
+ loadClass(constantMapName, dartinoSystemLibrary, builtin: true);
loadClass("_DoubleImpl", compiler.coreLibrary, builtin: true);
loadClass("Null", compiler.coreLibrary, builtin: true);
loadClass("bool", compiler.coreLibrary, builtin: true);
loadClass("StackOverflowError", compiler.coreLibrary, builtin: true);
- loadClass("Port", fletchLibrary, builtin: true);
- loadClass("Process", fletchLibrary, builtin: true);
- loadClass("ProcessDeath", fletchLibrary, builtin: true);
- loadClass("ForeignMemory", fletchFFILibrary, builtin: true);
+ loadClass("Port", dartinoLibrary, builtin: true);
+ loadClass("Process", dartinoLibrary, builtin: true);
+ loadClass("ProcessDeath", dartinoLibrary, builtin: true);
+ loadClass("ForeignMemory", dartinoFFILibrary, builtin: true);
if (context.enableBigint) {
bigintClass = loadClass("_Bigint", compiler.coreLibrary)?.element;
uint32DigitsClass =
loadClass("_Uint32Digits", compiler.coreLibrary)?.element;
}
growableListClass =
- loadClass(growableListName, fletchSystemLibrary)?.element;
- fletchNoSuchMethodErrorClass =
- loadClass(fletchNoSuchMethodErrorName,
- fletchSystemLibrary,
+ loadClass(growableListName, dartinoSystemLibrary)?.element;
+ dartinoNoSuchMethodErrorClass =
+ loadClass(dartinoNoSuchMethodErrorName,
+ dartinoSystemLibrary,
builtin: true)?.element;
// This class is optional.
- coroutineClass = fletchSystemLibrary.implementation.find("Coroutine");
+ coroutineClass = dartinoSystemLibrary.implementation.find("Coroutine");
if (coroutineClass != null) {
coroutineClass.ensureResolved(compiler.resolution);
}
@@ -477,7 +477,7 @@ class FletchBackend extends Backend
void onElementResolved(Element element, TreeElements elements) {
if (alwaysEnqueue.contains(element)) {
- var registry = new FletchRegistry(compiler);
+ var registry = new DartinoRegistry(compiler);
if (element.isStatic || element.isTopLevel) {
registry.registerStaticUse(new StaticUse.foreignUse(element));
} else {
@@ -495,11 +495,11 @@ class FletchBackend extends Backend
/// compile-time constant instance of [patchAnnotationClass].
ClassElement get patchAnnotationClass {
// TODO(ahe): Introduce a proper constant class to identify constants. For
- // now, we simply put "const patch = "patch";" in fletch._system.
+ // now, we simply put "const patch = "patch";" in dartino._system.
return super.stringImplementation;
}
- FletchClassBuilder createClosureClass(
+ DartinoClassBuilder createClosureClass(
FunctionElement closure,
ClosureEnvironment closureEnvironment) {
return closureClasses.putIfAbsent(closure, () {
@@ -523,8 +523,8 @@ class FletchBackend extends Backend
* If [function] is an instance member, the class will have one field, the
* instance.
*/
- FletchClassBuilder createTearoffClass(FletchFunctionBase function) {
- FletchClassBuilder tearoffClass =
+ DartinoClassBuilder createTearoffClass(DartinoFunctionBase function) {
+ DartinoClassBuilder tearoffClass =
systemBuilder.getTearoffClassBuilder(function, compiledClosureClass);
if (tearoffClass != null) return tearoffClass;
FunctionSignature signature = function.signature;
@@ -534,7 +534,7 @@ class FletchBackend extends Backend
signature.parameterCount,
compiledClosureClass);
- FletchFunctionBuilder functionBuilder =
+ DartinoFunctionBuilder functionBuilder =
systemBuilder.newTearOff(function, tearoffClass.classId);
BytecodeAssembler assembler = functionBuilder.assembler;
@@ -563,10 +563,10 @@ class FletchBackend extends Backend
String symbol = context.getCallSymbol(signature);
int id = context.getSymbolId(symbol);
- int fletchSelector = FletchSelector.encodeMethod(
+ int dartinoSelector = DartinoSelector.encodeMethod(
id,
signature.parameterCount);
- tearoffClass.addToMethodTable(fletchSelector, functionBuilder);
+ tearoffClass.addToMethodTable(dartinoSelector, functionBuilder);
if (!function.isInstanceMember) return tearoffClass;
@@ -575,13 +575,13 @@ class FletchBackend extends Backend
if (classElement == null) return tearoffClass;
// Create == function that tests for equality.
- int isSelector = context.toFletchTearoffIsSelector(
+ int isSelector = context.toDartinoTearoffIsSelector(
function.name,
classElement);
tearoffClass.addIsSelector(isSelector);
- FletchFunctionBuilder equal = systemBuilder.newFunctionBuilder(
- FletchFunctionKind.NORMAL,
+ DartinoFunctionBuilder equal = systemBuilder.newFunctionBuilder(
+ DartinoFunctionKind.NORMAL,
2);
BytecodeLabel isFalse = new BytecodeLabel();
@@ -606,21 +606,21 @@ class FletchBackend extends Backend
..methodEnd();
id = context.getSymbolId("==");
- int equalsSelector = FletchSelector.encodeMethod(id, 1);
+ int equalsSelector = DartinoSelector.encodeMethod(id, 1);
tearoffClass.addToMethodTable(equalsSelector, equal);
// Create hashCode getter. We simply add the object hashCode and the
// method id of the tearoff'ed function.
- FletchFunctionBuilder hashCode = systemBuilder.newFunctionBuilder(
- FletchFunctionKind.ACCESSOR,
+ DartinoFunctionBuilder hashCode = systemBuilder.newFunctionBuilder(
+ DartinoFunctionKind.ACCESSOR,
1);
- int hashCodeSelector = FletchSelector.encodeGetter(
+ int hashCodeSelector = DartinoSelector.encodeGetter(
context.getSymbolId("hashCode"));
// TODO(ajohnsen): Use plus, we plus is always enqueued. Consider using
// xor when we have a way to enqueue it from here.
- int plusSelector = FletchSelector.encodeMethod(
+ int plusSelector = DartinoSelector.encodeMethod(
context.getSymbolId("+"), 1);
hashCode.assembler
@@ -637,14 +637,14 @@ class FletchBackend extends Backend
return tearoffClass;
}
- FletchFunctionBase getFunctionForElement(FunctionElement element) {
+ DartinoFunctionBase getFunctionForElement(FunctionElement element) {
assert(element.memberContext == element);
- FletchFunctionBase function =
+ DartinoFunctionBase function =
systemBuilder.lookupFunctionByElement(element);
if (function != null) return function;
- return createFletchFunctionBuilder(element);
+ return createDartinoFunctionBuilder(element);
}
/// Get the constructor initializer function for [constructor]. The function
@@ -652,40 +652,40 @@ class FletchBackend extends Backend
///
/// See [compilePendingConstructorInitializers] for an overview of
/// constructor intializers and constructor bodies.
- FletchFunctionBase getConstructorInitializerFunction(
+ DartinoFunctionBase getConstructorInitializerFunction(
ConstructorElement constructor) {
assert(constructor.isDeclaration);
constructor = constructor.implementation;
- FletchFunctionBase base =
+ DartinoFunctionBase base =
systemBuilder.lookupConstructorInitializerByElement(constructor);
if (base != null) return base;
- FletchFunctionBuilder builder = systemBuilder.newConstructorInitializer(
+ DartinoFunctionBuilder builder = systemBuilder.newConstructorInitializer(
constructor);
pendingConstructorInitializers.addFirst(builder);
return builder;
}
- FletchFunctionBuilder createFletchFunctionBuilder(FunctionElement function) {
+ DartinoFunctionBuilder createDartinoFunctionBuilder(FunctionElement function) {
assert(function.memberContext == function);
- FletchClassBuilder holderClass;
+ DartinoClassBuilder holderClass;
if (function.isInstanceMember || function.isGenerativeConstructor) {
ClassElement enclosingClass = function.enclosingClass.declaration;
holderClass = registerClassElement(enclosingClass);
}
- return internalCreateFletchFunctionBuilder(
+ return internalCreateDartinoFunctionBuilder(
function,
function.name,
holderClass);
}
- FletchFunctionBuilder internalCreateFletchFunctionBuilder(
+ DartinoFunctionBuilder internalCreateDartinoFunctionBuilder(
FunctionElement function,
String name,
- FletchClassBuilder holderClass) {
- FletchFunctionBuilder functionBuilder =
+ DartinoClassBuilder holderClass) {
+ DartinoFunctionBuilder functionBuilder =
systemBuilder.lookupFunctionBuilderByElement(function.declaration);
if (functionBuilder != null) return functionBuilder;
@@ -699,18 +699,18 @@ class FletchBackend extends Backend
implementation.functionSignature,
memberOf,
kind: function.isAccessor
- ? FletchFunctionKind.ACCESSOR
- : FletchFunctionKind.NORMAL,
+ ? DartinoFunctionKind.ACCESSOR
+ : DartinoFunctionKind.NORMAL,
mapByElement: function.declaration);
}
- ClassDebugInfo createClassDebugInfo(FletchClass klass) {
+ ClassDebugInfo createClassDebugInfo(DartinoClass klass) {
return new ClassDebugInfo(klass);
}
DebugInfo createDebugInfo(
- FletchFunction function,
- FletchSystem currentSystem) {
+ DartinoFunction function,
+ DartinoSystem currentSystem) {
DebugInfo debugInfo = new DebugInfo(function);
AstElement element = function.element;
if (element == null) return debugInfo;
@@ -721,8 +721,8 @@ class FletchBackend extends Backend
element,
elements);
CodegenVisitor codegen;
- FletchFunctionBuilder builder =
- new FletchFunctionBuilder.fromFletchFunction(function);
+ DartinoFunctionBuilder builder =
+ new DartinoFunctionBuilder.fromDartinoFunction(function);
if (function.isLazyFieldInitializer) {
codegen = new DebugInfoLazyFieldInitializerCodegen(
debugInfo,
@@ -735,7 +735,7 @@ class FletchBackend extends Backend
} else if (function.isInitializerList) {
ClassElement enclosingClass = element.enclosingClass;
// TODO(ajohnsen): Don't depend on the class builder.
- FletchClassBuilder classBuilder =
+ DartinoClassBuilder classBuilder =
systemBuilder.lookupClassBuilderByElement(enclosingClass.declaration);
codegen = new DebugInfoConstructorCodegen(
debugInfo,
@@ -781,13 +781,13 @@ class FletchBackend extends Backend
"Method [codegen] not supported, use [compileElement] instead");
}
- /// Invoked by [FletchEnqueuer] once per element that needs to be compiled.
+ /// Invoked by [DartinoEnqueuer] once per element that needs to be compiled.
///
/// This is used to generate the bytecodes for [declaration].
void compileElement(
AstElement declaration,
TreeElements treeElements,
- FletchRegistry registry) {
+ DartinoRegistry registry) {
AstElement element = declaration.implementation;
compiler.reporter.withCurrentElement(element, () {
assert(declaration.isDeclaration);
@@ -811,7 +811,7 @@ class FletchBackend extends Backend
});
}
- /// Invoked by [FletchEnqueuer] once per [selector] that may invoke
+ /// Invoked by [DartinoEnqueuer] once per [selector] that may invoke
/// [declaration].
///
/// This is used to generate stubs for [declaration].
@@ -819,7 +819,7 @@ class FletchBackend extends Backend
AstElement declaration,
Selector selector,
TreeElements treeElements,
- FletchRegistry registry) {
+ DartinoRegistry registry) {
AstElement element = declaration.implementation;
compiler.reporter.withCurrentElement(element, () {
assert(declaration.isDeclaration);
@@ -827,7 +827,7 @@ class FletchBackend extends Backend
if (!element.isInstanceMember && !isLocalFunction(element)) {
// No stub needed. Optional arguments are handled at call-site.
} else if (element.isFunction) {
- FletchFunctionBase function =
+ DartinoFunctionBase function =
systemBuilder.lookupFunctionByElement(element.declaration);
CallStructure callStructure = selector.callStructure;
FunctionSignature signature = function.signature;
@@ -845,7 +845,7 @@ class FletchBackend extends Backend
context.compiler.reportVerboseInfo(
element, 'Adding stub for $selector');
}
- FletchFunctionBase stub = createParameterStub(function, selector);
+ DartinoFunctionBase stub = createParameterStub(function, selector);
patchClassWithStub(
stub, selector, function.memberOf, isLocalFunction(element));
}
@@ -859,7 +859,7 @@ class FletchBackend extends Backend
});
}
- /// Invoked by [FletchEnqueuer] once per `call` [selector] that may invoke
+ /// Invoked by [DartinoEnqueuer] once per `call` [selector] that may invoke
/// [declaration] as an implicit closure (for example, a tear-off).
///
/// This is used to generate parameter stubs for the closures.
@@ -867,7 +867,7 @@ class FletchBackend extends Backend
AstElement declaration,
Selector selector,
TreeElements treeElements,
- FletchRegistry registry,
+ DartinoRegistry registry,
ClosureKind kind) {
AstElement element = declaration.implementation;
compiler.reporter.withCurrentElement(element, () {
@@ -876,11 +876,11 @@ class FletchBackend extends Backend
context.compiler.reportVerboseInfo(
element, 'Need tear-off parameter stub $selector');
}
- FletchFunctionBase function =
+ DartinoFunctionBase function =
systemBuilder.lookupFunctionByElement(element.declaration);
if (function == null) {
compiler.reporter.internalError(
- element, "Has no fletch function, but used as tear-off");
+ element, "Has no dartino function, but used as tear-off");
}
if (selector.isGetter) {
// This is a special tear-off getter.
@@ -935,7 +935,7 @@ class FletchBackend extends Backend
}
if (!isExactParameterMatch(function.signature, selector.callStructure)) {
- FletchFunctionBase stub = createParameterStub(function, selector);
+ DartinoFunctionBase stub = createParameterStub(function, selector);
patchClassWithStub(stub, selector, function.memberOf, true);
}
});
@@ -944,22 +944,22 @@ class FletchBackend extends Backend
void codegenFunction(
FunctionElement function,
TreeElements elements,
- FletchRegistry registry) {
- registry.registerStaticUse(new StaticUse.foreignUse(fletchSystemEntry));
+ DartinoRegistry registry) {
+ registry.registerStaticUse(new StaticUse.foreignUse(dartinoSystemEntry));
ClosureEnvironment closureEnvironment = createClosureEnvironment(
function,
elements);
- FletchFunctionBuilder functionBuilder;
+ DartinoFunctionBuilder functionBuilder;
if (function.memberContext != function) {
- functionBuilder = internalCreateFletchFunctionBuilder(
+ functionBuilder = internalCreateDartinoFunctionBuilder(
function,
Identifiers.call,
createClosureClass(function, closureEnvironment));
} else {
- functionBuilder = createFletchFunctionBuilder(function);
+ functionBuilder = createDartinoFunctionBuilder(function);
}
FunctionCodegen codegen = new FunctionCodegen(
@@ -991,14 +991,14 @@ class FletchBackend extends Backend
SelectorKind kind = SelectorKind.Method;
if (function.isGetter) kind = SelectorKind.Getter;
if (function.isSetter) kind = SelectorKind.Setter;
- int fletchSelector = FletchSelector.encode(id, kind, arity);
- FletchClassBuilder classBuilder =
+ int dartinoSelector = DartinoSelector.encode(id, kind, arity);
+ DartinoClassBuilder classBuilder =
systemBuilder.lookupClassBuilder(functionBuilder.memberOf);
- classBuilder.addToMethodTable(fletchSelector, functionBuilder);
+ classBuilder.addToMethodTable(dartinoSelector, functionBuilder);
// Inject method into all mixin usages.
getMixinApplicationsOfClass(classBuilder).forEach((ClassElement usage) {
- FletchClassBuilder compiledUsage = registerClassElement(usage);
- compiledUsage.addToMethodTable(fletchSelector, functionBuilder);
+ DartinoClassBuilder compiledUsage = registerClassElement(usage);
+ compiledUsage.addToMethodTable(dartinoSelector, functionBuilder);
});
}
@@ -1008,7 +1008,7 @@ class FletchBackend extends Backend
}
}
- List<ClassElement> getMixinApplicationsOfClass(FletchClassBuilder builder) {
+ List<ClassElement> getMixinApplicationsOfClass(DartinoClassBuilder builder) {
ClassElement element = builder.element;
if (element == null) return [];
List<ClassElement> mixinUsage =
@@ -1030,7 +1030,7 @@ class FletchBackend extends Backend
ClassElement enclosingClass = function.enclosingClass;
if (enclosingClass != null) name = '${enclosingClass.name}$name';
- FletchNativeDescriptor descriptor = context.nativeDescriptors[name];
+ DartinoNativeDescriptor descriptor = context.nativeDescriptors[name];
if (descriptor == null) {
throw "Unsupported native function: $name";
}
@@ -1045,12 +1045,12 @@ class FletchBackend extends Backend
FunctionElement coroutineStart =
coroutineClass.lookupLocalMember("_coroutineStart");
Selector selector = new Selector.fromElement(coroutineStart);
- new FletchRegistry(compiler)
+ new DartinoRegistry(compiler)
..registerDynamicUse(selector);
} else if (name == "Process._spawn") {
// The native method `Process._spawn` will do a closure invoke with 0, 1,
// or 2 arguments.
- new FletchRegistry(compiler)
+ new DartinoRegistry(compiler)
..registerDynamicUse(new Selector.callClosure(0))
..registerDynamicUse(new Selector.callClosure(1))
..registerDynamicUse(new Selector.callClosure(2));
@@ -1083,11 +1083,11 @@ class FletchBackend extends Backend
void codegenExternalFunction(
FunctionElement function,
FunctionCodegen codegen) {
- if (function == fletchExternalYield) {
+ if (function == dartinoExternalYield) {
codegenExternalYield(function, codegen);
} else if (function == context.compiler.identicalFunction.implementation) {
codegenIdentical(function, codegen);
- } else if (function == fletchExternalInvokeMain) {
+ } else if (function == dartinoExternalInvokeMain) {
codegenExternalInvokeMain(function, codegen);
} else if (function.name == noSuchMethodTrampolineName &&
function.library == compiler.coreLibrary) {
@@ -1144,7 +1144,7 @@ class FletchBackend extends Backend
// src/vm/interpreter.cc:HandleEnterNoSuchMethod
int id = context.getSymbolId(
context.mangleName(new Name(noSuchMethodName, compiler.coreLibrary)));
- int fletchSelector = FletchSelector.encodeMethod(id, 3);
+ int dartinoSelector = DartinoSelector.encodeMethod(id, 3);
BytecodeLabel skipGetter = new BytecodeLabel();
codegen.assembler
..enterNoSuchMethod(skipGetter)
@@ -1155,7 +1155,7 @@ class FletchBackend extends Backend
..invokeSelector(1)
..exitNoSuchMethod()
..bind(skipGetter)
- ..invokeMethod(fletchSelector, 1)
+ ..invokeMethod(dartinoSelector, 1)
..exitNoSuchMethod()
..methodEnd();
}
@@ -1164,7 +1164,7 @@ class FletchBackend extends Backend
if (element is FunctionElement) {
for (var metadata in element.metadata) {
// TODO(ahe): This code should ensure that @native resolves to precisely
- // the native variable in dart:fletch._system.
+ // the native variable in dart:dartino._system.
if (metadata.constant == null) continue;
ConstantValue value = context.getConstantValue(metadata.constant);
if (!value.isString) continue;
@@ -1197,27 +1197,27 @@ class FletchBackend extends Backend
// TODO(ajohnsen): Use registry in CodegenVisitor to register the used
// constants.
FunctionElement function = value.element;
- createTearoffClass(createFletchFunctionBuilder(function));
+ createTearoffClass(createDartinoFunctionBuilder(function));
// Be sure to actually enqueue the function for compilation.
- FletchRegistry registry = new FletchRegistry(compiler);
+ DartinoRegistry registry = new DartinoRegistry(compiler);
registry.registerStaticUse(new StaticUse.foreignUse(function));
}
- FletchFunctionBase createParameterStub(
- FletchFunctionBase function,
+ DartinoFunctionBase createParameterStub(
+ DartinoFunctionBase function,
Selector selector) {
CallStructure callStructure = selector.callStructure;
assert(callStructure.signatureApplies(function.signature));
ParameterStubSignature signature = new ParameterStubSignature(
function.functionId, callStructure);
- FletchFunctionBase stub = systemBuilder.lookupParameterStub(signature);
+ DartinoFunctionBase stub = systemBuilder.lookupParameterStub(signature);
if (stub != null) return stub;
int arity = selector.argumentCount;
if (function.isInstanceMember) arity++;
- FletchFunctionBuilder builder = systemBuilder.newFunctionBuilder(
- FletchFunctionKind.PARAMETER_STUB,
+ DartinoFunctionBuilder builder = systemBuilder.newFunctionBuilder(
+ DartinoFunctionKind.PARAMETER_STUB,
arity);
BytecodeAssembler assembler = builder.assembler;
@@ -1279,29 +1279,29 @@ class FletchBackend extends Backend
}
void patchClassWithStub(
- FletchFunctionBase stub,
+ DartinoFunctionBase stub,
Selector selector,
int classId,
bool isClosureClass) {
- int fletchSelector = context.toFletchSelector(selector);
- FletchClassBuilder classBuilder = systemBuilder.lookupClassBuilder(classId);
+ int dartinoSelector = context.toDartinoSelector(selector);
+ DartinoClassBuilder classBuilder = systemBuilder.lookupClassBuilder(classId);
if (classBuilder == null) {
if (isClosureClass) {
classBuilder =
systemBuilder.newPatchClassBuilder(classId, compiledClosureClass);
} else {
- FletchClass klass = systemBuilder.lookupClass(classId);
+ DartinoClass klass = systemBuilder.lookupClass(classId);
assert(klass.element != null);
classBuilder = registerClassElement(klass.element);
}
}
- classBuilder.addToMethodTable(fletchSelector, stub);
+ classBuilder.addToMethodTable(dartinoSelector, stub);
// Inject parameter stub into all mixin usages.
getMixinApplicationsOfClass(classBuilder).forEach((ClassElement usage) {
- FletchClassBuilder classBuilder =
+ DartinoClassBuilder classBuilder =
systemBuilder.lookupClassBuilderByElement(usage);
- classBuilder.addToMethodTable(fletchSelector, stub);
+ classBuilder.addToMethodTable(dartinoSelector, stub);
});
}
@@ -1312,13 +1312,13 @@ class FletchBackend extends Backend
/// a class with a `call` method [ClosureKind.functionLike]) and that the
/// getter should be added to that class.
void createTearoffGetterForFunction(
- FletchFunctionBuilder function,
+ DartinoFunctionBuilder function,
{bool isSpecialCallMethod}) {
if (isSpecialCallMethod == null) {
throw new ArgumentError("isSpecialCallMethod");
}
- FletchFunctionBuilder getter = systemBuilder.newFunctionBuilder(
- FletchFunctionKind.ACCESSOR,
+ DartinoFunctionBuilder getter = systemBuilder.newFunctionBuilder(
+ DartinoFunctionKind.ACCESSOR,
1);
// If the getter is of 'call', return the instance instead.
if (isSpecialCallMethod) {
@@ -1327,7 +1327,7 @@ class FletchBackend extends Backend
..ret()
..methodEnd();
} else {
- FletchClassBuilder tearoffClass = createTearoffClass(function);
+ DartinoClassBuilder tearoffClass = createTearoffClass(function);
int constId = getter.allocateConstantFromClass(tearoffClass.classId);
getter.assembler
..loadParameter(0)
@@ -1343,38 +1343,38 @@ class FletchBackend extends Backend
}
// TODO(sigurdm): Avoid allocating new name here.
Name name = new Name(function.name, library);
- int fletchSelector = context.toFletchSelector(
+ int dartinoSelector = context.toDartinoSelector(
new Selector.getter(name));
- FletchClassBuilder classBuilder = systemBuilder.lookupClassBuilder(
+ DartinoClassBuilder classBuilder = systemBuilder.lookupClassBuilder(
function.memberOf);
- classBuilder.addToMethodTable(fletchSelector, getter);
+ classBuilder.addToMethodTable(dartinoSelector, getter);
// Inject getter into all mixin usages.
getMixinApplicationsOfClass(classBuilder).forEach((ClassElement usage) {
- FletchClassBuilder classBuilder =
+ DartinoClassBuilder classBuilder =
systemBuilder.lookupClassBuilderByElement(usage);
- classBuilder.addToMethodTable(fletchSelector, getter);
+ classBuilder.addToMethodTable(dartinoSelector, getter);
});
}
void compileTypeTest(ClassElement element, InterfaceType type) {
assert(element.isDeclaration);
- int fletchSelector = context.toFletchIsSelector(type.element);
- FletchClassBuilder builder =
+ int dartinoSelector = context.toDartinoIsSelector(type.element);
+ DartinoClassBuilder builder =
systemBuilder.lookupClassBuilderByElement(element);
if (builder != null) {
context.compiler.reportVerboseInfo(
element, 'Adding is-selector for $type');
- builder.addIsSelector(fletchSelector);
+ builder.addIsSelector(dartinoSelector);
}
}
int assembleProgram() => 0;
- FletchDelta computeDelta() {
+ DartinoDelta computeDelta() {
- if (fletchSystemLibrary == null && compiler.compilationFailed) {
- // TODO(ahe): Ensure fletchSystemLibrary is not null.
+ if (dartinoSystemLibrary == null && compiler.compilationFailed) {
+ // TODO(ahe): Ensure dartinoSystemLibrary is not null.
return null;
}
@@ -1384,14 +1384,14 @@ class FletchBackend extends Backend
const NewMap(MapId.constants),
];
- FletchSystem system = systemBuilder.computeSystem(context, commands);
+ DartinoSystem system = systemBuilder.computeSystem(context, commands);
commands.add(const PushNewInteger(0));
commands.add(new PushFromMap(
MapId.methods,
- system.lookupFunctionByElement(fletchSystemEntry).functionId));
+ system.lookupFunctionByElement(dartinoSystemEntry).functionId));
- return new FletchDelta(system, systemBuilder.predecessorSystem, commands);
+ return new DartinoDelta(system, systemBuilder.predecessorSystem, commands);
}
bool enableCodegenWithErrorsIfSupported(Spannable spannable) {
@@ -1421,20 +1421,20 @@ class FletchBackend extends Backend
if (library.isPlatformLibrary) {
String path = library.canonicalUri.path;
switch(path) {
- case 'fletch._system':
- fletchSystemLibrary = library;
+ case 'dartino._system':
+ dartinoSystemLibrary = library;
break;
- case 'fletch.ffi':
- fletchFFILibrary = library;
+ case 'dartino.ffi':
+ dartinoFFILibrary = library;
break;
- case 'fletch.collection':
+ case 'dartino.collection':
collectionLibrary = library;
break;
case 'math':
mathLibrary = library;
break;
- case 'fletch':
- fletchLibrary = library;
+ case 'dartino':
+ dartinoLibrary = library;
break;
}
@@ -1450,13 +1450,13 @@ class FletchBackend extends Backend
}
bool isBackendLibrary(LibraryElement library) {
- return library == fletchSystemLibrary;
+ return library == dartinoSystemLibrary;
}
/// Return non-null to enable patching. Possible return values are 'new' and
/// 'old'. Referring to old and new emitter. Since the new emitter is the
/// future, we assume 'old' will go away. So it seems the best option for
- /// Fletch is 'new'.
+ /// Dartino is 'new'.
String get patchVersion => 'new';
FunctionElement resolveExternalFunction(FunctionElement element) {
@@ -1469,7 +1469,7 @@ class FletchBackend extends Backend
element = patch;
// TODO(ahe): Don't use ensureResolved (fix TODO in isNative instead).
element.metadata.forEach((m) => m.ensureResolved(compiler.resolution));
- } else if (element.library == fletchSystemLibrary) {
+ } else if (element.library == dartinoSystemLibrary) {
// Nothing needed for now.
} else if (element.library == compiler.coreLibrary) {
// Nothing needed for now.
@@ -1477,7 +1477,7 @@ class FletchBackend extends Backend
// Nothing needed for now.
} else if (element.library == asyncLibrary) {
// Nothing needed for now.
- } else if (element.library == fletchLibrary) {
+ } else if (element.library == dartinoLibrary) {
// Nothing needed for now.
} else if (externals.contains(element)) {
// Nothing needed for now.
@@ -1490,15 +1490,15 @@ class FletchBackend extends Backend
int compileLazyFieldInitializer(
FieldElement field,
- FletchRegistry registry) {
+ DartinoRegistry registry) {
int index = context.getStaticFieldIndex(field, null);
if (field.initializer == null) return index;
if (lazyFieldInitializers.containsKey(field)) return index;
- FletchFunctionBuilder functionBuilder = systemBuilder.newFunctionBuilder(
- FletchFunctionKind.LAZY_FIELD_INITIALIZER,
+ DartinoFunctionBuilder functionBuilder = systemBuilder.newFunctionBuilder(
+ DartinoFunctionKind.LAZY_FIELD_INITIALIZER,
0,
name: "${field.name} lazy initializer",
element: field);
@@ -1527,7 +1527,7 @@ class FletchBackend extends Backend
///
/// See [compilePendingConstructorInitializers] for an overview of how
/// constructor initializer and bodies are compiled.
- void compileConstructorInitializer(FletchFunctionBuilder functionBuilder) {
+ void compileConstructorInitializer(DartinoFunctionBuilder functionBuilder) {
ConstructorElement constructor = functionBuilder.element;
assert(constructor.isImplementation);
compiler.reporter.withCurrentElement(constructor, () {
@@ -1541,9 +1541,9 @@ class FletchBackend extends Backend
// TODO(ahe): We shouldn't create a registry, but we have to as long as
// the enqueuer doesn't support elements with more than one compilation
// artifact.
- FletchRegistry registry = new FletchRegistry(compiler);
+ DartinoRegistry registry = new DartinoRegistry(compiler);
- FletchClassBuilder classBuilder =
+ DartinoClassBuilder classBuilder =
registerClassElement(constructor.enclosingClass.declaration);
ClosureEnvironment closureEnvironment =
@@ -1584,7 +1584,7 @@ class FletchBackend extends Backend
void generateUnimplementedError(
Spannable spannable,
String reason,
- FletchFunctionBuilder function,
+ DartinoFunctionBuilder function,
{bool suppressHint: false}) {
if (!suppressHint) {
compiler.reporter.reportHintMessage(
@@ -1613,7 +1613,7 @@ class FletchBackend extends Backend
void newElement(Element element) {
if (element.isField && element.isInstanceMember) {
forEachSubclassOf(element.enclosingClass, (ClassElement cls) {
- FletchClassBuilder builder = registerClassElement(cls);
+ DartinoClassBuilder builder = registerClassElement(cls);
builder.addField(element);
});
}
@@ -1629,7 +1629,7 @@ class FletchBackend extends Backend
// TODO(ahe): The front-end should remove the element from
// elementsWithCompileTimeErrors.
compiler.elementsWithCompileTimeErrors.remove(element);
- FletchFunctionBase function =
+ DartinoFunctionBase function =
systemBuilder.lookupFunctionByElement(element);
if (function == null) return;
systemBuilder.forgetFunction(function);
@@ -1639,25 +1639,25 @@ class FletchBackend extends Backend
if (!element.isInstanceMember) return;
ClassElement enclosingClass = element.enclosingClass;
forEachSubclassOf(enclosingClass, (ClassElement cls) {
- FletchClassBuilder builder = registerClassElement(cls);
+ DartinoClassBuilder builder = registerClassElement(cls);
builder.removeField(element);
});
}
void removeFunction(FunctionElement element) {
- FletchFunctionBase function =
+ DartinoFunctionBase function =
systemBuilder.lookupFunctionByElement(element);
if (function == null) return;
if (element.isInstanceMember) {
ClassElement enclosingClass = element.enclosingClass;
- FletchClassBuilder builder = registerClassElement(enclosingClass);
+ DartinoClassBuilder builder = registerClassElement(enclosingClass);
builder.removeFromMethodTable(function);
}
}
/// Invoked during codegen enqueuing to compile constructor initializers.
///
- /// There's only one [Element] representing a constructor, but Fletch uses
+ /// There's only one [Element] representing a constructor, but Dartino uses
/// two different functions for implementing a constructor.
///
/// The first function takes care of allocating the instance and initializing
@@ -1690,7 +1690,7 @@ class FletchBackend extends Backend
return true;
}
- FletchEnqueueTask makeEnqueuer() => new FletchEnqueueTask(compiler);
+ DartinoEnqueueTask makeEnqueuer() => new DartinoEnqueueTask(compiler);
static bool isExactParameterMatch(
FunctionSignature signature,
@@ -1723,8 +1723,8 @@ class FletchBackend extends Backend
return true;
}
- static FletchBackend createInstance(FletchCompilerImplementation compiler) {
- return new FletchBackend(compiler);
+ static DartinoBackend createInstance(DartinoCompilerImplementation compiler) {
+ return new DartinoBackend(compiler);
}
Uri resolvePatchUri(String libraryName, Uri libraryRoot) {
@@ -1733,10 +1733,10 @@ class FletchBackend extends Backend
}
-class FletchImpactTransformer extends ImpactTransformer {
- final FletchBackend backend;
+class DartinoImpactTransformer extends ImpactTransformer {
+ final DartinoBackend backend;
- FletchImpactTransformer(this.backend);
+ DartinoImpactTransformer(this.backend);
@override
WorldImpact transformResolutionImpact(ResolutionImpact worldImpact) {
« no previous file with comments | « pkg/dartino_compiler/lib/src/constructor_codegen.dart ('k') | pkg/dartino_compiler/lib/src/dartino_class_builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698