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

Unified Diff: pkg/compiler/lib/src/js_backend/backend.dart

Issue 2814453005: Merge CommonElements and BackendHelpers! (Closed)
Patch Set: comments and re-merge, take two Created 3 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 side-by-side diff with in-line comments
Download patch
Index: pkg/compiler/lib/src/js_backend/backend.dart
diff --git a/pkg/compiler/lib/src/js_backend/backend.dart b/pkg/compiler/lib/src/js_backend/backend.dart
index c46eb0842f0fb7d798f426436b300a775bb321cd..ab5cf1933bc7d71f22a011b19d3eafcce802cd62 100644
--- a/pkg/compiler/lib/src/js_backend/backend.dart
+++ b/pkg/compiler/lib/src/js_backend/backend.dart
@@ -60,7 +60,6 @@ import '../universe/world_impact.dart'
import '../util/util.dart';
import '../world.dart' show ClosedWorld, ClosedWorldRefiner;
import 'annotations.dart';
-import 'backend_helpers.dart';
import 'backend_impact.dart';
import 'backend_serialization.dart' show JavaScriptBackendSerialization;
import 'backend_usage.dart';
@@ -304,6 +303,11 @@ enum SyntheticConstantKind {
}
class JavaScriptBackend {
+ static const String JS = 'JS';
+ static const String JS_BUILTIN = 'JS_BUILTIN';
+ static const String JS_EMBEDDED_GLOBAL = 'JS_EMBEDDED_GLOBAL';
+ static const String JS_INTERCEPTOR_CONSTANT = 'JS_INTERCEPTOR_CONSTANT';
+
final Compiler compiler;
String get patchVersion => emitter.patchVersion;
@@ -317,7 +321,7 @@ class JavaScriptBackend {
/// otherwise visible during resolution.
Iterable<ClassEntity> get classesRequiredForReflection {
// TODO(herhut): Clean this up when classes needed for rti are tracked.
- return [helpers.closureClass, helpers.jsIndexableClass];
+ return [commonElements.closureClass, commonElements.jsIndexableClass];
}
FunctionCompiler functionCompiler;
@@ -444,7 +448,6 @@ class JavaScriptBackend {
native.NativeResolutionEnqueuer _nativeResolutionEnqueuer;
native.NativeCodegenEnqueuer _nativeCodegenEnqueuer;
- BackendHelpers helpers;
BackendImpacts impacts;
/// Common classes used by the backend.
@@ -497,12 +500,11 @@ class JavaScriptBackend {
constantCompilerTask = new JavaScriptConstantTask(compiler),
_nativeDataResolver = new NativeDataResolverImpl(compiler) {
_target = new JavaScriptBackendTarget(this);
- helpers = new BackendHelpers(compiler.elementEnvironment, commonElements);
- impacts = new BackendImpacts(compiler.options, commonElements, helpers);
+ impacts = new BackendImpacts(compiler.options, commonElements);
_mirrorsData = new MirrorsDataImpl(
- compiler, compiler.options, commonElements, helpers, constants);
- _backendUsageBuilder = new BackendUsageBuilderImpl(commonElements, helpers);
- _checkedModeHelpers = new CheckedModeHelpers(commonElements, helpers);
+ compiler, compiler.options, commonElements, constants);
+ _backendUsageBuilder = new BackendUsageBuilderImpl(commonElements);
+ _checkedModeHelpers = new CheckedModeHelpers(commonElements);
emitter =
new CodeEmitterTask(compiler, generateSourceMap, useStartupEmitter);
@@ -514,8 +516,8 @@ class JavaScriptBackend {
lookupMapResolutionAnalysis =
new LookupMapResolutionAnalysis(reporter, compiler.elementEnvironment);
- noSuchMethodRegistry =
- new NoSuchMethodRegistry(helpers, new NoSuchMethodResolverImpl());
+ noSuchMethodRegistry = new NoSuchMethodRegistry(
+ commonElements, new NoSuchMethodResolverImpl());
kernelTask = new KernelTask(compiler);
patchResolverTask = new PatchResolverTask(compiler);
functionCompiler =
@@ -693,11 +695,12 @@ class JavaScriptBackend {
});
}
- bool isForeign(Element element) => element.library == helpers.foreignLibrary;
+ bool isForeign(Element element) =>
+ element.library == commonElements.foreignLibrary;
bool isBackendLibrary(LibraryElement library) {
- return library == helpers.interceptorsLibrary ||
- library == helpers.jsHelperLibrary;
+ return library == commonElements.interceptorsLibrary ||
+ library == compiler.commonElements.jsHelperLibrary;
}
Namer determineNamer(
@@ -705,10 +708,9 @@ class JavaScriptBackend {
return compiler.options.enableMinification
? compiler.options.useFrequencyNamer
? new FrequencyBasedNamer(
- helpers, nativeData, closedWorld, codegenWorldBuilder)
- : new MinifyNamer(
- helpers, nativeData, closedWorld, codegenWorldBuilder)
- : new Namer(helpers, nativeData, closedWorld, codegenWorldBuilder);
+ nativeData, closedWorld, codegenWorldBuilder)
+ : new MinifyNamer(nativeData, closedWorld, codegenWorldBuilder)
+ : new Namer(nativeData, closedWorld, codegenWorldBuilder);
}
/// Returns true if global optimizations such as type inferencing can apply to
@@ -737,8 +739,10 @@ class JavaScriptBackend {
/// Maps compile-time classes to their runtime class. The runtime class is
/// always a superclass or the class itself.
ClassElement getRuntimeClass(ClassElement class_) {
- if (class_.isSubclassOf(helpers.jsIntClass)) return helpers.jsIntClass;
- if (class_.isSubclassOf(helpers.jsArrayClass)) return helpers.jsArrayClass;
+ if (class_.isSubclassOf(commonElements.jsIntClass))
+ return commonElements.jsIntClass;
+ if (class_.isSubclassOf(commonElements.jsArrayClass))
+ return commonElements.jsArrayClass;
return class_;
}
@@ -766,11 +770,17 @@ class JavaScriptBackend {
}
void onResolutionStart(ResolutionEnqueuer enqueuer) {
- helpers.onResolutionStart();
-
- validateInterceptorImplementsAllObjectMethods(helpers.jsInterceptorClass);
+ // TODO(johnniwinther): Avoid the compiler.elementEnvironment.getThisType
+ // calls. Currently needed to ensure resolution of the classes for various
+ // queries in native behavior computation, inference and codegen.
+ compiler.elementEnvironment.getThisType(commonElements.jsArrayClass);
+ compiler.elementEnvironment
+ .getThisType(commonElements.jsExtendableArrayClass);
+
+ validateInterceptorImplementsAllObjectMethods(
+ commonElements.jsInterceptorClass);
// The null-interceptor must also implement *all* methods.
- validateInterceptorImplementsAllObjectMethods(helpers.jsNullClass);
+ validateInterceptorImplementsAllObjectMethods(commonElements.jsNullClass);
}
void onResolutionComplete(
@@ -786,12 +796,11 @@ class JavaScriptBackend {
closedWorld,
compiler.types,
commonElements,
- helpers,
_backendUsage,
enableTypeAssertions: compiler.options.enableTypeAssertions);
_interceptorData = interceptorDataBuilder.onResolutionComplete(closedWorld);
_oneShotInterceptorData =
- new OneShotInterceptorData(interceptorData, helpers);
+ new OneShotInterceptorData(interceptorData, commonElements);
mirrorsResolutionAnalysis.onResolutionComplete();
}
@@ -802,13 +811,13 @@ class JavaScriptBackend {
/// Called when resolving a call to a foreign function.
native.NativeBehavior resolveForeignCall(Send node, Element element,
CallStructure callStructure, ForeignResolver resolver) {
- if (element.name == BackendHelpers.JS) {
+ if (element.name == JS) {
return _nativeDataResolver.resolveJsCall(node, resolver);
- } else if (element.name == BackendHelpers.JS_EMBEDDED_GLOBAL) {
+ } else if (element.name == JS_EMBEDDED_GLOBAL) {
return _nativeDataResolver.resolveJsEmbeddedGlobalCall(node, resolver);
- } else if (element.name == BackendHelpers.JS_BUILTIN) {
+ } else if (element.name == JS_BUILTIN) {
return _nativeDataResolver.resolveJsBuiltinCall(node, resolver);
- } else if (element.name == BackendHelpers.JS_INTERCEPTOR_CONSTANT) {
+ } else if (element.name == JS_INTERCEPTOR_CONSTANT) {
// The type constant that is an argument to JS_INTERCEPTOR_CONSTANT names
// a class that will be instantiated outside the program by attaching a
// native class dispatch record referencing the interceptor.
@@ -836,23 +845,21 @@ class JavaScriptBackend {
_nativeBasicData =
nativeBasicDataBuilder.close(compiler.elementEnvironment);
_backendClasses = new JavaScriptBackendClasses(
- compiler.elementEnvironment, helpers, nativeBasicData);
+ compiler.elementEnvironment, commonElements, nativeBasicData);
_nativeResolutionEnqueuer = new native.NativeResolutionEnqueuer(
compiler.options,
compiler.elementEnvironment,
commonElements,
- helpers,
backendClasses,
backendUsageBuilder,
new NativeClassResolverImpl(
- compiler.resolution, reporter, helpers, nativeBasicData));
+ compiler.resolution, reporter, commonElements, nativeBasicData));
_nativeData = new NativeDataImpl(nativeBasicData);
_customElementsResolutionAnalysis = new CustomElementsResolutionAnalysis(
compiler.resolution,
constantSystem,
commonElements,
backendClasses,
- helpers,
nativeBasicData,
backendUsageBuilder);
impactTransformer = new JavaScriptImpactTransformer(
@@ -867,7 +874,7 @@ class JavaScriptBackend {
customElementsResolutionAnalysis,
rtiNeedBuilder);
_interceptorDataBuilder = new InterceptorDataBuilderImpl(
- nativeBasicData, helpers, compiler.elementEnvironment, commonElements);
+ nativeBasicData, compiler.elementEnvironment, commonElements);
return new ResolutionEnqueuer(
task,
compiler.options,
@@ -879,7 +886,6 @@ class JavaScriptBackend {
compiler.options,
compiler.elementEnvironment,
commonElements,
- helpers,
impacts,
backendClasses,
nativeBasicData,
@@ -904,14 +910,13 @@ class JavaScriptBackend {
CodegenEnqueuer createCodegenEnqueuer(
CompilerTask task, Compiler compiler, ClosedWorld closedWorld) {
_typeVariableCodegenAnalysis = new TypeVariableCodegenAnalysis(
- compiler.elementEnvironment, this, helpers, mirrorsData);
+ compiler.elementEnvironment, this, commonElements, mirrorsData);
_lookupMapAnalysis = new LookupMapAnalysis(
reporter,
constantSystem,
constants,
compiler.elementEnvironment,
commonElements,
- helpers,
backendClasses,
lookupMapResolutionAnalysis);
_mirrorsCodegenAnalysis = mirrorsResolutionAnalysis.close();
@@ -920,13 +925,11 @@ class JavaScriptBackend {
constantSystem,
commonElements,
backendClasses,
- helpers,
nativeBasicData);
_nativeCodegenEnqueuer = new native.NativeCodegenEnqueuer(
compiler.options,
compiler.elementEnvironment,
commonElements,
- helpers,
backendClasses,
emitter,
_nativeResolutionEnqueuer,
@@ -941,7 +944,6 @@ class JavaScriptBackend {
new CodegenEnqueuerListener(
compiler.elementEnvironment,
commonElements,
- helpers,
impacts,
backendClasses,
backendUsage,
@@ -973,7 +975,7 @@ class JavaScriptBackend {
return const WorldImpact();
}
if (element.isConstructor &&
- element.enclosingClass == helpers.jsNullClass) {
+ element.enclosingClass == commonElements.jsNullClass) {
// Work around a problem compiling JSNull's constructor.
return const CodegenImpact();
}
@@ -1007,7 +1009,7 @@ class JavaScriptBackend {
// the static variable.
// We also need to register the use of the cyclic-error helper.
work.registry.worldImpact.registerStaticUse(new StaticUse.staticInvoke(
- helpers.cyclicThrowHelper, CallStructure.ONE_ARG));
+ commonElements.cyclicThrowHelper, CallStructure.ONE_ARG));
}
}
@@ -1032,11 +1034,11 @@ class JavaScriptBackend {
ClassElement defaultSuperclass(ClassElement element) {
if (nativeBasicData.isJsInteropClass(element)) {
- return helpers.jsJavaScriptObjectClass;
+ return commonElements.jsJavaScriptObjectClass;
}
// Native classes inherit from Interceptor.
return nativeBasicData.isNativeClass(element)
- ? helpers.jsInterceptorClass
+ ? commonElements.jsInterceptorClass
: commonElements.objectClass;
}
@@ -1103,11 +1105,11 @@ class JavaScriptBackend {
element == commonElements.numClass ||
element == commonElements.intClass ||
element == commonElements.doubleClass ||
- element == helpers.jsArrayClass ||
- element == helpers.jsMutableArrayClass ||
- element == helpers.jsExtendableArrayClass ||
- element == helpers.jsFixedArrayClass ||
- element == helpers.jsUnmodifiableArrayClass;
+ element == commonElements.jsArrayClass ||
+ element == commonElements.jsMutableArrayClass ||
+ element == commonElements.jsExtendableArrayClass ||
+ element == commonElements.jsFixedArrayClass ||
+ element == commonElements.jsUnmodifiableArrayClass;
}
/// This method is called immediately after the [library] and its parts have
@@ -1137,16 +1139,18 @@ class JavaScriptBackend {
/// have been computed.
void onLibrariesLoaded(LoadedLibraries loadedLibraries) {
if (loadedLibraries.containsLibrary(Uris.dart_core)) {
- helpers.onLibrariesLoaded(loadedLibraries);
+ assert(loadedLibraries.containsLibrary(Uris.dart_core));
+ assert(loadedLibraries.containsLibrary(Uris.dart__interceptors));
+ assert(loadedLibraries.containsLibrary(Uris.dart__js_helper));
// These methods are overwritten with generated versions.
- inlineCache.markAsNonInlinable(helpers.getInterceptorMethod,
+ inlineCache.markAsNonInlinable(commonElements.getInterceptorMethod,
insideLoop: true);
specialOperatorEqClasses
..add(commonElements.objectClass)
- ..add(helpers.jsInterceptorClass)
- ..add(helpers.jsNullClass);
+ ..add(commonElements.jsInterceptorClass)
+ ..add(commonElements.jsNullClass);
}
}
@@ -1163,7 +1167,7 @@ class JavaScriptBackend {
new jsAst.PropertyAccess(use2, dispatchProperty);
List<jsAst.Expression> arguments = <jsAst.Expression>[use1, record];
- MethodElement helper = helpers.isJsIndexable;
+ MethodElement helper = commonElements.isJsIndexable;
jsAst.Expression helperExpression = emitter.staticFunctionAccess(helper);
return new jsAst.Call(helperExpression, arguments);
}
@@ -1195,12 +1199,12 @@ class JavaScriptBackend {
_namer = determineNamer(closedWorld, codegenWorldBuilder);
tracer = new Tracer(closedWorld, namer, compiler);
emitter.createEmitter(namer, closedWorld);
- _rtiEncoder =
- _namer.rtiEncoder = new _RuntimeTypesEncoder(namer, emitter, helpers);
+ _rtiEncoder = _namer.rtiEncoder =
+ new _RuntimeTypesEncoder(namer, emitter, commonElements);
_codegenImpactTransformer = new CodegenImpactTransformer(
compiler.options,
compiler.elementEnvironment,
- helpers,
+ commonElements,
impacts,
checkedModeHelpers,
nativeData,
@@ -1230,8 +1234,8 @@ class JavaScriptBackend {
bool isTargetSpecificLibrary(LibraryElement library) {
Uri canonicalUri = library.canonicalUri;
- if (canonicalUri == BackendHelpers.DART_JS_HELPER ||
- canonicalUri == BackendHelpers.DART_INTERCEPTORS) {
+ if (canonicalUri == Uris.dart__js_helper ||
+ canonicalUri == Uris.dart__interceptors) {
return true;
}
return false;
@@ -1266,21 +1270,21 @@ class JavaScriptBackend {
if (!constantValue.isConstructedObject) continue;
ObjectConstantValue value = constantValue;
ClassElement cls = value.type.element;
- if (cls == helpers.forceInlineClass) {
+ if (cls == commonElements.forceInlineClass) {
hasForceInline = true;
if (VERBOSE_OPTIMIZER_HINTS) {
reporter.reportHintMessage(
element, MessageKind.GENERIC, {'text': "Must inline"});
}
inlineCache.markAsMustInline(element);
- } else if (cls == helpers.noInlineClass) {
+ } else if (cls == commonElements.noInlineClass) {
hasNoInline = true;
if (VERBOSE_OPTIMIZER_HINTS) {
reporter.reportHintMessage(
element, MessageKind.GENERIC, {'text': "Cannot inline"});
}
inlineCache.markAsNonInlinable(element);
- } else if (cls == helpers.noThrowsClass) {
+ } else if (cls == commonElements.noThrowsClass) {
hasNoThrows = true;
if (!Elements.isStaticOrTopLevelFunction(element) &&
!element.isFactoryConstructor) {
@@ -1294,7 +1298,7 @@ class JavaScriptBackend {
element, MessageKind.GENERIC, {'text': "Cannot throw"});
}
closedWorldRefiner.registerCannotThrow(element);
- } else if (cls == helpers.noSideEffectsClass) {
+ } else if (cls == commonElements.noSideEffectsClass) {
hasNoSideEffects = true;
if (VERBOSE_OPTIMIZER_HINTS) {
reporter.reportHintMessage(
@@ -1317,11 +1321,11 @@ class JavaScriptBackend {
}
}
- MethodElement helperForBadMain() => helpers.badMain;
+ MethodElement helperForBadMain() => commonElements.badMain;
- MethodElement helperForMissingMain() => helpers.missingMain;
+ MethodElement helperForMissingMain() => commonElements.missingMain;
- MethodElement helperForMainArity() => helpers.mainHasTooManyParameters;
+ MethodElement helperForMainArity() => commonElements.mainHasTooManyParameters;
/// Returns the filename for the output-unit named [name].
///
@@ -1352,39 +1356,41 @@ class JavaScriptBackend {
switch (element.asyncMarker) {
case AsyncMarker.ASYNC:
rewriter = new AsyncRewriter(reporter, element,
- asyncHelper: emitter.staticFunctionAccess(helpers.asyncHelper),
- wrapBody: emitter.staticFunctionAccess(helpers.wrapBody),
- newCompleter:
- emitter.staticFunctionAccess(helpers.syncCompleterConstructor),
+ asyncHelper:
+ emitter.staticFunctionAccess(commonElements.asyncHelper),
+ wrapBody: emitter.staticFunctionAccess(commonElements.wrapBody),
+ newCompleter: emitter
+ .staticFunctionAccess(commonElements.syncCompleterConstructor),
safeVariableName: namer.safeVariablePrefixForAsyncRewrite,
bodyName: namer.deriveAsyncBodyName(name));
break;
case AsyncMarker.SYNC_STAR:
rewriter = new SyncStarRewriter(reporter, element,
endOfIteration:
- emitter.staticFunctionAccess(helpers.endOfIteration),
- newIterable: emitter
- .staticFunctionAccess(helpers.syncStarIterableConstructor),
+ emitter.staticFunctionAccess(commonElements.endOfIteration),
+ newIterable: emitter.staticFunctionAccess(
+ commonElements.syncStarIterableConstructor),
yieldStarExpression:
- emitter.staticFunctionAccess(helpers.yieldStar),
- uncaughtErrorExpression:
- emitter.staticFunctionAccess(helpers.syncStarUncaughtError),
+ emitter.staticFunctionAccess(commonElements.yieldStar),
+ uncaughtErrorExpression: emitter
+ .staticFunctionAccess(commonElements.syncStarUncaughtError),
safeVariableName: namer.safeVariablePrefixForAsyncRewrite,
bodyName: namer.deriveAsyncBodyName(name));
break;
case AsyncMarker.ASYNC_STAR:
rewriter = new AsyncStarRewriter(reporter, element,
asyncStarHelper:
- emitter.staticFunctionAccess(helpers.asyncStarHelper),
+ emitter.staticFunctionAccess(commonElements.asyncStarHelper),
streamOfController:
- emitter.staticFunctionAccess(helpers.streamOfController),
- wrapBody: emitter.staticFunctionAccess(helpers.wrapBody),
- newController: emitter
- .staticFunctionAccess(helpers.asyncStarControllerConstructor),
+ emitter.staticFunctionAccess(commonElements.streamOfController),
+ wrapBody: emitter.staticFunctionAccess(commonElements.wrapBody),
+ newController: emitter.staticFunctionAccess(
+ commonElements.asyncStarControllerConstructor),
safeVariableName: namer.safeVariablePrefixForAsyncRewrite,
- yieldExpression: emitter.staticFunctionAccess(helpers.yieldSingle),
+ yieldExpression:
+ emitter.staticFunctionAccess(commonElements.yieldSingle),
yieldStarExpression:
- emitter.staticFunctionAccess(helpers.yieldStar),
+ emitter.staticFunctionAccess(commonElements.yieldStar),
bodyName: namer.deriveAsyncBodyName(name));
break;
default:
@@ -1467,47 +1473,50 @@ class JavaScriptImpactStrategy extends ImpactStrategy {
}
}
+// TODO(efortuna): Merge with commonElements.
class JavaScriptBackendClasses implements BackendClasses {
final ElementEnvironment _env;
- final BackendHelpers helpers;
+ final CommonElements _commonElements;
final NativeBasicData _nativeData;
- JavaScriptBackendClasses(this._env, this.helpers, this._nativeData);
-
- ClassEntity get intClass => helpers.jsIntClass;
- ClassEntity get uint32Class => helpers.jsUInt32Class;
- ClassEntity get uint31Class => helpers.jsUInt31Class;
- ClassEntity get positiveIntClass => helpers.jsPositiveIntClass;
- ClassEntity get doubleClass => helpers.jsDoubleClass;
- ClassEntity get numClass => helpers.jsNumberClass;
- ClassEntity get stringClass => helpers.jsStringClass;
- ClassEntity get listClass => helpers.jsArrayClass;
- ClassEntity get mutableListClass => helpers.jsMutableArrayClass;
- ClassEntity get constListClass => helpers.jsUnmodifiableArrayClass;
- ClassEntity get fixedListClass => helpers.jsFixedArrayClass;
- ClassEntity get growableListClass => helpers.jsExtendableArrayClass;
- ClassEntity get mapClass => helpers.mapLiteralClass;
- ClassEntity get constMapClass => helpers.constMapLiteralClass;
- ClassEntity get typeClass => helpers.typeLiteralClass;
+ JavaScriptBackendClasses(this._env, this._commonElements, this._nativeData);
+
+ ClassEntity get intClass => _commonElements.jsIntClass;
+ ClassEntity get uint32Class => _commonElements.jsUInt32Class;
+ ClassEntity get uint31Class => _commonElements.jsUInt31Class;
+ ClassEntity get positiveIntClass => _commonElements.jsPositiveIntClass;
+ ClassEntity get doubleClass => _commonElements.jsDoubleClass;
+ ClassEntity get numClass => _commonElements.jsNumberClass;
+ ClassEntity get stringClass => _commonElements.jsStringClass;
+ ClassEntity get listClass => _commonElements.jsArrayClass;
+ ClassEntity get mutableListClass => _commonElements.jsMutableArrayClass;
+ ClassEntity get constListClass => _commonElements.jsUnmodifiableArrayClass;
+ ClassEntity get fixedListClass => _commonElements.jsFixedArrayClass;
+ ClassEntity get growableListClass => _commonElements.jsExtendableArrayClass;
+ ClassEntity get mapClass => _commonElements.mapLiteralClass;
+ ClassEntity get constMapClass => _commonElements.constMapLiteralClass;
+ ClassEntity get typeClass => _commonElements.typeLiteralClass;
InterfaceType get typeType => _env.getRawType(typeClass);
- ClassEntity get boolClass => helpers.jsBoolClass;
- ClassEntity get nullClass => helpers.jsNullClass;
- ClassEntity get syncStarIterableClass => helpers.syncStarIterable;
- ClassEntity get asyncFutureClass => helpers.futureImplementation;
- ClassEntity get asyncStarStreamClass => helpers.controllerStream;
- ClassEntity get functionClass => helpers.commonElements.functionClass;
- ClassEntity get indexableClass => helpers.jsIndexableClass;
- ClassEntity get mutableIndexableClass => helpers.jsMutableIndexableClass;
- ClassEntity get indexingBehaviorClass => helpers.jsIndexingBehaviorInterface;
- ClassEntity get interceptorClass => helpers.jsInterceptorClass;
+ ClassEntity get boolClass => _commonElements.jsBoolClass;
+ ClassEntity get nullClass => _commonElements.jsNullClass;
+ ClassEntity get syncStarIterableClass => _commonElements.syncStarIterable;
+ ClassEntity get asyncFutureClass => _commonElements.futureImplementation;
+ ClassEntity get asyncStarStreamClass => _commonElements.controllerStream;
+ ClassEntity get functionClass => _commonElements.functionClass;
+ ClassEntity get indexableClass => _commonElements.jsIndexableClass;
+ ClassEntity get mutableIndexableClass =>
+ _commonElements.jsMutableIndexableClass;
+ ClassEntity get indexingBehaviorClass =>
+ _commonElements.jsIndexingBehaviorInterface;
+ ClassEntity get interceptorClass => _commonElements.jsInterceptorClass;
bool isDefaultEqualityImplementation(MemberEntity element) {
assert(element.name == '==');
ClassEntity classElement = element.enclosingClass;
- return classElement == helpers.commonElements.objectClass ||
- classElement == helpers.jsInterceptorClass ||
- classElement == helpers.jsNullClass;
+ return classElement == _commonElements.objectClass ||
+ classElement == _commonElements.jsInterceptorClass ||
+ classElement == _commonElements.jsNullClass;
}
@override
@@ -1519,9 +1528,9 @@ class JavaScriptBackendClasses implements BackendClasses {
{bool hasProtoKey: false, bool onlyStringKeys: false}) {
ClassEntity classElement = onlyStringKeys
? (hasProtoKey
- ? helpers.constantProtoMapClass
- : helpers.constantStringMapClass)
- : helpers.generalConstantMapClass;
+ ? _commonElements.constantProtoMapClass
+ : _commonElements.constantStringMapClass)
+ : _commonElements.generalConstantMapClass;
List<DartType> typeArgument = sourceType.typeArguments;
if (sourceType.treatAsRaw) {
return _env.getRawType(classElement);
@@ -1531,11 +1540,11 @@ class JavaScriptBackendClasses implements BackendClasses {
}
@override
- FieldEntity get symbolField => helpers.symbolImplementationField;
+ FieldEntity get symbolField => _commonElements.symbolImplementationField;
@override
InterfaceType get symbolType {
- return _env.getRawType(helpers.symbolImplementationClass);
+ return _env.getRawType(_commonElements.symbolImplementationClass);
}
}
@@ -1567,7 +1576,7 @@ class JavaScriptBackendTarget extends Target {
@override
bool isDefaultNoSuchMethod(MethodElement element) {
- return _backend.helpers.isDefaultNoSuchMethodImplementation(element);
+ return _backend.commonElements.isDefaultNoSuchMethodImplementation(element);
}
@override
« no previous file with comments | « pkg/compiler/lib/src/js_backend/annotations.dart ('k') | pkg/compiler/lib/src/js_backend/backend_helpers.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698