Move all type mask code to inferrer/typemasks and use it via an AbstractValueStrategy
Change-Id: Ib6f0089b0fee05488fea9295cbb5df944bb29d49
Reviewed-on: https://dart-review.googlesource.com/56980
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
diff --git a/pkg/compiler/lib/src/compiler.dart b/pkg/compiler/lib/src/compiler.dart
index ca5e4ab..79438d6 100644
--- a/pkg/compiler/lib/src/compiler.dart
+++ b/pkg/compiler/lib/src/compiler.dart
@@ -6,6 +6,8 @@
import 'dart:async' show Future;
+import 'package:front_end/src/fasta/scanner.dart' show StringToken;
+
import '../compiler_new.dart' as api;
import 'backend_strategy.dart';
import 'common/names.dart' show Selectors;
@@ -24,6 +26,7 @@
import 'enqueue.dart' show Enqueuer, EnqueueTask, ResolutionEnqueuer;
import 'environment.dart';
import 'frontend_strategy.dart';
+import 'inferrer/typemasks/masks.dart' show TypeMaskStrategy;
import 'io/source_information.dart' show SourceInformation;
import 'js_backend/backend.dart' show JavaScriptBackend;
import 'kernel/kernel_backend_strategy.dart';
@@ -32,7 +35,7 @@
import 'null_compiler_output.dart' show NullCompilerOutput, NullSink;
import 'options.dart' show CompilerOptions, DiagnosticOptions;
import 'ssa/nodes.dart' show HInstruction;
-import 'package:front_end/src/fasta/scanner.dart' show StringToken;
+import 'types/abstract_value_domain.dart' show AbstractValueStrategy;
import 'types/types.dart' show GlobalTypeInferenceTask;
import 'universe/selector.dart' show Selector;
import 'universe/world_builder.dart'
@@ -102,6 +105,8 @@
JavaScriptBackend backend;
CodegenWorldBuilder _codegenWorldBuilder;
+ AbstractValueStrategy abstractValueStrategy = const TypeMaskStrategy();
+
GenericTask selfTask;
/// The constant environment for the frontend interpretation of compile-time
@@ -416,7 +421,8 @@
ClosedWorldRefiner closeResolution(FunctionEntity mainFunction) {
phase = PHASE_DONE_RESOLVING;
- ClosedWorld closedWorld = resolutionWorldBuilder.closeWorld();
+ ClosedWorld closedWorld =
+ resolutionWorldBuilder.closeWorld(abstractValueStrategy);
OutputUnitData result = deferredLoadTask.run(mainFunction, closedWorld);
ClosedWorldRefiner closedWorldRefiner =
backendStrategy.createClosedWorldRefiner(closedWorld);
diff --git a/pkg/compiler/lib/src/inferrer/builder_kernel.dart b/pkg/compiler/lib/src/inferrer/builder_kernel.dart
index afa3b0a..addb4ce 100644
--- a/pkg/compiler/lib/src/inferrer/builder_kernel.dart
+++ b/pkg/compiler/lib/src/inferrer/builder_kernel.dart
@@ -17,7 +17,6 @@
import '../kernel/element_map.dart';
import '../native/behavior.dart';
import '../options.dart';
-import '../types/constants.dart';
import '../types/abstract_value_domain.dart';
import '../types/types.dart';
import '../universe/selector.dart';
@@ -615,8 +614,9 @@
ConstantSystem constantSystem = _closedWorld.constantSystem;
// The JavaScript backend may turn this literal into a double at
// runtime.
- return _types.getConcreteTypeFor(computeTypeMask(
- _closedWorld, constantSystem.createIntFromInt(node.value)));
+ return _types.getConcreteTypeFor(_closedWorld.abstractValueDomain
+ .computeAbstractValueForConstant(
+ constantSystem.createIntFromInt(node.value)));
}
@override
@@ -624,8 +624,9 @@
ConstantSystem constantSystem = _closedWorld.constantSystem;
// The JavaScript backend may turn this literal into an integer at
// runtime.
- return _types.getConcreteTypeFor(
- computeTypeMask(_closedWorld, constantSystem.createDouble(node.value)));
+ return _types.getConcreteTypeFor(_closedWorld.abstractValueDomain
+ .computeAbstractValueForConstant(
+ constantSystem.createDouble(node.value)));
}
@override
diff --git a/pkg/compiler/lib/src/inferrer/inferrer_engine.dart b/pkg/compiler/lib/src/inferrer/inferrer_engine.dart
index 5abfae9..799265d 100644
--- a/pkg/compiler/lib/src/inferrer/inferrer_engine.dart
+++ b/pkg/compiler/lib/src/inferrer/inferrer_engine.dart
@@ -18,7 +18,6 @@
import '../native/behavior.dart' as native;
import '../options.dart';
import '../types/abstract_value_domain.dart';
-import '../types/constants.dart';
import '../types/types.dart';
import '../universe/call_structure.dart';
import '../universe/selector.dart';
@@ -710,7 +709,8 @@
// Although we might find a better type, we have to keep
// the old type around to ensure that we get a complete view
// of the type graph and do not drop any flow edges.
- AbstractValue refinedType = computeTypeMask(closedWorld, value);
+ AbstractValue refinedType =
+ abstractValueDomain.computeAbstractValueForConstant(value);
type = new NarrowTypeInformation(
abstractValueDomain, type, refinedType);
types.allocatedTypes.add(type);
diff --git a/pkg/compiler/lib/src/types/constants.dart b/pkg/compiler/lib/src/inferrer/typemasks/constants.dart
similarity index 95%
rename from pkg/compiler/lib/src/types/constants.dart
rename to pkg/compiler/lib/src/inferrer/typemasks/constants.dart
index 58a51d7..501f7e3 100644
--- a/pkg/compiler/lib/src/types/constants.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/constants.dart
@@ -4,10 +4,10 @@
library types.constants;
-import '../common.dart';
-import '../constants/values.dart';
-import '../js_backend/js_backend.dart' show SyntheticConstantKind;
-import '../world.dart' show ClosedWorld;
+import '../../common.dart';
+import '../../constants/values.dart';
+import '../../js_backend/js_backend.dart' show SyntheticConstantKind;
+import '../../world.dart' show ClosedWorld;
import 'masks.dart';
/// Computes the [TypeMask] for the constant [value].
diff --git a/pkg/compiler/lib/src/types/container_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/container_type_mask.dart
similarity index 100%
rename from pkg/compiler/lib/src/types/container_type_mask.dart
rename to pkg/compiler/lib/src/inferrer/typemasks/container_type_mask.dart
diff --git a/pkg/compiler/lib/src/types/dictionary_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/dictionary_type_mask.dart
similarity index 100%
rename from pkg/compiler/lib/src/types/dictionary_type_mask.dart
rename to pkg/compiler/lib/src/inferrer/typemasks/dictionary_type_mask.dart
diff --git a/pkg/compiler/lib/src/types/flat_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart
similarity index 100%
rename from pkg/compiler/lib/src/types/flat_type_mask.dart
rename to pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart
diff --git a/pkg/compiler/lib/src/types/forwarding_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/forwarding_type_mask.dart
similarity index 100%
rename from pkg/compiler/lib/src/types/forwarding_type_mask.dart
rename to pkg/compiler/lib/src/inferrer/typemasks/forwarding_type_mask.dart
diff --git a/pkg/compiler/lib/src/types/map_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/map_type_mask.dart
similarity index 100%
rename from pkg/compiler/lib/src/types/map_type_mask.dart
rename to pkg/compiler/lib/src/inferrer/typemasks/map_type_mask.dart
diff --git a/pkg/compiler/lib/src/types/masks.dart b/pkg/compiler/lib/src/inferrer/typemasks/masks.dart
similarity index 97%
rename from pkg/compiler/lib/src/types/masks.dart
rename to pkg/compiler/lib/src/inferrer/typemasks/masks.dart
index a7da7b1..ea12636 100644
--- a/pkg/compiler/lib/src/types/masks.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/masks.dart
@@ -4,18 +4,18 @@
library masks;
-import '../common.dart';
-import '../common_elements.dart' show CommonElements;
-import '../constants/values.dart' show ConstantValue, PrimitiveConstantValue;
-import '../elements/entities.dart';
-import '../inferrer/type_graph_inferrer.dart' show TypeGraphInferrer;
-import '../universe/selector.dart' show Selector;
-import '../universe/use.dart' show DynamicUse;
-import '../universe/world_builder.dart'
+import '../../common.dart';
+import '../../common_elements.dart' show CommonElements;
+import '../../constants/values.dart' show ConstantValue, PrimitiveConstantValue;
+import '../../elements/entities.dart';
+import '../../types/abstract_value_domain.dart';
+import '../../universe/selector.dart' show Selector;
+import '../../universe/use.dart' show DynamicUse;
+import '../../universe/world_builder.dart'
show UniverseSelectorConstraints, SelectorConstraintsStrategy;
-import '../util/util.dart';
-import '../world.dart' show ClassQuery, ClosedWorld;
-import 'abstract_value_domain.dart';
+import '../../util/util.dart';
+import '../../world.dart' show ClassQuery, ClosedWorld;
+import '../type_graph_inferrer.dart' show TypeGraphInferrer;
import 'constants.dart';
part 'container_type_mask.dart';
diff --git a/pkg/compiler/lib/src/types/type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart
similarity index 96%
rename from pkg/compiler/lib/src/types/type_mask.dart
rename to pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart
index 0458cb9..357fc99 100644
--- a/pkg/compiler/lib/src/types/type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart
@@ -59,10 +59,24 @@
}
}
-class TypeMaskStrategy implements SelectorConstraintsStrategy {
+class TypeMaskStrategy implements AbstractValueStrategy {
const TypeMaskStrategy();
@override
+ AbstractValueDomain createDomain(ClosedWorld closedWorld) {
+ return new CommonMasks(closedWorld);
+ }
+
+ @override
+ SelectorConstraintsStrategy createSelectorStrategy() {
+ return new TypeMaskSelectorStrategy();
+ }
+}
+
+class TypeMaskSelectorStrategy implements SelectorConstraintsStrategy {
+ const TypeMaskSelectorStrategy();
+
+ @override
UniverseSelectorConstraints createSelectorConstraints(Selector selector) {
return new IncreasingTypeMaskSet();
}
diff --git a/pkg/compiler/lib/src/types/union_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/union_type_mask.dart
similarity index 100%
rename from pkg/compiler/lib/src/types/union_type_mask.dart
rename to pkg/compiler/lib/src/inferrer/typemasks/union_type_mask.dart
diff --git a/pkg/compiler/lib/src/types/value_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/value_type_mask.dart
similarity index 100%
rename from pkg/compiler/lib/src/types/value_type_mask.dart
rename to pkg/compiler/lib/src/inferrer/typemasks/value_type_mask.dart
diff --git a/pkg/compiler/lib/src/js_backend/backend.dart b/pkg/compiler/lib/src/js_backend/backend.dart
index fc92348..503b845 100644
--- a/pkg/compiler/lib/src/js_backend/backend.dart
+++ b/pkg/compiler/lib/src/js_backend/backend.dart
@@ -37,7 +37,6 @@
import '../native/native.dart' as native;
import '../ssa/ssa.dart' show SsaFunctionCompiler;
import '../tracer.dart';
-import '../types/masks.dart' show TypeMaskStrategy;
import '../universe/call_structure.dart' show CallStructure;
import '../universe/class_hierarchy_builder.dart'
show ClassHierarchyBuilder, ClassQueries;
@@ -660,7 +659,9 @@
compiler.options,
const TreeShakingEnqueuerStrategy(),
compiler.backendStrategy.createCodegenWorldBuilder(
- closedWorld.nativeData, closedWorld, const TypeMaskStrategy()),
+ closedWorld.nativeData,
+ closedWorld,
+ compiler.abstractValueStrategy.createSelectorStrategy()),
compiler.backendStrategy.createCodegenWorkItemBuilder(closedWorld),
new CodegenEnqueuerListener(
elementEnvironment,
diff --git a/pkg/compiler/lib/src/js_model/js_strategy.dart b/pkg/compiler/lib/src/js_model/js_strategy.dart
index f624144..2c563c6 100644
--- a/pkg/compiler/lib/src/js_model/js_strategy.dart
+++ b/pkg/compiler/lib/src/js_model/js_strategy.dart
@@ -39,6 +39,7 @@
import '../native/behavior.dart';
import '../options.dart';
import '../ssa/ssa.dart';
+import '../types/abstract_value_domain.dart';
import '../types/types.dart';
import '../universe/class_set.dart';
import '../universe/selector.dart';
@@ -80,7 +81,10 @@
_closureDataLookup = new KernelClosureConversionTask(
_compiler.measurer, _elementMap, _globalLocalsMap, _compiler.options);
JsClosedWorldBuilder closedWorldBuilder = new JsClosedWorldBuilder(
- _elementMap, _closureDataLookup, _compiler.options);
+ _elementMap,
+ _closureDataLookup,
+ _compiler.options,
+ _compiler.abstractValueStrategy);
return closedWorldBuilder._convertClosedWorld(
closedWorld, strategy.closureModels);
}
@@ -226,9 +230,10 @@
final Map<ClassEntity, ClassSet> _classSets = <ClassEntity, ClassSet>{};
final KernelClosureConversionTask _closureConversionTask;
final CompilerOptions _options;
+ final AbstractValueStrategy _abstractValueStrategy;
- JsClosedWorldBuilder(
- this._elementMap, this._closureConversionTask, this._options);
+ JsClosedWorldBuilder(this._elementMap, this._closureConversionTask,
+ this._options, this._abstractValueStrategy);
ElementEnvironment get _elementEnvironment => _elementMap.elementEnvironment;
CommonElements get _commonElements => _elementMap.commonElements;
@@ -390,7 +395,8 @@
assignedInstanceMembers: assignedInstanceMembers,
processedMembers: processedMembers,
mixinUses: mixinUses,
- typesImplementedBySubclasses: typesImplementedBySubclasses);
+ typesImplementedBySubclasses: typesImplementedBySubclasses,
+ abstractValueStrategy: _abstractValueStrategy);
}
BackendUsage _convertBackendUsage(
@@ -619,7 +625,8 @@
Map<ClassEntity, Set<ClassEntity>> mixinUses,
Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses,
Map<ClassEntity, ClassHierarchyNode> classHierarchyNodes,
- Map<ClassEntity, ClassSet> classSets})
+ Map<ClassEntity, ClassSet> classSets,
+ AbstractValueStrategy abstractValueStrategy})
: super(
elementEnvironment,
dartTypes,
@@ -637,7 +644,8 @@
mixinUses,
typesImplementedBySubclasses,
classHierarchyNodes,
- classSets);
+ classSets,
+ abstractValueStrategy);
@override
void registerClosureClass(ClassEntity cls) {
diff --git a/pkg/compiler/lib/src/kernel/element_map_impl.dart b/pkg/compiler/lib/src/kernel/element_map_impl.dart
index 8154793..34b50ab 100644
--- a/pkg/compiler/lib/src/kernel/element_map_impl.dart
+++ b/pkg/compiler/lib/src/kernel/element_map_impl.dart
@@ -43,6 +43,7 @@
import '../ordered_typeset.dart';
import '../ssa/kernel_impact.dart';
import '../ssa/type_builder.dart';
+import '../types/abstract_value_domain.dart';
import '../universe/class_hierarchy_builder.dart';
import '../universe/class_set.dart';
import '../universe/selector.dart';
@@ -2094,7 +2095,8 @@
Map<ClassEntity, Set<ClassEntity>> mixinUses,
Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses,
Map<ClassEntity, ClassHierarchyNode> classHierarchyNodes,
- Map<ClassEntity, ClassSet> classSets})
+ Map<ClassEntity, ClassSet> classSets,
+ AbstractValueStrategy abstractValueStrategy})
: super(
elementEnvironment,
dartTypes,
@@ -2112,7 +2114,8 @@
mixinUses,
typesImplementedBySubclasses,
classHierarchyNodes,
- classSets) {
+ classSets,
+ abstractValueStrategy) {
computeRtiNeed(resolutionWorldBuilder, rtiNeedBuilder, options);
}
diff --git a/pkg/compiler/lib/src/ssa/nodes.dart b/pkg/compiler/lib/src/ssa/nodes.dart
index c9e3647..d2ded3a 100644
--- a/pkg/compiler/lib/src/ssa/nodes.dart
+++ b/pkg/compiler/lib/src/ssa/nodes.dart
@@ -1010,9 +1010,6 @@
/// Does this node potentially affect control flow.
bool isControlFlow() => false;
- bool isExact(AbstractValueDomain domain) =>
- domain.isExactOrNull(instructionType);
-
bool isValue(AbstractValueDomain domain) =>
domain.isPrimitiveValue(instructionType);
diff --git a/pkg/compiler/lib/src/types/abstract_value_domain.dart b/pkg/compiler/lib/src/types/abstract_value_domain.dart
index 2534ec8..1cc8e7a 100644
--- a/pkg/compiler/lib/src/types/abstract_value_domain.dart
+++ b/pkg/compiler/lib/src/types/abstract_value_domain.dart
@@ -7,9 +7,21 @@
import '../constants/values.dart' show ConstantValue, PrimitiveConstantValue;
import '../elements/entities.dart';
import '../universe/selector.dart';
+import '../universe/world_builder.dart';
+import '../world.dart';
enum AbstractBool { True, False, Maybe }
+/// Strategy for the abstraction of runtime values used by the global type
+/// inference.
+abstract class AbstractValueStrategy {
+ /// Creates the abstract value domain for [closedWorld].
+ AbstractValueDomain createDomain(ClosedWorld closedWorld);
+
+ /// Creates the [SelectorConstraintsStrategy] used by the backend enqueuer.
+ SelectorConstraintsStrategy createSelectorStrategy();
+}
+
/// A value in an abstraction of runtime values.
abstract class AbstractValue {}
diff --git a/pkg/compiler/lib/src/universe/resolution_world_builder.dart b/pkg/compiler/lib/src/universe/resolution_world_builder.dart
index 0a77ecc..b1754da 100644
--- a/pkg/compiler/lib/src/universe/resolution_world_builder.dart
+++ b/pkg/compiler/lib/src/universe/resolution_world_builder.dart
@@ -1025,7 +1025,7 @@
classQueries);
@override
- ClosedWorld closeWorld() {
+ ClosedWorld closeWorld(AbstractValueStrategy abstractValueStrategy) {
Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses =
populateHierarchyNodes();
@@ -1061,6 +1061,7 @@
mixinUses: classHierarchyBuilder.mixinUses,
typesImplementedBySubclasses: typesImplementedBySubclasses,
classHierarchyNodes: classHierarchyBuilder.classHierarchyNodes,
- classSets: classHierarchyBuilder.classSets);
+ classSets: classHierarchyBuilder.classSets,
+ abstractValueStrategy: abstractValueStrategy);
}
}
diff --git a/pkg/compiler/lib/src/universe/world_builder.dart b/pkg/compiler/lib/src/universe/world_builder.dart
index 04f422e..422dba0 100644
--- a/pkg/compiler/lib/src/universe/world_builder.dart
+++ b/pkg/compiler/lib/src/universe/world_builder.dart
@@ -23,6 +23,7 @@
import '../kernel/element_map_impl.dart';
import '../native/enqueue.dart' show NativeResolutionEnqueuer;
import '../options.dart';
+import '../types/abstract_value_domain.dart';
import '../universe/class_set.dart';
import '../util/enumset.dart';
import '../util/util.dart';
diff --git a/pkg/compiler/lib/src/world.dart b/pkg/compiler/lib/src/world.dart
index 46a6d583..3780697 100644
--- a/pkg/compiler/lib/src/world.dart
+++ b/pkg/compiler/lib/src/world.dart
@@ -23,7 +23,6 @@
import 'ordered_typeset.dart';
import 'options.dart';
import 'types/abstract_value_domain.dart';
-import 'types/masks.dart' show CommonMasks;
import 'universe/class_set.dart';
import 'universe/function_set.dart' show FunctionSet;
import 'universe/selector.dart' show Selector;
@@ -389,7 +388,7 @@
abstract class OpenWorld implements World {
void registerUsedElement(MemberEntity element);
- ClosedWorld closeWorld();
+ ClosedWorld closeWorld(AbstractValueStrategy abstractValueStrategy);
/// Returns an iterable over all mixin applications that mixin [cls].
Iterable<ClassEntity> allMixinUsesOf(ClassEntity cls);
@@ -496,11 +495,12 @@
this.mixinUses,
this.typesImplementedBySubclasses,
Map<ClassEntity, ClassHierarchyNode> classHierarchyNodes,
- Map<ClassEntity, ClassSet> classSets)
+ Map<ClassEntity, ClassSet> classSets,
+ AbstractValueStrategy abstractValueStrategy)
: this._implementedClasses = implementedClasses,
this._classHierarchyNodes = classHierarchyNodes,
this._classSets = classSets {
- _abstractValueDomain = new CommonMasks(this);
+ _abstractValueDomain = abstractValueStrategy.createDomain(this);
}
@override
diff --git a/tests/compiler/dart2js/codegen/expect_annotations_test.dart b/tests/compiler/dart2js/codegen/expect_annotations_test.dart
index e5d0770f..600c8a4 100644
--- a/tests/compiler/dart2js/codegen/expect_annotations_test.dart
+++ b/tests/compiler/dart2js/codegen/expect_annotations_test.dart
@@ -6,8 +6,8 @@
import 'package:async_helper/async_helper.dart';
import 'package:compiler/src/compiler.dart';
import 'package:compiler/src/elements/entities.dart';
+import 'package:compiler/src/inferrer/typemasks/masks.dart';
import 'package:compiler/src/js_backend/annotations.dart' as optimizerHints;
-import 'package:compiler/src/types/masks.dart';
import 'package:compiler/src/types/types.dart';
import 'package:compiler/src/world.dart' show ClosedWorld;
import '../inference/type_mask_test_helper.dart';
diff --git a/tests/compiler/dart2js/codegen/trust_type_annotations_test.dart b/tests/compiler/dart2js/codegen/trust_type_annotations_test.dart
index 615226b..076929c 100644
--- a/tests/compiler/dart2js/codegen/trust_type_annotations_test.dart
+++ b/tests/compiler/dart2js/codegen/trust_type_annotations_test.dart
@@ -6,7 +6,7 @@
import "package:async_helper/async_helper.dart";
import 'package:compiler/src/commandline_options.dart';
import 'package:compiler/src/elements/entities.dart';
-import 'package:compiler/src/types/masks.dart';
+import 'package:compiler/src/inferrer/typemasks/masks.dart';
import '../memory_compiler.dart';
const String TEST = """
diff --git a/tests/compiler/dart2js/codegen/type_inference8_test.dart b/tests/compiler/dart2js/codegen/type_inference8_test.dart
index 7940d5e..1b14a0b 100644
--- a/tests/compiler/dart2js/codegen/type_inference8_test.dart
+++ b/tests/compiler/dart2js/codegen/type_inference8_test.dart
@@ -7,7 +7,7 @@
import "package:async_helper/async_helper.dart";
import "package:compiler/src/commandline_options.dart";
import "package:compiler/src/constants/values.dart";
-import "package:compiler/src/types/masks.dart";
+import 'package:compiler/src/inferrer/typemasks/masks.dart';
import "package:expect/expect.dart";
import '../memory_compiler.dart';
diff --git a/tests/compiler/dart2js/inference/inference_test_helper.dart b/tests/compiler/dart2js/inference/inference_test_helper.dart
index 4094778..94d458e 100644
--- a/tests/compiler/dart2js/inference/inference_test_helper.dart
+++ b/tests/compiler/dart2js/inference/inference_test_helper.dart
@@ -9,7 +9,7 @@
import 'package:compiler/src/compiler.dart';
import 'package:compiler/src/diagnostics/diagnostic_listener.dart';
import 'package:compiler/src/elements/entities.dart';
-import 'package:compiler/src/types/masks.dart';
+import 'package:compiler/src/inferrer/typemasks/masks.dart';
import 'package:compiler/src/types/types.dart';
import 'package:compiler/src/js_model/locals.dart';
import 'package:compiler/src/kernel/element_map.dart';
diff --git a/tests/compiler/dart2js/inference/list_tracer_test.dart b/tests/compiler/dart2js/inference/list_tracer_test.dart
index e7713ce..8ee4567 100644
--- a/tests/compiler/dart2js/inference/list_tracer_test.dart
+++ b/tests/compiler/dart2js/inference/list_tracer_test.dart
@@ -3,7 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:async_helper/async_helper.dart';
-import 'package:compiler/src/types/masks.dart' show ContainerTypeMask, TypeMask;
+import 'package:compiler/src/inferrer/typemasks/masks.dart';
import 'package:expect/expect.dart';
import 'type_mask_test_helper.dart';
diff --git a/tests/compiler/dart2js/inference/load_deferred_library_test.dart b/tests/compiler/dart2js/inference/load_deferred_library_test.dart
index 62d1b4a..7cb4515 100644
--- a/tests/compiler/dart2js/inference/load_deferred_library_test.dart
+++ b/tests/compiler/dart2js/inference/load_deferred_library_test.dart
@@ -8,10 +8,10 @@
import 'package:compiler/src/common/names.dart';
import 'package:compiler/src/compiler.dart';
import 'package:compiler/src/elements/entities.dart';
+import 'package:compiler/src/inferrer/typemasks/masks.dart';
import 'package:compiler/src/js_model/js_strategy.dart';
import 'package:compiler/src/kernel/element_map.dart';
import 'package:compiler/src/types/abstract_value_domain.dart';
-import 'package:compiler/src/types/masks.dart';
import 'package:compiler/src/world.dart';
import 'package:expect/expect.dart';
import 'package:kernel/ast.dart' as ir;
diff --git a/tests/compiler/dart2js/inference/map_tracer_test.dart b/tests/compiler/dart2js/inference/map_tracer_test.dart
index 4336589..b7cab09 100644
--- a/tests/compiler/dart2js/inference/map_tracer_test.dart
+++ b/tests/compiler/dart2js/inference/map_tracer_test.dart
@@ -6,8 +6,8 @@
import 'package:compiler/src/compiler.dart';
import 'package:compiler/src/elements/entities.dart';
import 'package:compiler/src/inferrer/type_graph_inferrer.dart';
+import 'package:compiler/src/inferrer/typemasks/masks.dart';
import 'package:compiler/src/types/abstract_value_domain.dart';
-import 'package:compiler/src/types/masks.dart' show MapTypeMask, TypeMask;
import 'package:compiler/src/world.dart';
import 'package:expect/expect.dart';
diff --git a/tests/compiler/dart2js/inference/type_combination_test.dart b/tests/compiler/dart2js/inference/type_combination_test.dart
index 64216dc..17c6e73 100644
--- a/tests/compiler/dart2js/inference/type_combination_test.dart
+++ b/tests/compiler/dart2js/inference/type_combination_test.dart
@@ -7,7 +7,7 @@
import 'package:compiler/src/common_elements.dart';
import 'package:compiler/src/compiler.dart';
import 'package:compiler/src/elements/entities.dart';
-import 'package:compiler/src/types/masks.dart';
+import 'package:compiler/src/inferrer/typemasks/masks.dart';
import 'package:compiler/src/world.dart';
import 'type_mask_test_helper.dart';
import '../memory_compiler.dart';
diff --git a/tests/compiler/dart2js/inference/type_mask2_test.dart b/tests/compiler/dart2js/inference/type_mask2_test.dart
index c5e075a..6d22a9a 100644
--- a/tests/compiler/dart2js/inference/type_mask2_test.dart
+++ b/tests/compiler/dart2js/inference/type_mask2_test.dart
@@ -8,7 +8,7 @@
import 'package:expect/expect.dart';
import 'package:async_helper/async_helper.dart';
import 'package:compiler/src/elements/entities.dart';
-import 'package:compiler/src/types/masks.dart';
+import 'package:compiler/src/inferrer/typemasks/masks.dart';
import 'package:compiler/src/world.dart' show ClosedWorld;
import '../type_test_helper.dart';
diff --git a/tests/compiler/dart2js/inference/type_mask_disjoint_test.dart b/tests/compiler/dart2js/inference/type_mask_disjoint_test.dart
index a680f5b..a1471f4 100644
--- a/tests/compiler/dart2js/inference/type_mask_disjoint_test.dart
+++ b/tests/compiler/dart2js/inference/type_mask_disjoint_test.dart
@@ -7,7 +7,7 @@
import 'package:compiler/src/common_elements.dart';
import 'package:compiler/src/compiler.dart';
import 'package:compiler/src/elements/entities.dart';
-import 'package:compiler/src/types/masks.dart';
+import 'package:compiler/src/inferrer/typemasks/masks.dart';
import 'package:compiler/src/world.dart';
import '../memory_compiler.dart';
diff --git a/tests/compiler/dart2js/inference/type_mask_test.dart b/tests/compiler/dart2js/inference/type_mask_test.dart
index 4561962..159c971 100644
--- a/tests/compiler/dart2js/inference/type_mask_test.dart
+++ b/tests/compiler/dart2js/inference/type_mask_test.dart
@@ -4,7 +4,7 @@
import 'package:async_helper/async_helper.dart';
import 'package:expect/expect.dart';
-import 'package:compiler/src/types/masks.dart';
+import 'package:compiler/src/inferrer/typemasks/masks.dart';
import 'package:compiler/src/common_elements.dart';
import 'package:compiler/src/compiler.dart';
diff --git a/tests/compiler/dart2js/inference/type_mask_test_helper.dart b/tests/compiler/dart2js/inference/type_mask_test_helper.dart
index f979741..cbaa56f 100644
--- a/tests/compiler/dart2js/inference/type_mask_test_helper.dart
+++ b/tests/compiler/dart2js/inference/type_mask_test_helper.dart
@@ -4,7 +4,7 @@
library type_mask_test_helper;
-import 'package:compiler/src/types/masks.dart';
+import 'package:compiler/src/inferrer/typemasks/masks.dart';
import 'package:compiler/src/world.dart' show ClosedWorld;
export 'package:compiler/src/types/types.dart';
diff --git a/tests/compiler/dart2js/inference/union_type_test.dart b/tests/compiler/dart2js/inference/union_type_test.dart
index 37f4e29..fc52cb5 100644
--- a/tests/compiler/dart2js/inference/union_type_test.dart
+++ b/tests/compiler/dart2js/inference/union_type_test.dart
@@ -4,7 +4,7 @@
import "package:async_helper/async_helper.dart";
import "package:expect/expect.dart";
-import "package:compiler/src/types/masks.dart";
+import 'package:compiler/src/inferrer/typemasks/masks.dart';
import "package:compiler/src/world.dart";
import '../type_test_helper.dart';
diff --git a/tests/compiler/dart2js/model/enqueuer_test.dart b/tests/compiler/dart2js/model/enqueuer_test.dart
index 78dd3fe..865d3d6 100644
--- a/tests/compiler/dart2js/model/enqueuer_test.dart
+++ b/tests/compiler/dart2js/model/enqueuer_test.dart
@@ -13,7 +13,7 @@
import 'package:compiler/src/elements/names.dart';
import 'package:compiler/src/elements/types.dart';
import 'package:compiler/src/enqueue.dart';
-import 'package:compiler/src/types/masks.dart';
+import 'package:compiler/src/inferrer/typemasks/masks.dart';
import 'package:compiler/src/universe/call_structure.dart';
import 'package:compiler/src/universe/selector.dart';
import 'package:compiler/src/universe/world_impact.dart';
diff --git a/tests/compiler/dart2js/receiver_type_test.dart b/tests/compiler/dart2js/receiver_type_test.dart
index ac1c71f..7d6d3f6 100644
--- a/tests/compiler/dart2js/receiver_type_test.dart
+++ b/tests/compiler/dart2js/receiver_type_test.dart
@@ -5,7 +5,7 @@
import 'dart:async';
import 'package:async_helper/async_helper.dart';
import 'package:compiler/src/elements/entities.dart';
-import 'package:compiler/src/types/masks.dart';
+import 'package:compiler/src/inferrer/typemasks/masks.dart';
import 'package:compiler/src/universe/selector.dart';
import 'package:compiler/src/world.dart';
import 'package:expect/expect.dart';