@@ -16,6 +16,7 @@ import 'inferrer/abstract_value_domain.dart';
1616import 'js_backend/native_data.dart' show NativeBasicData;
1717import 'js_model/locals.dart' ;
1818import 'kernel/dart2js_target.dart' ;
19+ import 'options.dart' ;
1920import 'universe/selector.dart' show Selector;
2021
2122/// The common elements and types in Dart.
@@ -482,6 +483,7 @@ abstract class CommonElements {
482483
483484 FunctionEntity get findType;
484485 FunctionEntity get instanceType;
486+ FunctionEntity get typeLiteralMaker;
485487 FieldEntity get rtiAsField;
486488 FieldEntity get rtiCheckField;
487489 FieldEntity get rtiIsField;
@@ -614,8 +616,9 @@ abstract class JCommonElements implements CommonElements {
614616class CommonElementsImpl
615617 implements CommonElements , KCommonElements , JCommonElements {
616618 final ElementEnvironment _env;
619+ final CompilerOptions _options;
617620
618- CommonElementsImpl (this ._env);
621+ CommonElementsImpl (this ._env, this ._options );
619622
620623 ClassEntity _objectClass;
621624 @override
@@ -1443,7 +1446,9 @@ class CommonElementsImpl
14431446 ClassEntity _typeLiteralClass;
14441447 @override
14451448 ClassEntity get typeLiteralClass =>
1446- _typeLiteralClass ?? = _findHelperClass ('TypeImpl' );
1449+ _typeLiteralClass ?? = _options.experimentNewRti
1450+ ? _findRtiClass ('_Type' )
1451+ : _findHelperClass ('TypeImpl' );
14471452
14481453 ClassEntity _constMapLiteralClass;
14491454 @override
@@ -1730,8 +1735,9 @@ class CommonElementsImpl
17301735 _findHelperFunction ('throwNoSuchMethod' );
17311736
17321737 @override
1733- FunctionEntity get createRuntimeType =>
1734- _findHelperFunction ('createRuntimeType' );
1738+ FunctionEntity get createRuntimeType => _options.experimentNewRti
1739+ ? _findRtiFunction ('_createRuntimeType' )
1740+ : _findHelperFunction ('createRuntimeType' );
17351741
17361742 @override
17371743 FunctionEntity get fallThroughError =>
@@ -1805,6 +1811,8 @@ class CommonElementsImpl
18051811
18061812 // From dart:_rti
18071813
1814+ ClassEntity _findRtiClass (String name) => _findClass (rtiLibrary, name);
1815+
18081816 FunctionEntity _findRtiFunction (String name) =>
18091817 _findLibraryMember (rtiLibrary, name);
18101818
@@ -1817,6 +1825,11 @@ class CommonElementsImpl
18171825 FunctionEntity get instanceType =>
18181826 _instanceType ?? = _findRtiFunction ('instanceType' );
18191827
1828+ FunctionEntity _typeLiteralMaker;
1829+ @override
1830+ FunctionEntity get typeLiteralMaker =>
1831+ _typeLiteralMaker ?? = _findRtiFunction ('typeLiteral' );
1832+
18201833 ClassEntity get _rtiImplClass => _findClass (rtiLibrary, 'Rti' );
18211834 FieldEntity _findRtiClassField (String name) =>
18221835 _findClassMember (_rtiImplClass, name);
0 commit comments