Revision f230a1cf deps/v8/src/v8natives.js
deps/v8/src/v8natives.js | ||
---|---|---|
32 | 32 |
// var $Number = global.Number; |
33 | 33 |
// var $Function = global.Function; |
34 | 34 |
// var $Array = global.Array; |
35 |
// var $NaN = 0/0; |
|
36 | 35 |
// |
37 | 36 |
// in math.js: |
38 | 37 |
// var $floor = MathFloor |
... | ... | |
95 | 94 |
} |
96 | 95 |
if (fields) { |
97 | 96 |
for (var i = 0; i < fields.length; i++) { |
98 |
%SetProperty(prototype, fields[i], void 0, DONT_ENUM | DONT_DELETE);
|
|
97 |
%SetProperty(prototype, fields[i], UNDEFINED, DONT_ENUM | DONT_DELETE);
|
|
99 | 98 |
} |
100 | 99 |
} |
101 | 100 |
for (var i = 0; i < methods.length; i += 2) { |
... | ... | |
148 | 147 |
string = TO_STRING_INLINE(string); |
149 | 148 |
radix = TO_INT32(radix); |
150 | 149 |
if (!(radix == 0 || (2 <= radix && radix <= 36))) { |
151 |
return $NaN;
|
|
150 |
return NAN;
|
|
152 | 151 |
} |
153 | 152 |
} |
154 | 153 |
|
... | ... | |
197 | 196 |
function SetUpGlobal() { |
198 | 197 |
%CheckIsBootstrapping(); |
199 | 198 |
|
199 |
var attributes = DONT_ENUM | DONT_DELETE | READ_ONLY; |
|
200 |
|
|
200 | 201 |
// ECMA 262 - 15.1.1.1. |
201 |
%SetProperty(global, "NaN", $NaN, DONT_ENUM | DONT_DELETE | READ_ONLY);
|
|
202 |
%SetProperty(global, "NaN", NAN, attributes);
|
|
202 | 203 |
|
203 | 204 |
// ECMA-262 - 15.1.1.2. |
204 |
%SetProperty(global, "Infinity", 1/0, DONT_ENUM | DONT_DELETE | READ_ONLY);
|
|
205 |
%SetProperty(global, "Infinity", INFINITY, attributes);
|
|
205 | 206 |
|
206 | 207 |
// ECMA-262 - 15.1.1.3. |
207 |
%SetProperty(global, "undefined", void 0, |
|
208 |
DONT_ENUM | DONT_DELETE | READ_ONLY); |
|
208 |
%SetProperty(global, "undefined", UNDEFINED, attributes); |
|
209 | 209 |
|
210 | 210 |
// Set up non-enumerable function on the global object. |
211 | 211 |
InstallFunctions(global, DONT_ENUM, $Array( |
... | ... | |
475 | 475 |
function ToCompletePropertyDescriptor(obj) { |
476 | 476 |
var desc = ToPropertyDescriptor(obj); |
477 | 477 |
if (IsGenericDescriptor(desc) || IsDataDescriptor(desc)) { |
478 |
if (!desc.hasValue()) desc.setValue(void 0);
|
|
478 |
if (!desc.hasValue()) desc.setValue(UNDEFINED);
|
|
479 | 479 |
if (!desc.hasWritable()) desc.setWritable(false); |
480 | 480 |
} else { |
481 | 481 |
// Is accessor descriptor. |
482 |
if (!desc.hasGetter()) desc.setGet(void 0);
|
|
483 |
if (!desc.hasSetter()) desc.setSet(void 0);
|
|
482 |
if (!desc.hasGetter()) desc.setGet(UNDEFINED);
|
|
483 |
if (!desc.hasSetter()) desc.setSet(UNDEFINED);
|
|
484 | 484 |
} |
485 | 485 |
if (!desc.hasEnumerable()) desc.setEnumerable(false); |
486 | 486 |
if (!desc.hasConfigurable()) desc.setConfigurable(false); |
... | ... | |
491 | 491 |
function PropertyDescriptor() { |
492 | 492 |
// Initialize here so they are all in-object and have the same map. |
493 | 493 |
// Default values from ES5 8.6.1. |
494 |
this.value_ = void 0;
|
|
494 |
this.value_ = UNDEFINED;
|
|
495 | 495 |
this.hasValue_ = false; |
496 | 496 |
this.writable_ = false; |
497 | 497 |
this.hasWritable_ = false; |
... | ... | |
499 | 499 |
this.hasEnumerable_ = false; |
500 | 500 |
this.configurable_ = false; |
501 | 501 |
this.hasConfigurable_ = false; |
502 |
this.get_ = void 0;
|
|
502 |
this.get_ = UNDEFINED;
|
|
503 | 503 |
this.hasGetter_ = false; |
504 |
this.set_ = void 0;
|
|
504 |
this.set_ = UNDEFINED;
|
|
505 | 505 |
this.hasSetter_ = false; |
506 | 506 |
} |
507 | 507 |
|
... | ... | |
593 | 593 |
} |
594 | 594 |
|
595 | 595 |
if (IS_UNDEFINED(desc_array)) { |
596 |
return void 0;
|
|
596 |
return UNDEFINED;
|
|
597 | 597 |
} |
598 | 598 |
|
599 | 599 |
var desc = new PropertyDescriptor(); |
... | ... | |
647 | 647 |
var p = ToName(v); |
648 | 648 |
if (%IsJSProxy(obj)) { |
649 | 649 |
// TODO(rossberg): adjust once there is a story for symbols vs proxies. |
650 |
if (IS_SYMBOL(v)) return void 0;
|
|
650 |
if (IS_SYMBOL(v)) return UNDEFINED;
|
|
651 | 651 |
|
652 | 652 |
var handler = %GetHandler(obj); |
653 |
var descriptor = CallTrap1(handler, "getOwnPropertyDescriptor", void 0, p); |
|
653 |
var descriptor = CallTrap1( |
|
654 |
handler, "getOwnPropertyDescriptor", UNDEFINED, p); |
|
654 | 655 |
if (IS_UNDEFINED(descriptor)) return descriptor; |
655 | 656 |
var desc = ToCompletePropertyDescriptor(descriptor); |
656 | 657 |
if (!desc.isConfigurable()) { |
... | ... | |
666 | 667 |
var props = %GetOwnProperty(ToObject(obj), p); |
667 | 668 |
|
668 | 669 |
// A false value here means that access checks failed. |
669 |
if (props === false) return void 0;
|
|
670 |
if (props === false) return UNDEFINED;
|
|
670 | 671 |
|
671 | 672 |
return ConvertDescriptorArrayToDescriptor(props); |
672 | 673 |
} |
... | ... | |
693 | 694 |
if (IS_SYMBOL(p)) return false; |
694 | 695 |
|
695 | 696 |
var handler = %GetHandler(obj); |
696 |
var result = CallTrap2(handler, "defineProperty", void 0, p, attributes);
|
|
697 |
var result = CallTrap2(handler, "defineProperty", UNDEFINED, p, attributes);
|
|
697 | 698 |
if (!ToBoolean(result)) { |
698 | 699 |
if (should_throw) { |
699 | 700 |
throw MakeTypeError("handler_returned_false", |
... | ... | |
710 | 711 |
function DefineObjectProperty(obj, p, desc, should_throw) { |
711 | 712 |
var current_or_access = %GetOwnProperty(ToObject(obj), ToName(p)); |
712 | 713 |
// A false value here means that access checks failed. |
713 |
if (current_or_access === false) return void 0;
|
|
714 |
if (current_or_access === false) return UNDEFINED;
|
|
714 | 715 |
|
715 | 716 |
var current = ConvertDescriptorArrayToDescriptor(current_or_access); |
716 | 717 |
var extensible = %IsExtensible(ToObject(obj)); |
... | ... | |
841 | 842 |
flag |= READ_ONLY; |
842 | 843 |
} |
843 | 844 |
|
844 |
var value = void 0; // Default value is undefined.
|
|
845 |
var value = UNDEFINED; // Default value is undefined.
|
|
845 | 846 |
if (desc.hasValue()) { |
846 | 847 |
value = desc.getValue(); |
847 | 848 |
} else if (!IS_UNDEFINED(current) && IsDataDescriptor(current)) { |
... | ... | |
920 | 921 |
// For the time being, we need a hack to prevent Object.observe from |
921 | 922 |
// generating two change records. |
922 | 923 |
obj.length = new_length; |
923 |
desc.value_ = void 0;
|
|
924 |
desc.value_ = UNDEFINED;
|
|
924 | 925 |
desc.hasValue_ = false; |
925 | 926 |
threw = !DefineObjectProperty(obj, "length", desc, should_throw) || threw; |
926 | 927 |
if (emit_splice) { |
... | ... | |
1045 | 1046 |
// Special handling for proxies. |
1046 | 1047 |
if (%IsJSProxy(obj)) { |
1047 | 1048 |
var handler = %GetHandler(obj); |
1048 |
var names = CallTrap0(handler, "getOwnPropertyNames", void 0);
|
|
1049 |
var names = CallTrap0(handler, "getOwnPropertyNames", UNDEFINED);
|
|
1049 | 1050 |
return ToNameArray(names, "getOwnPropertyNames", false); |
1050 | 1051 |
} |
1051 | 1052 |
|
... | ... | |
1194 | 1195 |
// Harmony proxies. |
1195 | 1196 |
function ProxyFix(obj) { |
1196 | 1197 |
var handler = %GetHandler(obj); |
1197 |
var props = CallTrap0(handler, "fix", void 0);
|
|
1198 |
var props = CallTrap0(handler, "fix", UNDEFINED);
|
|
1198 | 1199 |
if (IS_UNDEFINED(props)) { |
1199 | 1200 |
throw MakeTypeError("handler_returned_undefined", [handler, "fix"]); |
1200 | 1201 |
} |
... | ... | |
1560 | 1561 |
} |
1561 | 1562 |
|
1562 | 1563 |
if (NUMBER_IS_NAN(x)) return "NaN"; |
1563 |
if (x == 1/0) return "Infinity";
|
|
1564 |
if (x == -1/0) return "-Infinity";
|
|
1564 |
if (x == INFINITY) return "Infinity";
|
|
1565 |
if (x == -INFINITY) return "-Infinity";
|
|
1565 | 1566 |
|
1566 | 1567 |
return %NumberToFixed(x, f); |
1567 | 1568 |
} |
... | ... | |
1578 | 1579 |
// Get the value of this number in case it's an object. |
1579 | 1580 |
x = %_ValueOf(this); |
1580 | 1581 |
} |
1581 |
var f = IS_UNDEFINED(fractionDigits) ? void 0 : TO_INTEGER(fractionDigits);
|
|
1582 |
var f = IS_UNDEFINED(fractionDigits) ? UNDEFINED : TO_INTEGER(fractionDigits);
|
|
1582 | 1583 |
|
1583 | 1584 |
if (NUMBER_IS_NAN(x)) return "NaN"; |
1584 |
if (x == 1/0) return "Infinity";
|
|
1585 |
if (x == -1/0) return "-Infinity";
|
|
1585 |
if (x == INFINITY) return "Infinity";
|
|
1586 |
if (x == -INFINITY) return "-Infinity";
|
|
1586 | 1587 |
|
1587 | 1588 |
if (IS_UNDEFINED(f)) { |
1588 | 1589 |
f = -1; // Signal for runtime function that f is not defined. |
... | ... | |
1608 | 1609 |
var p = TO_INTEGER(precision); |
1609 | 1610 |
|
1610 | 1611 |
if (NUMBER_IS_NAN(x)) return "NaN"; |
1611 |
if (x == 1/0) return "Infinity";
|
|
1612 |
if (x == -1/0) return "-Infinity";
|
|
1612 |
if (x == INFINITY) return "Infinity";
|
|
1613 |
if (x == -INFINITY) return "-Infinity";
|
|
1613 | 1614 |
|
1614 | 1615 |
if (p < 1 || p > 21) { |
1615 | 1616 |
throw new $RangeError("toPrecision() argument must be between 1 and 21"); |
... | ... | |
1654 | 1655 |
DONT_ENUM | DONT_DELETE | READ_ONLY); |
1655 | 1656 |
|
1656 | 1657 |
// ECMA-262 section 15.7.3.3. |
1657 |
%SetProperty($Number, "NaN", $NaN, DONT_ENUM | DONT_DELETE | READ_ONLY);
|
|
1658 |
%SetProperty($Number, "NaN", NAN, DONT_ENUM | DONT_DELETE | READ_ONLY);
|
|
1658 | 1659 |
|
1659 | 1660 |
// ECMA-262 section 15.7.3.4. |
1660 | 1661 |
%SetProperty($Number, |
1661 | 1662 |
"NEGATIVE_INFINITY", |
1662 |
-1/0,
|
|
1663 |
-INFINITY,
|
|
1663 | 1664 |
DONT_ENUM | DONT_DELETE | READ_ONLY); |
1664 | 1665 |
|
1665 | 1666 |
// ECMA-262 section 15.7.3.5. |
1666 | 1667 |
%SetProperty($Number, |
1667 | 1668 |
"POSITIVE_INFINITY", |
1668 |
1/0,
|
|
1669 |
INFINITY,
|
|
1669 | 1670 |
DONT_ENUM | DONT_DELETE | READ_ONLY); |
1670 | 1671 |
%ToFastProperties($Number); |
1671 | 1672 |
|
Also available in: Unified diff