folly: Range: outline exception throwing
Summary: Here's some godbolt: https://godbolt.org/g/9K36Km advanceNoInline(S): movq %rdi, %rax sarq $32, %rax cmpl %eax, %edi jg .L20 leal 1(%rdi), %eax ret .L20: subq $8, %rsp call S::outOfRange() [clone .isra.0] vs previous implementation advance(S): movq %rdi, %rdx sarq $32, %rdx cmpl %edx, %edi jg .L14 leal 1(%rdi), %eax ret .L14: pushq %rbp pushq %rbx movl $16, %edi subq $8, %rsp call __cxa_allocate_exception movl $.LC0, %esi movq %rax, %rdi movq %rax, %rbx call std::out_of_range::out_of_range(char const*) movl std::out_of_range::~out_of_range(), %edx movl typeinfo for std::out_of_range, %esi movq %rbx, %rdi call __cxa_throw movq %rax, %rbp movq %rbx, %rdi call __cxa_free_exception movq %rbp, %rdi call _Unwind_Resume Reviewed By: ot Differential Revision: D3940968 fbshipit-source-id: b47a41e7cdd863fcef099ff3c21860b2979ee6e8
Showing
Please register or sign in to comment