.file "slp_transfer.c" .text .type slp_switch, @function slp_switch: .LFB11: pushq %rbp .LCFI0: movq %rsp, %rbp .LCFI1: pushq %r15 .LCFI2: pushq %r14 .LCFI3: pushq %r13 .LCFI4: pushq %r12 .LCFI5: pushq %rbx .LCFI6: subq $40, %rsp .LCFI7: #APP movq %rsp, -64(%rbp) #NO_APP movq _cstprev(%rip), %rax testq %rax, %rax je .L2 movq _prev(%rip), %rdx movq _cstprev(%rip), %rdi movq -64(%rbp), %rsi call slp_cstack_new testq %rax, %rax jne .L4 movl $-1, -68(%rbp) jmp .L6 .L4: movq _cstprev(%rip), %rax movq (%rax), %rdi call slp_cstack_save movq %rax, -48(%rbp) jmp .L7 .L2: movq _cst(%rip), %rax movq 72(%rax), %rax movq %rax, %rdx movq -64(%rbp), %rax movq %rdx, %rcx subq %rax, %rcx movq %rcx, %rax movq %rax, -48(%rbp) .L7: movq _cst(%rip), %rax testq %rax, %rax jne .L8 movl $0, -68(%rbp) jmp .L6 .L8: movq -48(%rbp), %rdx movq _cst(%rip), %rax movq 16(%rax), %rax salq $3, %rax movq %rdx, %rcx subq %rax, %rcx movq %rcx, %rax #APP addq %rax, %rsp addq %rax, %rbp #NO_APP movq _cst(%rip), %rax testq %rax, %rax je .L10 movq _cst(%rip), %rdi call slp_cstack_restore .L10: movl $0, -68(%rbp) .L6: movl -68(%rbp), %eax addq $40, %rsp popq %rbx popq %r12 popq %r13 popq %r14 popq %r15 leave ret .LFE11: .size slp_switch, .-slp_switch .type climb_stack_and_transfer, @function climb_stack_and_transfer: .LFB12: pushq %rbp .LCFI8: movq %rsp, %rbp .LCFI9: subq $96, %rsp .LCFI10: movq %rdi, -56(%rbp) movq %rsi, -64(%rbp) movq %rdx, -72(%rbp) movq %fs:40, %rax movq %rax, -8(%rbp) xorl %eax, %eax movq _PyThreadState_Current(%rip), %rax movq %rax, -32(%rbp) leaq -40(%rbp), %rdx movq -32(%rbp), %rax movq 176(%rax), %rax movq %rdx, %rcx subq %rax, %rcx movq %rcx, %rax sarq $3, %rax movq %rax, -24(%rbp) cmpq $0, -24(%rbp) jle .L14 movq -24(%rbp), %rax salq $3, %rax addq $15, %rax addq $15, %rax shrq $4, %rax salq $4, %rax subq %rax, %rsp movq %rsp, -88(%rbp) movq -88(%rbp), %rax addq $15, %rax shrq $4, %rax salq $4, %rax movq %rax, -88(%rbp) movq -88(%rbp), %rax movq %rax, -16(%rbp) cmpq $0, -16(%rbp) jne .L14 movl $-1, -76(%rbp) jmp .L17 .L14: movq -72(%rbp), %rdx movq -64(%rbp), %rsi movq -56(%rbp), %rdi call slp_transfer movl %eax, -76(%rbp) .L17: movl -76(%rbp), %eax movq -8(%rbp), %rdx xorq %fs:40, %rdx je .L19 call __stack_chk_fail .L19: leave ret .LFE12: .size climb_stack_and_transfer, .-climb_stack_and_transfer .section .rodata .type __PRETTY_FUNCTION__.9170, @object .size __PRETTY_FUNCTION__.9170, 13 __PRETTY_FUNCTION__.9170: .string "slp_transfer" .LC0: .string "Stackless/core/slp_transfer.c" .LC1: .string "!slp_try_stackless" .LC2: .string "bad thread state in transfer" .align 8 .LC3: .string "bad stack reference in transfer" .text .globl slp_transfer .type slp_transfer, @function slp_transfer: .LFB13: pushq %rbp .LCFI11: movq %rsp, %rbp .LCFI12: subq $48, %rsp .LCFI13: movq %rdi, -24(%rbp) movq %rsi, -32(%rbp) movq %rdx, -40(%rbp) movq _PyThreadState_Current(%rip), %rax movq %rax, -8(%rbp) movl slp_try_stackless(%rip), %eax testl %eax, %eax je .L21 movl $__PRETTY_FUNCTION__.9170, %ecx movl $119, %edx movl $.LC0, %esi movl $.LC1, %edi call __assert_fail .L21: leaq -8(%rbp), %rax movq -8(%rbp), %rdx movq 176(%rdx), %rdx cmpq %rdx, %rax jbe .L23 movq -40(%rbp), %rdx movq -32(%rbp), %rsi movq -24(%rbp), %rdi call climb_stack_and_transfer movl %eax, -44(%rbp) jmp .L25 .L23: cmpq $0, -32(%rbp) je .L26 movq -32(%rbp), %rax movq 16(%rax), %rax testq %rax, %rax jne .L28 .L26: movq -8(%rbp), %rax movq 152(%rax), %rax movq %rax, -32(%rbp) .L28: cmpq $0, -32(%rbp) je .L29 movq -32(%rbp), %rax movq 64(%rax), %rdx movq -8(%rbp), %rax cmpq %rax, %rdx je .L31 movq PyExc_SystemError(%rip), %rdi movl $.LC2, %esi call PyErr_SetString movl $-1, -44(%rbp) jmp .L25 .L31: movq -8(%rbp), %rax movq 176(%rax), %rdx movq -32(%rbp), %rax movq 72(%rax), %rax cmpq %rax, %rdx je .L33 movq PyExc_SystemError(%rip), %rdi movl $.LC3, %esi call PyErr_SetString movl $-1, -44(%rbp) jmp .L25 .L33: movq -8(%rbp), %rax movq -32(%rbp), %rdx movq 40(%rdx), %rdx movq %rdx, 168(%rax) cmpq $0, -24(%rbp) je .L29 movq -24(%rbp), %rax movq (%rax), %rax cmpq -32(%rbp), %rax jne .L29 movq -32(%rbp), %rax movq (%rax), %rax cmpq $1, %rax jne .L29 movq $0, -32(%rbp) .L29: movq -24(%rbp), %rax movq %rax, _cstprev(%rip) movq -32(%rbp), %rax movq %rax, _cst(%rip) movq -40(%rbp), %rax movq %rax, _prev(%rip) call slp_switch movl %eax, -44(%rbp) .L25: movl -44(%rbp), %eax leave ret .LFE13: .size slp_transfer, .-slp_transfer .local _cstprev .comm _cstprev,8,8 .local _cst .comm _cst,8,8 .local _prev .comm _prev,8,8 .section .eh_frame,"a",@progbits .Lframe1: .long .LECIE1-.LSCIE1 .LSCIE1: .long 0x0 .byte 0x1 .string "zR" .uleb128 0x1 .sleb128 -8 .byte 0x10 .uleb128 0x1 .byte 0x3 .byte 0xc .uleb128 0x7 .uleb128 0x8 .byte 0x90 .uleb128 0x1 .align 8 .LECIE1: .LSFDE1: .long .LEFDE1-.LASFDE1 .LASFDE1: .long .LASFDE1-.Lframe1 .long .LFB11 .long .LFE11-.LFB11 .uleb128 0x0 .byte 0x4 .long .LCFI0-.LFB11 .byte 0xe .uleb128 0x10 .byte 0x86 .uleb128 0x2 .byte 0x4 .long .LCFI1-.LCFI0 .byte 0xd .uleb128 0x6 .byte 0x4 .long .LCFI7-.LCFI1 .byte 0x83 .uleb128 0x7 .byte 0x8c .uleb128 0x6 .byte 0x8d .uleb128 0x5 .byte 0x8e .uleb128 0x4 .byte 0x8f .uleb128 0x3 .align 8 .LEFDE1: .LSFDE3: .long .LEFDE3-.LASFDE3 .LASFDE3: .long .LASFDE3-.Lframe1 .long .LFB12 .long .LFE12-.LFB12 .uleb128 0x0 .byte 0x4 .long .LCFI8-.LFB12 .byte 0xe .uleb128 0x10 .byte 0x86 .uleb128 0x2 .byte 0x4 .long .LCFI9-.LCFI8 .byte 0xd .uleb128 0x6 .align 8 .LEFDE3: .LSFDE5: .long .LEFDE5-.LASFDE5 .LASFDE5: .long .LASFDE5-.Lframe1 .long .LFB13 .long .LFE13-.LFB13 .uleb128 0x0 .byte 0x4 .long .LCFI11-.LFB13 .byte 0xe .uleb128 0x10 .byte 0x86 .uleb128 0x2 .byte 0x4 .long .LCFI12-.LCFI11 .byte 0xd .uleb128 0x6 .align 8 .LEFDE5: .ident "GCC: (GNU) 4.1.2 (Ubuntu 4.1.2-0ubuntu4)" .section .note.GNU-stack,"",@progbits