Path: blob/main/tests/disas/fixed-size-memory.wat
1691 views
;;! target = "x86_64" ;;! flags = [ ;;! "-Ccranelift-enable-heap-access-spectre-mitigation=false", ;;! "-Ostatic-memory-maximum-size=0", ;;! "-Odynamic-memory-guard-size=0", ;;! ] ;; Test that dynamic memories with `min_size == max_size` don't actually load ;; their dynamic memory bound, since it is a constant. (module (memory 1 1) (func (export "do_store") (param i32 i32) local.get 0 local.get 1 i32.store8 offset=0) (func (export "do_load") (param i32) (result i32) local.get 0 i32.load8_u offset=0)) ;; function u0:0(i64 vmctx, i64, i32, i32) tail { ;; gv0 = vmctx ;; gv1 = load.i64 notrap aligned readonly gv0+8 ;; gv2 = load.i64 notrap aligned gv1+16 ;; gv3 = vmctx ;; gv4 = load.i64 notrap aligned gv3+64 ;; gv5 = load.i64 notrap aligned readonly can_move checked gv3+56 ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32): ;; @0041 v4 = uextend.i64 v2 ;; @0041 v5 = iconst.i64 0x0001_0000 ;; @0041 v6 = icmp uge v4, v5 ; v5 = 0x0001_0000 ;; @0041 trapnz v6, heap_oob ;; @0041 v7 = load.i64 notrap aligned readonly can_move checked v0+56 ;; @0041 v8 = iadd v7, v4 ;; @0041 istore8 little heap v3, v8 ;; @0044 jump block1 ;; ;; block1: ;; @0044 return ;; } ;; ;; function u0:1(i64 vmctx, i64, i32) -> i32 tail { ;; gv0 = vmctx ;; gv1 = load.i64 notrap aligned readonly gv0+8 ;; gv2 = load.i64 notrap aligned gv1+16 ;; gv3 = vmctx ;; gv4 = load.i64 notrap aligned gv3+64 ;; gv5 = load.i64 notrap aligned readonly can_move checked gv3+56 ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @0049 v4 = uextend.i64 v2 ;; @0049 v5 = iconst.i64 0x0001_0000 ;; @0049 v6 = icmp uge v4, v5 ; v5 = 0x0001_0000 ;; @0049 trapnz v6, heap_oob ;; @0049 v7 = load.i64 notrap aligned readonly can_move checked v0+56 ;; @0049 v8 = iadd v7, v4 ;; @0049 v9 = uload8.i32 little heap v8 ;; @004c jump block1 ;; ;; block1: ;; @004c return v9 ;; }