Changeset 184582 in webkit for trunk/Source/JavaScriptCore/builtins/GlobalObject.js
- Timestamp:
- May 19, 2015, 12:51:46 PM (10 years ago)
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
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 }
Note:
See TracChangeset
for help on using the changeset viewer.