tor-browser

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

unaligned-store64.js (1064B)


      1 var ins = new WebAssembly.Instance(new WebAssembly.Module(wasmTextToBinary(
      2    `(module
      3       (memory (export "mem") 1 1)
      4       (func (export "store_32_1") (param $ptr i32)
      5         (i64.store32 align=1 (local.get $ptr) (i64.const 0xabba1337)))
      6       (func (export "store_32_2") (param $ptr i32)
      7         (i64.store32 align=2 (local.get $ptr) (i64.const 0xabba1337)))
      8       (func (export "store_16") (param $ptr i32)
      9         (i64.store16 align=1 (local.get $ptr) (i64.const 0x1337))))`))).exports;
     10 
     11 var mem = new Uint8Array(ins.mem.buffer);
     12 
     13 ins.store_16(1);
     14 assertEq(mem[1], 0x37);
     15 assertEq(mem[2], 0x13);
     16 
     17 ins.store_32_1(11);
     18 assertEq(mem[11], 0x37);
     19 assertEq(mem[12], 0x13);
     20 assertEq(mem[13], 0xba);
     21 assertEq(mem[14], 0xab);
     22 
     23 ins.store_32_2(18);
     24 assertEq(mem[18], 0x37);
     25 assertEq(mem[19], 0x13);
     26 assertEq(mem[20], 0xba);
     27 assertEq(mem[21], 0xab);
     28 
     29 // This must also work on all platforms even though we're lying about the
     30 // alignment.
     31 ins.store_32_2(29);
     32 assertEq(mem[29], 0x37);
     33 assertEq(mem[30], 0x13);
     34 assertEq(mem[31], 0xba);
     35 assertEq(mem[32], 0xab);