text: /*
   * Any copyright is dedicated to the Public Domain.
   * http://creativecommons.org/licenses/publicdomain/
   */
  
  if (!this.hasOwnProperty("TypedObject"))
    quit();
  
  // Test a single function (`bar`) being used with arrays that are all
  // of known length, but not the same length.
  
  setJitCompilerOption("ion.usecount.trigger", 30);
  
  var N0 = 50;
  var N1 = 100;
  var N2 = 150;
  var T = TypedObject;
  var Array0 = T.uint32.array(N0);
  var Array1 = T.uint32.array(N1);
  var Array2 = T.uint32.array(N2);
  
  function bar(array, i, v) {
    assertEq(array[i], v);
  }
  
  function foo() {
    var array0 = new Array0();
    var array1 = new Array1();
    var array2 = new Array2();
  
    for (var i = 0; i < N0; i++)
      array0[i] = i + 0;
  
    for (var i = 0; i < N1; i++)
      array1[i] = i + 1;
  
    for (var i = 0; i < N2; i++)
      array2[i] = i + 2;
  
    // get it primed up..
    for (var i = 0; i < N0; i++) {
      bar(array0, i, i);
      bar(array1, i, i + 1);
      bar(array2, i, i + 2);
    }
  
    // ...do some OOB accesses...
    for (var i = N0; i < N1; i++) {
      bar(array0, i, undefined);
      bar(array1, i, i + 1);
      bar(array2, i, i + 2);
    }
  
    // ...and some more.
    for (var i = N1; i < N2; i++) {
      bar(array0, i, undefined);
      bar(array1, i, undefined);
      bar(array2, i, i + 2);
    }
  }
  
  foo();
  