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

Unified Diff: pkg/fletchc/lib/src/fletch_context.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
« no previous file with comments | « pkg/fletchc/lib/src/fletch_constants.dart ('k') | pkg/fletchc/lib/src/fletch_diagnostic_reporter.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/fletchc/lib/src/fletch_context.dart
diff --git a/pkg/fletchc/lib/src/fletch_context.dart b/pkg/fletchc/lib/src/fletch_context.dart
deleted file mode 100644
index 09b36fd7ebe550447263dc4b36c0eb3aa0d89f6f..0000000000000000000000000000000000000000
--- a/pkg/fletchc/lib/src/fletch_context.dart
+++ /dev/null
@@ -1,256 +0,0 @@
-// Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file
-// 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_context;
-
-import 'package:compiler/src/tree/tree.dart' show
- Node;
-
-import 'package:compiler/src/elements/elements.dart' show
- ClassElement,
- Element,
- FieldElement,
- FunctionElement,
- FunctionSignature,
- LibraryElement,
- ParameterElement,
- Name;
-
-import 'package:compiler/src/resolution/tree_elements.dart' show
- TreeElements;
-
-import 'package:compiler/src/universe/selector.dart' show
- Selector;
-
-import 'package:compiler/src/constants/expressions.dart' show
- ConstantExpression;
-
-import 'package:compiler/src/constants/values.dart' show
- ConstantValue,
- ConstructedConstantValue,
- FunctionConstantValue;
-
-import 'fletch_compiler_implementation.dart' show
- FletchCompilerImplementation;
-
-export 'fletch_compiler_implementation.dart' show
- FletchCompilerImplementation;
-
-import 'fletch_backend.dart' show
- FletchBackend;
-
-export 'fletch_backend.dart' show
- FletchBackend;
-
-export 'bytecode_assembler.dart' show
- BytecodeAssembler,
- BytecodeLabel;
-
-import 'fletch_native_descriptor.dart' show
- FletchNativeDescriptor;
-
-import 'fletch_selector.dart' show
- FletchSelector,
- SelectorKind;
-
-export 'fletch_native_descriptor.dart' show
- FletchNativeDescriptor;
-
-import 'fletch_registry.dart' show
- FletchRegistry;
-
-class FletchContext {
- final FletchCompilerImplementation compiler;
-
- Map<String, FletchNativeDescriptor> nativeDescriptors;
-
- Set<String> names = new Set<String>();
-
- Map<FieldElement, int> staticIndices = <FieldElement, int>{};
-
- Map<LibraryElement, String> libraryTag = <LibraryElement, String>{};
- List<String> symbols = <String>[];
- Map<String, int> symbolIds = <String, int>{};
- Map<Name, String> nameToSymbol = <Name, String>{};
- Map<Selector, String> selectorToSymbol = <Selector, String>{};
-
- FletchContext(this.compiler);
-
- FletchBackend get backend => compiler.backend;
-
- bool get enableBigint {
- String enableBigintConstant = compiler.environment['fletch.enable-bigint'];
- return enableBigintConstant != "false";
- }
-
- void setNames(Map<String, String> names) {
- // Generate symbols of the values.
- for (String name in names.values) {
- this.names.add(name);
- getSymbolId(name);
- }
- }
-
- String mangleName(Name name) {
- if (!name.isPrivate) return name.text;
- if (name.library.isPlatformLibrary && names.contains(name.text)) {
- return name.text;
- }
- return name.text + getLibraryTag(name.library);
- }
-
- String getLibraryTag(LibraryElement library) {
- return libraryTag.putIfAbsent(library, () {
- // Give the core library the unique mangling of the empty string. That
- // will make the VM able to create selector into core (used for e.g.
- // _noSuchMethodTrampoline).
- if (library == compiler.coreLibrary) return "";
- return "%${libraryTag.length}";
- });
- }
-
- int getStaticFieldIndex(FieldElement element, Element referrer) {
- return staticIndices.putIfAbsent(element, () => staticIndices.length);
- }
-
- String getSymbolFromSelector(Selector selector) {
- return selectorToSymbol.putIfAbsent(selector, () {
- StringBuffer buffer = new StringBuffer();
- buffer.write(mangleName(selector.memberName));
- for (String namedArgument in selector.namedArguments) {
- buffer.write(":");
- buffer.write(namedArgument);
- }
- return buffer.toString();
- });
- }
-
- void writeNamedArguments(StringBuffer buffer, FunctionSignature signature) {
- signature.orderedForEachParameter((ParameterElement parameter) {
- if (parameter.isNamed) {
- buffer.write(":");
- buffer.write(parameter.name);
- }
- });
- }
-
- String getSymbolForFunction(
- String name,
- FunctionSignature signature,
- LibraryElement library) {
- StringBuffer buffer = new StringBuffer();
- buffer.write(mangleName(new Name(name, library)));
- writeNamedArguments(buffer, signature);
- return buffer.toString();
- }
-
- String getCallSymbol(FunctionSignature signature) {
- return getSymbolForFunction('call', signature, null);
- }
-
- int getSymbolId(String symbol) {
- return symbolIds.putIfAbsent(symbol, () {
- int id = symbols.length;
- assert(id == symbolIds.length);
- symbols.add(symbol);
- backend.systemBuilder.registerSymbol(symbol, id);
- return id;
- });
- }
-
- void forEachStatic(f(FieldElement element, int index)) {
- staticIndices.forEach(f);
- }
-
- int toFletchSelector(Selector selector) {
- String symbol = getSymbolFromSelector(selector);
- int id = getSymbolId(symbol);
- SelectorKind kind = getFletchSelectorKind(selector);
- return FletchSelector.encode(id, kind, selector.argumentCount);
- }
-
- int toFletchIsSelector(ClassElement classElement, [int arity]) {
- LibraryElement library = classElement.library;
- StringBuffer buffer = new StringBuffer();
- buffer.write("?is?");
- buffer.write(classElement.name);
- buffer.write("?");
- buffer.write(getLibraryTag(library));
- int id = getSymbolId(buffer.toString());
- if (arity == null) return FletchSelector.encodeGetter(id);
- return FletchSelector.encodeMethod(id, arity);
- }
-
- int toFletchTearoffIsSelector(
- String functionName,
- ClassElement classElement) {
- LibraryElement library = classElement.library;
- StringBuffer buffer = new StringBuffer();
- buffer.write("?is?");
- buffer.write(functionName);
- buffer.write("?");
- buffer.write(classElement.name);
- buffer.write("?");
- buffer.write(getLibraryTag(library));
- int id = getSymbolId(buffer.toString());
- return FletchSelector.encodeMethod(id, 0);
- }
-
- SelectorKind getFletchSelectorKind(Selector selector) {
- if (selector.isGetter) return SelectorKind.Getter;
- if (selector.isSetter) return SelectorKind.Setter;
- return SelectorKind.Method;
- }
-
- void registerConstructedConstantValue(ConstructedConstantValue value) {
- ClassElement classElement = value.type.element;
- backend.registerClassElement(classElement);
- // TODO(ahe): This should not be required. Also, instantiate type,
- // not class.
- FletchRegistry registry = new FletchRegistry(compiler);
- registry.registerInstantiatedClass(classElement);
- }
-
- void registerFunctionConstantValue(FunctionConstantValue value) {
- backend.markFunctionConstantAsUsed(value);
- }
-
- // TODO(zarah): Remove this and use the FletchSystemBuilder
- void markConstantUsed(ConstantValue constant) {
- backend.systemBuilder.registerConstant(constant, this);
- }
-
- // TODO(zarah): Remove this and use the FletchSystemBuilder
- int lookupConstantIdByValue(ConstantValue value) =>
- backend.systemBuilder.lookupConstantIdByValue(value);
-
- /// If [isConst] is true, a compile-time error is reported.
- ConstantExpression compileConstant(
- Node node,
- TreeElements elements,
- {bool isConst}) {
- ConstantExpression expression =
- inspectConstant(node, elements, isConst: isConst);
- if (expression == null) return null;
- ConstantValue value = getConstantValue(expression);
- markConstantUsed(value);
- return expression;
- }
-
- ConstantExpression inspectConstant(
- Node node,
- TreeElements elements,
- {bool isConst}) {
- assert(isConst != null);
- // TODO(johnniwinther): Should be handled in resolution.
- ConstantExpression expression =
- compiler.resolver.constantCompiler.compileNode(
- node, elements, enforceConst: isConst);
- return expression;
- }
-
- ConstantValue getConstantValue(ConstantExpression expression) {
- return compiler.constants.getConstantValue(expression);
- }
-}
« no previous file with comments | « pkg/fletchc/lib/src/fletch_constants.dart ('k') | pkg/fletchc/lib/src/fletch_diagnostic_reporter.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698