# HG changeset patch # User Jaroslav Tulach # Date 1453873563 -3600 # Node ID 5447274f0321be0bd8f54bbe606edf32c07f2a13 # Parent 412cc2201b1ad244d64335db31a0bbbbde105552 Introducing Number.prototype.__bit64 with all 64-bit operations diff -r 412cc2201b1a -r 5447274f0321 rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js --- a/rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js Tue Jan 26 08:43:29 2016 +0100 +++ b/rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js Wed Jan 27 06:46:03 2016 +0100 @@ -541,6 +541,21 @@ var result = r64.toNumber(); return negateResult ? result.neg64() : result; } + + var b = numberPrototype['__bit64'] = {}; + b.add64 = function(x,y) { return x.add64(y); }; + b.sub64 = function(x,y) { return x.sub64(y); }; + b.mul64 = function(x,y) { return x.mul64(y); }; + b.div64 = function(x,y) { return x.div64(y); }; + b.mod64 = function(x,y) { return x.mod64(y); }; + b.and64 = function(x,y) { return x.and64(y); }; + b.or64 = function(x,y) { return x.or64(y); }; + b.xor64 = function(x,y) { return x.xor64(y); }; + b.neg64 = function(x) { return x.neg64(); }; + b.shl64 = function(x,y) { return x.shl64(y); }; + b.shr64 = function(x,y) { return x.shr64(y); }; + b.ushr64 = function(x,y) { return x.ushr64(y); }; + b.compare64 = function(x,y) { return y.compare64(x); }; })(Number.prototype); vm.java_lang_Number(false); diff -r 412cc2201b1a -r 5447274f0321 rt/vm/src/main/java/org/apidesign/vm4brwsr/NumberOperations.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/NumberOperations.java Tue Jan 26 08:43:29 2016 +0100 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/NumberOperations.java Wed Jan 27 06:46:03 2016 +0100 @@ -149,19 +149,19 @@ } if ((used & BIT64) != 0) { sb.append( - " var __add64 = function(x,y) { return x.add64(y); };\n" + - " var __sub64 = function(x,y) { return x.sub64(y); };\n" + - " var __mul64 = function(x,y) { return x.mul64(y); };\n" + - " var __div64 = function(x,y) { return x.div64(y); };\n" + - " var __mod64 = function(x,y) { return x.mod64(y); };\n" + - " var __and64 = function(x,y) { return x.and64(y); };\n" + - " var __or64 = function(x,y) { return x.or64(y); };\n" + - " var __xor64 = function(x,y) { return x.xor64(y); };\n" + + " var __add64 = Number.prototype['__bit64']['add64'];\n" + + " var __sub64 = Number.prototype['__bit64']['sub64'];\n" + + " var __mul64 = Number.prototype['__bit64']['mul64'];\n" + + " var __div64 = Number.prototype['__bit64']['div64'];\n" + + " var __mod64 = Number.prototype['__bit64']['mod64'];\n" + + " var __and64 = Number.prototype['__bit64']['and64'];\n" + + " var __or64 = Number.prototype['__bit64']['or64'];\n" + + " var __xor64 = Number.prototype['__bit64']['xor64'];\n" + " var __neg64 = function(x) { return x.neg64(); };\n" + - " var __shl64 = function(x,y) { return x.shl64(y); };\n" + - " var __shr64 = function(x,y) { return x.shr64(y); };\n" + - " var __ushr64 = function(x,y) { return x.ushr64(y); };\n" + - " var __compare64 = function(x,y) { return y.compare64(x); };\n" + + " var __shl64 = Number.prototype['__bit64']['shl64'];\n" + + " var __shr64 = Number.prototype['__bit64']['shr64'];\n" + + " var __ushr64 = Number.prototype['__bit64']['ushr64'];\n" + + " var __compare64 = Number.prototype['__bit64']['compare64'];\n" + "" ); }