substring-inline-strings.js (1534B)
1 let hasStringRepresentation = typeof stringRepresentation === "function"; 2 3 function testLatin1() { 4 var s = "abcdefghijklmnopqrstuvwxyz"; 5 for (var i = 0; i < 100; i++) { 6 var sub8 = s.substring(0, 8); 7 assertEq(sub8, "abcdefgh"); 8 if (hasStringRepresentation) { 9 assertEq(stringRepresentation(sub8).includes("(JSThinInlineString*)"), true); 10 } 11 12 var sub24 = s.substring(0, 24); 13 assertEq(sub24, "abcdefghijklmnopqrstuvwx"); 14 if (hasStringRepresentation) { 15 assertEq(stringRepresentation(sub24).includes("(JSFatInlineString*)"), true); 16 } 17 18 var sub25 = s.substring(0, 25); 19 assertEq(sub25, "abcdefghijklmnopqrstuvwxy"); 20 if (hasStringRepresentation) { 21 assertEq(stringRepresentation(sub25).includes("(JSDependentString*)"), true); 22 } 23 } 24 } 25 testLatin1(); 26 27 function testTwoByte() { 28 var s = "\u1000bcdefghijklmnopqrstuvwxyz"; 29 for (var i = 0; i < 100; i++) { 30 var sub4 = s.substring(0, 4); 31 assertEq(sub4, "\u1000bcd"); 32 if (hasStringRepresentation) { 33 assertEq(stringRepresentation(sub4).includes("(JSThinInlineString*)"), true); 34 } 35 36 var sub12 = s.substring(0, 12); 37 assertEq(sub12, "\u1000bcdefghijkl"); 38 if (hasStringRepresentation) { 39 assertEq(stringRepresentation(sub12).includes("(JSFatInlineString*)"), true); 40 } 41 42 var sub13 = s.substring(0, 13); 43 assertEq(sub13, "\u1000bcdefghijklm"); 44 if (hasStringRepresentation) { 45 assertEq(stringRepresentation(sub13).includes("(JSDependentString*)"), true); 46 } 47 } 48 } 49 testTwoByte();