| Index: test/codegen/expect/language/osr_test.js | 
| diff --git a/test/codegen/expect/language/osr_test.js b/test/codegen/expect/language/osr_test.js | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..3de8efd2d79937e33efb0dc206a30b4467a4d707 | 
| --- /dev/null | 
| +++ b/test/codegen/expect/language/osr_test.js | 
| @@ -0,0 +1,118 @@ | 
| +dart_library.library('language/osr_test', null, /* Imports */[ | 
| +  'dart_sdk' | 
| +], function load__osr_test(exports, dart_sdk) { | 
| +  'use strict'; | 
| +  const core = dart_sdk.core; | 
| +  const collection = dart_sdk.collection; | 
| +  const dart = dart_sdk.dart; | 
| +  const dartx = dart_sdk.dartx; | 
| +  const osr_test = Object.create(null); | 
| +  let MyList = () => (MyList = dart.constFn(osr_test.MyList$()))(); | 
| +  let __ToList = () => (__ToList = dart.constFn(dart.functionType(core.List, [], [core.int])))(); | 
| +  let __ToList$ = () => (__ToList$ = dart.constFn(dart.definiteFunctionType(core.List, [], [core.int])))(); | 
| +  let VoidTodynamic = () => (VoidTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [])))(); | 
| +  let FnTodynamic = () => (FnTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [__ToList()])))(); | 
| +  let dynamicAnddynamicToint = () => (dynamicAnddynamicToint = dart.constFn(dart.definiteFunctionType(core.int, [dart.dynamic, dart.dynamic])))(); | 
| +  let intAndintTovoid = () => (intAndintTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.int, core.int])))(); | 
| +  let VoidTovoid = () => (VoidTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [])))(); | 
| +  let intTovoid = () => (intTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.int])))(); | 
| +  osr_test.create = function(length) { | 
| +    if (length === void 0) length = null; | 
| +    return new osr_test.MyList(length); | 
| +  }; | 
| +  dart.fn(osr_test.create, __ToList$()); | 
| +  osr_test.main = function() { | 
| +    osr_test.test(osr_test.create); | 
| +  }; | 
| +  dart.fn(osr_test.main, VoidTodynamic()); | 
| +  const _list = Symbol('_list'); | 
| +  osr_test.MyList$ = dart.generic(E => { | 
| +    let ListOfE = () => (ListOfE = dart.constFn(core.List$(E)))(); | 
| +    class MyList extends collection.ListBase$(E) { | 
| +      new(length) { | 
| +        if (length === void 0) length = null; | 
| +        this[_list] = length == null ? ListOfE().new() : ListOfE().new(length); | 
| +      } | 
| +      get(index) { | 
| +        return this[_list][dartx.get](index); | 
| +      } | 
| +      set(index, value) { | 
| +        E._check(value); | 
| +        this[_list][dartx.set](index, value); | 
| +        return value; | 
| +      } | 
| +      get length() { | 
| +        return this[_list][dartx.length]; | 
| +      } | 
| +      set length(newLength) { | 
| +        this[_list][dartx.length] = newLength; | 
| +      } | 
| +    } | 
| +    dart.setSignature(MyList, { | 
| +      constructors: () => ({new: dart.definiteFunctionType(osr_test.MyList$(E), [], [core.int])}), | 
| +      methods: () => ({ | 
| +        get: dart.definiteFunctionType(E, [core.int]), | 
| +        set: dart.definiteFunctionType(dart.void, [core.int, E]) | 
| +      }) | 
| +    }); | 
| +    dart.defineExtensionMembers(MyList, ['get', 'set', 'length', 'length']); | 
| +    return MyList; | 
| +  }); | 
| +  osr_test.MyList = MyList(); | 
| +  osr_test.test = function(create) { | 
| +    osr_test.sort_A01_t02_test(create); | 
| +  }; | 
| +  dart.fn(osr_test.test, FnTodynamic()); | 
| +  osr_test.sort_A01_t02_test = function(create) { | 
| +    function c(a, b) { | 
| +      return dart.test(dart.dsend(a, '<', b)) ? -1 : dart.equals(a, b) ? 0 : 1; | 
| +    } | 
| +    dart.fn(c, dynamicAnddynamicToint()); | 
| +    let maxlen = 7; | 
| +    let prevLength = 0; | 
| +    for (let length = 1; length < maxlen; ++length) { | 
| +      if (prevLength == length) { | 
| +        dart.throw("No progress made"); | 
| +      } | 
| +      prevLength = length; | 
| +      let a = create(length); | 
| +      let expected = create(length); | 
| +      for (let i = 0; i < length; ++i) { | 
| +        expected[dartx.set](i, i); | 
| +        a[dartx.set](i, i); | 
| +      } | 
| +      function swap(i, j) { | 
| +        let t = a[dartx.get](i); | 
| +        a[dartx.set](i, a[dartx.get](j)); | 
| +        a[dartx.set](j, t); | 
| +      } | 
| +      dart.fn(swap, intAndintTovoid()); | 
| +      function check() { | 
| +        return; | 
| +        let a_copy = core.List.new(length); | 
| +        a_copy[dartx.setRange](0, length, a); | 
| +        a_copy[dartx.sort](c); | 
| +      } | 
| +      dart.fn(check, VoidTovoid()); | 
| +      function permute(n) { | 
| +        if (n == 1) { | 
| +          check(); | 
| +        } else { | 
| +          for (let i = 0; i < dart.notNull(n); i++) { | 
| +            permute(dart.notNull(n) - 1); | 
| +            if (n[dartx['%']](2) == 1) { | 
| +              swap(0, dart.notNull(n) - 1); | 
| +            } else { | 
| +              swap(i, dart.notNull(n) - 1); | 
| +            } | 
| +          } | 
| +        } | 
| +      } | 
| +      dart.fn(permute, intTovoid()); | 
| +      permute(length); | 
| +    } | 
| +  }; | 
| +  dart.fn(osr_test.sort_A01_t02_test, FnTodynamic()); | 
| +  // Exports: | 
| +  exports.osr_test = osr_test; | 
| +}); | 
|  |