Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(270)

Unified Diff: src/js/v8natives.js

Issue 2126453002: [intrinsic] Drop the %_ValueOf intrinsic. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix noi18n build (narf) Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/js/symbol.js ('k') | src/runtime/runtime.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/js/v8natives.js
diff --git a/src/js/v8natives.js b/src/js/v8natives.js
index 6db941bffe90f6166bd2943c80e04be55a4e1703..9026cfe684596649756bc58abdc57fcd1cbd7551 100644
--- a/src/js/v8natives.js
+++ b/src/js/v8natives.js
@@ -222,124 +222,6 @@ utils.InstallFunctions(GlobalObject, DONT_ENUM, [
// ----------------------------------------------------------------------------
// Number
-// 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.
- var number = this;
- if (!IS_NUMBER(this)) {
- if (!IS_NUMBER_WRAPPER(this)) {
- throw MakeTypeError(kNotGeneric, 'Number.prototype.toString');
- }
- // Get the value of this number in case it's an object.
- number = %_ValueOf(this);
- }
- // Fast case: Convert number in radix 10.
- if (IS_UNDEFINED(radix) || radix === 10) {
- return %_NumberToString(number);
- }
-
- // Convert the radix to an integer and check the range.
- radix = TO_INTEGER(radix);
- if (radix < 2 || radix > 36) throw MakeRangeError(kToRadixFormatRange);
- // Convert the number to a string in the given radix.
- return %NumberToRadixString(number, radix);
-}
-
-
-// ES6 20.1.3.4 Number.prototype.toLocaleString([reserved1 [, reserved2]])
-function NumberToLocaleString() {
- return %_Call(NumberToStringJS, this);
-}
-
-
-// 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.
- if (!IS_NUMBER(this) && !IS_NUMBER_WRAPPER(this)) {
- throw MakeTypeError(kNotGeneric, 'Number.prototype.valueOf');
- }
- return %_ValueOf(this);
-}
-
-
-// ES6 20.1.3.3 Number.prototype.toFixed(fractionDigits)
-function NumberToFixedJS(fractionDigits) {
- var x = this;
- if (!IS_NUMBER(this)) {
- if (!IS_NUMBER_WRAPPER(this)) {
- throw MakeTypeError(kIncompatibleMethodReceiver,
- "Number.prototype.toFixed", this);
- }
- // Get the value of this number in case it's an object.
- x = %_ValueOf(this);
- }
- var f = TO_INTEGER(fractionDigits);
-
- if (f < 0 || f > 20) {
- throw MakeRangeError(kNumberFormatRange, "toFixed() digits");
- }
-
- if (NUMBER_IS_NAN(x)) return "NaN";
- if (x == INFINITY) return "Infinity";
- if (x == -INFINITY) return "-Infinity";
-
- return %NumberToFixed(x, f);
-}
-
-
-// ES6 20.1.3.2 Number.prototype.toExponential(fractionDigits)
-function NumberToExponentialJS(fractionDigits) {
- var x = this;
- if (!IS_NUMBER(this)) {
- if (!IS_NUMBER_WRAPPER(this)) {
- throw MakeTypeError(kIncompatibleMethodReceiver,
- "Number.prototype.toExponential", this);
- }
- // Get the value of this number in case it's an object.
- x = %_ValueOf(this);
- }
- var f = IS_UNDEFINED(fractionDigits) ? UNDEFINED : TO_INTEGER(fractionDigits);
-
- if (NUMBER_IS_NAN(x)) return "NaN";
- if (x == INFINITY) return "Infinity";
- if (x == -INFINITY) return "-Infinity";
-
- if (IS_UNDEFINED(f)) {
- f = -1; // Signal for runtime function that f is not defined.
- } else if (f < 0 || f > 20) {
- throw MakeRangeError(kNumberFormatRange, "toExponential()");
- }
- return %NumberToExponential(x, f);
-}
-
-
-// ES6 20.1.3.5 Number.prototype.toPrecision(precision)
-function NumberToPrecisionJS(precision) {
- var x = this;
- if (!IS_NUMBER(this)) {
- if (!IS_NUMBER_WRAPPER(this)) {
- throw MakeTypeError(kIncompatibleMethodReceiver,
- "Number.prototype.toPrecision", this);
- }
- // Get the value of this number in case it's an object.
- x = %_ValueOf(this);
- }
- if (IS_UNDEFINED(precision)) return TO_STRING(x);
- var p = TO_INTEGER(precision);
-
- if (NUMBER_IS_NAN(x)) return "NaN";
- if (x == INFINITY) return "Infinity";
- if (x == -INFINITY) return "-Infinity";
-
- if (p < 1 || p > 21) {
- throw MakeRangeError(kToPrecisionFormatRange);
- }
- return %NumberToPrecision(x, p);
-}
-
-
// Harmony isFinite.
function NumberIsFinite(number) {
return IS_NUMBER(number) && NUMBER_IS_FINITE(number);
@@ -372,13 +254,6 @@ function NumberIsSafeInteger(number) {
// ----------------------------------------------------------------------------
-%FunctionSetPrototype(GlobalNumber, new GlobalNumber(0));
-
-%OptimizeObjectForAddingMultipleProperties(GlobalNumber.prototype, 8);
-// Set up the constructor property on the Number prototype object.
-%AddNamedProperty(GlobalNumber.prototype, "constructor", GlobalNumber,
- DONT_ENUM);
-
utils.InstallConstants(GlobalNumber, [
// ECMA-262 section 15.7.3.1.
"MAX_VALUE", 1.7976931348623157e+308,
@@ -398,16 +273,6 @@ utils.InstallConstants(GlobalNumber, [
"EPSILON", 2.220446049250313e-16,
]);
-// Set up non-enumerable functions on the Number prototype object.
-utils.InstallFunctions(GlobalNumber.prototype, DONT_ENUM, [
- "toString", NumberToStringJS,
- "toLocaleString", NumberToLocaleString,
- "valueOf", NumberValueOf,
- "toFixed", NumberToFixedJS,
- "toExponential", NumberToExponentialJS,
- "toPrecision", NumberToPrecisionJS
-]);
-
// Harmony Number constructor additions
utils.InstallFunctions(GlobalNumber, DONT_ENUM, [
"isFinite", NumberIsFinite,
« no previous file with comments | « src/js/symbol.js ('k') | src/runtime/runtime.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698