Index: src/js/v8natives.js |
diff --git a/src/js/v8natives.js b/src/js/v8natives.js |
index 7e62dadb051e1b7d9c7628222068974c5067c1a2..5ed3b42e359e9b59c2832d6038f89f9a326391e2 100644 |
--- a/src/js/v8natives.js |
+++ b/src/js/v8natives.js |
@@ -47,21 +47,21 @@ utils.ImportFromExperimental(function(from) { |
// ---------------------------------------------------------------------------- |
-// ECMA 262 - 15.1.4 |
+// ES6 18.2.3 isNaN(number) |
function GlobalIsNaN(number) { |
number = TO_NUMBER(number); |
return NUMBER_IS_NAN(number); |
} |
-// ECMA 262 - 15.1.5 |
+// ES6 18.2.2 isFinite(number) |
function GlobalIsFinite(number) { |
number = TO_NUMBER(number); |
return NUMBER_IS_FINITE(number); |
} |
-// ECMA-262 - 15.1.2.2 |
+// ES6 18.2.5 parseInt(string, radix) |
function GlobalParseInt(string, radix) { |
if (IS_UNDEFINED(radix) || radix === 10 || radix === 0) { |
// Some people use parseInt instead of Math.floor. This |
@@ -95,14 +95,16 @@ function GlobalParseInt(string, radix) { |
} |
-// ECMA-262 - 15.1.2.3 |
+// ES6 18.2.4 parseFloat(string) |
function GlobalParseFloat(string) { |
+ // 1. Let inputString be ? ToString(string). |
string = TO_STRING(string); |
if (%_HasCachedArrayIndex(string)) return %_GetCachedArrayIndex(string); |
return %StringParseFloat(string); |
} |
+// ES6 18.2.1 eval(x) |
function GlobalEval(x) { |
if (!IS_STRING(x)) return x; |
@@ -121,11 +123,11 @@ function GlobalEval(x) { |
var attributes = DONT_ENUM | DONT_DELETE | READ_ONLY; |
utils.InstallConstants(global, [ |
- // ECMA 262 - 15.1.1.1. |
- "NaN", NaN, |
- // ECMA-262 - 15.1.1.2. |
+ // ES6 18.1.1 |
"Infinity", INFINITY, |
- // ECMA-262 - 15.1.1.2. |
+ // ES6 18.1.2 |
+ "NaN", NaN, |
+ // ES6 18.1.3 |
"undefined", UNDEFINED, |
]); |
@@ -142,7 +144,7 @@ utils.InstallFunctions(global, DONT_ENUM, [ |
// ---------------------------------------------------------------------------- |
// Object |
-// ECMA-262 - 15.2.4.2 |
+// ES6 19.1.3.6 Object.prototype.toString() |
function ObjectToString() { |
if (IS_UNDEFINED(this)) return "[object Undefined]"; |
if (IS_NULL(this)) return "[object Null]"; |
@@ -164,14 +166,14 @@ function ObjectToString() { |
} |
-// ECMA-262 - 15.2.4.3 |
+// ES6 19.1.3.5 Object.prototype.toLocaleString([reserved1 [,reserved2]]) |
function ObjectToLocaleString() { |
CHECK_OBJECT_COERCIBLE(this, "Object.prototype.toLocaleString"); |
return this.toString(); |
} |
-// ECMA-262 - 15.2.4.4 |
+// ES6 19.1.3.7 Object.prototype.valueOf() |
function ObjectValueOf() { |
return TO_OBJECT(this); |
} |
@@ -185,7 +187,7 @@ function ObjectHasOwnProperty(value) { |
} |
-// ECMA-262 - 15.2.4.6 |
+// ES6 19.1.3.3 Object.prototype.isPrototypeOf(V) |
function ObjectIsPrototypeOf(V) { |
if (!IS_SPEC_OBJECT(V)) return false; |
var O = TO_OBJECT(this); |
@@ -258,21 +260,21 @@ function ObjectKeys(obj) { |
} |
-// ES5 8.10.1. |
+// ES6 6.2.4.1 |
function IsAccessorDescriptor(desc) { |
if (IS_UNDEFINED(desc)) return false; |
return desc.hasGetter() || desc.hasSetter(); |
} |
-// ES5 8.10.2. |
+// ES6 6.2.4.2 |
function IsDataDescriptor(desc) { |
if (IS_UNDEFINED(desc)) return false; |
return desc.hasValue() || desc.hasWritable(); |
} |
-// ES5 8.10.3. |
+// ES6 6.2.4.3 |
function IsGenericDescriptor(desc) { |
if (IS_UNDEFINED(desc)) return false; |
return !(IsAccessorDescriptor(desc) || IsDataDescriptor(desc)); |
@@ -311,7 +313,7 @@ function FromGenericPropertyDescriptor(desc) { |
} |
-// ES5 8.10.5. |
+// ES6 6.2.4.5 |
function ToPropertyDescriptor(obj) { |
if (!IS_SPEC_OBJECT(obj)) throw MakeTypeError(kPropertyDescObject, obj); |
@@ -355,8 +357,7 @@ function ToPropertyDescriptor(obj) { |
return desc; |
} |
- |
-// For Harmony proxies. |
+// TODO(cbruni): remove once callers have been removed |
function ToCompletePropertyDescriptor(obj) { |
var desc = ToPropertyDescriptor(obj); |
if (IsGenericDescriptor(desc) || IsDataDescriptor(desc)) { |
@@ -550,7 +551,7 @@ function GetOwnPropertyJS(obj, v) { |
} |
-// ES6, draft 12-24-14, section 7.3.8 |
+// ES6 7.3.9 |
function GetMethod(obj, p) { |
var func = obj[p]; |
if (IS_NULL_OR_UNDEFINED(func)) return UNDEFINED; |
@@ -578,14 +579,12 @@ function DefineProxyProperty(obj, p, attributes, should_throw) { |
} |
-// ES5 8.12.9. |
+// ES6 9.1.6 [[DefineOwnProperty]](P, Desc) |
function DefineObjectProperty(obj, p, desc, should_throw) { |
var current_array = %GetOwnProperty_Legacy(obj, TO_NAME(p)); |
var current = ConvertDescriptorArrayToDescriptor(current_array); |
var extensible = %IsExtensible(obj); |
- // Error handling according to spec. |
- // Step 3 |
if (IS_UNDEFINED(current) && !extensible) { |
if (should_throw) { |
throw MakeTypeError(kDefineDisallowed, p); |
@@ -595,7 +594,6 @@ function DefineObjectProperty(obj, p, desc, should_throw) { |
} |
if (!IS_UNDEFINED(current)) { |
- // Step 5 and 6 |
if ((IsGenericDescriptor(desc) || |
IsDataDescriptor(desc) == IsDataDescriptor(current)) && |
(!desc.hasEnumerable() || |
@@ -944,7 +942,7 @@ function ObjectIsExtensible(obj) { |
} |
-// ECMA-262, Edition 6, section 19.1.2.1 |
+// ES6 19.1.2.1 |
function ObjectAssign(target, sources) { |
// TODO(bmeurer): Move this to toplevel. |
"use strict"; |
@@ -974,13 +972,13 @@ function ObjectAssign(target, sources) { |
} |
-// ECMA-262, Edition 6, section B.2.2.1.1 |
+// ES6 B.2.2.1.1 |
function ObjectGetProto() { |
return %_GetPrototype(TO_OBJECT(this)); |
} |
-// ECMA-262, Edition 6, section B.2.2.1.2 |
+// ES6 B.2.2.1.2 |
function ObjectSetProto(proto) { |
CHECK_OBJECT_COERCIBLE(this, "Object.prototype.__proto__"); |
@@ -990,7 +988,7 @@ function ObjectSetProto(proto) { |
} |
-// ECMA-262, Edition 6, section 19.1.1.1 |
+// ES6 19.1.1.1 |
function ObjectConstructor(x) { |
if (GlobalObject != new.target && !IS_UNDEFINED(new.target)) { |
return this; |
@@ -1115,7 +1113,7 @@ function NumberConstructor(x) { |
} |
-// ECMA-262 section 15.7.4.2. |
+// ES6 Number.prototype.toString([ radix ]) |
function NumberToStringJS(radix) { |
// NOTE: Both Number objects and values can enter here as |
// 'this'. This is not as dictated by ECMA-262. |
@@ -1140,13 +1138,13 @@ function NumberToStringJS(radix) { |
} |
-// ECMA-262 section 15.7.4.3 |
+// ES6 20.1.3.4 Number.prototype.toLocaleString([reserved1 [, reserved2]]) |
function NumberToLocaleString() { |
return %_Call(NumberToStringJS, this); |
} |
-// ECMA-262 section 15.7.4.4 |
+// ES6 20.1.3.7 Number.prototype.valueOf() |
function NumberValueOf() { |
// NOTE: Both Number objects and values can enter here as |
// 'this'. This is not as dictated by ECMA-262. |
@@ -1157,7 +1155,7 @@ function NumberValueOf() { |
} |
-// ECMA-262 section 15.7.4.5 |
+// ES6 20.1.3.3 Number.prototype.toFixed(fractionDigits) |
function NumberToFixedJS(fractionDigits) { |
var x = this; |
if (!IS_NUMBER(this)) { |
@@ -1182,7 +1180,7 @@ function NumberToFixedJS(fractionDigits) { |
} |
-// ECMA-262 section 15.7.4.6 |
+// ES6 20.1.3.2 Number.prototype.toExponential(fractionDigits) |
function NumberToExponentialJS(fractionDigits) { |
var x = this; |
if (!IS_NUMBER(this)) { |
@@ -1208,7 +1206,7 @@ function NumberToExponentialJS(fractionDigits) { |
} |
-// ECMA-262 section 15.7.4.7 |
+// ES6 20.1.3.5 Number.prototype.toPrecision(precision) |
function NumberToPrecisionJS(precision) { |
var x = this; |
if (!IS_NUMBER(this)) { |
@@ -1369,6 +1367,8 @@ function FunctionToString() { |
// ES5 15.3.4.5 |
+// ES6 9.2.3.2 Function.prototype.bind(thisArg , ...args) |
+// TODO(cbruni): check again and remove FunctionProxies section further down |
function FunctionBind(this_arg) { // Length is 1. |
if (!IS_CALLABLE(this)) throw MakeTypeError(kFunctionBind); |
@@ -1482,8 +1482,7 @@ utils.InstallFunctions(GlobalFunction.prototype, DONT_ENUM, [ |
// ---------------------------------------------------------------------------- |
// Iterator related spec functions. |
-// ES6 rev 33, 2015-02-12 |
-// 7.4.1 GetIterator ( obj, method ) |
+// ES6 7.4.1 GetIterator(obj, method) |
function GetIterator(obj, method) { |
if (IS_UNDEFINED(method)) { |
method = obj[iteratorSymbol]; |