From bd19a1e66a9ba8f9bb4101ce0e4ece33f15e9569 Mon Sep 17 00:00:00 2001 From: Danny Yoo Date: Tue, 21 Feb 2012 20:55:20 -0500 Subject: [PATCH] updating js-numbers with uncompressed version to make it easier to profile --- js-assembler/runtime-src/js-numbers.js | 33 ++++++++++++++++++++++++-- js-assembler/runtime-src/runtime.js | 4 ++-- version.rkt | 2 +- 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/js-assembler/runtime-src/js-numbers.js b/js-assembler/runtime-src/js-numbers.js index 0192b47..f8294ce 100644 --- a/js-assembler/runtime-src/js-numbers.js +++ b/js-assembler/runtime-src/js-numbers.js @@ -240,7 +240,21 @@ if (typeof(exports) !== 'undefined') { // add: scheme-number scheme-number -> scheme-number - var add = makeNumericBinop( + var add = function(x, y) { + var sum; + if (typeof(x) === 'number' && typeof(y) === 'number') { + sum = x + y; + if (isOverflow(sum)) { + return (makeBignum(x)).add(makeBignum(y)); + } + } + if (x instanceof FloatPoint && y instanceof FloatPoint) { + return x.add(y); + } + return addSlow(x, y); + }; + + var addSlow = makeNumericBinop( function(x, y) { var sum = x + y; if (isOverflow(sum)) { @@ -284,7 +298,22 @@ if (typeof(exports) !== 'undefined') { // mulitply: scheme-number scheme-number -> scheme-number - var multiply = makeNumericBinop( + var multiply = function(x, y) { + var prod; + if (typeof(x) === 'number' && typeof(y) === 'number') { + prod = x * y; + if (isOverflow(prod)) { + return (makeBignum(x)).multiply(makeBignum(y)); + } else { + return prod; + } + } + if (x instanceof FloatPoint && y instanceof FloatPoint) { + return x.multiply(y); + } + return multiplySlow(x, y); + }; + var multiplySlow = makeNumericBinop( function(x, y) { var prod = x * y; if (isOverflow(prod)) { diff --git a/js-assembler/runtime-src/runtime.js b/js-assembler/runtime-src/runtime.js index a3f5eee..5103845 100644 --- a/js-assembler/runtime-src/runtime.js +++ b/js-assembler/runtime-src/runtime.js @@ -840,7 +840,7 @@ if (typeof(x) === 'number' && typeof(y) === 'number') { sum = x + y; if (sum < -9e15 || sum > 9e15) { - return checkedAddSlowPath(M, Array.prototype.slice.call(arguments, 1)); + return plt.baselib.numbers.add(x, y); } return sum; } else { @@ -881,7 +881,7 @@ if (typeof(x) === 'number' && typeof(y) === 'number') { prod = x * y; if (prod < -9e15 || prod > 9e15) { - return checkedMulSlowPath(M, Array.prototype.slice.call(arguments, 1)); + return plt.baselib.numbers.multiply(x, y); } return prod; } else { diff --git a/version.rkt b/version.rkt index 147b2e1..4aa1fca 100644 --- a/version.rkt +++ b/version.rkt @@ -7,4 +7,4 @@ (provide version) (: version String) -(define version "1.162") +(define version "1.163")