| Index: pkg/compiler/lib/src/ssa/builder_kernel.dart
|
| diff --git a/pkg/compiler/lib/src/ssa/builder_kernel.dart b/pkg/compiler/lib/src/ssa/builder_kernel.dart
|
| index 45b6e262d72022a2eafbec18353ced028a12a2c2..0c48c62aa12213f45f47c9138b9cd4bb01970d46 100644
|
| --- a/pkg/compiler/lib/src/ssa/builder_kernel.dart
|
| +++ b/pkg/compiler/lib/src/ssa/builder_kernel.dart
|
| @@ -2027,35 +2027,25 @@ class KernelSsaBuilder extends ir.Visitor with GraphBuilder {
|
| // Invoke the getter
|
| _pushStaticInvocation(getter, const <HInstruction>[],
|
| _typeInferenceMap.getReturnTypeOf(getter));
|
| - } else if (staticTarget is ir.Field &&
|
| - (staticTarget.isConst ||
|
| - staticTarget.isFinal && !_isLazyStatic(staticTarget))) {
|
| - ConstantValue value = _elementMap.getConstantValue(
|
| - staticTarget.initializer,
|
| - requireConstant: staticTarget.isConst);
|
| + } else if (staticTarget is ir.Field) {
|
| + FieldEntity field = _elementMap.getField(staticTarget);
|
| + ConstantValue value = _elementMap.getFieldConstantValue(staticTarget);
|
| if (value != null) {
|
| - stack.add(graph.addConstant(value, closedWorld));
|
| + if (!field.isAssignable) {
|
| + stack.add(graph.addConstant(value, closedWorld));
|
| + } else {
|
| + push(new HStatic(field, _typeInferenceMap.getInferredTypeOf(field)));
|
| + }
|
| } else {
|
| - FieldEntity field = _elementMap.getField(staticTarget);
|
| push(
|
| new HLazyStatic(field, _typeInferenceMap.getInferredTypeOf(field)));
|
| }
|
| } else {
|
| - if (_isLazyStatic(staticTarget)) {
|
| - FieldEntity field = _elementMap.getField(staticTarget);
|
| - push(
|
| - new HLazyStatic(field, _typeInferenceMap.getInferredTypeOf(field)));
|
| - } else {
|
| - MemberEntity member = _elementMap.getMember(staticTarget);
|
| - push(new HStatic(member, _typeInferenceMap.getInferredTypeOf(member)));
|
| - }
|
| + MemberEntity member = _elementMap.getMember(staticTarget);
|
| + push(new HStatic(member, _typeInferenceMap.getInferredTypeOf(member)));
|
| }
|
| }
|
|
|
| - bool _isLazyStatic(ir.Member target) {
|
| - return astAdapter.isLazyStatic(target);
|
| - }
|
| -
|
| @override
|
| void visitStaticSet(ir.StaticSet staticSet) {
|
| staticSet.value.accept(this);
|
|
|