Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bytecodealliance
GitHub Repository: bytecodealliance/wasmtime
Path: blob/main/tests/disas/global-get.wat
3054 views
;;! target = "x86_64"

(module
  ;; Imported and immutable: should become a vmctx load.
  (import "env" "a" (global $imp-imm i32))

  ;; Imported and mutable: should become a vmctx load.
  (import "env" "b" (global $imp-mut (mut i32)))

  ;; Defined and immutable: should become a constant.
  (global $def-imm i32 (i32.const 42))

  ;; Defined and mutable: should become a vmctx load.
  (global $def-mut (mut i32) (i32.const 36))

  (func $f0 (result i32)
    (global.get $imp-imm)
  )

  (func $f1 (result i32)
    (global.get $imp-mut)
  )

  (func $f2 (result i32)
    (global.get $def-imm)
  )

  (func $f3 (result i32)
    (global.get $def-mut)
  )
)

;; function u0:0(i64 vmctx, i64) -> 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 readonly can_move gv3+48
;;     stack_limit = gv2
;;
;;                                 block0(v0: i64, v1: i64):
;; @003d                               v3 = load.i64 notrap aligned readonly can_move v0+48
;; @003d                               v4 = load.i32 notrap aligned table v3
;; @003f                               jump block1
;;
;;                                 block1:
;; @003f                               return v4
;; }
;;
;; function u0:1(i64 vmctx, i64) -> 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 readonly can_move gv3+72
;;     stack_limit = gv2
;;
;;                                 block0(v0: i64, v1: i64):
;; @0042                               v3 = load.i64 notrap aligned readonly can_move v0+72
;; @0042                               v4 = load.i32 notrap aligned table v3
;; @0044                               jump block1
;;
;;                                 block1:
;; @0044                               return v4
;; }
;;
;; function u0:2(i64 vmctx, i64) -> i32 tail {
;;     gv0 = vmctx
;;     gv1 = load.i64 notrap aligned readonly gv0+8
;;     gv2 = load.i64 notrap aligned gv1+16
;;     stack_limit = gv2
;;
;;                                 block0(v0: i64, v1: i64):
;; @0047                               v3 = iconst.i32 42
;; @0049                               jump block1
;;
;;                                 block1:
;; @0049                               return v3  ; v3 = 42
;; }
;;
;; function u0:3(i64 vmctx, i64) -> i32 tail {
;;     gv0 = vmctx
;;     gv1 = load.i64 notrap aligned readonly gv0+8
;;     gv2 = load.i64 notrap aligned gv1+16
;;     gv3 = vmctx
;;     stack_limit = gv2
;;
;;                                 block0(v0: i64, v1: i64):
;; @004c                               v4 = load.i32 notrap aligned table v0+112
;; @004e                               jump block1
;;
;;                                 block1:
;; @004e                               return v4
;; }