Changeset 184582 in webkit for trunk/Source/JavaScriptCore/builtins
- Timestamp:
- May 19, 2015, 12:51:46 PM (10 years ago)
- Location:
- trunk/Source/JavaScriptCore/builtins
- Files:
-
- 3 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/builtins/Array.prototype.js
r183749 r184582 33 33 34 34 var array = @Object(this); 35 var length = array.length >>> 0;36 35 var length = @ToLength(array.length); 36 37 37 if (typeof callback !== "function") 38 38 throw new @TypeError("Array.prototype.every callback must be a function"); … … 59 59 60 60 var array = @Object(this); 61 var length = array.length >>> 0;62 61 var length = @ToLength(array.length); 62 63 63 if (typeof callback !== "function") 64 64 throw new @TypeError("Array.prototype.forEach callback must be a function"); … … 81 81 82 82 var array = @Object(this); 83 var length = array.length >>> 0;84 83 var length = @ToLength(array.length); 84 85 85 if (typeof callback !== "function") 86 86 throw new @TypeError("Array.prototype.filter callback must be a function"); … … 110 110 111 111 var array = @Object(this); 112 var length = array.length >>> 0;113 112 var length = @ToLength(array.length); 113 114 114 if (typeof callback !== "function") 115 115 throw new @TypeError("Array.prototype.map callback must be a function"); … … 137 137 138 138 var array = @Object(this); 139 var length = array.length >>> 0;140 139 var length = @ToLength(array.length); 140 141 141 if (typeof callback !== "function") 142 142 throw new @TypeError("Array.prototype.some callback must be a function"); … … 161 161 throw new @TypeError("Array.prototype.fill requires that |this| not be undefined"); 162 162 var O = @Object(this); 163 var len = O.length >>> 0;163 var len = @ToLength(O.length); 164 164 var relativeStart = 0; 165 165 if (arguments.length > 1 && arguments[1] !== undefined) … … 202 202 203 203 var array = @Object(this); 204 var length = array.length >>> 0;205 204 var length = @ToLength(array.length); 205 206 206 if (typeof callback !== "function") 207 207 throw new @TypeError("Array.prototype.find callback must be a function"); … … 227 227 228 228 var array = @Object(this); 229 var length = array.length >>> 0;230 229 var length = @ToLength(array.length); 230 231 231 if (typeof callback !== "function") 232 232 throw new @TypeError("Array.prototype.findIndex callback must be a function"); … … 251 251 252 252 var array = @Object(this); 253 var length = array.length >>> 0;253 var length = @ToLength(array.length); 254 254 255 255 if (length === 0) -
trunk/Source/JavaScriptCore/builtins/ArrayConstructor.js
r183357 r184582 77 77 78 78 var arrayLike = @Object(items); 79 80 var maxSafeInteger = 9007199254740991; 81 var numberValue = @Number(arrayLike.length); 82 var lengthValue; 83 if (numberValue != numberValue) { // isNaN(numberValue) 84 lengthValue = 0; 85 } else if (numberValue === 0 || !@isFinite(numberValue)) { 86 lengthValue = numberValue; 87 } else { 88 lengthValue = (numberValue > 0 ? 1 : -1) * @floor(@abs(numberValue)); 89 } 90 // originally Math.min(Math.max(length, 0), maxSafeInteger)); 91 var arrayLikeLength = lengthValue > 0 ? (lengthValue < maxSafeInteger ? lengthValue : maxSafeInteger) : 0; 79 var arrayLikeLength = @ToLength(arrayLike.length); 92 80 93 81 // TODO: Need isConstructor(thisObj) instead of typeof "function" check. -
trunk/Source/JavaScriptCore/builtins/GlobalObject.js
r184581 r184582 24 24 */ 25 25 26 function raw(template) {26 function ToInteger(target) { 27 27 "use strict"; 28 28 29 if (template === null || template === undefined) 30 throw new @TypeError("String.raw requires template not be null or undefined"); 31 var cookedSegments = @Object(template); 29 var numberValue = @Number(target); 32 30 33 var rawValue = cookedSegments.raw; 34 if (rawValue === null || rawValue === undefined) 35 throw new @TypeError("String.raw requires template.raw not be null or undefined"); 36 var rawSegments = @Object(rawValue); 31 // isNaN(numberValue) 32 if (numberValue !== numberValue) 33 return 0; 37 34 38 var numberOfSubstitutions = arguments.length - 1; 35 if (numberValue === 0 || !@isFinite(numberValue)) 36 return numberValue; 37 38 return (numberValue > 0 ? 1 : -1) * @floor(@abs(numberValue)); 39 } 40 41 function ToLength(target) { 42 "use strict"; 39 43 40 44 var maxSafeInteger = 0x1FFFFFFFFFFFFF; 41 var numberValue = @Number(rawSegments.length); 42 var lengthValue; 43 if (numberValue !== numberValue) // isNaN(numberValue) 44 lengthValue = 0; 45 else if (numberValue === 0 || !@isFinite(numberValue)) 46 lengthValue = numberValue; 47 else 48 lengthValue = (numberValue > 0 ? 1 : -1) * @floor(@abs(numberValue)); 45 var length = @ToInteger(target); 49 46 // originally Math.min(Math.max(length, 0), maxSafeInteger)); 50 var segmentCount = lengthValue > 0 ? (lengthValue < maxSafeInteger ? lengthValue : maxSafeInteger) : 0; 51 52 if (segmentCount <= 0) 53 return ''; 54 55 var stringElements = ''; 56 for (var i = 0; ; ++i) { 57 var segment = @toString(rawSegments[i]); 58 stringElements += segment; 59 60 if ((i + 1) === segmentCount) 61 return stringElements; 62 63 if (i < numberOfSubstitutions) { 64 var substitutionIndexInArguments = i + 1; 65 var next = @toString(arguments[substitutionIndexInArguments]); 66 stringElements += next; 67 } 68 } 47 return length > 0 ? (length < maxSafeInteger ? length : maxSafeInteger) : 0; 69 48 } -
trunk/Source/JavaScriptCore/builtins/StringConstructor.js
r184287 r184582 38 38 var numberOfSubstitutions = arguments.length - 1; 39 39 40 var maxSafeInteger = 0x1FFFFFFFFFFFFF; 41 var numberValue = @Number(rawSegments.length); 42 var lengthValue; 43 if (numberValue !== numberValue) // isNaN(numberValue) 44 lengthValue = 0; 45 else if (numberValue === 0 || !@isFinite(numberValue)) 46 lengthValue = numberValue; 47 else 48 lengthValue = (numberValue > 0 ? 1 : -1) * @floor(@abs(numberValue)); 49 // originally Math.min(Math.max(length, 0), maxSafeInteger)); 50 var segmentCount = lengthValue > 0 ? (lengthValue < maxSafeInteger ? lengthValue : maxSafeInteger) : 0; 40 var segmentCount = @ToLength(rawSegments.length); 51 41 52 42 if (segmentCount <= 0)
Note:
See TracChangeset
for help on using the changeset viewer.