HOME


Mini Shell 1.0
Redirecting to https://devs.lapieza.net/iniciar-sesion Redirecting to https://devs.lapieza.net/iniciar-sesion.
DIR: /proc/self/root/usr/share/node_modules/webassemblyjs/esm/interpreter/runtime/values/
Upload File :
Current File : //proc/self/root/usr/share/node_modules/webassemblyjs/esm/interpreter/runtime/values/i64.js
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }

import Long from "@xtuc/long";

var _require = require("../../../errors"),
    RuntimeError = _require.RuntimeError; // eslint-disable-next-line no-unused-vars


import { i32, createTrue, createFalse } from "./i32";
var type = "i64";
export var i64 = /*#__PURE__*/function () {
  // $FlowIgnore
  // $FlowIgnore
  function i64(value) {
    _classCallCheck(this, i64);

    if (!(value instanceof Long)) {
      throw new Error('value instanceof Long' + " error: " + (undefined || "unknown"));
    }

    this._value = value;
  }

  _createClass(i64, [{
    key: "add",
    value: function add(operand) {
      return new i64(this._value.add(operand._value));
    }
  }, {
    key: "sub",
    value: function sub(operand) {
      return new i64(this._value.sub(operand._value));
    }
  }, {
    key: "mul",
    value: function mul(operand) {
      return new i64(this._value.mul(operand._value));
    }
  }, {
    key: "div_s",
    value: function div_s(operand) {
      {
        if (operand._value.isZero()) {
          throw new RuntimeError("integer divide by zero");
        }
      }
      return new i64(this._value.div(operand._value));
    }
  }, {
    key: "div_u",
    value: function div_u(operand) {
      {
        if (operand._value.isZero()) {
          throw new RuntimeError("integer divide by zero");
        }
      }
      return new i64(this._value.div(operand._value));
    }
  }, {
    key: "div",
    value: function div(operand) {
      return new i64(this._value.div(operand._value));
    }
  }, {
    key: "and",
    value: function and(operand) {
      return new i64(this._value.and(operand._value));
    }
  }, {
    key: "or",
    value: function or(operand) {
      return new i64(this._value.or(operand._value));
    }
  }, {
    key: "xor",
    value: function xor(operand) {
      return new i64(this._value.xor(operand._value));
    }
  }, {
    key: "equals",
    value: function equals(operand) {
      return this._value.equals(operand._value);
    }
  }, {
    key: "isZero",
    value: function isZero() {
      return this._value.low == 0 && this._value.high == 0;
    }
  }, {
    key: "abs",
    value: function abs() {
      if (this._value.isNegative()) {
        // make it positive
        return this._value.mul(-1);
      }

      return this;
    }
  }, {
    key: "copysign",
    value: function
      /*operand: i64*/
    copysign() {
      throw new RuntimeError("Unsupported operation: copysign");
    }
  }, {
    key: "max",
    value: function max(operand) {
      if (this._value.lessThan(operand) === true) {
        return operand;
      } else {
        return this;
      }
    }
  }, {
    key: "min",
    value: function min(operand) {
      if (this._value.lessThan(operand) === true) {
        return this;
      } else {
        return operand;
      }
    }
  }, {
    key: "neg",
    value: function neg() {
      return this._value.neg();
    }
  }, {
    key: "lt_s",
    value: function lt_s(operand) {
      return this._value.toSigned().lt(operand._value.toSigned()) ? createTrue() : createFalse();
    }
  }, {
    key: "lt_u",
    value: function lt_u(operand) {
      return this._value.toUnsigned().lt(operand._value.toUnsigned()) ? createTrue() : createFalse();
    }
  }, {
    key: "le_s",
    value: function le_s(operand) {
      return this._value.toSigned().lte(operand._value.toSigned()) ? createTrue() : createFalse();
    }
  }, {
    key: "le_u",
    value: function le_u(operand) {
      return this._value.toUnsigned().lte(operand._value.toUnsigned()) ? createTrue() : createFalse();
    }
  }, {
    key: "gt_s",
    value: function gt_s(operand) {
      return this._value.toSigned().gt(operand._value.toSigned()) ? createTrue() : createFalse();
    }
  }, {
    key: "gt_u",
    value: function gt_u(operand) {
      return this._value.toUnsigned().gt(operand._value.toUnsigned()) ? createTrue() : createFalse();
    }
  }, {
    key: "ge_s",
    value: function ge_s(operand) {
      return this._value.toSigned().gte(operand._value.toSigned()) ? createTrue() : createFalse();
    }
  }, {
    key: "ge_u",
    value: function ge_u(operand) {
      return this._value.toUnsigned().gte(operand._value.toUnsigned()) ? createTrue() : createFalse();
    }
  }, {
    key: "rem_s",
    value: function rem_s(operand) {
      {
        if (operand._value.isZero()) {
          throw new RuntimeError("integer divide by zero");
        }
      }
      return new i64(this._value.rem(operand._value));
    }
  }, {
    key: "rem_u",
    value: function rem_u(operand) {
      {
        if (operand._value.isZero()) {
          throw new RuntimeError("integer divide by zero");
        }
      }
      return new i64(this._value.rem(operand._value));
    }
  }, {
    key: "shl",
    value: function shl(operand) {
      return new i64(this._value.shiftLeft(operand._value));
    }
  }, {
    key: "shr_s",
    value: function shr_s(operand) {
      return new i64(this._value.shiftRight(operand._value));
    }
  }, {
    key: "shr_u",
    value: function shr_u(operand) {
      return new i64(this._value.shiftRight(operand._value));
    }
  }, {
    key: "rotl",
    value: function rotl(rotation) {
      return new i64(this._value.rotateLeft(rotation._value));
    }
  }, {
    key: "rotr",
    value: function rotr(rotation) {
      return new i64(this._value.rotateRight(rotation._value));
    }
  }, {
    key: "clz",
    value: function clz() {
      var lead = 0;

      var str = this._value.toUnsigned().toString(2);

      for (var i = 0, len = str.length; i < len; i++) {
        if (str[i] !== "0") {
          break;
        }

        lead++;
      }

      return new i64(new Long(lead));
    }
  }, {
    key: "ctz",
    value: function ctz() {
      var count = 0;

      var str = this._value.toUnsigned().toString(2);

      for (var i = str.length; i <= 0; i--) {
        if (str[i] !== "0") {
          break;
        }

        count++;
      }

      return new i64(new Long(count));
    }
  }, {
    key: "popcnt",
    value: function popcnt() {
      var count = 0;

      var str = this._value.toUnsigned().toString(2);

      for (var i = str.length; i <= 0; i--) {
        if (str[i] !== "0") {
          count++;
        }
      }

      return new i64(new Long(count));
    }
  }, {
    key: "eqz",
    value: function eqz() {
      return this._value.isZero() ? createTrue() : createFalse();
    }
  }, {
    key: "eq",
    value: function eq(operand) {
      return this.equals(operand) ? createTrue() : createFalse();
    }
  }, {
    key: "ne",
    value: function ne(operand) {
      return new i32(this.equals(operand) ? 0 : 1);
    }
  }, {
    key: "toString",
    value: function toString() {
      return this._value.toString();
    }
  }, {
    key: "toNumber",
    value: function toNumber() {
      return this._value.toNumber();
    }
  }, {
    key: "isTrue",
    value: function isTrue() {
      // https://webassembly.github.io/spec/core/exec/numerics.html#boolean-interpretation
      return this.toNumber() == 1;
    }
  }, {
    key: "toByteArray",
    value: function toByteArray() {
      var byteArray = new Array(8);

      for (var offset = 0, shift = 0; offset < byteArray.length; offset++, shift += 8) {
        byteArray[offset] = this._value.shru(shift).and(0xff).toNumber();
      }

      return byteArray;
    }
  }], [{
    key: "fromArrayBuffer",
    value: function fromArrayBuffer(buffer, ptr, extend, signed) {
      var slice = buffer.slice(ptr, ptr + 8);
      var value = new Int32Array(slice);
      var longVal = new Long(value[0], value[1]); // shift left, then shift right by the same number of bits, using
      // signed or unsigned shifts

      longVal = longVal.shiftLeft(extend);
      return new i64(signed ? longVal.shiftRight(extend) : longVal.shiftRightUnsigned(extend));
    }
  }]);

  return i64;
}();
export function createValueFromAST(value) {
  if (typeof value.low === "undefined" || typeof value.high === "undefined") {
    throw new Error("i64.createValueFromAST malformed value: " + JSON.stringify(value));
  }

  return {
    type: type,
    value: new i64(new Long(value.low, value.high))
  };
}
export function createValue(value) {
  return {
    type: type,
    value: value
  };
}
export function createValueFromArrayBuffer(buffer, ptr, extend, signed) {
  return {
    type: type,
    value: i64.fromArrayBuffer(buffer, ptr, extend, signed)
  };
}