Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(46)

Side by Side Diff: src/uri.js

Issue 164396: Move some arrays into functions so they don't get cloned on each new context. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 11 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« src/messages.js ('K') | « src/messages.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. 1 // Copyright 2006-2008 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 21 matching lines...) Expand all
32 32
33 function URIAddEncodedOctetToBuffer(octet, result, index) { 33 function URIAddEncodedOctetToBuffer(octet, result, index) {
34 result[index++] = 37; // Char code of '%'. 34 result[index++] = 37; // Char code of '%'.
35 result[index++] = hexCharCodeArray[octet >> 4]; 35 result[index++] = hexCharCodeArray[octet >> 4];
36 result[index++] = hexCharCodeArray[octet & 0x0F]; 36 result[index++] = hexCharCodeArray[octet & 0x0F];
37 return index; 37 return index;
38 } 38 }
39 39
40 40
41 function URIEncodeOctets(octets, result, index) { 41 function URIEncodeOctets(octets, result, index) {
42 if (hexCharCodeArray === 0) {
43 hexCharCodeArray = [48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
44 65, 66, 67, 68, 69, 70];
45 }
42 index = URIAddEncodedOctetToBuffer(octets[0], result, index); 46 index = URIAddEncodedOctetToBuffer(octets[0], result, index);
43 if (octets[1]) index = URIAddEncodedOctetToBuffer(octets[1], result, index); 47 if (octets[1]) index = URIAddEncodedOctetToBuffer(octets[1], result, index);
44 if (octets[2]) index = URIAddEncodedOctetToBuffer(octets[2], result, index); 48 if (octets[2]) index = URIAddEncodedOctetToBuffer(octets[2], result, index);
45 if (octets[3]) index = URIAddEncodedOctetToBuffer(octets[3], result, index); 49 if (octets[3]) index = URIAddEncodedOctetToBuffer(octets[3], result, index);
46 return index; 50 return index;
47 } 51 }
48 52
49 53
50 function URIEncodeSingle(cc, result, index) { 54 function URIEncodeSingle(cc, result, index) {
51 var x = (cc >> 12) & 0xF; 55 var x = (cc >> 12) & 0xF;
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 if (cc == 126) return true; 313 if (cc == 126) return true;
310 314
311 return false; 315 return false;
312 }; 316 };
313 317
314 var string = ToString(component); 318 var string = ToString(component);
315 return Encode(string, unescapePredicate); 319 return Encode(string, unescapePredicate);
316 } 320 }
317 321
318 322
319 const hexCharArray = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 323 // Lazily initialized.
320 "A", "B", "C", "D", "E", "F"]; 324 var hexCharArray = 0;
321 325 var hexCharCodeArray = 0;
322 const hexCharCodeArray = [48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
323 65, 66, 67, 68, 69, 70];
324 326
325 327
326 function HexValueOf(c) { 328 function HexValueOf(c) {
327 var code = c.charCodeAt(0); 329 var code = c.charCodeAt(0);
328 330
329 // 0-9 331 // 0-9
330 if (code >= 48 && code <= 57) return code - 48; 332 if (code >= 48 && code <= 57) return code - 48;
331 // A-F 333 // A-F
332 if (code >= 65 && code <= 70) return code - 55; 334 if (code >= 65 && code <= 70) return code - 55;
333 // a-f 335 // a-f
334 if (code >= 97 && code <= 102) return code - 87; 336 if (code >= 97 && code <= 102) return code - 87;
335 337
336 return -1; 338 return -1;
337 } 339 }
338 340
339 341
340 // Convert a character code to 4-digit hex string representation 342 // Convert a character code to 4-digit hex string representation
341 // 64 -> 0040, 62234 -> F31A. 343 // 64 -> 0040, 62234 -> F31A.
342 function CharCodeToHex4Str(cc) { 344 function CharCodeToHex4Str(cc) {
343 var r = ""; 345 var r = "";
346 if (hexCharArray === 0) {
347 hexCharArray = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
348 "A", "B", "C", "D", "E", "F"];
349 }
344 for (var i = 0; i < 4; ++i) { 350 for (var i = 0; i < 4; ++i) {
345 var c = hexCharArray[cc & 0x0F]; 351 var c = hexCharArray[cc & 0x0F];
346 r = c + r; 352 r = c + r;
347 cc = cc >>> 4; 353 cc = cc >>> 4;
348 } 354 }
349 return r; 355 return r;
350 } 356 }
351 357
352 358
353 // Converts hex string to char code. Not efficient. 359 // Converts hex string to char code. Not efficient.
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 "unescape", URIUnescape, 406 "unescape", URIUnescape,
401 "decodeURI", URIDecode, 407 "decodeURI", URIDecode,
402 "decodeURIComponent", URIDecodeComponent, 408 "decodeURIComponent", URIDecodeComponent,
403 "encodeURI", URIEncode, 409 "encodeURI", URIEncode,
404 "encodeURIComponent", URIEncodeComponent 410 "encodeURIComponent", URIEncodeComponent
405 )); 411 ));
406 } 412 }
407 413
408 SetupURI(); 414 SetupURI();
409 415
OLDNEW
« src/messages.js ('K') | « src/messages.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698