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 e088576bba987bbc9db4d0ba5efd593dd5647645..a97b24537ec4862c9215031bdadce4973911dd7c 100644 |
--- a/pkg/compiler/lib/src/js_backend/backend.dart |
+++ b/pkg/compiler/lib/src/js_backend/backend.dart |
@@ -432,7 +432,9 @@ class JavaScriptBackend { |
JavaScriptBackendSerialization serialization; |
final NativeDataImpl _nativeData = new NativeDataImpl(); |
+ NativeClassData get nativeClassData => _nativeData; |
NativeData get nativeData => _nativeData; |
+ NativeClassDataBuilder get nativeClassDataBuilder => _nativeData; |
NativeDataBuilder get nativeDataBuilder => _nativeData; |
InterceptorDataBuilder _interceptorDataBuilder; |
InterceptorData _interceptorData; |
@@ -503,7 +505,7 @@ class JavaScriptBackend { |
helpers = new BackendHelpers(compiler.elementEnvironment, commonElements); |
impacts = new BackendImpacts(compiler.options, commonElements, helpers); |
backendClasses = new JavaScriptBackendClasses( |
- compiler.elementEnvironment, helpers, nativeData); |
+ compiler.elementEnvironment, helpers, nativeClassData); |
mirrorsData = new MirrorsData( |
compiler, compiler.options, commonElements, helpers, constants); |
_backendUsageBuilder = new BackendUsageBuilderImpl( |
@@ -524,7 +526,7 @@ class JavaScriptBackend { |
commonElements, |
backendClasses, |
helpers, |
- nativeData, |
+ nativeClassData, |
backendUsageBuilder); |
customElementsCodegenAnalysis = new CustomElementsCodegenAnalysis( |
this, |
@@ -532,7 +534,7 @@ class JavaScriptBackend { |
commonElements, |
backendClasses, |
helpers, |
- nativeData); |
+ nativeClassData); |
jsInteropAnalysis = new JsInteropAnalysis(this); |
mirrorsAnalysis = new MirrorsAnalysis(this, compiler.resolution); |
lookupMapLibraryAccess = |
@@ -548,7 +550,7 @@ class JavaScriptBackend { |
new SsaFunctionCompiler(this, sourceInformationStrategy, useKernel); |
serialization = new JavaScriptBackendSerialization(nativeData); |
_interceptorDataBuilder = new InterceptorDataBuilderImpl( |
- nativeData, helpers, commonElements, compiler.resolution); |
+ nativeClassData, helpers, commonElements, compiler.resolution); |
_resolutionEnqueuerListener = new ResolutionEnqueuerListener( |
kernelTask, |
compiler.options, |
@@ -556,7 +558,7 @@ class JavaScriptBackend { |
commonElements, |
helpers, |
impacts, |
- nativeData, |
+ nativeClassData, |
_interceptorDataBuilder, |
_backendUsageBuilder, |
_rtiNeedBuilder, |
@@ -686,9 +688,11 @@ class JavaScriptBackend { |
ClosedWorld closedWorld, CodegenWorldBuilder codegenWorldBuilder) { |
return compiler.options.enableMinification |
? compiler.options.useFrequencyNamer |
- ? new FrequencyBasedNamer(this, closedWorld, codegenWorldBuilder) |
- : new MinifyNamer(this, closedWorld, codegenWorldBuilder) |
- : new Namer(this, closedWorld, codegenWorldBuilder); |
+ ? new FrequencyBasedNamer( |
+ helpers, nativeData, closedWorld, codegenWorldBuilder) |
+ : new MinifyNamer( |
+ helpers, nativeData, closedWorld, codegenWorldBuilder) |
+ : new Namer(helpers, nativeData, closedWorld, codegenWorldBuilder); |
} |
/// Returns true if global optimizations such as type inferencing can apply to |
@@ -745,7 +749,7 @@ class JavaScriptBackend { |
element.isGetter || |
element.isSetter) { |
_nativeResolutionEnqueuer.handleMethodAnnotations(element); |
- if (nativeData.isNativeMember(element)) { |
+ if (nativeClassData.isNativeMember(element)) { |
native.NativeBehavior behavior = |
native.NativeBehavior.ofMethodElement(element, compiler); |
nativeDataBuilder.setNativeMethodBehavior(element, behavior); |
@@ -753,7 +757,7 @@ class JavaScriptBackend { |
} |
} else if (element.isField) { |
_nativeResolutionEnqueuer.handleFieldAnnotations(element); |
- if (nativeData.isNativeMember(element)) { |
+ if (nativeClassData.isNativeMember(element)) { |
native.NativeBehavior fieldLoadBehavior = |
native.NativeBehavior.ofFieldElementLoad(element, compiler); |
native.NativeBehavior fieldStoreBehavior = |
@@ -967,7 +971,7 @@ class JavaScriptBackend { |
compiler.options, |
const TreeShakingEnqueuerStrategy(), |
new CodegenWorldBuilderImpl( |
- this, closedWorld, const TypeMaskStrategy()), |
+ nativeClassData, closedWorld, const TypeMaskStrategy()), |
new CodegenWorkItemBuilder(this, compiler.options), |
new CodegenEnqueuerListener( |
compiler.dumpInfoTask, |
@@ -1063,11 +1067,11 @@ class JavaScriptBackend { |
native.NativeEnqueuer get nativeCodegenEnqueuer => _nativeCodegenEnqueuer; |
ClassElement defaultSuperclass(ClassElement element) { |
- if (nativeData.isJsInterop(element)) { |
+ if (nativeClassData.isJsInteropClass(element)) { |
return helpers.jsJavaScriptObjectClass; |
} |
// Native classes inherit from Interceptor. |
- return nativeData.isNativeClass(element) |
+ return nativeClassData.isNativeClass(element) |
? helpers.jsInterceptorClass |
: commonElements.objectClass; |
} |
@@ -1546,7 +1550,7 @@ class JavaScriptImpactStrategy extends ImpactStrategy { |
class JavaScriptBackendClasses implements BackendClasses { |
final ElementEnvironment _env; |
final BackendHelpers helpers; |
- final NativeData _nativeData; |
+ final NativeClassData _nativeData; |
JavaScriptBackendClasses(this._env, this.helpers, this._nativeData); |
@@ -1658,7 +1662,7 @@ class JavaScriptBackendTarget extends Target { |
@override |
bool isNativeClass(ClassEntity element) => |
- _backend.nativeData.isNativeClass(element); |
+ _backend.nativeClassData.isNativeClass(element); |
@override |
bool isForeign(Element element) => _backend.isForeign(element); |