Edit

kc3-lang/brotli/js/polyfill.js

Branch :

  • Show log

    Commit

  • Author : Eugene Kliuchnikov
    Date : 2021-07-29 22:29:43
    Hash : 630b5084
    Message : Update (#914) * slimmer stack frames in encoder * fix MSAN problem in hasher_composite (not dangerous, only in large_window mode) * fix JNI decoder wrapper - power-of-two payloads fail to decode sometimes * reformat polyfil.js and decode_test.js

  • js/polyfill.js
  • if (!Int32Array.__proto__.from) {
      Object.defineProperty(Int32Array.__proto__, 'from', {
        value: function(obj) {
          obj = Object(obj);
          if (!obj['length']) {
            return new this(0);
          }
          let typed_array = new this(obj.length);
          for (let i = 0; i < typed_array.length; i++) {
            typed_array[i] = obj[i];
          }
          return typed_array;
        }
      });
    }
    
    if (!Array.prototype.copyWithin) {
      Array.prototype.copyWithin = function(target, start, end) {
        let O = Object(this);
        let len = O.length >>> 0;
        let to = target | 0;
        let from = start | 0;
        let count = Math.min(Math.min(end | 0, len) - from, len - to);
        let direction = 1;
        if (from < to && to < (from + count)) {
          direction = -1;
          from += count - 1;
          to += count - 1;
        }
        while (count > 0) {
          O[to] = O[from];
          from += direction;
          to += direction;
          count--;
        }
        return O;
      };
    }
    
    if (!Array.prototype.fill) {
      Object.defineProperty(Array.prototype, 'fill', {
        value: function(value, start, end) {
          end = end | 0;
          let O = Object(this);
          let k = start | 0;
          while (k < end) {
            O[k] = value;
            k++;
          }
          return O;
        }
      });
    }
    
    if (!Int8Array.prototype.copyWithin) {
      Int8Array.prototype.copyWithin = Array.prototype.copyWithin;
    }
    
    if (!Int8Array.prototype.fill) {
      Int8Array.prototype.fill = Array.prototype.fill;
    }
    
    if (!Int32Array.prototype.fill) {
      Int32Array.prototype.fill = Array.prototype.fill;
    }
    
    if (!Int8Array.prototype.slice) {
      Object.defineProperty(Int8Array.prototype, 'slice', {
        value: function(begin, end) {
          return new Int8Array(Array.prototype.slice.call(this, begin, end));
        }
      });
    }