function CopyFromPrototype(obj, length) {
    var max = 0;
    for (var proto = %object_get_prototype_of(obj); proto;
         proto = %object_get_prototype_of(proto)) {
      var indices = IS_PROXY(proto) ? length : %GetArrayKeys(proto, length);
      if (IS_NUMBER(indices)) {
        // It's an interval.
        var proto_length = indices;
        for (var i = 0; i < proto_length; i++) {
          if (!HAS_OWN_PROPERTY(obj, i) && HAS_OWN_PROPERTY(proto, i)) {
            obj[i] = proto[i];
            if (i >= max) { max = i + 1; }
          }
        }
      } else {
        for (var i = 0; i < indices.length; i++) {
          var index = indices[i];
          if (!HAS_OWN_PROPERTY(obj, index) && HAS_OWN_PROPERTY(proto, index)) {
            obj[index] = proto[index];
            if (index >= max) { max = index + 1; }
          }
        }
      }
    }
    return max;
  }
function CopyFromPrototype(obj, length) {
    var max = 0;
    for (var proto = %object_get_prototype_of(obj); proto;
         proto = %object_get_prototype_of(proto)) {
      var indices = IS_PROXY(proto) ? length : %GetArrayKeys(proto, length);
      if (IS_NUMBER(indices)) {
        
        var proto_length = indices;
        for (var i = 0; i < proto_length; i++) {
          if (!HAS_OWN_PROPERTY(obj, i) && HAS_OWN_PROPERTY(proto, i)) {
            obj[i] = proto[i];
            if (i >= max) { max = i + 1; }
          }
        }
      } else {
        for (var i = 0; i < indices.length; i++) {
          var index = indices[i];
          if (!HAS_OWN_PROPERTY(obj, index) && HAS_OWN_PROPERTY(proto, index)) {
            obj[index] = proto[index];
            if (index >= max) { max = index + 1; }
          }
        }
      }
    }
    return max;
  }
function CopyFromPrototype ( obj , length ) { var max = 0 ; for ( var proto = % object_get_prototype_of ( obj ) ; proto ; proto = % object_get_prototype_of ( proto ) ) { var indices = IS_PROXY ( proto ) ? length : % GetArrayKeys ( proto , length ) ; if ( IS_NUMBER ( indices ) ) { // It's an interval. var proto_length = indices ; for ( var i = 0 ; i < proto_length ; i ++ ) { if ( ! HAS_OWN_PROPERTY ( obj , i ) && HAS_OWN_PROPERTY ( proto , i ) ) { obj [ i ] = proto [ i ] ; if ( i >= max ) { max = i + 1 ; } } } } else { for ( var i = 0 ; i < indices . length ; i ++ ) { var index = indices [ i ] ; if ( ! HAS_OWN_PROPERTY ( obj , index ) && HAS_OWN_PROPERTY ( proto , index ) ) { obj [ index ] = proto [ index ] ; if ( index >= max ) { max = index + 1 ; } } } } } return max ; }
Copy elements in the range 0..length from obj's prototype chain to obj itself, if obj has holes. Return one more than the maximal index of a prototype property.
Copy elements in the range 0 .. length from obj s prototype chain to obj itself if obj has holes . Return one more than the maximal index of a prototype property .