tor-browser

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

teavm-bugs.js (1218B)


      1 // Register allocation issue with LCompareI64AndBranch.
      2 let params = '';
      3 let locals = '';
      4 let tests = '(i64.const 0)';
      5 
      6 for (let i = 15; i --> 0;) {
      7    params += `\n(param i64)`;
      8    locals += `\n(local i64)`;
      9    tests = `
     10    (if (result i64)
     11        (i64.eq
     12            (local.get ${i + 8})
     13            (local.get ${i})
     14        )
     15        (then (local.get ${i + 8}))
     16        (else ${tests})
     17    )`;
     18 }
     19 
     20 let code = `(module
     21   (func $i64
     22     ${params} (result i64) ${locals}
     23     ${tests}
     24   )
     25 )`
     26 
     27 wasmEvalText(code);
     28 
     29 // Bounds check elimination.
     30 assertEq(wasmEvalText(`(module
     31    (memory 1)
     32    (func (param $p i32) (result i32) (local $l i32)
     33        (local.set $l (i32.const 0))
     34        (if
     35            (local.get $p)
     36            (then (local.set $l
     37               (i32.add
     38                  (local.get $l)
     39                  (i32.load8_s (local.get $p))
     40               )
     41            ))
     42        )
     43        (local.set $l
     44           (i32.add
     45              (local.get $l)
     46              (i32.load8_s (local.get $p))
     47           )
     48        )
     49        (local.get $l)
     50    )
     51    (data (i32.const 0) "\\00\\01\\02\\03\\04\\05\\06\\07\\08\\09\\0a\\0b\\0c\\0d\\0e\\0f")
     52    (export "test" (func 0))
     53 )`).exports["test"](3), 6);