| OLD | NEW | 
|    1 // Copyright 2012 the V8 project authors. All rights reserved. |    1 // Copyright 2012 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 (function(global, utils) { |    5 (function(global, utils) { | 
|    6  |    6  | 
|    7 %CheckIsBootstrapping(); |    7 %CheckIsBootstrapping(); | 
|    8  |    8  | 
|    9 // ------------------------------------------------------------------- |    9 // ------------------------------------------------------------------- | 
|   10 // Imports |   10 // Imports | 
| (...skipping 729 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  740     return first; |  740     return first; | 
|  741   } |  741   } | 
|  742   var second = %_StringCharCodeAt(string, pos + 1); |  742   var second = %_StringCharCodeAt(string, pos + 1); | 
|  743   if (second < 0xDC00 || second > 0xDFFF) { |  743   if (second < 0xDC00 || second > 0xDFFF) { | 
|  744     return first; |  744     return first; | 
|  745   } |  745   } | 
|  746   return (first - 0xD800) * 0x400 + second + 0x2400; |  746   return (first - 0xD800) * 0x400 + second + 0x2400; | 
|  747 } |  747 } | 
|  748  |  748  | 
|  749  |  749  | 
|  750 // ES6 Draft 05-22-2014, section 21.1.2.2 |  | 
|  751 function StringFromCodePoint(_) {  // length = 1 |  | 
|  752   "use strict"; |  | 
|  753   var code; |  | 
|  754   var length = arguments.length; |  | 
|  755   var index; |  | 
|  756   var result = ""; |  | 
|  757   for (index = 0; index < length; index++) { |  | 
|  758     code = arguments[index]; |  | 
|  759     if (!%_IsSmi(code)) { |  | 
|  760       code = TO_NUMBER(code); |  | 
|  761     } |  | 
|  762     if (code < 0 || code > 0x10FFFF || code !== TO_INTEGER(code)) { |  | 
|  763       throw MakeRangeError(kInvalidCodePoint, code); |  | 
|  764     } |  | 
|  765     if (code <= 0xFFFF) { |  | 
|  766       result += %_StringCharFromCode(code); |  | 
|  767     } else { |  | 
|  768       code -= 0x10000; |  | 
|  769       result += %_StringCharFromCode((code >>> 10) & 0x3FF | 0xD800); |  | 
|  770       result += %_StringCharFromCode(code & 0x3FF | 0xDC00); |  | 
|  771     } |  | 
|  772   } |  | 
|  773   return result; |  | 
|  774 } |  | 
|  775  |  | 
|  776  |  | 
|  777 // ------------------------------------------------------------------- |  750 // ------------------------------------------------------------------- | 
|  778 // String methods related to templates |  751 // String methods related to templates | 
|  779  |  752  | 
|  780 // ES6 Draft 03-17-2015, section 21.1.2.4 |  753 // ES6 Draft 03-17-2015, section 21.1.2.4 | 
|  781 function StringRaw(callSite) { |  754 function StringRaw(callSite) { | 
|  782   "use strict"; |  755   "use strict"; | 
|  783   var numberOfSubstitutions = arguments.length; |  756   var numberOfSubstitutions = arguments.length; | 
|  784   var cooked = TO_OBJECT(callSite); |  757   var cooked = TO_OBJECT(callSite); | 
|  785   var raw = TO_OBJECT(cooked.raw); |  758   var raw = TO_OBJECT(cooked.raw); | 
|  786   var literalSegments = TO_LENGTH(raw.length); |  759   var literalSegments = TO_LENGTH(raw.length); | 
|  787   if (literalSegments <= 0) return ""; |  760   if (literalSegments <= 0) return ""; | 
|  788  |  761  | 
|  789   var result = TO_STRING(raw[0]); |  762   var result = TO_STRING(raw[0]); | 
|  790  |  763  | 
|  791   for (var i = 1; i < literalSegments; ++i) { |  764   for (var i = 1; i < literalSegments; ++i) { | 
|  792     if (i < numberOfSubstitutions) { |  765     if (i < numberOfSubstitutions) { | 
|  793       result += TO_STRING(arguments[i]); |  766       result += TO_STRING(arguments[i]); | 
|  794     } |  767     } | 
|  795     result += TO_STRING(raw[i]); |  768     result += TO_STRING(raw[i]); | 
|  796   } |  769   } | 
|  797  |  770  | 
|  798   return result; |  771   return result; | 
|  799 } |  772 } | 
|  800  |  773  | 
|  801 // ------------------------------------------------------------------- |  774 // ------------------------------------------------------------------- | 
|  802  |  775  | 
|  803 // Set up the non-enumerable functions on the String object. |  776 // Set up the non-enumerable functions on the String object. | 
|  804 utils.InstallFunctions(GlobalString, DONT_ENUM, [ |  777 utils.InstallFunctions(GlobalString, DONT_ENUM, [ | 
|  805   "fromCodePoint", StringFromCodePoint, |  | 
|  806   "raw", StringRaw |  778   "raw", StringRaw | 
|  807 ]); |  779 ]); | 
|  808  |  780  | 
|  809 // Set up the non-enumerable functions on the String prototype object. |  781 // Set up the non-enumerable functions on the String prototype object. | 
|  810 utils.InstallFunctions(GlobalString.prototype, DONT_ENUM, [ |  782 utils.InstallFunctions(GlobalString.prototype, DONT_ENUM, [ | 
|  811   "valueOf", StringValueOf, |  783   "valueOf", StringValueOf, | 
|  812   "toString", StringToString, |  784   "toString", StringToString, | 
|  813   "codePointAt", StringCodePointAt, |  785   "codePointAt", StringCodePointAt, | 
|  814   "concat", StringConcat, |  786   "concat", StringConcat, | 
|  815   "endsWith", StringEndsWith, |  787   "endsWith", StringEndsWith, | 
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  856   to.StringLastIndexOf = StringLastIndexOf; |  828   to.StringLastIndexOf = StringLastIndexOf; | 
|  857   to.StringMatch = StringMatchJS; |  829   to.StringMatch = StringMatchJS; | 
|  858   to.StringReplace = StringReplace; |  830   to.StringReplace = StringReplace; | 
|  859   to.StringSlice = StringSlice; |  831   to.StringSlice = StringSlice; | 
|  860   to.StringSplit = StringSplitJS; |  832   to.StringSplit = StringSplitJS; | 
|  861   to.StringSubstr = StringSubstr; |  833   to.StringSubstr = StringSubstr; | 
|  862   to.StringSubstring = StringSubstring; |  834   to.StringSubstring = StringSubstring; | 
|  863 }); |  835 }); | 
|  864  |  836  | 
|  865 }) |  837 }) | 
| OLD | NEW |