You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
`failureBreakpoint()` currently has optimizations disabled which produces some significant assembly for what's supposed to be a no-op. Enabling optimizations and marking its magic value as `@exclusivity(unchecked)` reduces it to a single indirect store. This is probably not the hottest hot path in the library (since it will only be called when a test is failing) but the whole point of the function is to be a no-op, and without this change it's _quite_ noisy and includes a whole function call into the Swift runtime (see the `bl` instructions below.) ### arm64 #### Before ```asm _$s7Testing17failureBreakpointyyF: 0000000000000660 sub sp, sp, #0x30 0000000000000664 stp x29, x30, [sp, #0x20] 0000000000000668 add x29, sp, #0x20 000000000000066c adrp x8, 0 ; 0x0 0000000000000670 add x0, x8, #0x0 0000000000000674 add x1, sp, #0x8 0000000000000678 mov x2, #0x21 000000000000067c mov x3, #0x0 0000000000000680 bl 0x680 0000000000000684 mov x8, #0x1 0000000000000688 adrp x9, 0 ; 0x0 000000000000068c add x9, x9, #0x0 0000000000000690 str x8, [x9] 0000000000000694 add x0, sp, #0x8 0000000000000698 bl 0x698 000000000000069c ldp x29, x30, [sp, #0x20] 00000000000006a0 add sp, sp, #0x30 00000000000006a4 ret ``` #### After ```asm _$s7Testing17failureBreakpointyyF: 0000000000000660 adrp x8, 0 ; 0x0 0000000000000664 str xzr, [x8] 0000000000000668 ret ``` Note this disassembly comes from the intermediate .o file generated for the relevant source file, so addresses aren't available yet. Neither function actually attempts to write to 0x0. ### Checklist: - [x] Code and documentation should follow the style of the [Style Guide](https://github.com/apple/swift-testing/blob/main/Documentation/StyleGuide.md). - [x] If public symbols are renamed or modified, DocC references should be updated.
0 commit comments