deps/v8/src/js/array.js
function SparseSlice(array, start_i, del_count, len, deleted_elements) {
  // Move deleted elements to a new array (the return value from splice).
  var indices = %GetArrayKeys(array, start_i + del_count);
  if (IS_NUMBER(indices)) {
    var limit = indices;
    for (var i = start_i; i < limit; ++i) {
      var current = array[i];
      if (!IS_UNDEFINED(current) || i in array) {
        %CreateDataProperty(deleted_elements, i - start_i, current);
      }
    }
  } else {
    var length = indices.length;
    for (var k = 0; k < length; ++k) {
      var key = indices[k];
      if (key >= start_i) {
        var current = array[key];
        if (!IS_UNDEFINED(current) || key in array) {
          %CreateDataProperty(deleted_elements, key - start_i, current);
        }
      }
    }
  }
}
function SparseSlice(array, start_i, del_count, len, deleted_elements) {
  // Move deleted elements to a new array (the return value from splice).
  var indices = %GetArrayKeys(array, start_i + del_count);
  if (IS_NUMBER(indices)) {
    var limit = indices;
    for (var i = start_i; i < limit; ++i) {
      var current = array[i];
      if (!IS_UNDEFINED(current) || i in array) {
        %CreateDataProperty(deleted_elements, i - start_i, current);
      }
    }
  } else {
    var length = indices.length;
    for (var k = 0; k < length; ++k) {
      var key = indices[k];
      if (key >= start_i) {
        var current = array[key];
        if (!IS_UNDEFINED(current) || key in array) {
          %CreateDataProperty(deleted_elements, key - start_i, current);
        }
      }
    }
  }
}
function SparseSlice ( array , start_i , del_count , len , deleted_elements ) { // Move deleted elements to a new array (the return value from splice). var indices = % GetArrayKeys ( array , start_i + del_count ) ; if ( IS_NUMBER ( indices ) ) { var limit = indices ; for ( var i = start_i ; i < limit ; ++ i ) { var current = array [ i ] ; if ( ! IS_UNDEFINED ( current ) || i in array ) { % CreateDataProperty ( deleted_elements , i - start_i , current ) ; } } } else { var length = indices . length ; for ( var k = 0 ; k < length ; ++ k ) { var key = indices [ k ] ; if ( key >= start_i ) { var current = array [ key ] ; if ( ! IS_UNDEFINED ( current ) || key in array ) { % CreateDataProperty ( deleted_elements , key - start_i , current ) ; } } } } }
This function implements the optimized splice implementation that can use special array operations to handle sparse arrays in a sensible fashion.
This function implements the optimized splice implementation that can use special array operations to handle sparse arrays in a sensible fashion .