tor-browser

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

gc-2.js (1105B)


      1 // Example from the proposal.
      2 
      3 gczeal(2,5);
      4 
      5 var compute_delta = (i) => Promise.resolve(i / 100 || 1);
      6 
      7 var suspending_compute_delta = new WebAssembly.Suspending(compute_delta);
      8 
      9 var ins = wasmEvalText(`(module
     10    (import "js" "init_state" (func $init_state (result f64)))
     11    (import "js" "compute_delta"
     12      (func $compute_delta (param i32) (result f64)))
     13 
     14    (global $state (mut f64) (f64.const nan))
     15    (func $init (global.set $state (call $init_state)))
     16    (start $init)
     17 
     18    (func $get_state (export "get_state") (result f64) (global.get $state))
     19    (func $update_state (export "update_state") (param i32) (result f64)
     20      (global.set $state (f64.add
     21        (global.get $state) (call $compute_delta (local.get 0))))
     22      (global.get $state)
     23    )
     24 
     25 )`, {
     26    js: {
     27        init_state() { return 0; },
     28        compute_delta: suspending_compute_delta,
     29    },
     30 });
     31 
     32 var update_state = WebAssembly.promising(ins.exports.update_state);
     33 
     34 var res = update_state(4);
     35 var tasks = res.then((r) => {
     36    print(r);
     37    assertEq(ins.exports.get_state(), .04);
     38 });
     39 
     40 assertEq(ins.exports.get_state(), 0);