emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js
1 // empty line needed here
2 Number.prototype.add32 = function(x) { return (this + x) | 0; };
3 Number.prototype.sub32 = function(x) { return (this - x) | 0; };
4 Number.prototype.mul32 = function(x) {
5 return (((this * (x >> 16)) << 16) + this * (x & 0xFFFF)) | 0;
8 Number.prototype.toInt8 = function() { return (this << 24) >> 24; };
9 Number.prototype.toInt16 = function() { return (this << 16) >> 16; };
11 var Long = function(low, hi) {
16 function LongFromNumber(x) {
17 return new Long(x % 0xFFFFFFFF, Math.floor(x / 0xFFFFFFFF));
20 function MakeLong(x) {
21 if ((x.hi == undefined) && (x.low == undefined)) {
22 return LongFromNumber(x);
27 Long.prototype.toInt32 = function() { return this.low | 0; };
28 Long.prototype.toFP = function() { return this.hi * 0xFFFFFFFF + this.low; };
30 Long.prototype.toString = function() {
31 return String(this.toFP());
34 Long.prototype.valueOf = function() {
38 Long.prototype.compare64 = function(x) {
39 if (this.hi == x.hi) {
40 return (this.low == x.low) ? 0 : ((this.low < x.low) ? -1 : 1);
42 return (this.hi < x.hi) ? -1 : 1;
45 Long.prototype.add64 = function(x) {
46 low = this.low + x.low;
48 if (low > 0xFFFFFFFF) {
52 hi = (this.hi + x.hi + carry) & 0xFFFFFFFF;
53 return new Long(low, hi);
56 Long.prototype.div64 = function(x) {
57 return LongFromNumber(Math.floor(this.toFP() / x.toFP()));
60 Long.prototype.shl64 = function(x) {
62 hi = (this.low << (x - 32)) & 0xFFFFFFFF;
65 hi = (this.hi << x) & 0xFFFFFFFF;
66 low_reminder = this.low >> x;
70 return new Long(low, hi);