ref-eq.js (825B)
1 // ref.eq is part of the gc feature, not the reftypes feature. 2 3 let { exports: { make, ref_eq, ref_eq_for_control } } = wasmEvalText(`(module 4 (type $s (struct)) 5 6 (func (export "make") (result eqref) struct.new $s) 7 8 (func (export "ref_eq") (param $a eqref) (param $b eqref) (result i32) 9 (ref.eq (local.get $a) (local.get $b))) 10 11 (func (export "ref_eq_for_control") (param $a eqref) (param $b eqref) (result f64) 12 (if (result f64) (ref.eq (local.get $a) (local.get $b)) 13 (then (f64.const 5.0)) 14 (else (f64.const 3.0)))))`); 15 16 let a = make(); 17 let b = make(); 18 19 assertEq(ref_eq(null, null), 1); 20 assertEq(ref_eq(null, a), 0); 21 assertEq(ref_eq(b, b), 1); 22 assertEq(ref_eq_for_control(null, null), 5); 23 assertEq(ref_eq_for_control(null, a), 3); 24 assertEq(ref_eq_for_control(b, b), 5);