tor-browser

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

bug1856733.js (1254B)


      1 // Validates if imported globals are accounted for in init expressions.
      2 
      3 var ins = wasmEvalText(`(module
      4    (import "" "d" (global $g0 i32))
      5    (global $g i32 (i32.const 1))
      6    (global $g2 (mut i32) (global.get $g))
      7    (global $g3 (mut i32) (global.get $g0))
      8    (func (export "test1") (result i32) global.get $g2)
      9    (func (export "test2") (result i32) global.get $g3)
     10 )`, {"": {d: 2},});
     11 assertEq(ins.exports.test1(), 1);
     12 assertEq(ins.exports.test2(), 2);
     13 
     14 wasmFailValidateText(`(module
     15    (import "" "d" (global $g0 (mut i32)))
     16    (global $g (mut i32)  (global.get $g0))
     17 )`, /must reference a previously-defined immutable global/);
     18 
     19 wasmFailValidateText(`(module
     20    (import "" "d" (global $g0 i32))
     21    (global $g i32 (global.get $g))
     22 )`, /global\.get index out of range/);
     23 
     24 // Other tests from the bug.
     25 
     26 wasmValidateText(`(module
     27    (import "xx" "d" (global $g0 i32))
     28    (global $int i32 (i32.const 251))
     29    (global $tbl2 (ref i31) (ref.i31
     30      (global.get $int)
     31    ))
     32 )`);
     33 wasmValidateText(`(module
     34    (import "xx" "d" (global $g0 i32))
     35    (type $block (array (ref eq)))
     36    (global $len i32 (i32.const 256))
     37    (global $tbl (ref $block) (array.new $block
     38     (ref.i31
     39      (i32.const 0)
     40     )
     41     (global.get $len)
     42    ))
     43 )`);