Index: src/v8natives.js |
diff --git a/src/v8natives.js b/src/v8natives.js |
index 26724a24199d3384e224573a6bc50138071d4d75..76022f9843eec835e7f45e21e92932c509fde5f5 100644 |
--- a/src/v8natives.js |
+++ b/src/v8natives.js |
@@ -1258,6 +1258,16 @@ function ObjectIsExtensible(obj) { |
} |
+// Harmony egal. |
+function ObjectIs(obj1, obj2) { |
+ if (obj1 === obj2) { |
+ return (obj1 !== 0) || ((1 / obj1) === (1 / obj2)); |
rossberg
2012/03/08 12:42:26
What's with all the redundant parentheses?
Michael Starzinger
2012/03/08 12:50:00
Done.
|
+ } else { |
+ return (obj1 !== obj1) && (obj2 !== obj2); |
+ } |
+} |
+ |
+ |
%SetCode($Object, function(x) { |
if (%_IsConstructCall()) { |
if (x == null) return this; |
@@ -1297,6 +1307,7 @@ function SetUpObject() { |
"getPrototypeOf", ObjectGetPrototypeOf, |
"getOwnPropertyDescriptor", ObjectGetOwnPropertyDescriptor, |
"getOwnPropertyNames", ObjectGetOwnPropertyNames, |
+ "is", ObjectIs, |
"isExtensible", ObjectIsExtensible, |
"isFrozen", ObjectIsFrozen, |
"isSealed", ObjectIsSealed, |
@@ -1461,6 +1472,18 @@ function NumberToPrecision(precision) { |
} |
+// Harmony isFinite. |
+function NumberIsFinite(number) { |
+ return IS_NUMBER(number) && NUMBER_IS_FINITE(number); |
+} |
+ |
+ |
+// Harmony isNaN. |
+function NumberIsNaN(number) { |
+ return IS_NUMBER(number) && NUMBER_IS_NAN(number); |
+} |
+ |
+ |
// ---------------------------------------------------------------------------- |
function SetUpNumber() { |
@@ -1505,6 +1528,10 @@ function SetUpNumber() { |
"toExponential", NumberToExponential, |
"toPrecision", NumberToPrecision |
)); |
+ InstallFunctions($Number, DONT_ENUM, $Array( |
+ "isFinite", NumberIsFinite, |
+ "isNaN", NumberIsNaN |
+ )); |
} |
SetUpNumber(); |