| Index: sdk/lib/_internal/compiler/implementation/inferrer/node_tracer.dart
|
| diff --git a/sdk/lib/_internal/compiler/implementation/inferrer/node_tracer.dart b/sdk/lib/_internal/compiler/implementation/inferrer/node_tracer.dart
|
| index b1ba510d50e0f7f1e3d443896b592548184b31fd..930db4f1d8e21a41c00416cb531759df72a4b74a 100644
|
| --- a/sdk/lib/_internal/compiler/implementation/inferrer/node_tracer.dart
|
| +++ b/sdk/lib/_internal/compiler/implementation/inferrer/node_tracer.dart
|
| @@ -66,8 +66,9 @@ Set<String> doesNotEscapeMapSet = new Set<String>.from(
|
| 'keys'
|
| ]);
|
|
|
| -abstract class TracerVisitor implements TypeInformationVisitor {
|
| - final TypeInformation tracedType;
|
| +abstract class TracerVisitor<T extends TypeInformation>
|
| + implements TypeInformationVisitor {
|
| + final T tracedType;
|
| final TypeGraphInferrerEngine inferrer;
|
| final Compiler compiler;
|
|
|
| @@ -343,7 +344,7 @@ abstract class TracerVisitor implements TypeInformationVisitor {
|
| && inferrer.isNativeElement(element.enclosingElement)) {
|
| bailout('Passed to a native method');
|
| }
|
| - if (info.isClosurized()) {
|
| + if (info.isClosurized) {
|
| bailout('Returned from a closurized method');
|
| }
|
| if (isClosure(info.element)) {
|
| @@ -352,6 +353,10 @@ abstract class TracerVisitor implements TypeInformationVisitor {
|
| if (compiler.backend.isNeededForReflection(info.element)) {
|
| bailout('Escape in reflection');
|
| }
|
| + if (!inferrer.compiler.backend
|
| + .canBeUsedForGlobalOptimizations(info.element)) {
|
| + bailout('Escape to code that has special backend treatment');
|
| + }
|
| if (isParameterOfListAddingMethod(info.element) ||
|
| isParameterOfMapAddingMethod(info.element)) {
|
| // These elements are being handled in
|
|
|