Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bytecodealliance
GitHub Repository: bytecodealliance/wasmtime
Path: blob/main/tests/disas/debug-exceptions.wat
2450 views
;;! target = "aarch64"
;;! test = "compile"
;;! flags = ["-Wexceptions=yes", "-Wgc=yes", "-Dguest-debug=yes"]

(module
  (tag $t (param i32))
  (import "" "host" (func))
  (func (export "main")
    (block $b (result i32)
      (try_table (catch $t $b)
        (drop (i32.const 42))
        (throw $t (i32.const 42)))
      i32.const 0)
    (call 0)
    (drop)))
;; wasm[0]::function[1]:
;;       stp     x29, x30, [sp, #-0x10]!
;;       mov     x29, sp
;;       stp     x27, x28, [sp, #-0x10]!
;;       stp     x25, x26, [sp, #-0x10]!
;;       stp     x23, x24, [sp, #-0x10]!
;;       stp     x21, x22, [sp, #-0x10]!
;;       stp     x19, x20, [sp, #-0x10]!
;;       stp     d14, d15, [sp, #-0x10]!
;;       stp     d12, d13, [sp, #-0x10]!
;;       stp     d10, d11, [sp, #-0x10]!
;;       stp     d8, d9, [sp, #-0x10]!
;;       sub     sp, sp, #0x30
;;       ldr     x3, [x2, #8]
;;       ldr     x3, [x3, #0x10]
;;       mov     x4, sp
;;       cmp     x4, x3
;;       b.lo    #0x190
;;   44: stur    x2, [sp]
;;       mov     x0, x2
;;       stur    x2, [sp, #0x10]
;;       nop
;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 53, slot at FP-0xc0, locals , stack 
;;       ╰─╼ breakpoint patch: wasm PC 53, patch bytes [29, 1, 0, 148]
;;       ldur    x0, [sp, #0x10]
;;       nop
;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 55, slot at FP-0xc0, locals , stack 
;;       ╰─╼ breakpoint patch: wasm PC 55, patch bytes [27, 1, 0, 148]
;;       ldur    x0, [sp, #0x10]
;;       nop
;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 61, slot at FP-0xc0, locals , stack 
;;       ╰─╼ breakpoint patch: wasm PC 61, patch bytes [25, 1, 0, 148]
;;       mov     w22, #0x2a
;;       stur    w22, [sp, #8]
;;       nop
;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 63, slot at FP-0xc0, locals , stack I32 @ slot+0x8
;;       ╰─╼ breakpoint patch: wasm PC 63, patch bytes [22, 1, 0, 148]
;;       nop
;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 64, slot at FP-0xc0, locals , stack 
;;       ╰─╼ breakpoint patch: wasm PC 64, patch bytes [21, 1, 0, 148]
;;       stur    w22, [sp, #8]
;;       nop
;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 66, slot at FP-0xc0, locals , stack I32 @ slot+0x8
;;       ╰─╼ breakpoint patch: wasm PC 66, patch bytes [19, 1, 0, 148]
;;       ldur    x2, [sp, #0x10]
;;       bl      #0x424
;;   84: mov     x24, x2
;;       mov     w3, #0x4000000
;;       mov     w4, #2
;;       mov     w5, #0x28
;;       mov     w6, #8
;;       ldur    x2, [sp, #0x10]
;;       bl      #0x344
;;   a0: ldur    x0, [sp, #0x10]
;;       ldr     x5, [x0, #8]
;;       ldr     x6, [x5, #0x18]
;;       stur    x5, [sp, #0x20]
;;       add     x15, x6, #0x20
;;       str     w22, [x15, w2, uxtw]
;;       add     x3, x6, #0x18
;;       mov     x1, x24
;;       str     w1, [x3, w2, uxtw]
;;       mov     w3, #0
;;       add     x4, x6, #0x1c
;;       stur    x6, [sp, #0x18]
;;       str     w3, [x4, w2, uxtw]
;;       mov     x3, x2
;;       ldur    x2, [sp, #0x10]
;;       bl      #0x45c
;;       ├─╼ exception frame offset: SP = FP - 0xc0
;;       ╰─╼ exception handler: tag=0, context at [SP+0x10], handler=0xf8
;;   e0: mov     w3, #9
;;       ldur    x2, [sp, #0x10]
;;       bl      #0x3b8
;;   ec: ldur    x2, [sp, #0x10]
;;       bl      #0x3f0
;;   f4: .byte   0x1f, 0xc1, 0x00, 0x00
;;       mov     x9, x0
;;       mov     w6, w9
;;       mov     x7, #0x28
;;       adds    x5, x6, x7
;;       cset    x7, hs
;;       uxtb    w6, w7
;;       cbnz    x6, #0x1a8
;;  114: ldur    x4, [sp, #0x20]
;;       ldr     x8, [x4, #0x20]
;;       cmp     x5, x8
;;       cset    x10, hi
;;       uxtb    w10, w10
;;       cbnz    x10, #0x1ac
;;  12c: ldur    x6, [sp, #0x18]
;;       add     x10, x6, #0x20
;;       ldr     w12, [x10, w9, uxtw]
;;       stur    w12, [sp, #8]
;;       ldur    x0, [sp, #0x10]
;;       nop
;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 72, slot at FP-0xc0, locals , stack I32 @ slot+0x8
;;       ╰─╼ breakpoint patch: wasm PC 72, patch bytes [225, 0, 0, 148]
;;       ldr     x14, [x0, #0x30]
;;       ldr     x2, [x0, #0x40]
;;       ldur    x3, [sp, #0x10]
;;       blr     x14
;;       ╰─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 72, slot at FP-0xc0, locals , stack I32 @ slot+0x8
;;  154: ldur    x0, [sp, #0x10]
;;       nop
;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 74, slot at FP-0xc0, locals , stack I32 @ slot+0x8
;;       ╰─╼ breakpoint patch: wasm PC 74, patch bytes [219, 0, 0, 148]
;;       nop
;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 75, slot at FP-0xc0, locals , stack 
;;       ╰─╼ breakpoint patch: wasm PC 75, patch bytes [218, 0, 0, 148]
;;       add     sp, sp, #0x30
;;       ldp     d8, d9, [sp], #0x10
;;       ldp     d10, d11, [sp], #0x10
;;       ldp     d12, d13, [sp], #0x10
;;       ldp     d14, d15, [sp], #0x10
;;       ldp     x19, x20, [sp], #0x10
;;       ldp     x21, x22, [sp], #0x10
;;       ldp     x23, x24, [sp], #0x10
;;       ldp     x25, x26, [sp], #0x10
;;       ldp     x27, x28, [sp], #0x10
;;       ldp     x29, x30, [sp], #0x10
;;       ret
;;  190: stur    x2, [sp, #0x10]
;;  194: mov     w3, #0
;;  198: bl      #0x3b8
;;  19c: ldur    x2, [sp, #0x10]
;;  1a0: bl      #0x3f0
;;  1a4: .byte   0x1f, 0xc1, 0x00, 0x00
;;  1a8: .byte   0x1f, 0xc1, 0x00, 0x00
;;  1ac: .byte   0x1f, 0xc1, 0x00, 0x00