1;;! target = "aarch64" 2;;! test = "compile" 3;;! flags = ["-Wexceptions=yes", "-Wgc=yes", "-Dguest-debug=yes"] 4 5(module 6 (tag $t (param i32)) 7 (import "" "host" (func)) 8 (func (export "main") 9 (block $b (result i32) 10 (try_table (catch $t $b) 11 (drop (i32.const 42)) 12 (throw $t (i32.const 42))) 13 i32.const 0) 14 (call 0) 15 (drop))) 16;; wasm[0]::function[1]: 17;; stp x29, x30, [sp, #-0x10]! 18;; mov x29, sp 19;; stp x27, x28, [sp, #-0x10]! 20;; stp x25, x26, [sp, #-0x10]! 21;; stp x23, x24, [sp, #-0x10]! 22;; stp x21, x22, [sp, #-0x10]! 23;; stp x19, x20, [sp, #-0x10]! 24;; stp d14, d15, [sp, #-0x10]! 25;; stp d12, d13, [sp, #-0x10]! 26;; stp d10, d11, [sp, #-0x10]! 27;; stp d8, d9, [sp, #-0x10]! 28;; sub sp, sp, #0x30 29;; ldr x0, [x2, #8] 30;; ldr x0, [x0, #0x18] 31;; mov x1, sp 32;; cmp x1, x0 33;; b.lo #0x194 34;; 44: stur x2, [sp] 35;; mov x0, x2 36;; stur x2, [sp, #0x10] 37;; nop 38;; ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 0x35, slot at FP-0xc0, locals , stack 39;; ╰─╼ breakpoint patch: wasm PC 0x35, patch bytes [38, 1, 0, 148] 40;; ldur x0, [sp, #0x10] 41;; nop 42;; ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 0x37, slot at FP-0xc0, locals , stack 43;; ╰─╼ breakpoint patch: wasm PC 0x37, patch bytes [36, 1, 0, 148] 44;; ldur x0, [sp, #0x10] 45;; nop 46;; ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 0x3d, slot at FP-0xc0, locals , stack 47;; ╰─╼ breakpoint patch: wasm PC 0x3d, patch bytes [34, 1, 0, 148] 48;; mov w19, #0x2a 49;; stur w19, [sp, #8] 50;; nop 51;; ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 0x3f, slot at FP-0xc0, locals , stack I32 @ slot+0x8 52;; ╰─╼ breakpoint patch: wasm PC 0x3f, patch bytes [31, 1, 0, 148] 53;; nop 54;; ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 0x40, slot at FP-0xc0, locals , stack 55;; ╰─╼ breakpoint patch: wasm PC 0x40, patch bytes [30, 1, 0, 148] 56;; stur w19, [sp, #8] 57;; nop 58;; ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 0x42, slot at FP-0xc0, locals , stack I32 @ slot+0x8 59;; ╰─╼ breakpoint patch: wasm PC 0x42, patch bytes [28, 1, 0, 148] 60;; ldur x2, [sp, #0x10] 61;; bl #0x448 62;; 84: mov x20, x2 63;; mov w3, #0x4000000 64;; mov w4, #2 65;; mov w5, #0x28 66;; mov w6, #8 67;; ldur x2, [sp, #0x10] 68;; bl #0x368 69;; a0: ldur x0, [sp, #0x10] 70;; ldr x5, [x0, #8] 71;; ldr x6, [x5, #0x20] 72;; stur x5, [sp, #0x20] 73;; add x3, x6, #0x20 74;; str w19, [x3, w2, uxtw] 75;; add x3, x6, #0x18 76;; mov x0, x20 77;; str w0, [x3, w2, uxtw] 78;; mov w3, #0 79;; add x4, x6, #0x1c 80;; stur x6, [sp, #0x18] 81;; str w3, [x4, w2, uxtw] 82;; mov x3, x2 83;; ldur x2, [sp, #0x10] 84;; bl #0x480 85;; ├─╼ exception frame offset: SP = FP - 0xc0 86;; ╰─╼ exception handler: tag=0, context at [SP+0x10], handler=0xf8 87;; e0: mov w3, #9 88;; ldur x2, [sp, #0x10] 89;; bl #0x3dc 90;; ec: ldur x2, [sp, #0x10] 91;; bl #0x414 92;; ╰─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 0x42, slot at FP-0xc0, locals , stack I32 @ slot+0x8 93;; f4: .byte 0x1f, 0xc1, 0x00, 0x00 94;; mov x2, x0 95;; mov w3, w2 96;; mov x4, #0x28 97;; adds x3, x3, x4 98;; cset x4, hs 99;; uxtb w4, w4 100;; cbnz x4, #0x1ac 101;; 114: ldur x5, [sp, #0x20] 102;; ldr x1, [x5, #0x28] 103;; cmp x3, x1 104;; cset x1, hi 105;; uxtb w1, w1 106;; cbnz x1, #0x1b0 107;; 12c: ldur x6, [sp, #0x18] 108;; add x0, x6, #0x20 109;; ldr w0, [x0, w2, uxtw] 110;; stur w0, [sp, #8] 111;; ldur x0, [sp, #0x10] 112;; nop 113;; ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 0x48, slot at FP-0xc0, locals , stack I32 @ slot+0x8 114;; ╰─╼ breakpoint patch: wasm PC 0x48, patch bytes [234, 0, 0, 148] 115;; ldur x1, [sp, #0x10] 116;; ldr x0, [x1, #0x30] 117;; ldr x2, [x1, #0x40] 118;; ldur x3, [sp, #0x10] 119;; blr x0 120;; ╰─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 0x4a, slot at FP-0xc0, locals , stack I32 @ slot+0x8 121;; 158: ldur x0, [sp, #0x10] 122;; nop 123;; ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 0x4a, slot at FP-0xc0, locals , stack I32 @ slot+0x8 124;; ╰─╼ breakpoint patch: wasm PC 0x4a, patch bytes [227, 0, 0, 148] 125;; nop 126;; ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 0x4b, slot at FP-0xc0, locals , stack 127;; ╰─╼ breakpoint patch: wasm PC 0x4b, patch bytes [226, 0, 0, 148] 128;; add sp, sp, #0x30 129;; ldp d8, d9, [sp], #0x10 130;; ldp d10, d11, [sp], #0x10 131;; ldp d12, d13, [sp], #0x10 132;; ldp d14, d15, [sp], #0x10 133;; ldp x19, x20, [sp], #0x10 134;; ldp x21, x22, [sp], #0x10 135;; ldp x23, x24, [sp], #0x10 136;; ldp x25, x26, [sp], #0x10 137;; ldp x27, x28, [sp], #0x10 138;; ldp x29, x30, [sp], #0x10 139;; ret 140;; 194: stur x2, [sp, #0x10] 141;; 198: mov w3, #0 142;; 19c: bl #0x3dc 143;; 1a0: ldur x2, [sp, #0x10] 144;; 1a4: bl #0x414 145;; ╰─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 0x34, slot at FP-0xc0, locals , stack 146;; 1a8: .byte 0x1f, 0xc1, 0x00, 0x00 147;; 1ac: .byte 0x1f, 0xc1, 0x00, 0x00 148;; 1b0: .byte 0x1f, 0xc1, 0x00, 0x00 149