Chromium Code Reviews| Index: pkg/compiler/lib/src/world.dart |
| diff --git a/pkg/compiler/lib/src/world.dart b/pkg/compiler/lib/src/world.dart |
| index 248f073d1b86efb5ef681830e48d8c10b5f06576..40e73a5bfc5ea6322377393165a163a72f0f1944 100644 |
| --- a/pkg/compiler/lib/src/world.dart |
| +++ b/pkg/compiler/lib/src/world.dart |
| @@ -5,7 +5,7 @@ |
| library dart2js.world; |
| import 'closure.dart' show SynthesizedCallMethodElementX; |
| -import 'common/backend_api.dart' show Backend; |
| +import 'common/backend_api.dart' show BackendClasses; |
| import 'common.dart'; |
| import 'compiler.dart' show Compiler; |
| import 'core_types.dart' show CoreClasses; |
| @@ -39,9 +39,10 @@ abstract class World {} |
| /// This precise knowledge about what's live in the program is later used in |
| /// optimizations and other compiler decisions during code generation. |
| abstract class ClosedWorld implements World { |
| - // TODO(johnniwinther): Refine this into a `BackendClasses` interface. |
| - Backend get backend; |
| + /// Access to core classes used by the backend. |
| + BackendClasses get backendClasses; |
| + /// Access to core classes used in the Dart language. |
| CoreClasses get coreClasses; |
| /// Returns `true` if [cls] is either directly or indirectly instantiated. |
| @@ -501,8 +502,8 @@ class WorldImpl implements ClosedWorld, ClosedWorldRefiner, OpenWorld { |
| @override |
| ClassElement getLubOfInstantiatedSubclasses(ClassElement cls) { |
| assert(isClosed); |
| - if (backend.isJsInterop(cls)) { |
| - return backend.helpers.jsJavaScriptObjectClass; |
| + if (_backend.isJsInterop(cls)) { |
| + return _backend.helpers.jsJavaScriptObjectClass; |
| } |
| ClassHierarchyNode hierarchy = _classHierarchyNodes[cls.declaration]; |
| return hierarchy != null |
| @@ -513,8 +514,8 @@ class WorldImpl implements ClosedWorld, ClosedWorldRefiner, OpenWorld { |
| @override |
| ClassElement getLubOfInstantiatedSubtypes(ClassElement cls) { |
| assert(isClosed); |
| - if (backend.isJsInterop(cls)) { |
| - return backend.helpers.jsJavaScriptObjectClass; |
| + if (_backend.isJsInterop(cls)) { |
| + return _backend.helpers.jsJavaScriptObjectClass; |
| } |
| ClassSet classSet = _classSets[cls.declaration]; |
| return classSet != null ? classSet.getLubOfInstantiatedSubtypes() : null; |
| @@ -658,7 +659,8 @@ class WorldImpl implements ClosedWorld, ClosedWorldRefiner, OpenWorld { |
| } |
| final Compiler _compiler; |
| - JavaScriptBackend get backend => _compiler.backend; |
| + BackendClasses get backendClasses => _backend.backendClasses; |
| + JavaScriptBackend get _backend => _compiler.backend; |
| CommonMasks get commonMasks => _compiler.commonMasks; |
| final FunctionSet allFunctions; |
| final Set<Element> functionsCalledInLoop = new Set<Element>(); |
| @@ -693,11 +695,6 @@ class WorldImpl implements ClosedWorld, ClosedWorldRefiner, OpenWorld { |
| bool get isClosed => _closed; |
| - // Used by selectors. |
|
Johnni Winther
2016/09/26 14:05:56
No it isn't!
|
| - bool isForeign(Element element) { |
| - return backend.isForeign(element); |
| - } |
| - |
| Set<ClassElement> typesImplementedBySubclassesOf(ClassElement cls) { |
| return _typesImplementedBySubclasses[cls.declaration]; |
| } |
| @@ -913,7 +910,7 @@ class WorldImpl implements ClosedWorld, ClosedWorldRefiner, OpenWorld { |
| bool fieldNeverChanges(Element element) { |
| if (!element.isField) return false; |
| - if (backend.isNative(element)) { |
| + if (_backend.isNative(element)) { |
| // Some native fields are views of data that may be changed by operations. |
| // E.g. node.firstChild depends on parentNode.removeBefore(n1, n2). |
| // TODO(sra): Refine the effect classification so that native effects are |