| 1285 | var MAX_ARGUMENTS_LENGTH = 0x1000 |
| 1286 | |
| 1287 | function decodeCodePointsArray (codePoints) { |
| 1288 | var len = codePoints.length |
| 1289 | if (len <= MAX_ARGUMENTS_LENGTH) { |
| 1290 | return String.fromCharCode.apply(String, codePoints) // avoid extra slice() |
| 1291 | } |
| 1292 | |
| 1293 | // Decode in chunks to avoid "call stack size exceeded". |
| 1294 | var res = '' |
| 1295 | var i = 0 |
| 1296 | while (i < len) { |
| 1297 | res += String.fromCharCode.apply( |
| 1298 | String, |
| 1299 | codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) |
| 1300 | ) |
| 1301 | } |
| 1302 | return res |
| 1303 | } |
| 1304 | |
| 1305 | function asciiSlice (buf, start, end) { |
| 1306 | var ret = '' |