oom-tracking-line-starts-in-tokenizer.js (899B)
1 // Constraints on this test's appearance: 2 // 3 // * |TokenStream::SourceCoords::add| must try to allocate memory. (This test 4 // ensures this happens by making the function below >=128 lines long so 5 // that |SourceCoords::lineStartOffsets_| must convert to heap storage. The 6 // precise approach doesn't matter.) 7 // * That allocation attempt must fail (by forced simulated OOM, here). 8 // 9 // It'd be nice to build up the function programmatically, but it appears that 10 // the above only happens if the provided function has a lazy script. Cursory 11 // attempts to relazify |Function("...")| didn't work, so this fuzzer-like 12 // version had to be used instead. 13 if ("oomTest" in this) { 14 oomTest(function() { 15 try { 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 } catch(e) { 140 ; 141 } 142 }) 143 }