Use a kMaxSafeInteger instead of Number.MAX_SAFE_INTEGER
authoraperez <aperez@igalia.com>
Thu, 17 Sep 2015 23:59:47 +0000 (16:59 -0700)
committerCommit bot <commit-bot@chromium.org>
Fri, 18 Sep 2015 00:00:00 +0000 (00:00 +0000)
Defines and uses a kMaxSafeInteger macro (which expands to the constant
2^53-1) instead of accessing Number.MAX_SAFE_INTEGER. This saves loading
the attribute from the Number object, which is slightly faster. This also
makes it clearer from reading the code that tha value being compared is
constant.

BUG=
LOG=N

Review URL: https://codereview.chromium.org/1353953002

Cr-Commit-Position: refs/heads/master@{#30814}

src/macros.py
src/runtime.js
src/v8natives.js

index 4290130..6dcf4a6 100644 (file)
@@ -74,6 +74,9 @@ define kMaxMonth = 10000000;
 # Reflect.construct().
 define kSafeArgumentsLength = 0x800000;
 
+# 2^53 - 1
+define kMaxSafeInteger = 9007199254740991;
+
 # Strict mode flags for passing to %SetProperty
 define kSloppyMode = 0;
 define kStrictMode = 1;
index 39939b1..a49a3bd 100644 (file)
@@ -33,7 +33,6 @@ var harmony_tolength = false;
 var GlobalArray = global.Array;
 var GlobalBoolean = global.Boolean;
 var GlobalString = global.String;
-var GlobalNumber = global.Number;
 var isConcatSpreadableSymbol =
     utils.ImportNow("is_concat_spreadable_symbol");
 
@@ -302,8 +301,7 @@ function ToInteger(x) {
 function ToLength(arg) {
   arg = ToInteger(arg);
   if (arg < 0) return 0;
-  return arg < GlobalNumber.MAX_SAFE_INTEGER ? arg
-                                             : GlobalNumber.MAX_SAFE_INTEGER;
+  return arg < kMaxSafeInteger ? arg : kMaxSafeInteger;
 }
 
 
index 6106ae9..f267ce1 100644 (file)
@@ -1544,7 +1544,7 @@ function NumberIsSafeInteger(number) {
   if (NumberIsFinite(number)) {
     var integral = TO_INTEGER(number);
     if (integral == number) {
-      return MathAbs(integral) <= GlobalNumber.MAX_SAFE_INTEGER;
+      return MathAbs(integral) <= kMaxSafeInteger;
     }
   }
   return false;