| 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 6236ed0202a5544865e68d60a9f540e73236b377..ff9380bd4b7a5f0d0f89a05940cc9103a2221468 100644
|
| --- a/pkg/compiler/lib/src/js_backend/backend.dart
|
| +++ b/pkg/compiler/lib/src/js_backend/backend.dart
|
| @@ -1048,7 +1048,7 @@ class JavaScriptBackend extends Backend {
|
|
|
| if (constant.isFunction) {
|
| FunctionConstantValue function = constant;
|
| - registry.registerGetOfStaticFunction(function.element);
|
| + registry.registerStaticUse(new StaticUse.staticTearOff(function.element));
|
| } else if (constant.isInterceptor) {
|
| // An interceptor constant references the class's prototype chain.
|
| InterceptorConstantValue interceptor = constant;
|
| @@ -1066,13 +1066,20 @@ class JavaScriptBackend extends Backend {
|
| if (type is InterfaceType) {
|
| registry.registerInstantiation(instantiatedType);
|
| if (!type.treatAsRaw && classNeedsRti(type.element)) {
|
| - registry.registerStaticInvocation(helpers.setRuntimeTypeInfo);
|
| + registry.registerStaticUse(
|
| + new StaticUse.staticInvoke(
|
| + // TODO(johnniwinther): Find the right [CallStructure].
|
| + helpers.setRuntimeTypeInfo, null));
|
| }
|
| if (type.element == typeImplementation) {
|
| // If we use a type literal in a constant, the compile time
|
| // constant emitter will generate a call to the createRuntimeType
|
| // helper so we register a use of that.
|
| - registry.registerStaticInvocation(helpers.createRuntimeType);
|
| + registry.registerStaticUse(
|
| + new StaticUse.staticInvoke(
|
| + // TODO(johnniwinther): Find the right [CallStructure].
|
| +
|
| + helpers.createRuntimeType, null));
|
| }
|
| }
|
| }
|
| @@ -1417,7 +1424,7 @@ class JavaScriptBackend extends Backend {
|
|
|
| void enableNoSuchMethod(Enqueuer world) {
|
| enqueue(world, helpers.createInvocationMirror, compiler.globalDependencies);
|
| - world.registerInvocation(
|
| + world.registerDynamicUse(
|
| new UniverseSelector(Selectors.noSuchMethod_, null));
|
| }
|
|
|
| @@ -1432,7 +1439,8 @@ class JavaScriptBackend extends Backend {
|
| // The JavaScript backend of [Isolate.spawnUri] uses the same internal
|
| // implementation as [Isolate.spawn], and fails if it cannot look main up
|
| // by name.
|
| - enqueuer.registerGetOfStaticFunction(compiler.mainFunction);
|
| + enqueuer.registerStaticUse(
|
| + new StaticUse.staticTearOff(compiler.mainFunction));
|
| }
|
| if (enqueuer.isResolutionQueue) {
|
|
|
| @@ -1588,7 +1596,8 @@ class JavaScriptBackend extends Backend {
|
| // the static variable.
|
| // We also need to register the use of the cyclic-error helper.
|
| compiler.enqueuer.codegen.registerStaticUse(
|
| - helpers.cyclicThrowHelper);
|
| + new StaticUse.staticInvoke(
|
| + helpers.cyclicThrowHelper, CallStructure.ONE_ARG));
|
| }
|
| }
|
|
|
| @@ -1826,7 +1835,7 @@ class JavaScriptBackend extends Backend {
|
| // We register all the helpers in the resolution queue.
|
| // TODO(13155): Find a way to register fewer helpers.
|
| for (CheckedModeHelper helper in checkedModeHelpers) {
|
| - enqueueInResolution(helper.getElement(compiler), registry);
|
| + enqueueInResolution(helper.getStaticUse(compiler).element, registry);
|
| }
|
| }
|
|
|
| @@ -2821,7 +2830,9 @@ class JavaScriptImpactTransformer extends ImpactTransformer {
|
| for (Element staticUse in backendImpact.staticUses) {
|
| assert(staticUse != null);
|
| backend.registerBackendUse(staticUse);
|
| - worldImpact.registerStaticUse(staticUse);
|
| + worldImpact.registerStaticUse(
|
| + // TODO(johnniwinther): Store the correct use in impacts.
|
| + new StaticUse.foreignUse(staticUse));
|
| }
|
| for (InterfaceType instantiatedType in backendImpact.instantiatedTypes) {
|
| backend.registerBackendUse(instantiatedType.element);
|
| @@ -2900,16 +2911,16 @@ class JavaScriptImpactTransformer extends ImpactTransformer {
|
| CheckedModeHelper helper =
|
| backend.getCheckedModeHelper(type, typeCast: false);
|
| if (helper != null) {
|
| - Element helperElement = helper.getElement(backend.compiler);
|
| - transformed.registerStaticUse(helperElement);
|
| - backend.registerBackendUse(helperElement);
|
| + StaticUse staticUse = helper.getStaticUse(backend.compiler);
|
| + transformed.registerStaticUse(staticUse);
|
| + backend.registerBackendUse(staticUse.element);
|
| }
|
| // We also need the native variant of the check (for DOM types).
|
| helper = backend.getNativeCheckedModeHelper(type, typeCast: false);
|
| if (helper != null) {
|
| - Element helperElement = helper.getElement(backend.compiler);
|
| - transformed.registerStaticUse(helperElement);
|
| - backend.registerBackendUse(helperElement);
|
| + StaticUse staticUse = helper.getStaticUse(backend.compiler);
|
| + transformed.registerStaticUse(staticUse);
|
| + backend.registerBackendUse(staticUse.element);
|
| }
|
| }
|
| if (!type.treatAsRaw || type.containsTypeVariables) {
|
| @@ -2933,18 +2944,6 @@ class JavaScriptImpactTransformer extends ImpactTransformer {
|
| backend.lookupMapAnalysis.registerInstantiatedType(type, registry);
|
| }
|
|
|
| - for (Element element in impact.getterForSuperElements) {
|
| - world.registerGetterForSuperMethod(element);
|
| - }
|
| -
|
| - for (Element element in impact.fieldGetters) {
|
| - world.registerFieldGetter(element);
|
| - }
|
| -
|
| - for (Element element in impact.fieldSetters) {
|
| - world.registerFieldSetter(element);
|
| - }
|
| -
|
| for (DartType type in impact.isChecks) {
|
| onIsCheckForCodegen(type, transformed);
|
| }
|
|
|