diff --git a/pkg/compiler/lib/src/common_elements.dart b/pkg/compiler/lib/src/common_elements.dart
index 81237f8..a57232b 100644
--- a/pkg/compiler/lib/src/common_elements.dart
+++ b/pkg/compiler/lib/src/common_elements.dart
@@ -455,7 +455,7 @@
 
   // From dart:_rti
 
-  FunctionEntity get setRuntimeTypeInfo;
+  FunctionEntity get setArrayType;
 
   FunctionEntity get findType;
   FunctionEntity get instanceType;
@@ -1848,10 +1848,10 @@
   FunctionEntity _findRtiFunction(String name) =>
       _findLibraryMember(rtiLibrary, name);
 
-  FunctionEntity _setRuntimeTypeInfo;
+  FunctionEntity _setArrayType;
   @override
-  FunctionEntity get setRuntimeTypeInfo =>
-      _setRuntimeTypeInfo ??= _findRtiFunction('setRuntimeTypeInfo');
+  FunctionEntity get setArrayType =>
+      _setArrayType ??= _findRtiFunction('_setArrayType');
 
   FunctionEntity _findType;
   @override
diff --git a/pkg/compiler/lib/src/js_backend/backend_impact.dart b/pkg/compiler/lib/src/js_backend/backend_impact.dart
index 3bd71af..cb72411 100644
--- a/pkg/compiler/lib/src/js_backend/backend_impact.dart
+++ b/pkg/compiler/lib/src/js_backend/backend_impact.dart
@@ -108,7 +108,7 @@
 
   BackendImpact get computeSignature {
     return _computeSignature ??= new BackendImpact(globalUses: [
-      _commonElements.setRuntimeTypeInfo,
+      _commonElements.setArrayType,
     ], otherImpacts: [
       listValues
     ]);
@@ -443,7 +443,7 @@
 
   BackendImpact get typeVariableExpression {
     return _typeVariableExpression ??= new BackendImpact(staticUses: [
-      _commonElements.setRuntimeTypeInfo,
+      _commonElements.setArrayType,
       _commonElements.createRuntimeType
     ], otherImpacts: [
       listValues,
@@ -464,7 +464,7 @@
   BackendImpact get genericTypeCheck {
     return _genericTypeCheck ??= new BackendImpact(staticUses: [
       // TODO(johnniwinther): Investigate why this is needed.
-      _commonElements.setRuntimeTypeInfo,
+      _commonElements.setArrayType,
     ], otherImpacts: [
       listValues,
       getRuntimeTypeArgument,
@@ -654,7 +654,7 @@
         // Literal lists can be translated into calls to these functions:
         globalUses: [
           _commonElements.jsArrayTypedConstructor,
-          _commonElements.setRuntimeTypeInfo,
+          _commonElements.setArrayType,
         ]);
   }
 
@@ -688,7 +688,7 @@
     return _runtimeTypeSupport ??= new BackendImpact(globalClasses: [
       _commonElements.listClass
     ], globalUses: [
-      _commonElements.setRuntimeTypeInfo,
+      _commonElements.setArrayType,
     ], otherImpacts: [
       getRuntimeTypeArgument,
       computeSignature
diff --git a/pkg/compiler/lib/src/js_backend/codegen_listener.dart b/pkg/compiler/lib/src/js_backend/codegen_listener.dart
index bbac3ae..f033b01 100644
--- a/pkg/compiler/lib/src/js_backend/codegen_listener.dart
+++ b/pkg/compiler/lib/src/js_backend/codegen_listener.dart
@@ -202,7 +202,7 @@
     if (type is InterfaceType) {
       impactBuilder.registerTypeUse(new TypeUse.instantiation(type));
       if (_rtiNeed.classNeedsTypeArguments(type.element)) {
-        FunctionEntity helper = _commonElements.setRuntimeTypeInfo;
+        FunctionEntity helper = _commonElements.setArrayType;
         impactBuilder.registerStaticUse(new StaticUse.staticInvoke(
             helper, helper.parameterStructure.callStructure));
       }
diff --git a/pkg/compiler/lib/src/js_backend/constant_emitter.dart b/pkg/compiler/lib/src/js_backend/constant_emitter.dart
index 9fea86f..0d0cf6c 100644
--- a/pkg/compiler/lib/src/js_backend/constant_emitter.dart
+++ b/pkg/compiler/lib/src/js_backend/constant_emitter.dart
@@ -437,8 +437,7 @@
       ConstantValue constant, InterfaceType type, jsAst.Expression value) {
     assert(type.element == _commonElements.jsArrayClass);
     if (_rtiNeed.classNeedsTypeArguments(type.element)) {
-      return new jsAst.Call(
-          getHelperProperty(_commonElements.setRuntimeTypeInfo),
+      return new jsAst.Call(getHelperProperty(_commonElements.setArrayType),
           [value, _reifiedTypeNewRti(type)]);
     }
     return value;
diff --git a/pkg/compiler/lib/src/js_backend/minify_namer.dart b/pkg/compiler/lib/src/js_backend/minify_namer.dart
index 60a2b9c..bf2f56c 100644
--- a/pkg/compiler/lib/src/js_backend/minify_namer.dart
+++ b/pkg/compiler/lib/src/js_backend/minify_namer.dart
@@ -178,7 +178,7 @@
       r'JSArray',
       r'createInvocationMirror',
       r'String',
-      r'setRuntimeTypeInfo',
+      r'setArrayType',
       r'createRuntimeType'
     ]);
   }
@@ -389,8 +389,11 @@
     String root = selector.isOperator
         ? operatorNameToIdentifier(selector.name)
         : privateName(selector.memberName);
-    String prefix =
-        selector.isGetter ? r"$get" : selector.isSetter ? r"$set" : "";
+    String prefix = selector.isGetter
+        ? r"$get"
+        : selector.isSetter
+            ? r"$set"
+            : "";
     String callSuffix = selector.isCall
         ? Namer.callSuffixForStructure(selector.callStructure).join()
         : "";
diff --git a/pkg/compiler/lib/src/ssa/builder_kernel.dart b/pkg/compiler/lib/src/ssa/builder_kernel.dart
index 0520273..c9a40cd 100644
--- a/pkg/compiler/lib/src/ssa/builder_kernel.dart
+++ b/pkg/compiler/lib/src/ssa/builder_kernel.dart
@@ -2200,14 +2200,14 @@
   HInstruction _callSetRuntimeTypeInfo(HInstruction typeInfo,
       HInstruction newObject, SourceInformation sourceInformation) {
     // Set the runtime type information on the object.
-    FunctionEntity typeInfoSetterFn = _commonElements.setRuntimeTypeInfo;
+    FunctionEntity typeInfoSetterFn = _commonElements.setArrayType;
     // TODO(efortuna): Insert source information in this static invocation.
     _pushStaticInvocation(typeInfoSetterFn, <HInstruction>[newObject, typeInfo],
         _abstractValueDomain.dynamicType, const <DartType>[],
         sourceInformation: sourceInformation);
 
     // The new object will now be referenced through the
-    // `setRuntimeTypeInfo` call. We therefore set the type of that
+    // `setArrayType` call. We therefore set the type of that
     // instruction to be of the object's type.
     assert(
         stack.last is HInvokeStatic || stack.last == newObject,
diff --git a/pkg/compiler/lib/src/ssa/optimize.dart b/pkg/compiler/lib/src/ssa/optimize.dart
index 8a819a1..f90ed78 100644
--- a/pkg/compiler/lib/src/ssa/optimize.dart
+++ b/pkg/compiler/lib/src/ssa/optimize.dart
@@ -721,7 +721,7 @@
     //     t1 = s.split(pattern);
     //     t2 = String;
     //     t3 = JSArray<t2>;
-    //     t4 = setRuntimeTypeInfo(t1, t3);
+    //     t4 = setArrayType(t1, t3);
     //
 
     AbstractValue resultMask = _abstractValueDomain.growableListType;
@@ -751,7 +751,7 @@
     node.block.addBefore(node, typeInfo);
 
     HInvokeStatic tagInstruction = new HInvokeStatic(
-        commonElements.setRuntimeTypeInfo,
+        commonElements.setArrayType,
         <HInstruction>[splitInstruction, typeInfo],
         resultMask,
         const <DartType>[]);
@@ -1368,8 +1368,8 @@
     // Can we find the length as an input to an allocation?
     HInstruction potentialAllocation = receiver;
     if (receiver is HInvokeStatic &&
-        receiver.element == commonElements.setRuntimeTypeInfo) {
-      // Look through `setRuntimeTypeInfo(new Array(), ...)`
+        receiver.element == commonElements.setArrayType) {
+      // Look through `setArrayType(new Array(), ...)`
       potentialAllocation = receiver.inputs.first;
     }
     if (_graph.allocatedFixedLists.contains(potentialAllocation)) {
@@ -1619,7 +1619,7 @@
             node.inputs[0], node.inputs[1], _abstractValueDomain.boolType)
           ..sourceInformation = node.sourceInformation;
       }
-    } else if (element == commonElements.setRuntimeTypeInfo) {
+    } else if (element == commonElements.setArrayType) {
       if (node.inputs.length == 2) {
         return handleArrayTypeInfo(node);
       }
@@ -2066,7 +2066,7 @@
     }
 
     if (instance is HInvokeStatic &&
-        instance.element == commonElements.setRuntimeTypeInfo) {
+        instance.element == commonElements.setArrayType) {
       // TODO(sra): What is the 'instantiated type' we should be registering as
       // discussed above? Perhaps it should be carried on HLiteralList.
       return instance.inputs.last;
@@ -3527,7 +3527,7 @@
         // have it escape or store it into an object that escapes.
         return false;
         // TODO(sra): Handle library functions that we know do not modify or
-        // leak the inputs. For example `setRuntimeTypeInfo` is used to mark
+        // leak the inputs. For example `setArrayType` is used to mark
         // list literals with type information.
       }
       if (use is HPhi) {
diff --git a/pkg/compiler/test/codegen/data/array_add.dart b/pkg/compiler/test/codegen/data/array_add.dart
index 9f2cb1ad..d9c0fd3 100644
--- a/pkg/compiler/test/codegen/data/array_add.dart
+++ b/pkg/compiler/test/codegen/data/array_add.dart
@@ -7,7 +7,7 @@
 // TODO(sra): Lower when type of input does not need a generic covariant check.
 @pragma('dart2js:noInline')
 /*spec.member: test1:function() {
-  var t1 = H.setRuntimeTypeInfo([], type$.JSArray_int);
+  var t1 = H._setArrayType([], type$.JSArray_int);
   C.JSArray_methods.add$1(t1, 1);
   return t1;
 }*/
diff --git a/pkg/compiler/test/impact/data/async.dart b/pkg/compiler/test/impact/data/async.dart
index 5516954..369b8ea 100644
--- a/pkg/compiler/test/impact/data/async.dart
+++ b/pkg/compiler/test/impact/data/async.dart
@@ -72,8 +72,8 @@
   _IterationMarker.uncaughtError(1),
   _IterationMarker.yieldStar(1),
   _makeSyncStarIterable<Null>(1),
-  def:local,
-  setRuntimeTypeInfo(2)],
+  _setArrayType(2),
+  def:local],
  type=[
   inst:Function,
   inst:JSArray<dynamic>,
@@ -95,9 +95,9 @@
   _asyncReturn(2),
   _asyncStartSync(2),
   _makeAsyncAwaitCompleter<Null>(0),
+  _setArrayType(2),
   _wrapJsFunctionForAsync(1),
-  def:local,
-  setRuntimeTypeInfo(2)],
+  def:local],
  type=[
   inst:Function,
   inst:JSArray<dynamic>,
@@ -118,10 +118,10 @@
   _IterationMarker.yieldStar(1),
   _asyncStarHelper(3),
   _makeAsyncStarStreamController<Null>(1),
+  _setArrayType(2),
   _streamOfController(1),
   _wrapJsFunctionForAsync(1),
-  def:local,
-  setRuntimeTypeInfo(2)],
+  def:local],
  type=[
   inst:Function,
   inst:JSArray<dynamic>,
@@ -141,8 +141,8 @@
   _IterationMarker.uncaughtError(1),
   _IterationMarker.yieldStar(1),
   _makeSyncStarIterable<Null>(1),
-  def:<anonymous>,
-  setRuntimeTypeInfo(2)],
+  _setArrayType(2),
+  def:<anonymous>],
  type=[
   inst:Function,
   inst:JSArray<dynamic>,
@@ -163,9 +163,9 @@
   _asyncReturn(2),
   _asyncStartSync(2),
   _makeAsyncAwaitCompleter<Null>(0),
+  _setArrayType(2),
   _wrapJsFunctionForAsync(1),
-  def:<anonymous>,
-  setRuntimeTypeInfo(2)],
+  def:<anonymous>],
  type=[
   inst:Function,
   inst:JSArray<dynamic>,
@@ -185,10 +185,10 @@
   _IterationMarker.yieldStar(1),
   _asyncStarHelper(3),
   _makeAsyncStarStreamController<Null>(1),
+  _setArrayType(2),
   _streamOfController(1),
   _wrapJsFunctionForAsync(1),
-  def:<anonymous>,
-  setRuntimeTypeInfo(2)],
+  def:<anonymous>],
  type=[
   inst:Function,
   inst:JSArray<dynamic>,
diff --git a/pkg/compiler/test/impact/data/classes.dart b/pkg/compiler/test/impact/data/classes.dart
index bbd8d76..3b8bfc7 100644
--- a/pkg/compiler/test/impact/data/classes.dart
+++ b/pkg/compiler/test/impact/data/classes.dart
@@ -231,9 +231,9 @@
     _isObject(1),
     _isString(1),
     _isTop(1),
+    _setArrayType(2),
     findType(1),
-    instanceType(1),
-    setRuntimeTypeInfo(2)],
+    instanceType(1)],
    type=[
     inst:Closure,
     inst:JSArray<dynamic>,
@@ -313,9 +313,9 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   inst:Closure,
   inst:JSArray<dynamic>,
@@ -419,9 +419,9 @@
     _isObject(1),
     _isString(1),
     _isTop(1),
+    _setArrayType(2),
     findType(1),
-    instanceType(1),
-    setRuntimeTypeInfo(2)],
+    instanceType(1)],
    type=[
     inst:Closure,
     inst:JSArray<dynamic>,
diff --git a/pkg/compiler/test/impact/data/constants/lib.dart b/pkg/compiler/test/impact/data/constants/lib.dart
index 78375a3..9e25e3c 100644
--- a/pkg/compiler/test/impact/data/constants/lib.dart
+++ b/pkg/compiler/test/impact/data/constants/lib.dart
@@ -79,9 +79,9 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   inst:Closure,
   inst:JSArray<dynamic>,
diff --git a/pkg/compiler/test/impact/data/expressions.dart b/pkg/compiler/test/impact/data/expressions.dart
index 2beebc8..c486012 100644
--- a/pkg/compiler/test/impact/data/expressions.dart
+++ b/pkg/compiler/test/impact/data/expressions.dart
@@ -253,9 +253,9 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   as:GenericClass<int*,String*>*,
   inst:Closure,
diff --git a/pkg/compiler/test/impact/data/extract_type_arguments.dart b/pkg/compiler/test/impact/data/extract_type_arguments.dart
index 47058df..5e3a2e4 100644
--- a/pkg/compiler/test/impact/data/extract_type_arguments.dart
+++ b/pkg/compiler/test/impact/data/extract_type_arguments.dart
@@ -50,10 +50,10 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   extractTypeArguments<A<dynamic>*>(2),
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   impl:A<dynamic>*,
   impl:Function,
@@ -104,10 +104,10 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   extractTypeArguments<B<dynamic,dynamic>*>(2),
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   impl:B<dynamic,dynamic>*,
   impl:Function,
diff --git a/pkg/compiler/test/impact/data/initializers.dart b/pkg/compiler/test/impact/data/initializers.dart
index bb2066f..842f6d9 100644
--- a/pkg/compiler/test/impact/data/initializers.dart
+++ b/pkg/compiler/test/impact/data/initializers.dart
@@ -343,9 +343,9 @@
     _isObject(1),
     _isString(1),
     _isTop(1),
+    _setArrayType(2),
     findType(1),
-    instanceType(1),
-    setRuntimeTypeInfo(2)],
+    instanceType(1)],
    type=[
     inst:Closure,
     inst:JSArray<dynamic>,
diff --git a/pkg/compiler/test/impact/data/injected_cast.dart b/pkg/compiler/test/impact/data/injected_cast.dart
index 6c17bad..4d41937 100644
--- a/pkg/compiler/test/impact/data/injected_cast.dart
+++ b/pkg/compiler/test/impact/data/injected_cast.dart
@@ -148,9 +148,9 @@
     _isObject(1),
     _isString(1),
     _isTop(1),
+    _setArrayType(2),
     findType(1),
-    instanceType(1),
-    setRuntimeTypeInfo(2)],
+    instanceType(1)],
    type=[
     inst:Closure,
     inst:JSArray<dynamic>,
@@ -201,9 +201,9 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   impl:A*,
   inst:Closure,
@@ -459,9 +459,9 @@
     _isObject(1),
     _isString(1),
     _isTop(1),
+    _setArrayType(2),
     findType(1),
-    instanceType(1),
-    setRuntimeTypeInfo(2)],
+    instanceType(1)],
    type=[
     inst:Closure,
     inst:JSArray<dynamic>,
@@ -517,9 +517,9 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   impl:A*,
   impl:D*,
@@ -577,9 +577,9 @@
     _isObject(1),
     _isString(1),
     _isTop(1),
+    _setArrayType(2),
     findType(1),
-    instanceType(1),
-    setRuntimeTypeInfo(2)],
+    instanceType(1)],
    type=[
     inst:Closure,
     inst:JSArray<dynamic>,
@@ -635,9 +635,9 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   impl:A*,
   impl:D*,
@@ -752,9 +752,9 @@
     _isObject(1),
     _isString(1),
     _isTop(1),
+    _setArrayType(2),
     findType(1),
-    instanceType(1),
-    setRuntimeTypeInfo(2)],
+    instanceType(1)],
    type=[
     inst:Closure,
     inst:JSArray<dynamic>,
@@ -803,9 +803,9 @@
     _isObject(1),
     _isString(1),
     _isTop(1),
+    _setArrayType(2),
     findType(1),
-    instanceType(1),
-    setRuntimeTypeInfo(2)],
+    instanceType(1)],
    type=[
     inst:Closure,
     inst:JSArray<dynamic>,
@@ -859,9 +859,9 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   impl:List<int*>*,
   inst:Closure,
diff --git a/pkg/compiler/test/impact/data/invokes.dart b/pkg/compiler/test/impact/data/invokes.dart
index a95e117..dee6d17 100644
--- a/pkg/compiler/test/impact/data/invokes.dart
+++ b/pkg/compiler/test/impact/data/invokes.dart
@@ -243,9 +243,9 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   inst:Closure,
   inst:JSArray<dynamic>,
@@ -334,9 +334,9 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   inst:Closure,
   inst:JSArray<dynamic>,
@@ -384,9 +384,9 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   inst:Closure,
   inst:JSArray<dynamic>,
@@ -434,9 +434,9 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   inst:Closure,
   inst:JSArray<dynamic>,
@@ -484,9 +484,9 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   inst:Closure,
   inst:JSArray<dynamic>,
@@ -796,9 +796,9 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   inst:Closure,
   inst:JSArray<dynamic>,
@@ -912,8 +912,8 @@
 
 /*member: testLocalFunction:
  static=[
-  def:localFunction,
-  setRuntimeTypeInfo(2)],
+  _setArrayType(2),
+  def:localFunction],
  type=[
   inst:Function,
   inst:JSArray<dynamic>,
@@ -962,10 +962,10 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   def:localFunction,
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   inst:Closure,
   inst:Function,
@@ -986,9 +986,9 @@
 /*member: testLocalFunctionInvoke:
  dynamic=[call(0)],
  static=[
+  _setArrayType(2),
   def:localFunction,
-  localFunction(0),
-  setRuntimeTypeInfo(2)],
+  localFunction(0)],
  type=[
   inst:Function,
   inst:JSArray<dynamic>,
@@ -1004,8 +1004,8 @@
 
 /*member: testLocalFunctionGet:
  static=[
-  def:localFunction,
-  setRuntimeTypeInfo(2)],
+  _setArrayType(2),
+  def:localFunction],
  type=[
   inst:Function,
   inst:JSArray<dynamic>,
@@ -1021,8 +1021,8 @@
 
 /*member: testClosure:
  static=[
-  def:<anonymous>,
-  setRuntimeTypeInfo(2)],
+  _setArrayType(2),
+  def:<anonymous>],
  type=[
   inst:Function,
   inst:JSArray<dynamic>,
@@ -1038,8 +1038,8 @@
 /*member: testClosureInvoke:
  dynamic=[call(0)],
  static=[
-  def:<anonymous>,
-  setRuntimeTypeInfo(2)],
+  _setArrayType(2),
+  def:<anonymous>],
  type=[
   inst:Function,
   inst:JSArray<dynamic>,
diff --git a/pkg/compiler/test/impact/data/jsinterop.dart b/pkg/compiler/test/impact/data/jsinterop.dart
index 9850acf..3f41558 100644
--- a/pkg/compiler/test/impact/data/jsinterop.dart
+++ b/pkg/compiler/test/impact/data/jsinterop.dart
@@ -96,9 +96,9 @@
     _isObject(1),
     _isString(1),
     _isTop(1),
+    _setArrayType(2),
     findType(1),
-    instanceType(1),
-    setRuntimeTypeInfo(2)],
+    instanceType(1)],
    type=[
     inst:Closure,
     inst:JSArray<dynamic>,
diff --git a/pkg/compiler/test/impact/data/jsinterop_setter2.dart b/pkg/compiler/test/impact/data/jsinterop_setter2.dart
index 82f71cb..4c63bbb 100644
--- a/pkg/compiler/test/impact/data/jsinterop_setter2.dart
+++ b/pkg/compiler/test/impact/data/jsinterop_setter2.dart
@@ -46,9 +46,9 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   inst:Closure,
   inst:JSArray<dynamic>,
diff --git a/pkg/compiler/test/impact/data/runtime_type.dart b/pkg/compiler/test/impact/data/runtime_type.dart
index 926936d..bc6a52a 100644
--- a/pkg/compiler/test/impact/data/runtime_type.dart
+++ b/pkg/compiler/test/impact/data/runtime_type.dart
@@ -114,9 +114,9 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   inst:Closure,
   inst:JSArray<dynamic>,
@@ -170,9 +170,9 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   inst:Closure,
   inst:JSArray<dynamic>,
@@ -226,9 +226,9 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   inst:Closure,
   inst:JSArray<dynamic>,
@@ -280,9 +280,9 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   inst:Closure,
   inst:JSArray<dynamic>,
@@ -335,9 +335,9 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   inst:Closure,
   inst:JSArray<dynamic>,
@@ -390,9 +390,9 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   inst:Closure,
   inst:JSArray<dynamic>,
@@ -443,9 +443,9 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   inst:Closure,
   inst:JSArray<dynamic>,
@@ -498,9 +498,9 @@
   _isObject(1),
   _isString(1),
   _isTop(1),
+  _setArrayType(2),
   findType(1),
-  instanceType(1),
-  setRuntimeTypeInfo(2)],
+  instanceType(1)],
  type=[
   inst:Closure,
   inst:JSArray<dynamic>,
diff --git a/sdk/lib/_internal/js_runtime/lib/rti.dart b/sdk/lib/_internal/js_runtime/lib/rti.dart
index 376e39a..53e7de9 100644
--- a/sdk/lib/_internal/js_runtime/lib/rti.dart
+++ b/sdk/lib/_internal/js_runtime/lib/rti.dart
@@ -626,7 +626,7 @@
 // Don't inline.  Let the JS engine inline this.  The call expression is much
 // more compact that the inlined expansion.
 @pragma('dart2js:noInline')
-Object? setRuntimeTypeInfo(Object? target, Object? rti) {
+Object? _setArrayType(Object? target, Object? rti) {
   assert(rti != null);
   var rtiProperty = JS_EMBEDDED_GLOBAL('', ARRAY_RTI_PROPERTY);
   JS('var', r'#[#] = #', target, rtiProperty, rti);
diff --git a/tools/VERSION b/tools/VERSION
index 76da197..653f4d4 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 14
 PATCH 0
-PRERELEASE 27
+PRERELEASE 28
 PRERELEASE_PATCH 0
\ No newline at end of file
