| Index: pkg/compiler/lib/src/js_model/js_strategy.dart
|
| diff --git a/pkg/compiler/lib/src/js_model/js_strategy.dart b/pkg/compiler/lib/src/js_model/js_strategy.dart
|
| index e3ea0863a755de386a432efbaf661f685e57d648..076f616eea1dfb910ebda322a58d4d4664473392 100644
|
| --- a/pkg/compiler/lib/src/js_model/js_strategy.dart
|
| +++ b/pkg/compiler/lib/src/js_model/js_strategy.dart
|
| @@ -5,6 +5,7 @@
|
| library dart2js.js_model.strategy;
|
|
|
| import '../backend_strategy.dart';
|
| +import '../common/tasks.dart';
|
| import '../common_elements.dart';
|
| import '../compiler.dart';
|
| import '../elements/elements.dart' show TypedefElement;
|
| @@ -18,7 +19,10 @@ import '../js_backend/backend_usage.dart';
|
| import '../js_backend/constant_system_javascript.dart';
|
| import '../js_backend/interceptor_data.dart';
|
| import '../js_backend/native_data.dart';
|
| +import '../kernel/element_map.dart';
|
| +import '../kernel/element_map_impl.dart';
|
| import '../kernel/kernel_backend_strategy.dart';
|
| +import '../kernel/kernel_strategy.dart';
|
| import '../ssa/ssa.dart';
|
| import '../universe/class_set.dart';
|
| import '../universe/world_builder.dart';
|
| @@ -28,20 +32,23 @@ import 'elements.dart';
|
|
|
| class JsBackendStrategy implements BackendStrategy {
|
| final Compiler _compiler;
|
| - final JsToFrontendMap _map = new JsToFrontendMap();
|
| + final JsToFrontendMap _map = new JsToFrontendMapImpl();
|
| + ElementEnvironment _elementEnvironment;
|
| + CommonElements _commonElements;
|
|
|
| JsBackendStrategy(this._compiler);
|
|
|
| @override
|
| ClosedWorldRefiner createClosedWorldRefiner(ClosedWorld closedWorld) {
|
| - CommonElements commonElements =
|
| - new JsCommonElements(_map, closedWorld.commonElements);
|
| + _elementEnvironment =
|
| + new JsElementEnvironment(_map, closedWorld.elementEnvironment);
|
| + _commonElements = new JsCommonElements(_map, closedWorld.commonElements);
|
| BackendUsage backendUsage =
|
| new JsBackendUsage(_map, closedWorld.backendUsage);
|
| NativeData nativeData = new JsNativeData(_map, closedWorld.nativeData);
|
| InterceptorData interceptorData = new InterceptorDataImpl(
|
| nativeData,
|
| - commonElements,
|
| + _commonElements,
|
| // TODO(johnniwinther): Convert these.
|
| const {},
|
| new Set(),
|
| @@ -89,9 +96,8 @@ class JsBackendStrategy implements BackendStrategy {
|
| }, ClassHierarchyNode.ALL);
|
|
|
| return new JsClosedWorld(
|
| - // TODO(johnniwinther): Create a JsElementEnvironment.
|
| - elementEnvironment: closedWorld.elementEnvironment,
|
| - commonElements: commonElements,
|
| + elementEnvironment: _elementEnvironment,
|
| + commonElements: _commonElements,
|
| constantSystem: const JavaScriptConstantSystem(),
|
| backendUsage: backendUsage,
|
| nativeData: nativeData,
|
| @@ -116,9 +122,13 @@ class JsBackendStrategy implements BackendStrategy {
|
| const JavaScriptSourceInformationStrategy();
|
|
|
| @override
|
| - SsaBuilderTask createSsaBuilderTask(JavaScriptBackend backend,
|
| + SsaBuilder createSsaBuilder(CompilerTask task, JavaScriptBackend backend,
|
| SourceInformationStrategy sourceInformationStrategy) {
|
| - return new KernelSsaBuilderTask(backend.compiler);
|
| + KernelFrontEndStrategy strategy = backend.compiler.frontendStrategy;
|
| + KernelToElementMap elementMap = strategy.elementMap;
|
| + JsKernelToElementMap jsElementMap = new JsKernelToElementMap(
|
| + _map, _elementEnvironment, _commonElements, elementMap);
|
| + return new KernelSsaBuilder(task, backend.compiler, jsElementMap);
|
| }
|
|
|
| @override
|
|
|