Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // This files contains runtime support implemented in JavaScript. | 5 // This files contains runtime support implemented in JavaScript. |
| 6 | 6 |
| 7 // CAUTION: Some of the functions specified in this file are called | 7 // CAUTION: Some of the functions specified in this file are called |
| 8 // directly from compiled code. These are the functions with names in | 8 // directly from compiled code. These are the functions with names in |
| 9 // ALL CAPS. The compiled code passes the first argument in 'this'. | 9 // ALL CAPS. The compiled code passes the first argument in 'this'. |
| 10 | 10 |
| 11 | 11 |
| 12 // The following declarations are shared with other native JS files. | 12 // The following declarations are shared with other native JS files. |
| 13 // They are all declared at this one spot to avoid redeclaration errors. | 13 // They are all declared at this one spot to avoid redeclaration errors. |
| 14 var $defaultNumber; | 14 var $defaultNumber; |
| 15 var $defaultString; | 15 var $defaultString; |
| 16 var $NaN; | 16 var $NaN; |
| 17 var $nonNumberToNumber; | 17 var $nonNumberToNumber; |
| 18 var $nonStringToString; | 18 var $nonStringToString; |
| 19 var $sameValue; | 19 var $sameValue; |
| 20 var $sameValueZero; | 20 var $sameValueZero; |
| 21 var $toInteger; | 21 var $toInteger; |
| 22 var $toLength; | 22 var $toLength; |
| 23 var $toName; | 23 var $toName; |
| 24 var $toNumber; | 24 var $toNumber; |
| 25 var $toPositiveInteger; | 25 var $toPositiveInteger; |
| 26 var $toPrimitive; | 26 var $toPrimitive; |
| 27 var $toString; | 27 var $toString; |
| 28 | 28 |
| 29 var harmony_tolength = false; | |
| 30 | |
| 29 (function(global, utils) { | 31 (function(global, utils) { |
| 30 | 32 |
| 31 %CheckIsBootstrapping(); | 33 %CheckIsBootstrapping(); |
| 32 | 34 |
| 33 var GlobalArray = global.Array; | 35 var GlobalArray = global.Array; |
| 34 var GlobalBoolean = global.Boolean; | 36 var GlobalBoolean = global.Boolean; |
| 35 var GlobalString = global.String; | 37 var GlobalString = global.String; |
| 36 var GlobalNumber = global.Number; | 38 var GlobalNumber = global.Number; |
| 37 | 39 |
| 38 // ---------------------------------------------------------------------------- | 40 // ---------------------------------------------------------------------------- |
| (...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 705 | 707 |
| 706 | 708 |
| 707 // ES6, draft 08-24-14, section 7.1.15 | 709 // ES6, draft 08-24-14, section 7.1.15 |
| 708 function ToLength(arg) { | 710 function ToLength(arg) { |
| 709 arg = ToInteger(arg); | 711 arg = ToInteger(arg); |
| 710 if (arg < 0) return 0; | 712 if (arg < 0) return 0; |
| 711 return arg < GlobalNumber.MAX_SAFE_INTEGER ? arg | 713 return arg < GlobalNumber.MAX_SAFE_INTEGER ? arg |
| 712 : GlobalNumber.MAX_SAFE_INTEGER; | 714 : GlobalNumber.MAX_SAFE_INTEGER; |
| 713 } | 715 } |
| 714 | 716 |
| 717 function ToLengthFlagged(arg) { | |
|
Camillo Bruni
2015/09/08 07:18:07
I would create a TO_LENGTH macro out of this (see
aperez
2015/09/09 12:48:43
Acknowledged.
| |
| 718 return (harmony_tolength) ? ToLength(arg) : TO_UINT32(arg); | |
| 719 } | |
| 715 | 720 |
| 716 // ES5, section 9.12 | 721 // ES5, section 9.12 |
| 717 function SameValue(x, y) { | 722 function SameValue(x, y) { |
| 718 if (typeof x != typeof y) return false; | 723 if (typeof x != typeof y) return false; |
| 719 if (IS_NUMBER(x)) { | 724 if (IS_NUMBER(x)) { |
| 720 if (NUMBER_IS_NAN(x) && NUMBER_IS_NAN(y)) return true; | 725 if (NUMBER_IS_NAN(x) && NUMBER_IS_NAN(y)) return true; |
| 721 // x is +0 and y is -0 or vice versa. | 726 // x is +0 and y is -0 or vice versa. |
| 722 if (x === 0 && y === 0 && %_IsMinusZero(x) != %_IsMinusZero(y)) { | 727 if (x === 0 && y === 0 && %_IsMinusZero(x) != %_IsMinusZero(y)) { |
| 723 return false; | 728 return false; |
| 724 } | 729 } |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 896 "to_string_fun", ToString, | 901 "to_string_fun", ToString, |
| 897 ]); | 902 ]); |
| 898 | 903 |
| 899 utils.Export(function(to) { | 904 utils.Export(function(to) { |
| 900 to.ToBoolean = ToBoolean; | 905 to.ToBoolean = ToBoolean; |
| 901 to.ToLength = ToLength; | 906 to.ToLength = ToLength; |
| 902 to.ToName = ToName; | 907 to.ToName = ToName; |
| 903 to.ToNumber = ToNumber; | 908 to.ToNumber = ToNumber; |
| 904 to.ToPrimitive = ToPrimitive; | 909 to.ToPrimitive = ToPrimitive; |
| 905 to.ToString = ToString; | 910 to.ToString = ToString; |
| 911 to.ToLengthFlagged = ToLengthFlagged; | |
| 906 }); | 912 }); |
| 907 | 913 |
| 908 }) | 914 }) |
| OLD | NEW |