tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

bulk.wast.js (15119B)


      1 /* Copyright 2021 Mozilla Foundation
      2 *
      3 * Licensed under the Apache License, Version 2.0 (the "License");
      4 * you may not use this file except in compliance with the License.
      5 * You may obtain a copy of the License at
      6 *
      7 *     http://www.apache.org/licenses/LICENSE-2.0
      8 *
      9 * Unless required by applicable law or agreed to in writing, software
     10 * distributed under the License is distributed on an "AS IS" BASIS,
     11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 * See the License for the specific language governing permissions and
     13 * limitations under the License.
     14 */
     15 
     16 // ./test/core/bulk.wast
     17 
     18 // ./test/core/bulk.wast:2
     19 let $0 = instantiate(`(module
     20  (memory 1)
     21  (data "foo"))`);
     22 
     23 // ./test/core/bulk.wast:6
     24 let $1 = instantiate(`(module
     25  (table 3 funcref)
     26  (elem funcref (ref.func 0) (ref.null func) (ref.func 1))
     27  (func)
     28  (func))`);
     29 
     30 // ./test/core/bulk.wast:13
     31 let $2 = instantiate(`(module
     32  (memory 1)
     33 
     34  (func (export "fill") (param i32 i32 i32)
     35    (memory.fill
     36      (local.get 0)
     37      (local.get 1)
     38      (local.get 2)))
     39 
     40  (func (export "load8_u") (param i32) (result i32)
     41    (i32.load8_u (local.get 0)))
     42 )`);
     43 
     44 // ./test/core/bulk.wast:27
     45 invoke($2, `fill`, [1, 255, 3]);
     46 
     47 // ./test/core/bulk.wast:28
     48 assert_return(() => invoke($2, `load8_u`, [0]), [value("i32", 0)]);
     49 
     50 // ./test/core/bulk.wast:29
     51 assert_return(() => invoke($2, `load8_u`, [1]), [value("i32", 255)]);
     52 
     53 // ./test/core/bulk.wast:30
     54 assert_return(() => invoke($2, `load8_u`, [2]), [value("i32", 255)]);
     55 
     56 // ./test/core/bulk.wast:31
     57 assert_return(() => invoke($2, `load8_u`, [3]), [value("i32", 255)]);
     58 
     59 // ./test/core/bulk.wast:32
     60 assert_return(() => invoke($2, `load8_u`, [4]), [value("i32", 0)]);
     61 
     62 // ./test/core/bulk.wast:35
     63 invoke($2, `fill`, [0, 48042, 2]);
     64 
     65 // ./test/core/bulk.wast:36
     66 assert_return(() => invoke($2, `load8_u`, [0]), [value("i32", 170)]);
     67 
     68 // ./test/core/bulk.wast:37
     69 assert_return(() => invoke($2, `load8_u`, [1]), [value("i32", 170)]);
     70 
     71 // ./test/core/bulk.wast:40
     72 invoke($2, `fill`, [0, 0, 65536]);
     73 
     74 // ./test/core/bulk.wast:43
     75 assert_trap(() => invoke($2, `fill`, [65280, 1, 257]), `out of bounds memory access`);
     76 
     77 // ./test/core/bulk.wast:45
     78 assert_return(() => invoke($2, `load8_u`, [65280]), [value("i32", 0)]);
     79 
     80 // ./test/core/bulk.wast:46
     81 assert_return(() => invoke($2, `load8_u`, [65535]), [value("i32", 0)]);
     82 
     83 // ./test/core/bulk.wast:49
     84 invoke($2, `fill`, [65536, 0, 0]);
     85 
     86 // ./test/core/bulk.wast:52
     87 assert_trap(() => invoke($2, `fill`, [65537, 0, 0]), `out of bounds memory access`);
     88 
     89 // ./test/core/bulk.wast:57
     90 let $3 = instantiate(`(module
     91  (memory (data "\\aa\\bb\\cc\\dd"))
     92 
     93  (func (export "copy") (param i32 i32 i32)
     94    (memory.copy
     95      (local.get 0)
     96      (local.get 1)
     97      (local.get 2)))
     98 
     99  (func (export "load8_u") (param i32) (result i32)
    100    (i32.load8_u (local.get 0)))
    101 )`);
    102 
    103 // ./test/core/bulk.wast:71
    104 invoke($3, `copy`, [10, 0, 4]);
    105 
    106 // ./test/core/bulk.wast:73
    107 assert_return(() => invoke($3, `load8_u`, [9]), [value("i32", 0)]);
    108 
    109 // ./test/core/bulk.wast:74
    110 assert_return(() => invoke($3, `load8_u`, [10]), [value("i32", 170)]);
    111 
    112 // ./test/core/bulk.wast:75
    113 assert_return(() => invoke($3, `load8_u`, [11]), [value("i32", 187)]);
    114 
    115 // ./test/core/bulk.wast:76
    116 assert_return(() => invoke($3, `load8_u`, [12]), [value("i32", 204)]);
    117 
    118 // ./test/core/bulk.wast:77
    119 assert_return(() => invoke($3, `load8_u`, [13]), [value("i32", 221)]);
    120 
    121 // ./test/core/bulk.wast:78
    122 assert_return(() => invoke($3, `load8_u`, [14]), [value("i32", 0)]);
    123 
    124 // ./test/core/bulk.wast:81
    125 invoke($3, `copy`, [8, 10, 4]);
    126 
    127 // ./test/core/bulk.wast:82
    128 assert_return(() => invoke($3, `load8_u`, [8]), [value("i32", 170)]);
    129 
    130 // ./test/core/bulk.wast:83
    131 assert_return(() => invoke($3, `load8_u`, [9]), [value("i32", 187)]);
    132 
    133 // ./test/core/bulk.wast:84
    134 assert_return(() => invoke($3, `load8_u`, [10]), [value("i32", 204)]);
    135 
    136 // ./test/core/bulk.wast:85
    137 assert_return(() => invoke($3, `load8_u`, [11]), [value("i32", 221)]);
    138 
    139 // ./test/core/bulk.wast:86
    140 assert_return(() => invoke($3, `load8_u`, [12]), [value("i32", 204)]);
    141 
    142 // ./test/core/bulk.wast:87
    143 assert_return(() => invoke($3, `load8_u`, [13]), [value("i32", 221)]);
    144 
    145 // ./test/core/bulk.wast:90
    146 invoke($3, `copy`, [10, 7, 6]);
    147 
    148 // ./test/core/bulk.wast:91
    149 assert_return(() => invoke($3, `load8_u`, [10]), [value("i32", 0)]);
    150 
    151 // ./test/core/bulk.wast:92
    152 assert_return(() => invoke($3, `load8_u`, [11]), [value("i32", 170)]);
    153 
    154 // ./test/core/bulk.wast:93
    155 assert_return(() => invoke($3, `load8_u`, [12]), [value("i32", 187)]);
    156 
    157 // ./test/core/bulk.wast:94
    158 assert_return(() => invoke($3, `load8_u`, [13]), [value("i32", 204)]);
    159 
    160 // ./test/core/bulk.wast:95
    161 assert_return(() => invoke($3, `load8_u`, [14]), [value("i32", 221)]);
    162 
    163 // ./test/core/bulk.wast:96
    164 assert_return(() => invoke($3, `load8_u`, [15]), [value("i32", 204)]);
    165 
    166 // ./test/core/bulk.wast:97
    167 assert_return(() => invoke($3, `load8_u`, [16]), [value("i32", 0)]);
    168 
    169 // ./test/core/bulk.wast:100
    170 invoke($3, `copy`, [65280, 0, 256]);
    171 
    172 // ./test/core/bulk.wast:101
    173 invoke($3, `copy`, [65024, 65280, 256]);
    174 
    175 // ./test/core/bulk.wast:104
    176 invoke($3, `copy`, [65536, 0, 0]);
    177 
    178 // ./test/core/bulk.wast:105
    179 invoke($3, `copy`, [0, 65536, 0]);
    180 
    181 // ./test/core/bulk.wast:108
    182 assert_trap(() => invoke($3, `copy`, [65537, 0, 0]), `out of bounds memory access`);
    183 
    184 // ./test/core/bulk.wast:110
    185 assert_trap(() => invoke($3, `copy`, [0, 65537, 0]), `out of bounds memory access`);
    186 
    187 // ./test/core/bulk.wast:115
    188 let $4 = instantiate(`(module
    189  (memory 1)
    190  (data "\\aa\\bb\\cc\\dd")
    191 
    192  (func (export "init") (param i32 i32 i32)
    193    (memory.init 0
    194      (local.get 0)
    195      (local.get 1)
    196      (local.get 2)))
    197 
    198  (func (export "load8_u") (param i32) (result i32)
    199    (i32.load8_u (local.get 0)))
    200 )`);
    201 
    202 // ./test/core/bulk.wast:129
    203 invoke($4, `init`, [0, 1, 2]);
    204 
    205 // ./test/core/bulk.wast:130
    206 assert_return(() => invoke($4, `load8_u`, [0]), [value("i32", 187)]);
    207 
    208 // ./test/core/bulk.wast:131
    209 assert_return(() => invoke($4, `load8_u`, [1]), [value("i32", 204)]);
    210 
    211 // ./test/core/bulk.wast:132
    212 assert_return(() => invoke($4, `load8_u`, [2]), [value("i32", 0)]);
    213 
    214 // ./test/core/bulk.wast:135
    215 invoke($4, `init`, [65532, 0, 4]);
    216 
    217 // ./test/core/bulk.wast:138
    218 assert_trap(() => invoke($4, `init`, [65534, 0, 3]), `out of bounds memory access`);
    219 
    220 // ./test/core/bulk.wast:140
    221 assert_return(() => invoke($4, `load8_u`, [65534]), [value("i32", 204)]);
    222 
    223 // ./test/core/bulk.wast:141
    224 assert_return(() => invoke($4, `load8_u`, [65535]), [value("i32", 221)]);
    225 
    226 // ./test/core/bulk.wast:144
    227 invoke($4, `init`, [65536, 0, 0]);
    228 
    229 // ./test/core/bulk.wast:145
    230 invoke($4, `init`, [0, 4, 0]);
    231 
    232 // ./test/core/bulk.wast:148
    233 assert_trap(() => invoke($4, `init`, [65537, 0, 0]), `out of bounds memory access`);
    234 
    235 // ./test/core/bulk.wast:150
    236 assert_trap(() => invoke($4, `init`, [0, 5, 0]), `out of bounds memory access`);
    237 
    238 // ./test/core/bulk.wast:154
    239 let $5 = instantiate(`(module
    240  (memory 1)
    241  (data \$p "x")
    242  (data \$a (memory 0) (i32.const 0) "x")
    243 
    244  (func (export "drop_passive") (data.drop \$p))
    245  (func (export "init_passive") (param \$len i32)
    246    (memory.init \$p (i32.const 0) (i32.const 0) (local.get \$len)))
    247 
    248  (func (export "drop_active") (data.drop \$a))
    249  (func (export "init_active") (param \$len i32)
    250    (memory.init \$a (i32.const 0) (i32.const 0) (local.get \$len)))
    251 )`);
    252 
    253 // ./test/core/bulk.wast:168
    254 invoke($5, `init_passive`, [1]);
    255 
    256 // ./test/core/bulk.wast:169
    257 invoke($5, `drop_passive`, []);
    258 
    259 // ./test/core/bulk.wast:170
    260 invoke($5, `drop_passive`, []);
    261 
    262 // ./test/core/bulk.wast:171
    263 assert_return(() => invoke($5, `init_passive`, [0]), []);
    264 
    265 // ./test/core/bulk.wast:172
    266 assert_trap(() => invoke($5, `init_passive`, [1]), `out of bounds memory access`);
    267 
    268 // ./test/core/bulk.wast:173
    269 invoke($5, `init_passive`, [0]);
    270 
    271 // ./test/core/bulk.wast:174
    272 invoke($5, `drop_active`, []);
    273 
    274 // ./test/core/bulk.wast:175
    275 assert_return(() => invoke($5, `init_active`, [0]), []);
    276 
    277 // ./test/core/bulk.wast:176
    278 assert_trap(() => invoke($5, `init_active`, [1]), `out of bounds memory access`);
    279 
    280 // ./test/core/bulk.wast:177
    281 invoke($5, `init_active`, [0]);
    282 
    283 // ./test/core/bulk.wast:181
    284 let $6 = instantiate(`(module
    285  ;; 65 data segments. 64 is the smallest positive number that is encoded
    286  ;; differently as a signed LEB.
    287  (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "")
    288  (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "")
    289  (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "")
    290  (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "")
    291  (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "")
    292  (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "")
    293  (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "")
    294  (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "")
    295  (data "")
    296  (func (data.drop 64)))`);
    297 
    298 // ./test/core/bulk.wast:196
    299 let $7 = instantiate(`(module (data "goodbye") (func (data.drop 0)))`);
    300 
    301 // ./test/core/bulk.wast:199
    302 let $8 = instantiate(`(module
    303  (table 3 funcref)
    304  (elem funcref
    305    (ref.func \$zero) (ref.func \$one) (ref.func \$zero) (ref.func \$one))
    306 
    307  (func \$zero (result i32) (i32.const 0))
    308  (func \$one (result i32) (i32.const 1))
    309 
    310  (func (export "init") (param i32 i32 i32)
    311    (table.init 0
    312      (local.get 0)
    313      (local.get 1)
    314      (local.get 2)))
    315 
    316  (func (export "call") (param i32) (result i32)
    317    (call_indirect (result i32)
    318      (local.get 0)))
    319 )`);
    320 
    321 // ./test/core/bulk.wast:219
    322 assert_trap(() => invoke($8, `init`, [2, 0, 2]), `out of bounds table access`);
    323 
    324 // ./test/core/bulk.wast:221
    325 assert_trap(() => invoke($8, `call`, [2]), `uninitialized element 2`);
    326 
    327 // ./test/core/bulk.wast:224
    328 invoke($8, `init`, [0, 1, 2]);
    329 
    330 // ./test/core/bulk.wast:225
    331 assert_return(() => invoke($8, `call`, [0]), [value("i32", 1)]);
    332 
    333 // ./test/core/bulk.wast:226
    334 assert_return(() => invoke($8, `call`, [1]), [value("i32", 0)]);
    335 
    336 // ./test/core/bulk.wast:227
    337 assert_trap(() => invoke($8, `call`, [2]), `uninitialized element`);
    338 
    339 // ./test/core/bulk.wast:230
    340 invoke($8, `init`, [1, 2, 2]);
    341 
    342 // ./test/core/bulk.wast:233
    343 invoke($8, `init`, [3, 0, 0]);
    344 
    345 // ./test/core/bulk.wast:234
    346 invoke($8, `init`, [0, 4, 0]);
    347 
    348 // ./test/core/bulk.wast:237
    349 assert_trap(() => invoke($8, `init`, [4, 0, 0]), `out of bounds table access`);
    350 
    351 // ./test/core/bulk.wast:239
    352 assert_trap(() => invoke($8, `init`, [0, 5, 0]), `out of bounds table access`);
    353 
    354 // ./test/core/bulk.wast:244
    355 let $9 = instantiate(`(module
    356  (table 1 funcref)
    357  (func \$f)
    358  (elem \$p funcref (ref.func \$f))
    359  (elem \$a (table 0) (i32.const 0) func \$f)
    360 
    361  (func (export "drop_passive") (elem.drop \$p))
    362  (func (export "init_passive") (param \$len i32)
    363    (table.init \$p (i32.const 0) (i32.const 0) (local.get \$len))
    364  )
    365 
    366  (func (export "drop_active") (elem.drop \$a))
    367  (func (export "init_active") (param \$len i32)
    368    (table.init \$a (i32.const 0) (i32.const 0) (local.get \$len))
    369  )
    370 )`);
    371 
    372 // ./test/core/bulk.wast:261
    373 invoke($9, `init_passive`, [1]);
    374 
    375 // ./test/core/bulk.wast:262
    376 invoke($9, `drop_passive`, []);
    377 
    378 // ./test/core/bulk.wast:263
    379 invoke($9, `drop_passive`, []);
    380 
    381 // ./test/core/bulk.wast:264
    382 assert_return(() => invoke($9, `init_passive`, [0]), []);
    383 
    384 // ./test/core/bulk.wast:265
    385 assert_trap(() => invoke($9, `init_passive`, [1]), `out of bounds table access`);
    386 
    387 // ./test/core/bulk.wast:266
    388 invoke($9, `init_passive`, [0]);
    389 
    390 // ./test/core/bulk.wast:267
    391 invoke($9, `drop_active`, []);
    392 
    393 // ./test/core/bulk.wast:268
    394 assert_return(() => invoke($9, `init_active`, [0]), []);
    395 
    396 // ./test/core/bulk.wast:269
    397 assert_trap(() => invoke($9, `init_active`, [1]), `out of bounds table access`);
    398 
    399 // ./test/core/bulk.wast:270
    400 invoke($9, `init_active`, [0]);
    401 
    402 // ./test/core/bulk.wast:274
    403 let $10 = instantiate(`(module
    404  ;; 65 elem segments. 64 is the smallest positive number that is encoded
    405  ;; differently as a signed LEB.
    406  (elem funcref) (elem funcref) (elem funcref) (elem funcref)
    407  (elem funcref) (elem funcref) (elem funcref) (elem funcref)
    408  (elem funcref) (elem funcref) (elem funcref) (elem funcref)
    409  (elem funcref) (elem funcref) (elem funcref) (elem funcref)
    410  (elem funcref) (elem funcref) (elem funcref) (elem funcref)
    411  (elem funcref) (elem funcref) (elem funcref) (elem funcref)
    412  (elem funcref) (elem funcref) (elem funcref) (elem funcref)
    413  (elem funcref) (elem funcref) (elem funcref) (elem funcref)
    414  (elem funcref) (elem funcref) (elem funcref) (elem funcref)
    415  (elem funcref) (elem funcref) (elem funcref) (elem funcref)
    416  (elem funcref) (elem funcref) (elem funcref) (elem funcref)
    417  (elem funcref) (elem funcref) (elem funcref) (elem funcref)
    418  (elem funcref) (elem funcref) (elem funcref) (elem funcref)
    419  (elem funcref) (elem funcref) (elem funcref) (elem funcref)
    420  (elem funcref) (elem funcref) (elem funcref) (elem funcref)
    421  (elem funcref) (elem funcref) (elem funcref) (elem funcref)
    422  (elem funcref)
    423  (func (elem.drop 64)))`);
    424 
    425 // ./test/core/bulk.wast:297
    426 let $11 = instantiate(`(module (elem funcref (ref.func 0)) (func (elem.drop 0)))`);
    427 
    428 // ./test/core/bulk.wast:300
    429 let $12 = instantiate(`(module
    430  (table 10 funcref)
    431  (elem (i32.const 0) \$zero \$one \$two)
    432  (func \$zero (result i32) (i32.const 0))
    433  (func \$one (result i32) (i32.const 1))
    434  (func \$two (result i32) (i32.const 2))
    435 
    436  (func (export "copy") (param i32 i32 i32)
    437    (table.copy
    438      (local.get 0)
    439      (local.get 1)
    440      (local.get 2)))
    441 
    442  (func (export "call") (param i32) (result i32)
    443    (call_indirect (result i32)
    444      (local.get 0)))
    445 )`);
    446 
    447 // ./test/core/bulk.wast:319
    448 invoke($12, `copy`, [3, 0, 3]);
    449 
    450 // ./test/core/bulk.wast:321
    451 assert_return(() => invoke($12, `call`, [3]), [value("i32", 0)]);
    452 
    453 // ./test/core/bulk.wast:322
    454 assert_return(() => invoke($12, `call`, [4]), [value("i32", 1)]);
    455 
    456 // ./test/core/bulk.wast:323
    457 assert_return(() => invoke($12, `call`, [5]), [value("i32", 2)]);
    458 
    459 // ./test/core/bulk.wast:326
    460 invoke($12, `copy`, [0, 1, 3]);
    461 
    462 // ./test/core/bulk.wast:328
    463 assert_return(() => invoke($12, `call`, [0]), [value("i32", 1)]);
    464 
    465 // ./test/core/bulk.wast:329
    466 assert_return(() => invoke($12, `call`, [1]), [value("i32", 2)]);
    467 
    468 // ./test/core/bulk.wast:330
    469 assert_return(() => invoke($12, `call`, [2]), [value("i32", 0)]);
    470 
    471 // ./test/core/bulk.wast:333
    472 invoke($12, `copy`, [2, 0, 3]);
    473 
    474 // ./test/core/bulk.wast:335
    475 assert_return(() => invoke($12, `call`, [2]), [value("i32", 1)]);
    476 
    477 // ./test/core/bulk.wast:336
    478 assert_return(() => invoke($12, `call`, [3]), [value("i32", 2)]);
    479 
    480 // ./test/core/bulk.wast:337
    481 assert_return(() => invoke($12, `call`, [4]), [value("i32", 0)]);
    482 
    483 // ./test/core/bulk.wast:340
    484 invoke($12, `copy`, [6, 8, 2]);
    485 
    486 // ./test/core/bulk.wast:341
    487 invoke($12, `copy`, [8, 6, 2]);
    488 
    489 // ./test/core/bulk.wast:344
    490 invoke($12, `copy`, [10, 0, 0]);
    491 
    492 // ./test/core/bulk.wast:345
    493 invoke($12, `copy`, [0, 10, 0]);
    494 
    495 // ./test/core/bulk.wast:348
    496 assert_trap(() => invoke($12, `copy`, [11, 0, 0]), `out of bounds table access`);
    497 
    498 // ./test/core/bulk.wast:350
    499 assert_trap(() => invoke($12, `copy`, [0, 11, 0]), `out of bounds table access`);