spread-call-near-maxarg.js (1576B)
1 // FIXME: ASAN and debug builds run this too slowly for now. 2 if (!getBuildConfiguration("debug") && !getBuildConfiguration("asan")) { 3 let longArray = []; 4 longArray.length = getMaxArgs() - 1; 5 let shortArray = []; 6 let a; 7 8 let f = function() { 9 }; 10 11 // Call_Scripted 12 // Optimized stub is used after some calls. 13 a = shortArray; 14 for (let i = 0; i < 4; i++) { 15 if (i == 3) { 16 a = longArray; 17 } 18 try { 19 f(...a); 20 } catch (e) { 21 assertEq(e.message, "too much recursion"); 22 } 23 } 24 25 // Call_Scripted (constructing) 26 a = shortArray; 27 for (let i = 0; i < 4; i++) { 28 if (i == 3) { 29 a = longArray; 30 } 31 try { 32 new f(...a); 33 } catch (e) { 34 assertEq(e.message, "too much recursion"); 35 } 36 } 37 38 // Call_Native 39 a = shortArray; 40 for (let i = 0; i < 4; i++) { 41 if (i == 3) { 42 a = longArray; 43 } 44 try { 45 Math.max(...a); 46 } catch (e) { 47 assertEq(e.message, "too much recursion"); 48 } 49 } 50 51 // Call_Native (constructing) 52 a = shortArray; 53 for (let i = 0; i < 4; i++) { 54 if (i == 3) { 55 a = longArray; 56 } 57 try { 58 new Date(...a); 59 } catch (e) { 60 assertEq(e.message, "too much recursion"); 61 } 62 } 63 64 // No optimized stub for eval. 65 a = longArray; 66 try { 67 eval(...a); 68 } catch (e) { 69 assertEq(e.message, "too much recursion"); 70 } 71 }