string-loadchar.js (890B)
1 // Load Latin-1 and Two-Byte strings. 2 function latin1AndTwoByte() { 3 for (var i = 0; i <= 0x03FF; ++i) { 4 var s = String.fromCodePoint(i); 5 assertEq(s[0], s); 6 assertEq(s.charAt(0), s); 7 } 8 } 9 10 for (var i = 0; i < 2; ++i) { 11 latin1AndTwoByte(); 12 } 13 14 // Test bi-morphic loads. 15 function stringAndArray() { 16 var xs = [["\u0100"], "\u0100"]; 17 for (var i = 0; i < 200; ++i) { 18 var x = xs[i & 1]; 19 var s = x[0]; 20 assertEq(s.length, 1); 21 assertEq(s, "\u0100"); 22 } 23 } 24 25 for (var i = 0; i < 2; ++i) { 26 stringAndArray(); 27 } 28 29 function outOfBoundsFailureThenException() { 30 var name = "Object"; 31 32 var j = 0; 33 while (true) { 34 // Access out-of-bounds character and then trigger an exception, 35 // when accessing a property on the undefined value. 36 name[j++].does_not_exist; 37 } 38 } 39 40 for (var i = 0; i < 2; ++i) { 41 try { 42 outOfBoundsFailureThenException(); 43 } catch {} 44 }