| Index: lib/compiler/implementation/ssa/optimize.dart
|
| diff --git a/lib/compiler/implementation/ssa/optimize.dart b/lib/compiler/implementation/ssa/optimize.dart
|
| index 3e7405fa1828b7ef27dce927c272ba4d51d6cebb..70273d248f26e6833b2b5f0bbff7b4bdf19d22e2 100644
|
| --- a/lib/compiler/implementation/ssa/optimize.dart
|
| +++ b/lib/compiler/implementation/ssa/optimize.dart
|
| @@ -1196,23 +1196,20 @@ class SsaProcessRecompileCandidates
|
| node.right.isInteger()) {
|
| HFieldGet left = node.left;
|
| HConstant right = node.right;
|
| - if (left.element != null) {
|
| - Type type = left.receiver.propagatedType.computeType(compiler);
|
| + if (left.element != null && left.element.enclosingElement.isClass()) {
|
| switch (compiler.phase) {
|
| case Compiler.PHASE_COMPILING:
|
| - if (compiler.codegenWorld.couldHaveFieldOnlyIntegerSetters(
|
| - type, left.element.name) &&
|
| - compiler.codegenWorld.hasFieldOnlyIntegerInitializers(
|
| - type, left.element.name)) {
|
| + if (backend.onlyFieldIntegerSettersSoFar(left.element) &&
|
| + backend.couldHaveFieldSingleTypeInitializers(
|
| + left.element, HType.INTEGER)) {
|
| compiler.enqueuer.codegen.registerRecompilationCandidate(
|
| work.element);
|
| }
|
| break;
|
| case Compiler.PHASE_RECOMPILING:
|
| - if (compiler.codegenWorld.hasFieldOnlyIntegerSetters(
|
| - type, left.element.name) &&
|
| - compiler.codegenWorld.hasFieldOnlyIntegerInitializers(
|
| - type, left.element.name)) {
|
| + if (backend.onlyFieldIntegerSettersSoFar(left.element) &&
|
| + backend.hasFieldSingleTypeInitializers(
|
| + left.element, HType.INTEGER)) {
|
| if (compiler.codegenWorld.hasInvokedSetter(left.element,
|
| compiler)) {
|
| // If there are invoked setters we don't know for sure that the
|
|
|