Created
April 14, 2013 20:16
-
-
Save schmir/5384037 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.file "greenlet.c" | |
.text | |
.p2align 4,,15 | |
.type green_is_gc, @function | |
green_is_gc: | |
.LFB148: | |
.cfi_startproc | |
cmpq $-1, 24(%rdi) | |
je .L3 | |
xorl %eax, %eax | |
cmpq $0, 16(%rdi) | |
sete %al | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L3: | |
movl $1, %eax | |
ret | |
.cfi_endproc | |
.LFE148: | |
.size green_is_gc, .-green_is_gc | |
.p2align 4,,15 | |
.type green_clear, @function | |
green_clear: | |
.LFB149: | |
.cfi_startproc | |
pushq %rbx | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 3, -16 | |
movq %rdi, %rbx | |
movq 56(%rdi), %rdi | |
testq %rdi, %rdi | |
je .L7 | |
movq $0, 56(%rbx) | |
subq $1, (%rdi) | |
je .L25 | |
.L7: | |
movq 64(%rbx), %rdi | |
testq %rdi, %rdi | |
je .L10 | |
movq $0, 64(%rbx) | |
subq $1, (%rdi) | |
je .L26 | |
.L10: | |
movq 96(%rbx), %rdi | |
testq %rdi, %rdi | |
je .L13 | |
movq $0, 96(%rbx) | |
subq $1, (%rdi) | |
je .L27 | |
.L13: | |
movq 104(%rbx), %rdi | |
testq %rdi, %rdi | |
je .L16 | |
movq $0, 104(%rbx) | |
subq $1, (%rdi) | |
je .L28 | |
.L16: | |
movq 112(%rbx), %rdi | |
testq %rdi, %rdi | |
je .L19 | |
movq $0, 112(%rbx) | |
subq $1, (%rdi) | |
je .L29 | |
.L19: | |
movq 120(%rbx), %rdi | |
testq %rdi, %rdi | |
je .L22 | |
movq $0, 120(%rbx) | |
subq $1, (%rdi) | |
jne .L22 | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
.L22: | |
xorl %eax, %eax | |
popq %rbx | |
.cfi_remember_state | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L29: | |
.cfi_restore_state | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
.p2align 4,,4 | |
jmp .L19 | |
.p2align 4,,10 | |
.p2align 3 | |
.L28: | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
.p2align 4,,6 | |
jmp .L16 | |
.p2align 4,,10 | |
.p2align 3 | |
.L27: | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
.p2align 4,,6 | |
jmp .L13 | |
.p2align 4,,10 | |
.p2align 3 | |
.L26: | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
.p2align 4,,6 | |
jmp .L10 | |
.p2align 4,,10 | |
.p2align 3 | |
.L25: | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
.p2align 4,,6 | |
jmp .L7 | |
.cfi_endproc | |
.LFE149: | |
.size green_clear, .-green_clear | |
.p2align 4,,15 | |
.type single_result, @function | |
single_result: | |
.LFB151: | |
.cfi_startproc | |
testq %rdi, %rdi | |
je .L32 | |
movq 8(%rdi), %rdx | |
movq %rdi, %rax | |
testb $4, 171(%rdx) | |
je .L39 | |
cmpq $1, 16(%rdi) | |
je .L40 | |
.L39: | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L40: | |
movq 24(%rdi), %rcx | |
addq $1, (%rcx) | |
movq %rcx, %rax | |
movq (%rdi), %rsi | |
subq $1, %rsi | |
testq %rsi, %rsi | |
movq %rsi, (%rdi) | |
jne .L39 | |
subq $24, %rsp | |
.cfi_def_cfa_offset 32 | |
movq %rcx, 8(%rsp) | |
call *48(%rdx) | |
movq 8(%rsp), %rax | |
addq $24, %rsp | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L32: | |
xorl %eax, %eax | |
ret | |
.cfi_endproc | |
.LFE151: | |
.size single_result, .-single_result | |
.p2align 4,,15 | |
.type green_bool, @function | |
green_bool: | |
.LFB155: | |
.cfi_startproc | |
xorl %eax, %eax | |
cmpq $0, 16(%rdi) | |
setne %al | |
ret | |
.cfi_endproc | |
.LFE155: | |
.size green_bool, .-green_bool | |
.p2align 4,,15 | |
.type green_getdead, @function | |
green_getdead: | |
.LFB158: | |
.cfi_startproc | |
cmpq $0, 16(%rdi) | |
je .L43 | |
.L45: | |
movq _Py_ZeroStruct@GOTPCREL(%rip), %rax | |
addq $1, (%rax) | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L43: | |
cmpq $0, 24(%rdi) | |
je .L45 | |
movq _Py_TrueStruct@GOTPCREL(%rip), %rax | |
addq $1, (%rax) | |
ret | |
.cfi_endproc | |
.LFE158: | |
.size green_getdead, .-green_getdead | |
.p2align 4,,15 | |
.type green_getparent, @function | |
green_getparent: | |
.LFB161: | |
.cfi_startproc | |
movq 56(%rdi), %rax | |
testq %rax, %rax | |
je .L48 | |
addq $1, (%rax) | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L48: | |
movq _Py_NoneStruct@GOTPCREL(%rip), %rax | |
addq $1, (%rax) | |
ret | |
.cfi_endproc | |
.LFE161: | |
.size green_getparent, .-green_getparent | |
.p2align 4,,15 | |
.type green_getframe, @function | |
green_getframe: | |
.LFB163: | |
.cfi_startproc | |
movq 72(%rdi), %rax | |
testq %rax, %rax | |
je .L51 | |
addq $1, (%rax) | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L51: | |
movq _Py_NoneStruct@GOTPCREL(%rip), %rax | |
addq $1, (%rax) | |
ret | |
.cfi_endproc | |
.LFE163: | |
.size green_getframe, .-green_getframe | |
.section .rodata.str1.1,"aMS",@progbits,1 | |
.LC0: | |
.string "can't delete attribute" | |
.LC1: | |
.string "parent must be a greenlet" | |
.LC2: | |
.string "cyclic parent chain" | |
.section .rodata.str1.8,"aMS",@progbits,1 | |
.align 8 | |
.LC3: | |
.string "parent must not be garbage collected" | |
.align 8 | |
.LC4: | |
.string "parent cannot be on a different thread" | |
.text | |
.p2align 4,,15 | |
.type green_setparent, @function | |
green_setparent: | |
.LFB162: | |
.cfi_startproc | |
pushq %rbp | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 6, -16 | |
movq %rsi, %rbp | |
pushq %rbx | |
.cfi_def_cfa_offset 24 | |
.cfi_offset 3, -24 | |
subq $8, %rsp | |
.cfi_def_cfa_offset 32 | |
testq %rsi, %rsi | |
je .L69 | |
movq %rdi, %rbx | |
movq 8(%rsi), %rdi | |
movq PyGreenlet_Type@GOTPCREL(%rip), %rsi | |
cmpq %rsi, %rdi | |
je .L55 | |
call PyType_IsSubtype@PLT | |
testl %eax, %eax | |
je .L70 | |
.L55: | |
cmpq %rbx, %rbp | |
movq %rbp, %rax | |
jne .L58 | |
.p2align 4,,3 | |
jmp .L56 | |
.p2align 4,,10 | |
.p2align 3 | |
.L72: | |
movq 64(%rax), %rdx | |
movq 56(%rax), %rax | |
testq %rax, %rax | |
je .L71 | |
.L60: | |
cmpq %rax, %rbx | |
je .L56 | |
.L58: | |
cmpq $0, 16(%rax) | |
jne .L72 | |
movq 56(%rax), %rax | |
xorl %edx, %edx | |
testq %rax, %rax | |
jne .L60 | |
.p2align 4,,10 | |
.p2align 3 | |
.L71: | |
testq %rdx, %rdx | |
je .L73 | |
cmpq $0, 24(%rbx) | |
je .L62 | |
cmpq 64(%rbx), %rdx | |
jne .L74 | |
.L62: | |
movq 56(%rbx), %rdi | |
movq %rbp, 56(%rbx) | |
addq $1, 0(%rbp) | |
testq %rdi, %rdi | |
je .L68 | |
subq $1, (%rdi) | |
je .L75 | |
.L68: | |
xorl %eax, %eax | |
.L54: | |
addq $8, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 24 | |
popq %rbx | |
.cfi_def_cfa_offset 16 | |
popq %rbp | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L56: | |
.cfi_restore_state | |
movq PyExc_ValueError@GOTPCREL(%rip), %rax | |
leaq .LC2(%rip), %rsi | |
movq (%rax), %rdi | |
call PyErr_SetString@PLT | |
addq $8, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 24 | |
movl $-1, %eax | |
popq %rbx | |
.cfi_def_cfa_offset 16 | |
popq %rbp | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L75: | |
.cfi_restore_state | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
jmp .L68 | |
.L74: | |
movq PyExc_ValueError@GOTPCREL(%rip), %rax | |
leaq .LC4(%rip), %rsi | |
movq (%rax), %rdi | |
call PyErr_SetString@PLT | |
movl $-1, %eax | |
jmp .L54 | |
.L70: | |
movq PyExc_TypeError@GOTPCREL(%rip), %rax | |
leaq .LC1(%rip), %rsi | |
movq (%rax), %rdi | |
call PyErr_SetString@PLT | |
movl $-1, %eax | |
jmp .L54 | |
.L69: | |
movq PyExc_AttributeError@GOTPCREL(%rip), %rax | |
leaq .LC0(%rip), %rsi | |
movq (%rax), %rdi | |
call PyErr_SetString@PLT | |
movl $-1, %eax | |
jmp .L54 | |
.L73: | |
movq PyExc_ValueError@GOTPCREL(%rip), %rax | |
leaq .LC3(%rip), %rsi | |
movq (%rax), %rdi | |
call PyErr_SetString@PLT | |
movl $-1, %eax | |
jmp .L54 | |
.cfi_endproc | |
.LFE162: | |
.size green_setparent, .-green_setparent | |
.p2align 4,,15 | |
.type green_getdict, @function | |
green_getdict: | |
.LFB156: | |
.cfi_startproc | |
movq 120(%rdi), %rax | |
testq %rax, %rax | |
je .L84 | |
addq $1, (%rax) | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L84: | |
subq $24, %rsp | |
.cfi_def_cfa_offset 32 | |
movq %rdi, 8(%rsp) | |
call PyDict_New@PLT | |
movq 8(%rsp), %rdi | |
testq %rax, %rax | |
movq %rax, 120(%rdi) | |
je .L78 | |
addq $1, (%rax) | |
.L78: | |
addq $24, %rsp | |
.cfi_def_cfa_offset 8 | |
ret | |
.cfi_endproc | |
.LFE156: | |
.size green_getdict, .-green_getdict | |
.section .rodata.str1.1 | |
.LC5: | |
.string "cannot serialize '%s' object" | |
.text | |
.p2align 4,,15 | |
.type green_getstate, @function | |
green_getstate: | |
.LFB164: | |
.cfi_startproc | |
subq $8, %rsp | |
.cfi_def_cfa_offset 16 | |
movq 8(%rdi), %rax | |
leaq .LC5(%rip), %rsi | |
movq 24(%rax), %rdx | |
movq PyExc_TypeError@GOTPCREL(%rip), %rax | |
movq (%rax), %rdi | |
xorl %eax, %eax | |
call PyErr_Format@PLT | |
xorl %eax, %eax | |
addq $8, %rsp | |
.cfi_def_cfa_offset 8 | |
ret | |
.cfi_endproc | |
.LFE164: | |
.size green_getstate, .-green_getstate | |
.p2align 4,,15 | |
.type g_handle_exit, @function | |
g_handle_exit: | |
.LFB142: | |
.cfi_startproc | |
pushq %rbx | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 3, -16 | |
movq %rdi, %rbx | |
subq $48, %rsp | |
.cfi_def_cfa_offset 64 | |
testq %rdi, %rdi | |
je .L100 | |
.L88: | |
movl $1, %edi | |
call PyTuple_New@PLT | |
testq %rax, %rax | |
je .L96 | |
movq %rbx, 24(%rax) | |
.L90: | |
addq $48, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 16 | |
popq %rbx | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L96: | |
.cfi_restore_state | |
movq (%rbx), %rcx | |
leaq -1(%rcx), %rdx | |
testq %rdx, %rdx | |
movq %rdx, (%rbx) | |
je .L101 | |
.L97: | |
addq $48, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 16 | |
xorl %eax, %eax | |
popq %rbx | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L101: | |
.cfi_restore_state | |
movq 8(%rbx), %rdx | |
movq %rax, 8(%rsp) | |
movq %rbx, %rdi | |
call *48(%rdx) | |
movq 8(%rsp), %rax | |
jmp .L90 | |
.p2align 4,,10 | |
.p2align 3 | |
.L100: | |
movq PyExc_GreenletExit(%rip), %rdi | |
call PyErr_ExceptionMatches@PLT | |
testl %eax, %eax | |
je .L97 | |
leaq 40(%rsp), %rdx | |
leaq 32(%rsp), %rsi | |
leaq 24(%rsp), %rdi | |
call PyErr_Fetch@PLT | |
movq 32(%rsp), %rbx | |
testq %rbx, %rbx | |
je .L102 | |
.L91: | |
movq 24(%rsp), %rdi | |
subq $1, (%rdi) | |
je .L103 | |
.L92: | |
movq 40(%rsp), %rdi | |
testq %rdi, %rdi | |
je .L88 | |
subq $1, (%rdi) | |
jne .L88 | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
.p2align 4,,2 | |
jmp .L88 | |
.L103: | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
.p2align 4,,6 | |
jmp .L92 | |
.L102: | |
movq _Py_NoneStruct@GOTPCREL(%rip), %rbx | |
addq $1, (%rbx) | |
movq %rbx, 32(%rsp) | |
jmp .L91 | |
.cfi_endproc | |
.LFE142: | |
.size g_handle_exit, .-g_handle_exit | |
.p2align 4,,15 | |
.type slp_restore_state, @function | |
slp_restore_state: | |
.LFB136: | |
.cfi_startproc | |
pushq %rbp | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 6, -16 | |
pushq %rbx | |
.cfi_def_cfa_offset 24 | |
.cfi_offset 3, -24 | |
subq $8, %rsp | |
.cfi_def_cfa_offset 32 | |
movq ts_target(%rip), %rbp | |
movq ts_current(%rip), %rbx | |
movq 40(%rbp), %rdx | |
testq %rdx, %rdx | |
jne .L120 | |
cmpq $0, 16(%rbx) | |
je .L121 | |
.L106: | |
movq 24(%rbp), %rax | |
jmp .L119 | |
.p2align 4,,10 | |
.p2align 3 | |
.L122: | |
movq 48(%rbx), %rbx | |
testq %rbx, %rbx | |
je .L107 | |
.L119: | |
cmpq %rax, 24(%rbx) | |
jbe .L122 | |
.L107: | |
movq %rbx, 48(%rbp) | |
addq $8, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 24 | |
popq %rbx | |
.cfi_def_cfa_offset 16 | |
popq %rbp | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L120: | |
.cfi_restore_state | |
movq 16(%rbp), %rdi | |
movq 32(%rbp), %rsi | |
call memcpy@PLT | |
movq 32(%rbp), %rdi | |
call PyMem_Free@PLT | |
cmpq $0, 16(%rbx) | |
movq $0, 32(%rbp) | |
movq $0, 40(%rbp) | |
jne .L106 | |
.L121: | |
movq 48(%rbx), %rbx | |
testq %rbx, %rbx | |
jne .L106 | |
jmp .L107 | |
.cfi_endproc | |
.LFE136: | |
.size slp_restore_state, .-slp_restore_state | |
.section .rodata.str1.1 | |
.LC6: | |
.string "O(OO)" | |
.text | |
.p2align 4,,15 | |
.type g_calltrace, @function | |
g_calltrace: | |
.LFB140: | |
.cfi_startproc | |
pushq %r14 | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 14, -16 | |
movq %rcx, %r14 | |
pushq %r13 | |
.cfi_def_cfa_offset 24 | |
.cfi_offset 13, -24 | |
movq %rdx, %r13 | |
pushq %r12 | |
.cfi_def_cfa_offset 32 | |
.cfi_offset 12, -32 | |
movq %rsi, %r12 | |
pushq %rbp | |
.cfi_def_cfa_offset 40 | |
.cfi_offset 6, -40 | |
movq %rdi, %rbp | |
pushq %rbx | |
.cfi_def_cfa_offset 48 | |
.cfi_offset 3, -48 | |
subq $32, %rsp | |
.cfi_def_cfa_offset 80 | |
leaq 24(%rsp), %rdx | |
leaq 16(%rsp), %rsi | |
leaq 8(%rsp), %rdi | |
call PyErr_Fetch@PLT | |
movq _PyThreadState_Current@GOTPCREL(%rip), %rax | |
leaq .LC6(%rip), %rsi | |
movq %r13, %rcx | |
movq %r12, %rdx | |
movq %r14, %r8 | |
movq %rbp, %rdi | |
movq (%rax), %rbx | |
xorl %eax, %eax | |
addl $1, 28(%rbx) | |
movl $0, 32(%rbx) | |
call PyObject_CallFunction@PLT | |
movl 28(%rbx), %ecx | |
leal -1(%rcx), %edx | |
xorl %ecx, %ecx | |
testl %edx, %edx | |
movl %edx, 28(%rbx) | |
jle .L145 | |
.L124: | |
testq %rax, %rax | |
movl %ecx, 32(%rbx) | |
je .L146 | |
movq (%rax), %rsi | |
leaq -1(%rsi), %rdx | |
testq %rdx, %rdx | |
movq %rdx, (%rax) | |
je .L147 | |
.L138: | |
movq 24(%rsp), %rdx | |
movq 16(%rsp), %rsi | |
movq 8(%rsp), %rdi | |
call PyErr_Restore@PLT | |
xorl %eax, %eax | |
.L136: | |
addq $32, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 48 | |
popq %rbx | |
.cfi_def_cfa_offset 40 | |
popq %rbp | |
.cfi_def_cfa_offset 32 | |
popq %r12 | |
.cfi_def_cfa_offset 24 | |
popq %r13 | |
.cfi_def_cfa_offset 16 | |
popq %r14 | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L147: | |
.cfi_restore_state | |
movq 8(%rax), %rdx | |
movq %rax, %rdi | |
call *48(%rdx) | |
jmp .L138 | |
.p2align 4,,10 | |
.p2align 3 | |
.L145: | |
cmpq $0, 48(%rbx) | |
je .L125 | |
.L126: | |
movl $1, %ecx | |
jmp .L124 | |
.p2align 4,,10 | |
.p2align 3 | |
.L146: | |
movq 120(%rbx), %rdi | |
movq ts_tracekey(%rip), %rsi | |
call PyDict_GetItem@PLT | |
testq %rax, %rax | |
je .L128 | |
movq 120(%rbx), %rdi | |
movq ts_tracekey(%rip), %rsi | |
call PyDict_DelItem@PLT | |
.L128: | |
movq 8(%rsp), %rdi | |
testq %rdi, %rdi | |
je .L130 | |
subq $1, (%rdi) | |
je .L148 | |
.L130: | |
movq 16(%rsp), %rdi | |
testq %rdi, %rdi | |
je .L133 | |
subq $1, (%rdi) | |
je .L149 | |
.L133: | |
movq 24(%rsp), %rdi | |
testq %rdi, %rdi | |
je .L144 | |
subq $1, (%rdi) | |
je .L150 | |
.L144: | |
movl $-1, %eax | |
jmp .L136 | |
.p2align 4,,10 | |
.p2align 3 | |
.L150: | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
jmp .L144 | |
.p2align 4,,10 | |
.p2align 3 | |
.L149: | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
.p2align 4,,6 | |
jmp .L133 | |
.p2align 4,,10 | |
.p2align 3 | |
.L148: | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
.p2align 4,,6 | |
jmp .L130 | |
.p2align 4,,10 | |
.p2align 3 | |
.L125: | |
cmpq $0, 40(%rbx) | |
jne .L126 | |
.p2align 4,,6 | |
jmp .L124 | |
.cfi_endproc | |
.LFE140: | |
.size g_calltrace, .-g_calltrace | |
.p2align 4,,15 | |
.type green_traverse, @function | |
green_traverse: | |
.LFB147: | |
.cfi_startproc | |
pushq %r12 | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 12, -16 | |
movq %rdx, %r12 | |
pushq %rbp | |
.cfi_def_cfa_offset 24 | |
.cfi_offset 6, -24 | |
movq %rsi, %rbp | |
pushq %rbx | |
.cfi_def_cfa_offset 32 | |
.cfi_offset 3, -32 | |
movq %rdi, %rbx | |
movq 56(%rdi), %rdi | |
testq %rdi, %rdi | |
je .L156 | |
movq %rdx, %rsi | |
call *%rbp | |
testl %eax, %eax | |
jne .L155 | |
.L156: | |
movq 64(%rbx), %rdi | |
testq %rdi, %rdi | |
je .L154 | |
movq %r12, %rsi | |
call *%rbp | |
testl %eax, %eax | |
jne .L155 | |
.L154: | |
movq 96(%rbx), %rdi | |
testq %rdi, %rdi | |
je .L158 | |
movq %r12, %rsi | |
call *%rbp | |
testl %eax, %eax | |
jne .L155 | |
.L158: | |
movq 104(%rbx), %rdi | |
testq %rdi, %rdi | |
je .L160 | |
movq %r12, %rsi | |
call *%rbp | |
testl %eax, %eax | |
jne .L155 | |
.L160: | |
movq 112(%rbx), %rdi | |
testq %rdi, %rdi | |
je .L162 | |
movq %r12, %rsi | |
call *%rbp | |
testl %eax, %eax | |
jne .L155 | |
.L162: | |
movq 120(%rbx), %rdi | |
xorl %eax, %eax | |
testq %rdi, %rdi | |
je .L155 | |
popq %rbx | |
.cfi_remember_state | |
.cfi_def_cfa_offset 24 | |
movq %rbp, %rax | |
movq %r12, %rsi | |
popq %rbp | |
.cfi_def_cfa_offset 16 | |
popq %r12 | |
.cfi_def_cfa_offset 8 | |
jmp *%rax | |
.p2align 4,,10 | |
.p2align 3 | |
.L155: | |
.cfi_restore_state | |
popq %rbx | |
.cfi_def_cfa_offset 24 | |
popq %rbp | |
.cfi_def_cfa_offset 16 | |
popq %r12 | |
.cfi_def_cfa_offset 8 | |
ret | |
.cfi_endproc | |
.LFE147: | |
.size green_traverse, .-green_traverse | |
.p2align 4,,15 | |
.type green_create_main, @function | |
green_create_main: | |
.LFB132: | |
.cfi_startproc | |
pushq %rbx | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 3, -16 | |
call PyThreadState_GetDict@PLT | |
testq %rax, %rax | |
movq %rax, %rbx | |
je .L177 | |
movq PyGreenlet_Type@GOTPCREL(%rip), %rdi | |
xorl %esi, %esi | |
call PyType_GenericAlloc@PLT | |
testq %rax, %rax | |
je .L175 | |
movq %rbx, 64(%rax) | |
movq $1, 16(%rax) | |
movq $-1, 24(%rax) | |
addq $1, (%rbx) | |
movq %rax, %rbx | |
.L173: | |
movq %rbx, %rax | |
popq %rbx | |
.cfi_remember_state | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L177: | |
.cfi_restore_state | |
call PyErr_Occurred@PLT | |
testq %rax, %rax | |
jne .L173 | |
.p2align 4,,5 | |
call PyErr_NoMemory@PLT | |
.p2align 4,,5 | |
jmp .L173 | |
.p2align 4,,10 | |
.p2align 3 | |
.L175: | |
xorl %ebx, %ebx | |
jmp .L173 | |
.cfi_endproc | |
.LFE132: | |
.size green_create_main, .-green_create_main | |
.section .rodata.str1.1 | |
.LC7: | |
.string "greenlet.c" | |
.section .rodata.str1.8 | |
.align 8 | |
.LC8: | |
.string "current->run_info == tstate->dict" | |
.text | |
.p2align 4,,15 | |
.type green_updatecurrent, @function | |
green_updatecurrent: | |
.LFB133: | |
.cfi_startproc | |
pushq %r15 | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 15, -16 | |
pushq %r14 | |
.cfi_def_cfa_offset 24 | |
.cfi_offset 14, -24 | |
pushq %r13 | |
.cfi_def_cfa_offset 32 | |
.cfi_offset 13, -32 | |
pushq %r12 | |
.cfi_def_cfa_offset 40 | |
.cfi_offset 12, -40 | |
pushq %rbp | |
.cfi_def_cfa_offset 48 | |
.cfi_offset 6, -48 | |
pushq %rbx | |
.cfi_def_cfa_offset 56 | |
.cfi_offset 3, -56 | |
subq $56, %rsp | |
.cfi_def_cfa_offset 112 | |
leaq 24(%rsp), %rax | |
leaq 40(%rsp), %r15 | |
leaq 32(%rsp), %r14 | |
movq %rax, 8(%rsp) | |
.L179: | |
.L206: | |
movq 8(%rsp), %rdi | |
movq %r15, %rdx | |
movq %r14, %rsi | |
call PyErr_Fetch@PLT | |
movq _PyThreadState_Current@GOTPCREL(%rip), %rax | |
movq (%rax), %rbp | |
movq 120(%rbp), %rdi | |
testq %rdi, %rdi | |
je .L180 | |
movq ts_curkey(%rip), %rsi | |
call PyDict_GetItem@PLT | |
testq %rax, %rax | |
movq %rax, %rbx | |
je .L180 | |
addq $1, (%rax) | |
movq 120(%rbp), %rdi | |
movq ts_curkey(%rip), %rsi | |
call PyDict_DelItem@PLT | |
.L181: | |
movq 120(%rbp), %rax | |
cmpq %rax, 64(%rbx) | |
je .L204 | |
jmp .L236 | |
.p2align 4,,10 | |
.p2align 3 | |
.L201: | |
movq 120(%rbp), %rdi | |
movq ts_delkey(%rip), %rsi | |
call PyDict_GetItem@PLT | |
testq %rax, %rax | |
je .L202 | |
xorl %ecx, %ecx | |
movl $2147483647, %edx | |
xorl %esi, %esi | |
movq %rax, %rdi | |
call PyList_SetSlice@PLT | |
.L202: | |
movq ts_current(%rip), %rax | |
cmpq %rbx, %rax | |
je .L203 | |
movq 120(%rbp), %rdi | |
movq ts_curkey(%rip), %rsi | |
call PyDict_DelItem@PLT | |
.L204: | |
movq ts_current(%rip), %r13 | |
addq $1, (%rbx) | |
movq ts_curkey(%rip), %rsi | |
movq %rbx, ts_current(%rip) | |
movq 64(%r13), %rdi | |
movq %r13, %rdx | |
call PyDict_SetItem@PLT | |
movl %eax, %r12d | |
movq 0(%r13), %rax | |
subq $1, %rax | |
testl %r12d, %r12d | |
movq %rax, 0(%r13) | |
jne .L229 | |
testq %rax, %rax | |
jne .L201 | |
movq 8(%r13), %rax | |
movq %r13, %rdi | |
call *48(%rax) | |
jmp .L201 | |
.p2align 4,,10 | |
.p2align 3 | |
.L229: | |
testq %rax, %rax | |
je .L230 | |
.L193: | |
subq $1, (%rbx) | |
.p2align 4,,4 | |
je .L231 | |
.L194: | |
movq 24(%rsp), %rdi | |
testq %rdi, %rdi | |
je .L196 | |
subq $1, (%rdi) | |
je .L232 | |
.L196: | |
movq 32(%rsp), %rdi | |
testq %rdi, %rdi | |
je .L199 | |
subq $1, (%rdi) | |
je .L233 | |
.L199: | |
movq 40(%rsp), %rdi | |
testq %rdi, %rdi | |
je .L220 | |
subq $1, (%rdi) | |
je .L234 | |
.L220: | |
movl $-1, %r12d | |
.L189: | |
addq $56, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 56 | |
movl %r12d, %eax | |
popq %rbx | |
.cfi_def_cfa_offset 48 | |
popq %rbp | |
.cfi_def_cfa_offset 40 | |
popq %r12 | |
.cfi_def_cfa_offset 32 | |
popq %r13 | |
.cfi_def_cfa_offset 24 | |
popq %r14 | |
.cfi_def_cfa_offset 16 | |
popq %r15 | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L203: | |
.cfi_restore_state | |
subq $1, (%rbx) | |
je .L235 | |
.L205: | |
movq 40(%rsp), %rdx | |
movq 32(%rsp), %rsi | |
movq 24(%rsp), %rdi | |
call PyErr_Restore@PLT | |
movq ts_current(%rip), %rax | |
movq 120(%rbp), %rcx | |
cmpq %rcx, 64(%rax) | |
jne .L206 | |
jmp .L189 | |
.p2align 4,,10 | |
.p2align 3 | |
.L180: | |
call green_create_main | |
testq %rax, %rax | |
movq %rax, %rbx | |
.p2align 4,,2 | |
jne .L181 | |
.p2align 4,,2 | |
jmp .L194 | |
.p2align 4,,10 | |
.p2align 3 | |
.L234: | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
.p2align 4,,6 | |
jmp .L220 | |
.p2align 4,,10 | |
.p2align 3 | |
.L231: | |
movq 8(%rbx), %rax | |
movq %rbx, %rdi | |
call *48(%rax) | |
.p2align 4,,3 | |
jmp .L194 | |
.p2align 4,,10 | |
.p2align 3 | |
.L230: | |
movq 8(%r13), %rax | |
movq %r13, %rdi | |
call *48(%rax) | |
.p2align 4,,3 | |
jmp .L193 | |
.p2align 4,,10 | |
.p2align 3 | |
.L235: | |
movq 8(%rbx), %rax | |
movq %rbx, %rdi | |
call *48(%rax) | |
.p2align 4,,3 | |
jmp .L205 | |
.p2align 4,,10 | |
.p2align 3 | |
.L233: | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
.p2align 4,,6 | |
jmp .L199 | |
.p2align 4,,10 | |
.p2align 3 | |
.L232: | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
.p2align 4,,6 | |
jmp .L196 | |
.L236: | |
leaq __PRETTY_FUNCTION__.10850(%rip), %rcx | |
leaq .LC7(%rip), %rsi | |
leaq .LC8(%rip), %rdi | |
movl $219, %edx | |
call __assert_fail@PLT | |
.cfi_endproc | |
.LFE133: | |
.size green_updatecurrent, .-green_updatecurrent | |
.p2align 4,,15 | |
.type green_new, @function | |
green_new: | |
.LFB144: | |
.cfi_startproc | |
movq _PyThreadState_Current@GOTPCREL(%rip), %rax | |
pushq %rbx | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 3, -16 | |
movq %rdi, %rbx | |
movq ts_current(%rip), %rdx | |
movq (%rax), %rax | |
movq 120(%rax), %rax | |
cmpq %rax, 64(%rdx) | |
je .L241 | |
call green_updatecurrent | |
testl %eax, %eax | |
jne .L244 | |
.L241: | |
xorl %esi, %esi | |
movq %rbx, %rdi | |
call *304(%rbx) | |
testq %rax, %rax | |
je .L240 | |
movq ts_current(%rip), %rdx | |
addq $1, (%rdx) | |
movq ts_current(%rip), %rdx | |
movq %rdx, 56(%rax) | |
.L240: | |
popq %rbx | |
.cfi_remember_state | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L244: | |
.cfi_restore_state | |
xorl %eax, %eax | |
popq %rbx | |
.cfi_def_cfa_offset 8 | |
ret | |
.cfi_endproc | |
.LFE144: | |
.size green_new, .-green_new | |
.p2align 4,,15 | |
.type PyGreenlet_GetCurrent, @function | |
PyGreenlet_GetCurrent: | |
.LFB165: | |
.cfi_startproc | |
subq $8, %rsp | |
.cfi_def_cfa_offset 16 | |
movq _PyThreadState_Current@GOTPCREL(%rip), %rax | |
movq ts_current(%rip), %rdx | |
movq (%rax), %rax | |
movq 120(%rax), %rax | |
cmpq %rax, 64(%rdx) | |
je .L248 | |
call green_updatecurrent | |
testl %eax, %eax | |
jne .L253 | |
.L248: | |
movq ts_current(%rip), %rax | |
addq $1, (%rax) | |
movq ts_current(%rip), %rax | |
.L247: | |
addq $8, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L253: | |
.cfi_restore_state | |
xorl %eax, %eax | |
jmp .L247 | |
.cfi_endproc | |
.LFE165: | |
.size PyGreenlet_GetCurrent, .-PyGreenlet_GetCurrent | |
.p2align 4,,15 | |
.type mod_gettrace, @function | |
mod_gettrace: | |
.LFB172: | |
.cfi_startproc | |
subq $8, %rsp | |
.cfi_def_cfa_offset 16 | |
movq _PyThreadState_Current@GOTPCREL(%rip), %rax | |
movq ts_current(%rip), %rdx | |
movq (%rax), %rax | |
movq 120(%rax), %rax | |
cmpq %rax, 64(%rdx) | |
je .L258 | |
call green_updatecurrent | |
testl %eax, %eax | |
jne .L262 | |
.L258: | |
movq ts_current(%rip), %rax | |
movq ts_tracekey(%rip), %rsi | |
movq 64(%rax), %rdi | |
call PyDict_GetItem@PLT | |
testq %rax, %rax | |
je .L263 | |
.L256: | |
addq $1, (%rax) | |
.L257: | |
addq $8, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L263: | |
.cfi_restore_state | |
movq _Py_NoneStruct@GOTPCREL(%rip), %rax | |
jmp .L256 | |
.p2align 4,,10 | |
.p2align 3 | |
.L262: | |
xorl %eax, %eax | |
jmp .L257 | |
.cfi_endproc | |
.LFE172: | |
.size mod_gettrace, .-mod_gettrace | |
.p2align 4,,15 | |
.type mod_getcurrent, @function | |
mod_getcurrent: | |
.LFB170: | |
.cfi_startproc | |
subq $8, %rsp | |
.cfi_def_cfa_offset 16 | |
movq _PyThreadState_Current@GOTPCREL(%rip), %rax | |
movq ts_current(%rip), %rdx | |
movq (%rax), %rax | |
movq 120(%rax), %rax | |
cmpq %rax, 64(%rdx) | |
je .L267 | |
call green_updatecurrent | |
testl %eax, %eax | |
jne .L272 | |
.L267: | |
movq ts_current(%rip), %rax | |
addq $1, (%rax) | |
movq ts_current(%rip), %rax | |
.L266: | |
addq $8, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L272: | |
.cfi_restore_state | |
xorl %eax, %eax | |
jmp .L266 | |
.cfi_endproc | |
.LFE170: | |
.size mod_getcurrent, .-mod_getcurrent | |
.section .rodata.str1.1 | |
.LC9: | |
.string "O" | |
.text | |
.p2align 4,,15 | |
.type mod_settrace, @function | |
mod_settrace: | |
.LFB171: | |
.cfi_startproc | |
pushq %rbp | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 6, -16 | |
movq %rsi, %rdi | |
leaq .LC9(%rip), %rsi | |
xorl %eax, %eax | |
pushq %rbx | |
.cfi_def_cfa_offset 24 | |
.cfi_offset 3, -24 | |
subq $24, %rsp | |
.cfi_def_cfa_offset 48 | |
leaq 8(%rsp), %rdx | |
call PyArg_ParseTuple@PLT | |
testl %eax, %eax | |
je .L288 | |
movq _PyThreadState_Current@GOTPCREL(%rip), %rax | |
movq ts_current(%rip), %rdx | |
movq (%rax), %rax | |
movq 120(%rax), %rax | |
cmpq %rax, 64(%rdx) | |
je .L280 | |
call green_updatecurrent | |
testl %eax, %eax | |
jne .L288 | |
.L280: | |
movq ts_current(%rip), %rbp | |
movq ts_tracekey(%rip), %rsi | |
movq 64(%rbp), %rdi | |
call PyDict_GetItem@PLT | |
testq %rax, %rax | |
movq %rax, %rbx | |
je .L289 | |
addq $1, (%rax) | |
movq 8(%rsp), %rdx | |
movq _Py_NoneStruct@GOTPCREL(%rip), %rax | |
cmpq %rax, %rdx | |
je .L290 | |
.L281: | |
movq 64(%rbp), %rdi | |
movq ts_tracekey(%rip), %rsi | |
call PyDict_SetItem@PLT | |
.L283: | |
testl %eax, %eax | |
js .L284 | |
movq %rbx, %rax | |
jmp .L285 | |
.p2align 4,,10 | |
.p2align 3 | |
.L284: | |
subq $1, (%rbx) | |
jne .L288 | |
movq 8(%rbx), %rax | |
movq %rbx, %rdi | |
call *48(%rax) | |
.p2align 4,,10 | |
.p2align 3 | |
.L288: | |
xorl %eax, %eax | |
.L285: | |
addq $24, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 24 | |
popq %rbx | |
.cfi_def_cfa_offset 16 | |
popq %rbp | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L290: | |
.cfi_restore_state | |
cmpq %rdx, %rbx | |
je .L285 | |
movq 64(%rbp), %rdi | |
movq ts_tracekey(%rip), %rsi | |
call PyDict_DelItem@PLT | |
jmp .L283 | |
.L289: | |
movq _Py_NoneStruct@GOTPCREL(%rip), %rax | |
movq 8(%rsp), %rdx | |
addq $1, (%rax) | |
cmpq %rax, %rdx | |
je .L285 | |
movq %rax, %rbx | |
jmp .L281 | |
.cfi_endproc | |
.LFE171: | |
.size mod_settrace, .-mod_settrace | |
.section .rodata.str1.8 | |
.align 8 | |
.LC10: | |
.string "run cannot be set after the start of the greenlet" | |
.text | |
.p2align 4,,15 | |
.type green_setrun, @function | |
green_setrun: | |
.LFB160: | |
.cfi_startproc | |
subq $8, %rsp | |
.cfi_def_cfa_offset 16 | |
cmpq $0, 24(%rdi) | |
jne .L302 | |
testq %rsi, %rsi | |
movq 64(%rdi), %rax | |
movq %rsi, 64(%rdi) | |
je .L294 | |
addq $1, (%rsi) | |
.L294: | |
testq %rax, %rax | |
je .L301 | |
movq (%rax), %rcx | |
leaq -1(%rcx), %rdx | |
testq %rdx, %rdx | |
movq %rdx, (%rax) | |
je .L303 | |
.L301: | |
xorl %eax, %eax | |
.L293: | |
addq $8, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L303: | |
.cfi_restore_state | |
movq 8(%rax), %rdx | |
movq %rax, %rdi | |
call *48(%rdx) | |
jmp .L301 | |
.p2align 4,,10 | |
.p2align 3 | |
.L302: | |
movq PyExc_AttributeError@GOTPCREL(%rip), %rax | |
leaq .LC10(%rip), %rsi | |
movq (%rax), %rdi | |
call PyErr_SetString@PLT | |
movl $-1, %eax | |
jmp .L293 | |
.cfi_endproc | |
.LFE160: | |
.size green_setrun, .-green_setrun | |
.section .rodata.str1.1 | |
.LC11: | |
.string "|OO:green" | |
.text | |
.p2align 4,,15 | |
.type green_init, @function | |
green_init: | |
.LFB145: | |
.cfi_startproc | |
pushq %rbx | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 3, -16 | |
leaq kwlist.10993(%rip), %rcx | |
movq %rdi, %rbx | |
movq %rsi, %rdi | |
movq %rdx, %rsi | |
leaq .LC11(%rip), %rdx | |
subq $16, %rsp | |
.cfi_def_cfa_offset 32 | |
xorl %eax, %eax | |
leaq 8(%rsp), %r9 | |
movq %rsp, %r8 | |
movq $0, (%rsp) | |
movq $0, 8(%rsp) | |
call PyArg_ParseTupleAndKeywords@PLT | |
testl %eax, %eax | |
je .L309 | |
movq (%rsp), %rsi | |
testq %rsi, %rsi | |
je .L310 | |
xorl %edx, %edx | |
movq %rbx, %rdi | |
call green_setrun | |
testl %eax, %eax | |
jne .L309 | |
.L310: | |
movq 8(%rsp), %rsi | |
xorl %eax, %eax | |
testq %rsi, %rsi | |
je .L306 | |
cmpq _Py_NoneStruct@GOTPCREL(%rip), %rsi | |
je .L306 | |
xorl %edx, %edx | |
movq %rbx, %rdi | |
call green_setparent | |
.L306: | |
addq $16, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 16 | |
popq %rbx | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L309: | |
.cfi_restore_state | |
movl $-1, %eax | |
jmp .L306 | |
.cfi_endproc | |
.LFE145: | |
.size green_init, .-green_init | |
.section .rodata.str1.1 | |
.LC12: | |
.string "run" | |
.text | |
.p2align 4,,15 | |
.type green_getrun, @function | |
green_getrun: | |
.LFB159: | |
.cfi_startproc | |
subq $8, %rsp | |
.cfi_def_cfa_offset 16 | |
cmpq $0, 24(%rdi) | |
jne .L314 | |
movq 64(%rdi), %rax | |
testq %rax, %rax | |
je .L314 | |
addq $1, (%rax) | |
addq $8, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L314: | |
.cfi_restore_state | |
movq PyExc_AttributeError@GOTPCREL(%rip), %rax | |
leaq .LC12(%rip), %rsi | |
movq (%rax), %rdi | |
call PyErr_SetString@PLT | |
xorl %eax, %eax | |
addq $8, %rsp | |
.cfi_def_cfa_offset 8 | |
ret | |
.cfi_endproc | |
.LFE159: | |
.size green_getrun, .-green_getrun | |
.section .rodata.str1.1 | |
.LC13: | |
.string "__dict__ may not be deleted" | |
.LC14: | |
.string "__dict__ must be a dictionary" | |
.text | |
.p2align 4,,15 | |
.type green_setdict, @function | |
green_setdict: | |
.LFB157: | |
.cfi_startproc | |
subq $8, %rsp | |
.cfi_def_cfa_offset 16 | |
testq %rsi, %rsi | |
je .L326 | |
movq 8(%rsi), %rax | |
testb $32, 171(%rax) | |
je .L327 | |
movq 120(%rdi), %rax | |
addq $1, (%rsi) | |
movq %rsi, 120(%rdi) | |
testq %rax, %rax | |
je .L325 | |
movq (%rax), %rcx | |
leaq -1(%rcx), %rdx | |
testq %rdx, %rdx | |
movq %rdx, (%rax) | |
je .L328 | |
.L325: | |
xorl %eax, %eax | |
.L320: | |
addq $8, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L328: | |
.cfi_restore_state | |
movq 8(%rax), %rdx | |
movq %rax, %rdi | |
call *48(%rdx) | |
jmp .L325 | |
.p2align 4,,10 | |
.p2align 3 | |
.L327: | |
movq PyExc_TypeError@GOTPCREL(%rip), %rax | |
leaq .LC14(%rip), %rsi | |
movq (%rax), %rdi | |
call PyErr_SetString@PLT | |
movl $-1, %eax | |
jmp .L320 | |
.L326: | |
movq PyExc_TypeError@GOTPCREL(%rip), %rax | |
leaq .LC13(%rip), %rsi | |
movq (%rax), %rdi | |
call PyErr_SetString@PLT | |
movl $-1, %eax | |
jmp .L320 | |
.cfi_endproc | |
.LFE157: | |
.size green_setdict, .-green_setdict | |
.p2align 4,,15 | |
.type PyGreenlet_SetParent, @function | |
PyGreenlet_SetParent: | |
.LFB166: | |
.cfi_startproc | |
pushq %rbp | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 6, -16 | |
movq %rsi, %rbp | |
pushq %rbx | |
.cfi_def_cfa_offset 24 | |
.cfi_offset 3, -24 | |
movq %rdi, %rbx | |
subq $8, %rsp | |
.cfi_def_cfa_offset 32 | |
movq 8(%rdi), %rdi | |
movq PyGreenlet_Type@GOTPCREL(%rip), %rsi | |
cmpq %rsi, %rdi | |
je .L330 | |
call PyType_IsSubtype@PLT | |
testl %eax, %eax | |
je .L333 | |
.L330: | |
addq $8, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 24 | |
movq %rbx, %rdi | |
movq %rbp, %rsi | |
popq %rbx | |
.cfi_def_cfa_offset 16 | |
popq %rbp | |
.cfi_def_cfa_offset 8 | |
xorl %edx, %edx | |
jmp green_setparent | |
.p2align 4,,10 | |
.p2align 3 | |
.L333: | |
.cfi_restore_state | |
movq PyExc_TypeError@GOTPCREL(%rip), %rax | |
leaq .LC1(%rip), %rsi | |
movq (%rax), %rdi | |
call PyErr_SetString@PLT | |
addq $8, %rsp | |
.cfi_def_cfa_offset 24 | |
movl $-1, %eax | |
popq %rbx | |
.cfi_def_cfa_offset 16 | |
popq %rbp | |
.cfi_def_cfa_offset 8 | |
ret | |
.cfi_endproc | |
.LFE166: | |
.size PyGreenlet_SetParent, .-PyGreenlet_SetParent | |
.p2align 4,,15 | |
.type PyGreenlet_New, @function | |
PyGreenlet_New: | |
.LFB167: | |
.cfi_startproc | |
pushq %r12 | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 12, -16 | |
movq %rsi, %r12 | |
xorl %esi, %esi | |
pushq %rbp | |
.cfi_def_cfa_offset 24 | |
.cfi_offset 6, -24 | |
movq %rdi, %rbp | |
movq PyGreenlet_Type@GOTPCREL(%rip), %rdi | |
pushq %rbx | |
.cfi_def_cfa_offset 32 | |
.cfi_offset 3, -32 | |
call PyType_GenericAlloc@PLT | |
testq %rax, %rax | |
movq %rax, %rbx | |
je .L339 | |
testq %rbp, %rbp | |
je .L337 | |
addq $1, 0(%rbp) | |
movq %rbp, 64(%rax) | |
.L337: | |
testq %r12, %r12 | |
je .L344 | |
.L338: | |
movq %r12, %rsi | |
movq %rbx, %rdi | |
call PyGreenlet_SetParent | |
movq %rbx, %rax | |
.L336: | |
popq %rbx | |
.cfi_remember_state | |
.cfi_def_cfa_offset 24 | |
popq %rbp | |
.cfi_def_cfa_offset 16 | |
popq %r12 | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L344: | |
.cfi_restore_state | |
call PyGreenlet_GetCurrent | |
movq %rax, %r12 | |
jmp .L338 | |
.p2align 4,,10 | |
.p2align 3 | |
.L339: | |
xorl %eax, %eax | |
jmp .L336 | |
.cfi_endproc | |
.LFE167: | |
.size PyGreenlet_New, .-PyGreenlet_New | |
.section .rodata.str1.1 | |
.LC15: | |
.string "g->stack_start != ((void *)0)" | |
.text | |
.p2align 4,,15 | |
.type g_save, @function | |
g_save: | |
.LFB135: | |
.cfi_startproc | |
pushq %r14 | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 14, -16 | |
pushq %r13 | |
.cfi_def_cfa_offset 24 | |
.cfi_offset 13, -24 | |
pushq %r12 | |
.cfi_def_cfa_offset 32 | |
.cfi_offset 12, -32 | |
pushq %rbp | |
.cfi_def_cfa_offset 40 | |
.cfi_offset 6, -40 | |
movq %rdi, %rbp | |
pushq %rbx | |
.cfi_def_cfa_offset 48 | |
.cfi_offset 3, -48 | |
movq 16(%rdi), %rax | |
movq %rsi, %rbx | |
movq 40(%rdi), %r12 | |
subq %rax, %rbx | |
testq %rax, %rax | |
je .L351 | |
xorl %r13d, %r13d | |
cmpq %rbx, %r12 | |
jl .L352 | |
.L347: | |
popq %rbx | |
.cfi_remember_state | |
.cfi_def_cfa_offset 40 | |
popq %rbp | |
.cfi_def_cfa_offset 32 | |
popq %r12 | |
.cfi_def_cfa_offset 24 | |
movl %r13d, %eax | |
popq %r13 | |
.cfi_def_cfa_offset 16 | |
popq %r14 | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L352: | |
.cfi_restore_state | |
movq 32(%rdi), %rdi | |
movq %rbx, %rsi | |
call PyMem_Realloc@PLT | |
testq %rax, %rax | |
movq %rax, %r14 | |
je .L353 | |
movq %r12, %rsi | |
addq 16(%rbp), %rsi | |
leaq (%rax,%r12), %rdi | |
movq %rbx, %rdx | |
subq %r12, %rdx | |
call memcpy@PLT | |
movq %r14, 32(%rbp) | |
movq %rbx, 40(%rbp) | |
movl %r13d, %eax | |
popq %rbx | |
.cfi_remember_state | |
.cfi_def_cfa_offset 40 | |
popq %rbp | |
.cfi_def_cfa_offset 32 | |
popq %r12 | |
.cfi_def_cfa_offset 24 | |
popq %r13 | |
.cfi_def_cfa_offset 16 | |
popq %r14 | |
.cfi_def_cfa_offset 8 | |
ret | |
.L353: | |
.cfi_restore_state | |
call PyErr_NoMemory@PLT | |
movl $-1, %r13d | |
jmp .L347 | |
.L351: | |
leaq __PRETTY_FUNCTION__.10872(%rip), %rcx | |
leaq .LC7(%rip), %rsi | |
leaq .LC15(%rip), %rdi | |
movl $341, %edx | |
call __assert_fail@PLT | |
.cfi_endproc | |
.LFE135: | |
.size g_save, .-g_save | |
.section .rodata.str1.1 | |
.LC16: | |
.string "owner->stack_saved == 0" | |
.text | |
.p2align 4,,15 | |
.type slp_save_state, @function | |
slp_save_state: | |
.LFB137: | |
.cfi_startproc | |
pushq %rbp | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 6, -16 | |
pushq %rbx | |
.cfi_def_cfa_offset 24 | |
.cfi_offset 3, -24 | |
subq $8, %rsp | |
.cfi_def_cfa_offset 32 | |
movq ts_target(%rip), %rax | |
movq ts_current(%rip), %rbx | |
cmpq $0, 40(%rbx) | |
movq 24(%rax), %rbp | |
jne .L366 | |
cmpq $0, 16(%rbx) | |
je .L365 | |
movq %rdi, 16(%rbx) | |
jmp .L364 | |
.p2align 4,,10 | |
.p2align 3 | |
.L360: | |
movq %rbx, %rdi | |
call g_save | |
testl %eax, %eax | |
jne .L361 | |
.L365: | |
movq 48(%rbx), %rbx | |
.L364: | |
movq 24(%rbx), %rsi | |
cmpq %rsi, %rbp | |
ja .L360 | |
movq ts_target(%rip), %rdx | |
xorl %eax, %eax | |
cmpq %rdx, %rbx | |
je .L359 | |
movq %rbp, %rsi | |
movq %rbx, %rdi | |
call g_save | |
testl %eax, %eax | |
setne %al | |
movzbl %al, %eax | |
negl %eax | |
.L359: | |
addq $8, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 24 | |
popq %rbx | |
.cfi_def_cfa_offset 16 | |
popq %rbp | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L361: | |
.cfi_restore_state | |
addq $8, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 24 | |
movl $-1, %eax | |
popq %rbx | |
.cfi_def_cfa_offset 16 | |
popq %rbp | |
.cfi_def_cfa_offset 8 | |
ret | |
.L366: | |
.cfi_restore_state | |
leaq __PRETTY_FUNCTION__.10887(%rip), %rcx | |
leaq .LC7(%rip), %rsi | |
leaq .LC16(%rip), %rdi | |
movl $379, %edx | |
call __assert_fail@PLT | |
.cfi_endproc | |
.LFE137: | |
.size slp_save_state, .-slp_save_state | |
.p2align 4,,15 | |
.type slp_switch, @function | |
slp_switch: | |
.LFB138: | |
.cfi_startproc | |
pushq %r15 | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 15, -16 | |
pushq %r14 | |
.cfi_def_cfa_offset 24 | |
.cfi_offset 14, -24 | |
pushq %r13 | |
.cfi_def_cfa_offset 32 | |
.cfi_offset 13, -32 | |
pushq %r12 | |
.cfi_def_cfa_offset 40 | |
.cfi_offset 12, -40 | |
pushq %rbp | |
.cfi_def_cfa_offset 48 | |
.cfi_offset 6, -48 | |
pushq %rbx | |
.cfi_def_cfa_offset 56 | |
.cfi_offset 3, -56 | |
subq $40, %rsp | |
.cfi_def_cfa_offset 96 | |
#APP | |
# 46 "platform/switch_amd64_unix.h" 1 | |
fstcw 10(%rsp) | |
# 0 "" 2 | |
# 47 "platform/switch_amd64_unix.h" 1 | |
stmxcsr 12(%rsp) | |
# 0 "" 2 | |
# 48 "platform/switch_amd64_unix.h" 1 | |
movq %rbp, 16(%rsp) | |
# 0 "" 2 | |
# 49 "platform/switch_amd64_unix.h" 1 | |
movq %rbx, 24(%rsp) | |
# 0 "" 2 | |
# 50 "platform/switch_amd64_unix.h" 1 | |
movq %rsp, %rbp | |
# 0 "" 2 | |
#NO_APP | |
movq %rbp, %rdi | |
call slp_save_state | |
testl %eax, %eax | |
movl %eax, %ebx | |
jne .L369 | |
movq ts_target(%rip), %rax | |
cmpq $0, 16(%rax) | |
je .L370 | |
movq ts_target(%rip), %rax | |
movq 16(%rax), %rax | |
subq %rbp, %rax | |
#APP | |
# 53 "platform/switch_amd64_unix.h" 1 | |
addq %rax, %rsp | |
addq %rax, %rbp | |
# 0 "" 2 | |
#NO_APP | |
call slp_restore_state | |
#APP | |
# 61 "platform/switch_amd64_unix.h" 1 | |
movq 24(%rsp), %rbx | |
# 0 "" 2 | |
# 62 "platform/switch_amd64_unix.h" 1 | |
movq 16(%rsp), %rbp | |
# 0 "" 2 | |
# 63 "platform/switch_amd64_unix.h" 1 | |
ldmxcsr 12(%rsp) | |
# 0 "" 2 | |
# 64 "platform/switch_amd64_unix.h" 1 | |
fldcw 10(%rsp) | |
# 0 "" 2 | |
#NO_APP | |
.L368: | |
addq $40, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 56 | |
movl %ebx, %eax | |
popq %rbx | |
.cfi_def_cfa_offset 48 | |
popq %rbp | |
.cfi_def_cfa_offset 40 | |
popq %r12 | |
.cfi_def_cfa_offset 32 | |
popq %r13 | |
.cfi_def_cfa_offset 24 | |
popq %r14 | |
.cfi_def_cfa_offset 16 | |
popq %r15 | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L370: | |
.cfi_restore_state | |
movl $1, %ebx | |
jmp .L368 | |
.p2align 4,,10 | |
.p2align 3 | |
.L369: | |
movl $-1, %ebx | |
jmp .L368 | |
.cfi_endproc | |
.LFE138: | |
.size slp_switch, .-slp_switch | |
.section .rodata.str1.1 | |
.LC17: | |
.string "ts_origin == ((void *)0)" | |
.text | |
.p2align 4,,15 | |
.type g_switchstack, @function | |
g_switchstack: | |
.LFB139: | |
.cfi_startproc | |
pushq %rbx | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 3, -16 | |
movq _PyThreadState_Current@GOTPCREL(%rip), %rbx | |
movq ts_current(%rip), %rax | |
movq (%rbx), %rdx | |
movl 24(%rdx), %ecx | |
movl %ecx, 80(%rax) | |
movq 16(%rdx), %rcx | |
movq %rcx, 72(%rax) | |
movq 96(%rdx), %rcx | |
movq %rcx, 96(%rax) | |
movq 104(%rdx), %rcx | |
movq 112(%rdx), %rdx | |
movq %rcx, 104(%rax) | |
movq %rdx, 112(%rax) | |
call slp_switch | |
testl %eax, %eax | |
js .L379 | |
movq ts_target(%rip), %rdx | |
movq (%rbx), %rcx | |
movq ts_current(%rip), %rdi | |
movl 80(%rdx), %esi | |
movl %esi, 24(%rcx) | |
movq 72(%rdx), %rsi | |
movq %rsi, 16(%rcx) | |
movq 96(%rdx), %rsi | |
movq $0, 72(%rdx) | |
movq %rsi, 96(%rcx) | |
movq 104(%rdx), %rsi | |
movq $0, 96(%rdx) | |
movq %rsi, 104(%rcx) | |
movq 112(%rdx), %rsi | |
movq $0, 104(%rdx) | |
movq %rsi, 112(%rcx) | |
movq ts_origin(%rip), %rcx | |
movq $0, 112(%rdx) | |
testq %rcx, %rcx | |
jne .L380 | |
addq $1, (%rdx) | |
movq %rdx, ts_current(%rip) | |
movq %rdi, ts_origin(%rip) | |
.L378: | |
movq $0, ts_target(%rip) | |
popq %rbx | |
.cfi_remember_state | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L379: | |
.cfi_restore_state | |
movq ts_current(%rip), %rdx | |
movq $0, 72(%rdx) | |
movq $0, 96(%rdx) | |
movq $0, 104(%rdx) | |
movq $0, 112(%rdx) | |
movq ts_origin(%rip), %rdx | |
testq %rdx, %rdx | |
je .L378 | |
leaq __PRETTY_FUNCTION__.10907(%rip), %rcx | |
leaq .LC7(%rip), %rsi | |
leaq .LC17(%rip), %rdi | |
movl $481, %edx | |
call __assert_fail@PLT | |
.L380: | |
leaq __PRETTY_FUNCTION__.10907(%rip), %rcx | |
leaq .LC7(%rip), %rsi | |
leaq .LC17(%rip), %rdi | |
movl $498, %edx | |
call __assert_fail@PLT | |
.cfi_endproc | |
.LFE139: | |
.size g_switchstack, .-g_switchstack | |
.section .rodata.str1.8 | |
.align 8 | |
.LC18: | |
.string "cannot switch to a different thread" | |
.align 8 | |
.LC19: | |
.string "cannot switch to a garbage collected greenlet" | |
.text | |
.p2align 4,,15 | |
.type g_switch, @function | |
g_switch: | |
.LFB141: | |
.cfi_startproc | |
pushq %r14 | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 14, -16 | |
pushq %r13 | |
.cfi_def_cfa_offset 24 | |
.cfi_offset 13, -24 | |
pushq %r12 | |
.cfi_def_cfa_offset 32 | |
.cfi_offset 12, -32 | |
movq %rsi, %r12 | |
pushq %rbp | |
.cfi_def_cfa_offset 40 | |
.cfi_offset 6, -40 | |
movq %rdx, %rbp | |
pushq %rbx | |
.cfi_def_cfa_offset 48 | |
.cfi_offset 3, -48 | |
movq %rdi, %rbx | |
subq $32, %rsp | |
.cfi_def_cfa_offset 80 | |
movq _PyThreadState_Current@GOTPCREL(%rip), %rax | |
movq ts_current(%rip), %rdx | |
movq (%rax), %rax | |
movq 120(%rax), %rax | |
cmpq %rax, 64(%rdx) | |
je .L382 | |
call green_updatecurrent | |
testl %eax, %eax | |
je .L382 | |
testq %r12, %r12 | |
.p2align 4,,3 | |
je .L384 | |
subq $1, (%r12) | |
je .L453 | |
.L384: | |
testq %rbp, %rbp | |
je .L414 | |
subq $1, 0(%rbp) | |
je .L454 | |
.L414: | |
xorl %eax, %eax | |
.L444: | |
addq $32, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 48 | |
popq %rbx | |
.cfi_def_cfa_offset 40 | |
popq %rbp | |
.cfi_def_cfa_offset 32 | |
popq %r12 | |
.cfi_def_cfa_offset 24 | |
popq %r13 | |
.cfi_def_cfa_offset 16 | |
popq %r14 | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L382: | |
.cfi_restore_state | |
movq %rbx, %rax | |
jmp .L389 | |
.p2align 4,,10 | |
.p2align 3 | |
.L391: | |
movq 56(%rax), %rax | |
testq %rax, %rax | |
je .L429 | |
.L389: | |
cmpq $0, 24(%rax) | |
je .L391 | |
movq 64(%rax), %r13 | |
testq %r13, %r13 | |
je .L390 | |
movq ts_current(%rip), %rax | |
cmpq %r13, 64(%rax) | |
jne .L390 | |
testq %rbx, %rbx | |
movq %r12, ts_passaround_args(%rip) | |
movq %rbp, ts_passaround_kwargs(%rip) | |
je .L400 | |
cmpq $0, 16(%rbx) | |
leaq 24(%rsp), %rbp | |
je .L403 | |
jmp .L401 | |
.p2align 4,,10 | |
.p2align 3 | |
.L405: | |
movq 56(%rbx), %rbx | |
testq %rbx, %rbx | |
je .L400 | |
.L407: | |
cmpq $0, 16(%rbx) | |
jne .L401 | |
.L403: | |
cmpq $0, 24(%rbx) | |
jne .L405 | |
movq %rbp, %rdi | |
movq %rbx, ts_target(%rip) | |
call g_initialstub | |
cmpl $1, %eax | |
je .L407 | |
.L404: | |
testl %eax, %eax | |
movq ts_passaround_args(%rip), %rbp | |
movq $0, ts_passaround_args(%rip) | |
movq ts_passaround_kwargs(%rip), %rbx | |
movq $0, ts_passaround_kwargs(%rip) | |
jns .L408 | |
movq ts_origin(%rip), %rax | |
testq %rax, %rax | |
jne .L455 | |
testq %rbx, %rbx | |
je .L411 | |
subq $1, (%rbx) | |
je .L456 | |
.L411: | |
testq %rbp, %rbp | |
je .L414 | |
subq $1, 0(%rbp) | |
jne .L414 | |
movq 8(%rbp), %rax | |
movq %rbp, %rdi | |
call *48(%rax) | |
jmp .L414 | |
.p2align 4,,10 | |
.p2align 3 | |
.L400: | |
movq ts_passaround_args(%rip), %rbp | |
movq $0, ts_passaround_args(%rip) | |
movq ts_passaround_kwargs(%rip), %rbx | |
movq $0, ts_passaround_kwargs(%rip) | |
.L408: | |
movq ts_origin(%rip), %r13 | |
movq $0, ts_origin(%rip) | |
movq ts_current(%rip), %r14 | |
movq ts_tracekey(%rip), %rsi | |
movq 64(%r14), %rdi | |
call PyDict_GetItem@PLT | |
testq %rax, %rax | |
movq %rax, %r12 | |
je .L415 | |
addq $1, (%rax) | |
testq %rbp, %rbp | |
je .L416 | |
movq ts_event_switch(%rip), %rsi | |
.L417: | |
movq %r14, %rcx | |
movq %r13, %rdx | |
movq %r12, %rdi | |
call g_calltrace | |
testl %eax, %eax | |
js .L457 | |
.L418: | |
subq $1, (%r12) | |
jne .L415 | |
movq 8(%r12), %rax | |
movq %r12, %rdi | |
call *48(%rax) | |
.L415: | |
subq $1, 0(%r13) | |
je .L458 | |
.L424: | |
testq %rbx, %rbx | |
je .L431 | |
movq %rbx, %rdi | |
call PyDict_Size@PLT | |
testq %rax, %rax | |
jne .L425 | |
movq (%rbx), %rax | |
leaq -1(%rax), %rdx | |
movq %rbp, %rax | |
testq %rdx, %rdx | |
movq %rdx, (%rbx) | |
jne .L444 | |
movq 8(%rbx), %rdx | |
movq %rbp, 8(%rsp) | |
movq %rbx, %rdi | |
call *48(%rdx) | |
movq 8(%rsp), %rax | |
jmp .L444 | |
.p2align 4,,10 | |
.p2align 3 | |
.L429: | |
xorl %r13d, %r13d | |
.L390: | |
testq %r12, %r12 | |
je .L394 | |
subq $1, (%r12) | |
je .L459 | |
.L394: | |
testq %rbp, %rbp | |
je .L397 | |
subq $1, 0(%rbp) | |
je .L460 | |
.L397: | |
leaq .LC19(%rip), %rax | |
leaq .LC18(%rip), %rsi | |
movq PyExc_GreenletError(%rip), %rdi | |
testq %r13, %r13 | |
cmove %rax, %rsi | |
call PyErr_SetString@PLT | |
addq $32, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 48 | |
xorl %eax, %eax | |
popq %rbx | |
.cfi_def_cfa_offset 40 | |
popq %rbp | |
.cfi_def_cfa_offset 32 | |
popq %r12 | |
.cfi_def_cfa_offset 24 | |
popq %r13 | |
.cfi_def_cfa_offset 16 | |
popq %r14 | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L454: | |
.cfi_restore_state | |
movq 8(%rbp), %rax | |
movq %rbp, %rdi | |
call *48(%rax) | |
xorl %eax, %eax | |
jmp .L444 | |
.L459: | |
movq 8(%r12), %rax | |
movq %r12, %rdi | |
call *48(%rax) | |
jmp .L394 | |
.L460: | |
movq 8(%rbp), %rax | |
movq %rbp, %rdi | |
call *48(%rax) | |
.p2align 4,,3 | |
jmp .L397 | |
.L458: | |
movq 8(%r13), %rax | |
movq %r13, %rdi | |
call *48(%rax) | |
.p2align 4,,3 | |
jmp .L424 | |
.p2align 4,,10 | |
.p2align 3 | |
.L401: | |
movq %rbx, ts_target(%rip) | |
call g_switchstack | |
jmp .L404 | |
.p2align 4,,10 | |
.p2align 3 | |
.L425: | |
movq %rbp, %rdi | |
call PySequence_Size@PLT | |
testq %rax, %rax | |
.p2align 4,,2 | |
jne .L426 | |
movq 0(%rbp), %rax | |
leaq -1(%rax), %rdx | |
movq %rbx, %rax | |
testq %rdx, %rdx | |
movq %rdx, 0(%rbp) | |
jne .L444 | |
movq 8(%rbp), %rdx | |
movq %rbx, 8(%rsp) | |
movq %rbp, %rdi | |
call *48(%rdx) | |
movq 8(%rsp), %rax | |
jmp .L444 | |
.p2align 4,,10 | |
.p2align 3 | |
.L453: | |
movq 8(%r12), %rax | |
movq %r12, %rdi | |
call *48(%rax) | |
jmp .L384 | |
.L457: | |
testq %rbx, %rbx | |
je .L420 | |
subq $1, (%rbx) | |
.p2align 4,,4 | |
je .L461 | |
.L420: | |
testq %rbp, %rbp | |
je .L452 | |
subq $1, 0(%rbp) | |
je .L462 | |
.L452: | |
xorl %ebx, %ebx | |
xorl %ebp, %ebp | |
jmp .L418 | |
.L456: | |
movq 8(%rbx), %rax | |
movq %rbx, %rdi | |
call *48(%rax) | |
jmp .L411 | |
.L416: | |
movq ts_event_throw(%rip), %rsi | |
jmp .L417 | |
.L426: | |
movl $2, %edi | |
call PyTuple_New@PLT | |
testq %rax, %rax | |
je .L463 | |
movq %rbp, 24(%rax) | |
movq %rbx, 32(%rax) | |
jmp .L444 | |
.L461: | |
movq 8(%rbx), %rax | |
movq %rbx, %rdi | |
call *48(%rax) | |
jmp .L420 | |
.L462: | |
movq 8(%rbp), %rax | |
movq %rbp, %rdi | |
call *48(%rax) | |
.p2align 4,,3 | |
jmp .L452 | |
.L463: | |
subq $1, 0(%rbp) | |
jne .L428 | |
movq 8(%rbp), %rax | |
movq %rbp, %rdi | |
call *48(%rax) | |
.L428: | |
subq $1, (%rbx) | |
jne .L414 | |
movq 8(%rbx), %rax | |
movq %rbx, %rdi | |
call *48(%rax) | |
xorl %eax, %eax | |
jmp .L444 | |
.L455: | |
leaq __PRETTY_FUNCTION__.10933(%rip), %rcx | |
leaq .LC7(%rip), %rsi | |
leaq .LC17(%rip), %rdi | |
movl $595, %edx | |
call __assert_fail@PLT | |
.L431: | |
movq %rbp, %rax | |
jmp .L444 | |
.cfi_endproc | |
.LFE141: | |
.size g_switch, .-g_switch | |
.section .rodata.str1.1 | |
.LC20: | |
.string "greenlets cannot continue" | |
.LC21: | |
.string "result == ((void *)0)" | |
.text | |
.p2align 4,,15 | |
.type g_initialstub, @function | |
g_initialstub: | |
.LFB143: | |
.cfi_startproc | |
pushq %r15 | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 15, -16 | |
pushq %r14 | |
.cfi_def_cfa_offset 24 | |
.cfi_offset 14, -24 | |
movq %rdi, %r14 | |
pushq %r13 | |
.cfi_def_cfa_offset 32 | |
.cfi_offset 13, -32 | |
pushq %r12 | |
.cfi_def_cfa_offset 40 | |
.cfi_offset 12, -40 | |
pushq %rbp | |
.cfi_def_cfa_offset 48 | |
.cfi_offset 6, -48 | |
pushq %rbx | |
.cfi_def_cfa_offset 56 | |
.cfi_offset 3, -56 | |
subq $56, %rsp | |
.cfi_def_cfa_offset 112 | |
movq ts_target(%rip), %rbx | |
movq ts_passaround_args(%rip), %rbp | |
leaq 40(%rsp), %rdx | |
leaq 32(%rsp), %rsi | |
leaq 24(%rsp), %rdi | |
movq ts_passaround_kwargs(%rip), %r13 | |
call PyErr_Fetch@PLT | |
leaq .LC12(%rip), %rsi | |
movq %rbx, %rdi | |
call PyObject_GetAttrString@PLT | |
testq %rax, %rax | |
movq %rax, %r15 | |
je .L536 | |
movq 40(%rsp), %rdx | |
movq 32(%rsp), %rsi | |
movq 24(%rsp), %rdi | |
call PyErr_Restore@PLT | |
movq _PyThreadState_Current@GOTPCREL(%rip), %r12 | |
movq ts_current(%rip), %rdx | |
movq (%r12), %rax | |
movq 120(%rax), %rax | |
cmpq %rax, 64(%rdx) | |
je .L475 | |
call green_updatecurrent | |
testl %eax, %eax | |
je .L475 | |
subq $1, (%r15) | |
.p2align 4,,2 | |
je .L537 | |
.L535: | |
addq $56, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 56 | |
movl $-1, %eax | |
popq %rbx | |
.cfi_def_cfa_offset 48 | |
popq %rbp | |
.cfi_def_cfa_offset 40 | |
popq %r12 | |
.cfi_def_cfa_offset 32 | |
popq %r13 | |
.cfi_def_cfa_offset 24 | |
popq %r14 | |
.cfi_def_cfa_offset 16 | |
popq %r15 | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L475: | |
.cfi_restore_state | |
movq %rbx, %r8 | |
jmp .L476 | |
.p2align 4,,10 | |
.p2align 3 | |
.L478: | |
movq 56(%r8), %r8 | |
testq %r8, %r8 | |
je .L508 | |
.L476: | |
cmpq $0, 24(%r8) | |
je .L478 | |
movq 64(%r8), %rax | |
testq %rax, %rax | |
je .L477 | |
movq ts_current(%rip), %rdx | |
cmpq %rax, 64(%rdx) | |
jne .L477 | |
cmpq $0, 24(%rbx) | |
je .L482 | |
subq $1, (%r15) | |
je .L538 | |
.L483: | |
movq %rbp, ts_passaround_args(%rip) | |
movl $1, %eax | |
movq %r13, ts_passaround_kwargs(%rip) | |
.L473: | |
addq $56, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 56 | |
popq %rbx | |
.cfi_def_cfa_offset 48 | |
popq %rbp | |
.cfi_def_cfa_offset 40 | |
popq %r12 | |
.cfi_def_cfa_offset 32 | |
popq %r13 | |
.cfi_def_cfa_offset 24 | |
popq %r14 | |
.cfi_def_cfa_offset 16 | |
popq %r15 | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L536: | |
.cfi_restore_state | |
movq 24(%rsp), %rdi | |
testq %rdi, %rdi | |
je .L467 | |
subq $1, (%rdi) | |
je .L539 | |
.L467: | |
movq 32(%rsp), %rdi | |
testq %rdi, %rdi | |
je .L470 | |
subq $1, (%rdi) | |
je .L540 | |
.L470: | |
movq 40(%rsp), %rdi | |
testq %rdi, %rdi | |
je .L535 | |
subq $1, (%rdi) | |
jne .L535 | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
.p2align 4,,2 | |
jmp .L535 | |
.p2align 4,,10 | |
.p2align 3 | |
.L508: | |
xorl %eax, %eax | |
.L477: | |
movq (%r15), %rcx | |
leaq -1(%rcx), %rdx | |
testq %rdx, %rdx | |
movq %rdx, (%r15) | |
je .L541 | |
.L480: | |
testq %rax, %rax | |
leaq .LC18(%rip), %rsi | |
leaq .LC19(%rip), %rax | |
movq PyExc_GreenletError(%rip), %rdi | |
cmove %rax, %rsi | |
call PyErr_SetString@PLT | |
movl $-1, %eax | |
jmp .L473 | |
.p2align 4,,10 | |
.p2align 3 | |
.L538: | |
movq 8(%r15), %rax | |
movq %r15, %rdi | |
call *48(%rax) | |
jmp .L483 | |
.p2align 4,,10 | |
.p2align 3 | |
.L540: | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
.p2align 4,,6 | |
jmp .L470 | |
.p2align 4,,10 | |
.p2align 3 | |
.L539: | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
.p2align 4,,6 | |
jmp .L467 | |
.p2align 4,,10 | |
.p2align 3 | |
.L537: | |
movq 8(%r15), %rax | |
movq %r15, %rdi | |
call *48(%rax) | |
movl $-1, %eax | |
jmp .L473 | |
.p2align 4,,10 | |
.p2align 3 | |
.L482: | |
movq ts_current(%rip), %rax | |
movq $0, 16(%rbx) | |
movq %r14, 24(%rbx) | |
cmpq $0, 16(%rax) | |
movq ts_current(%rip), %rax | |
je .L542 | |
movq %rax, 48(%rbx) | |
.L485: | |
movq (%r12), %rax | |
movq $0, 72(%rbx) | |
movq $0, 96(%rbx) | |
movq $0, 104(%rbx) | |
movq $0, 112(%rbx) | |
movq %rbx, ts_target(%rip) | |
movl 24(%rax), %eax | |
movq %rbp, ts_passaround_args(%rip) | |
movq %r13, ts_passaround_kwargs(%rip) | |
movl %eax, 80(%rbx) | |
call g_switchstack | |
cmpl $1, %eax | |
je .L543 | |
testl %eax, %eax | |
jns .L473 | |
movq $0, 16(%rbx) | |
movq $0, 24(%rbx) | |
movq $0, 48(%rbx) | |
jmp .L473 | |
.L541: | |
movq 8(%r15), %rdx | |
movq %rax, 8(%rsp) | |
movq %r15, %rdi | |
call *48(%rdx) | |
movq 8(%rsp), %rax | |
jmp .L480 | |
.L542: | |
movq 48(%rax), %rax | |
movq %rax, 48(%rbx) | |
jmp .L485 | |
.L543: | |
movq ts_origin(%rip), %r12 | |
movq $1, 16(%rbx) | |
movq $0, ts_origin(%rip) | |
movq 64(%rbx), %rdx | |
movq 56(%rbx), %rax | |
jmp .L487 | |
.p2align 4,,10 | |
.p2align 3 | |
.L489: | |
movq 56(%rax), %rax | |
testq %rax, %rax | |
je .L510 | |
.L487: | |
cmpq $0, 24(%rax) | |
je .L489 | |
movq 64(%rax), %rdi | |
.L488: | |
movq %rdi, 64(%rbx) | |
addq $1, (%rdi) | |
testq %rdx, %rdx | |
je .L490 | |
subq $1, (%rdx) | |
je .L544 | |
.L490: | |
movq ts_tracekey(%rip), %rsi | |
call PyDict_GetItem@PLT | |
testq %rax, %rax | |
movq %rax, %r14 | |
je .L491 | |
addq $1, (%rax) | |
testq %rbp, %rbp | |
je .L492 | |
movq ts_event_switch(%rip), %rsi | |
.L493: | |
movq %rbx, %rcx | |
movq %r12, %rdx | |
movq %r14, %rdi | |
call g_calltrace | |
testl %eax, %eax | |
js .L545 | |
.L494: | |
subq $1, (%r14) | |
je .L546 | |
.L491: | |
subq $1, (%r12) | |
je .L547 | |
.L500: | |
xorl %r12d, %r12d | |
testq %rbp, %rbp | |
je .L501 | |
movq %r13, %rdx | |
movq %rbp, %rsi | |
movq %r15, %rdi | |
call PyEval_CallObjectWithKeywords@PLT | |
subq $1, 0(%rbp) | |
movq %rax, %r12 | |
je .L548 | |
.L502: | |
testq %r13, %r13 | |
je .L501 | |
subq $1, 0(%r13) | |
je .L549 | |
.L501: | |
movq (%r15), %rax | |
leaq -1(%rax), %rdx | |
testq %rdx, %rdx | |
movq %rdx, (%r15) | |
je .L550 | |
.L503: | |
movq %r12, %rdi | |
call g_handle_exit | |
movq 56(%rbx), %rbp | |
movq $0, 16(%rbx) | |
testq %rbp, %rbp | |
je .L506 | |
.p2align 4,,10 | |
.p2align 3 | |
.L525: | |
xorl %edx, %edx | |
movq %rax, %rsi | |
movq %rbp, %rdi | |
call g_switch | |
testq %rax, %rax | |
jne .L551 | |
movq 56(%rbp), %rbp | |
testq %rbp, %rbp | |
jne .L525 | |
.L506: | |
movq %rbx, %rdi | |
call PyErr_WriteUnraisable@PLT | |
leaq .LC20(%rip), %rdi | |
call Py_FatalError@PLT | |
movl $1, %eax | |
jmp .L473 | |
.L510: | |
xorl %edi, %edi | |
jmp .L488 | |
.L550: | |
movq 8(%r15), %rax | |
movq %r15, %rdi | |
call *48(%rax) | |
jmp .L503 | |
.L547: | |
movq 8(%r12), %rax | |
movq %r12, %rdi | |
call *48(%rax) | |
.p2align 4,,2 | |
jmp .L500 | |
.L546: | |
movq 8(%r14), %rax | |
movq %r14, %rdi | |
call *48(%rax) | |
.p2align 4,,3 | |
jmp .L491 | |
.L544: | |
movq 8(%rdx), %rax | |
movq %rdx, %rdi | |
call *48(%rax) | |
movq 64(%rbx), %rdi | |
jmp .L490 | |
.L545: | |
testq %r13, %r13 | |
je .L496 | |
subq $1, 0(%r13) | |
jne .L496 | |
movq 8(%r13), %rax | |
movq %r13, %rdi | |
call *48(%rax) | |
.L496: | |
testq %rbp, %rbp | |
je .L534 | |
subq $1, 0(%rbp) | |
jne .L534 | |
movq 8(%rbp), %rax | |
movq %rbp, %rdi | |
call *48(%rax) | |
.L534: | |
xorl %r13d, %r13d | |
xorl %ebp, %ebp | |
jmp .L494 | |
.L548: | |
movq 8(%rbp), %rax | |
movq %rbp, %rdi | |
call *48(%rax) | |
jmp .L502 | |
.L549: | |
movq 8(%r13), %rax | |
movq %r13, %rdi | |
call *48(%rax) | |
.p2align 4,,3 | |
jmp .L501 | |
.L492: | |
movq ts_event_throw(%rip), %rsi | |
jmp .L493 | |
.L551: | |
leaq __PRETTY_FUNCTION__.10968(%rip), %rcx | |
leaq .LC7(%rip), %rsi | |
leaq .LC21(%rip), %rdi | |
movl $820, %edx | |
call __assert_fail@PLT | |
.cfi_endproc | |
.LFE143: | |
.size g_initialstub, .-g_initialstub | |
.p2align 4,,15 | |
.type throw_greenlet, @function | |
throw_greenlet: | |
.LFB152: | |
.cfi_startproc | |
pushq %rbx | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 3, -16 | |
movq %rdi, %rbx | |
movq %rsi, %rdi | |
movq %rdx, %rsi | |
movq %rcx, %rdx | |
call PyErr_Restore@PLT | |
xorl %esi, %esi | |
cmpq $0, 24(%rbx) | |
je .L553 | |
cmpq $0, 16(%rbx) | |
je .L557 | |
.L553: | |
movq %rbx, %rdi | |
xorl %edx, %edx | |
call g_switch | |
popq %rbx | |
.cfi_remember_state | |
.cfi_def_cfa_offset 8 | |
movq %rax, %rdi | |
jmp single_result | |
.p2align 4,,10 | |
.p2align 3 | |
.L557: | |
.cfi_restore_state | |
xorl %edi, %edi | |
call g_handle_exit | |
movq %rax, %rsi | |
jmp .L553 | |
.cfi_endproc | |
.LFE152: | |
.size throw_greenlet, .-throw_greenlet | |
.section .rodata.str1.1 | |
.LC22: | |
.string "|OOO:throw" | |
.section .rodata.str1.8 | |
.align 8 | |
.LC23: | |
.string "throw() third argument must be a traceback object" | |
.align 8 | |
.LC24: | |
.string "instance exception may not have a separate value" | |
.align 8 | |
.LC25: | |
.string "exceptions must be classes, or instances, not %s" | |
.text | |
.p2align 4,,15 | |
.type green_throw, @function | |
green_throw: | |
.LFB154: | |
.cfi_startproc | |
pushq %r13 | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 13, -16 | |
movq %rdi, %r13 | |
movq %rsi, %rdi | |
leaq .LC22(%rip), %rsi | |
pushq %r12 | |
.cfi_def_cfa_offset 24 | |
.cfi_offset 12, -24 | |
pushq %rbp | |
.cfi_def_cfa_offset 32 | |
.cfi_offset 6, -32 | |
pushq %rbx | |
.cfi_def_cfa_offset 40 | |
.cfi_offset 3, -40 | |
subq $40, %rsp | |
.cfi_def_cfa_offset 80 | |
movq PyExc_GreenletExit(%rip), %rax | |
leaq 24(%rsp), %r12 | |
leaq 16(%rsp), %rbp | |
leaq 8(%rsp), %rbx | |
movq $0, 16(%rsp) | |
movq $0, 24(%rsp) | |
movq %rax, 8(%rsp) | |
movq %r12, %r8 | |
xorl %eax, %eax | |
movq %rbp, %rcx | |
movq %rbx, %rdx | |
call PyArg_ParseTuple@PLT | |
testl %eax, %eax | |
je .L600 | |
movq 24(%rsp), %rax | |
movq _Py_NoneStruct@GOTPCREL(%rip), %rcx | |
cmpq %rcx, %rax | |
je .L601 | |
testq %rax, %rax | |
je .L579 | |
movq PyTraceBack_Type@GOTPCREL(%rip), %rdx | |
cmpq %rdx, 8(%rax) | |
jne .L602 | |
.L562: | |
movq 8(%rsp), %rdx | |
movq 16(%rsp), %r9 | |
addq $1, (%rdx) | |
testq %r9, %r9 | |
je .L563 | |
addq $1, (%r9) | |
.L563: | |
testq %rax, %rax | |
je .L564 | |
addq $1, (%rax) | |
.L564: | |
movq 8(%rdx), %rsi | |
cmpq PyClass_Type@GOTPCREL(%rip), %rsi | |
je .L565 | |
movq 168(%rsi), %rdi | |
testl $2147483648, %edi | |
je .L566 | |
testb $64, 171(%rdx) | |
je .L566 | |
.L565: | |
movq %r12, %rdx | |
movq %rbp, %rsi | |
movq %rbx, %rdi | |
call PyErr_NormalizeException@PLT | |
movq 16(%rsp), %rdx | |
movq 8(%rsp), %rsi | |
movq 24(%rsp), %rax | |
.L567: | |
movq %r13, %rdi | |
movq %rax, %rcx | |
call throw_greenlet | |
addq $40, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 40 | |
popq %rbx | |
.cfi_def_cfa_offset 32 | |
popq %rbp | |
.cfi_def_cfa_offset 24 | |
popq %r12 | |
.cfi_def_cfa_offset 16 | |
popq %r13 | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L566: | |
.cfi_restore_state | |
cmpq PyInstance_Type@GOTPCREL(%rip), %rsi | |
je .L568 | |
testl $1073741824, %edi | |
je .L569 | |
.L568: | |
testq %r9, %r9 | |
je .L570 | |
cmpq %rcx, %r9 | |
je .L571 | |
.L572: | |
movq PyExc_TypeError@GOTPCREL(%rip), %rax | |
leaq .LC24(%rip), %rsi | |
movq (%rax), %rdi | |
call PyErr_SetString@PLT | |
movq 8(%rsp), %rdi | |
subq $1, (%rdi) | |
je .L603 | |
.L574: | |
movq 16(%rsp), %rdi | |
testq %rdi, %rdi | |
je .L576 | |
subq $1, (%rdi) | |
je .L604 | |
.L576: | |
movq 24(%rsp), %rdi | |
testq %rdi, %rdi | |
je .L600 | |
subq $1, (%rdi) | |
je .L605 | |
.L600: | |
addq $40, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 40 | |
xorl %eax, %eax | |
popq %rbx | |
.cfi_def_cfa_offset 32 | |
popq %rbp | |
.cfi_def_cfa_offset 24 | |
popq %r12 | |
.cfi_def_cfa_offset 16 | |
popq %r13 | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L605: | |
.cfi_restore_state | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
jmp .L600 | |
.p2align 4,,10 | |
.p2align 3 | |
.L571: | |
movq (%r9), %rbx | |
leaq -1(%rbx), %rcx | |
testq %rcx, %rcx | |
movq %rcx, (%r9) | |
jne .L570 | |
movq 8(%r9), %rax | |
movq %r9, %rdi | |
call *48(%rax) | |
movq 8(%rsp), %rdx | |
movq 24(%rsp), %rax | |
movq 8(%rdx), %rsi | |
.L570: | |
cmpq PyInstance_Type@GOTPCREL(%rip), %rsi | |
movq %rdx, 16(%rsp) | |
je .L606 | |
.L573: | |
movq %rsi, 8(%rsp) | |
addq $1, (%rsi) | |
jmp .L567 | |
.p2align 4,,10 | |
.p2align 3 | |
.L601: | |
movq $0, 24(%rsp) | |
xorl %eax, %eax | |
jmp .L562 | |
.p2align 4,,10 | |
.p2align 3 | |
.L602: | |
movq PyExc_TypeError@GOTPCREL(%rip), %rax | |
leaq .LC23(%rip), %rsi | |
movq (%rax), %rdi | |
call PyErr_SetString@PLT | |
addq $40, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 40 | |
xorl %eax, %eax | |
popq %rbx | |
.cfi_def_cfa_offset 32 | |
popq %rbp | |
.cfi_def_cfa_offset 24 | |
popq %r12 | |
.cfi_def_cfa_offset 16 | |
popq %r13 | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L569: | |
.cfi_restore_state | |
movq PyExc_TypeError@GOTPCREL(%rip), %rax | |
movq 24(%rsi), %rdx | |
leaq .LC25(%rip), %rsi | |
movq (%rax), %rdi | |
xorl %eax, %eax | |
call PyErr_Format@PLT | |
movq 8(%rsp), %rdi | |
subq $1, (%rdi) | |
jne .L574 | |
.L603: | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
jmp .L574 | |
.p2align 4,,10 | |
.p2align 3 | |
.L579: | |
xorl %eax, %eax | |
jmp .L562 | |
.p2align 4,,10 | |
.p2align 3 | |
.L604: | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
.p2align 4,,4 | |
jmp .L576 | |
.p2align 4,,10 | |
.p2align 3 | |
.L606: | |
movq 16(%rdx), %rsi | |
jmp .L573 | |
.cfi_endproc | |
.LFE154: | |
.size green_throw, .-green_throw | |
.p2align 4,,15 | |
.type PyGreenlet_Throw, @function | |
PyGreenlet_Throw: | |
.LFB169: | |
.cfi_startproc | |
pushq %rbp | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 6, -16 | |
movq %rdi, %rbp | |
pushq %rbx | |
.cfi_def_cfa_offset 24 | |
.cfi_offset 3, -24 | |
movq %rsi, %rbx | |
subq $24, %rsp | |
.cfi_def_cfa_offset 48 | |
movq 8(%rdi), %rdi | |
movq PyGreenlet_Type@GOTPCREL(%rip), %rsi | |
cmpq %rsi, %rdi | |
je .L608 | |
movq %rcx, 8(%rsp) | |
movq %rdx, (%rsp) | |
call PyType_IsSubtype@PLT | |
testl %eax, %eax | |
movq (%rsp), %rdx | |
movq 8(%rsp), %rcx | |
je .L619 | |
.L608: | |
addq $1, (%rbx) | |
testq %rdx, %rdx | |
je .L610 | |
addq $1, (%rdx) | |
.L610: | |
testq %rcx, %rcx | |
je .L611 | |
addq $1, (%rcx) | |
.L611: | |
addq $24, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 24 | |
movq %rbx, %rsi | |
movq %rbp, %rdi | |
popq %rbx | |
.cfi_def_cfa_offset 16 | |
popq %rbp | |
.cfi_def_cfa_offset 8 | |
jmp throw_greenlet | |
.p2align 4,,10 | |
.p2align 3 | |
.L619: | |
.cfi_restore_state | |
call PyErr_BadArgument@PLT | |
addq $24, %rsp | |
.cfi_def_cfa_offset 24 | |
xorl %eax, %eax | |
popq %rbx | |
.cfi_def_cfa_offset 16 | |
popq %rbp | |
.cfi_def_cfa_offset 8 | |
ret | |
.cfi_endproc | |
.LFE169: | |
.size PyGreenlet_Throw, .-PyGreenlet_Throw | |
.p2align 4,,15 | |
.type green_switch, @function | |
green_switch: | |
.LFB153: | |
.cfi_startproc | |
subq $8, %rsp | |
.cfi_def_cfa_offset 16 | |
addq $1, (%rsi) | |
testq %rdx, %rdx | |
je .L622 | |
addq $1, (%rdx) | |
.L622: | |
call g_switch | |
addq $8, %rsp | |
.cfi_def_cfa_offset 8 | |
movq %rax, %rdi | |
jmp single_result | |
.cfi_endproc | |
.LFE153: | |
.size green_switch, .-green_switch | |
.section .rodata.str1.8 | |
.align 8 | |
.LC26: | |
.string "(((PyObject*)(self))->ob_refcnt) == 0" | |
.section .rodata.str1.1 | |
.LC27: | |
.string "stderr" | |
.LC28: | |
.string "GreenletExit did not kill " | |
.LC29: | |
.string "\n" | |
.section .rodata.str1.8 | |
.align 8 | |
.LC30: | |
.string "(((PyObject*)(self))->ob_refcnt) > 0" | |
.text | |
.p2align 4,,15 | |
.type green_dealloc, @function | |
green_dealloc: | |
.LFB150: | |
.cfi_startproc | |
pushq %r13 | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 13, -16 | |
pushq %r12 | |
.cfi_def_cfa_offset 24 | |
.cfi_offset 12, -24 | |
pushq %rbp | |
.cfi_def_cfa_offset 32 | |
.cfi_offset 6, -32 | |
pushq %rbx | |
.cfi_def_cfa_offset 40 | |
.cfi_offset 3, -40 | |
movq %rdi, %rbx | |
subq $56, %rsp | |
.cfi_def_cfa_offset 96 | |
call PyObject_GC_UnTrack@PLT | |
movq _PyTrash_delete_nesting@GOTPCREL(%rip), %rbp | |
movl 0(%rbp), %eax | |
cmpl $49, %eax | |
jg .L628 | |
addl $1, %eax | |
cmpq $0, 16(%rbx) | |
movl %eax, 0(%rbp) | |
je .L629 | |
cmpq $0, 64(%rbx) | |
je .L629 | |
cmpq $-1, 24(%rbx) | |
je .L629 | |
cmpq $0, (%rbx) | |
jne .L684 | |
leaq 24(%rsp), %rdi | |
leaq 40(%rsp), %rdx | |
leaq 32(%rsp), %rsi | |
movq $1, (%rbx) | |
call PyErr_Fetch@PLT | |
movq _PyThreadState_Current@GOTPCREL(%rip), %r12 | |
movq 64(%rbx), %rdi | |
movq (%r12), %rax | |
cmpq 120(%rax), %rdi | |
je .L685 | |
movq ts_delkey(%rip), %rsi | |
call PyDict_GetItem@PLT | |
testq %rax, %rax | |
movq %rax, %r13 | |
je .L686 | |
.L640: | |
movq %rbx, %rsi | |
movq %r13, %rdi | |
call PyList_Append@PLT | |
testl %eax, %eax | |
js .L635 | |
movq ts_current(%rip), %rdx | |
movq (%r12), %rax | |
movq 120(%rax), %rax | |
cmpq %rax, 64(%rdx) | |
je .L666 | |
call green_updatecurrent | |
testl %eax, %eax | |
jne .L635 | |
.L666: | |
cmpq $1, (%rbx) | |
.p2align 4,,2 | |
je .L687 | |
.L642: | |
movq 40(%rsp), %rdx | |
movq 32(%rsp), %rsi | |
movq 24(%rsp), %rdi | |
call PyErr_Restore@PLT | |
movq (%rbx), %rax | |
testq %rax, %rax | |
jle .L688 | |
subq $1, %rax | |
testq %rax, %rax | |
movq %rax, (%rbx) | |
jne .L689 | |
.L629: | |
cmpq $0, 88(%rbx) | |
je .L646 | |
movq %rbx, %rdi | |
call PyObject_ClearWeakRefs@PLT | |
.L646: | |
movq 56(%rbx), %rdi | |
testq %rdi, %rdi | |
je .L648 | |
movq $0, 56(%rbx) | |
subq $1, (%rdi) | |
je .L690 | |
.L648: | |
movq 64(%rbx), %rdi | |
testq %rdi, %rdi | |
je .L651 | |
.L697: | |
movq $0, 64(%rbx) | |
subq $1, (%rdi) | |
je .L691 | |
.L651: | |
movq 96(%rbx), %rdi | |
testq %rdi, %rdi | |
je .L654 | |
.L698: | |
movq $0, 96(%rbx) | |
subq $1, (%rdi) | |
je .L692 | |
.L654: | |
movq 104(%rbx), %rdi | |
testq %rdi, %rdi | |
je .L657 | |
.L699: | |
movq $0, 104(%rbx) | |
subq $1, (%rdi) | |
je .L693 | |
.L657: | |
movq 112(%rbx), %rdi | |
testq %rdi, %rdi | |
je .L660 | |
.L700: | |
movq $0, 112(%rbx) | |
subq $1, (%rdi) | |
je .L694 | |
.L660: | |
movq 120(%rbx), %rdi | |
testq %rdi, %rdi | |
je .L663 | |
.L701: | |
movq $0, 120(%rbx) | |
subq $1, (%rdi) | |
je .L695 | |
.L663: | |
movq 8(%rbx), %rax | |
movq %rbx, %rdi | |
call *320(%rax) | |
.L645: | |
movl 0(%rbp), %eax | |
movq _PyTrash_delete_later@GOTPCREL(%rip), %rdx | |
subl $1, %eax | |
cmpq $0, (%rdx) | |
movl %eax, 0(%rbp) | |
je .L627 | |
testl %eax, %eax | |
jle .L696 | |
.L627: | |
addq $56, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 40 | |
popq %rbx | |
.cfi_def_cfa_offset 32 | |
popq %rbp | |
.cfi_def_cfa_offset 24 | |
popq %r12 | |
.cfi_def_cfa_offset 16 | |
popq %r13 | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L628: | |
.cfi_restore_state | |
movq %rbx, %rdi | |
call _PyTrash_deposit_object@PLT | |
addq $56, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 40 | |
popq %rbx | |
.cfi_def_cfa_offset 32 | |
popq %rbp | |
.cfi_def_cfa_offset 24 | |
popq %r12 | |
.cfi_def_cfa_offset 16 | |
popq %r13 | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L690: | |
.cfi_restore_state | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
movq 64(%rbx), %rdi | |
testq %rdi, %rdi | |
jne .L697 | |
jmp .L651 | |
.p2align 4,,10 | |
.p2align 3 | |
.L691: | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
movq 96(%rbx), %rdi | |
testq %rdi, %rdi | |
jne .L698 | |
jmp .L654 | |
.p2align 4,,10 | |
.p2align 3 | |
.L692: | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
movq 104(%rbx), %rdi | |
testq %rdi, %rdi | |
jne .L699 | |
jmp .L657 | |
.p2align 4,,10 | |
.p2align 3 | |
.L693: | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
movq 112(%rbx), %rdi | |
testq %rdi, %rdi | |
jne .L700 | |
jmp .L660 | |
.p2align 4,,10 | |
.p2align 3 | |
.L694: | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
movq 120(%rbx), %rdi | |
testq %rdi, %rdi | |
jne .L701 | |
jmp .L663 | |
.p2align 4,,10 | |
.p2align 3 | |
.L695: | |
movq 8(%rdi), %rax | |
call *48(%rax) | |
.p2align 4,,6 | |
jmp .L663 | |
.p2align 4,,10 | |
.p2align 3 | |
.L689: | |
movq %rbx, %rdi | |
call PyObject_GC_Track@PLT | |
.p2align 4,,5 | |
jmp .L645 | |
.p2align 4,,10 | |
.p2align 3 | |
.L685: | |
movq ts_current(%rip), %rax | |
cmpq 64(%rax), %rdi | |
je .L636 | |
call green_updatecurrent | |
testl %eax, %eax | |
jne .L635 | |
.L636: | |
movq ts_current(%rip), %rax | |
movq 56(%rbx), %r12 | |
movq PyExc_GreenletExit(%rip), %rdi | |
movq %rax, 56(%rbx) | |
addq $1, (%rax) | |
call PyErr_SetNone@PLT | |
xorl %edx, %edx | |
xorl %esi, %esi | |
movq %rbx, %rdi | |
call g_switch | |
movq 56(%rbx), %rdi | |
movq %r12, 56(%rbx) | |
testq %rdi, %rdi | |
je .L637 | |
movq (%rdi), %rcx | |
leaq -1(%rcx), %rdx | |
testq %rdx, %rdx | |
movq %rdx, (%rdi) | |
je .L702 | |
.L637: | |
testq %rax, %rax | |
je .L635 | |
movq (%rax), %rcx | |
leaq -1(%rcx), %rdx | |
testq %rdx, %rdx | |
movq %rdx, (%rax) | |
jne .L666 | |
movq 8(%rax), %rdx | |
movq %rax, %rdi | |
call *48(%rdx) | |
jmp .L666 | |
.p2align 4,,10 | |
.p2align 3 | |
.L687: | |
cmpq $0, 16(%rbx) | |
je .L642 | |
leaq .LC27(%rip), %rdi | |
call PySys_GetObject@PLT | |
addq $1, (%rbx) | |
testq %rax, %rax | |
movq %rax, %r12 | |
je .L642 | |
leaq .LC28(%rip), %rdi | |
movq %rax, %rsi | |
call PyFile_WriteString@PLT | |
movq %r12, %rsi | |
movq %rbx, %rdi | |
xorl %edx, %edx | |
call PyFile_WriteObject@PLT | |
leaq .LC29(%rip), %rdi | |
movq %r12, %rsi | |
call PyFile_WriteString@PLT | |
jmp .L642 | |
.p2align 4,,10 | |
.p2align 3 | |
.L696: | |
call _PyTrash_destroy_chain@PLT | |
.p2align 4,,8 | |
jmp .L627 | |
.p2align 4,,10 | |
.p2align 3 | |
.L686: | |
xorl %edi, %edi | |
call PyList_New@PLT | |
testq %rax, %rax | |
movq %rax, %r13 | |
je .L635 | |
movq 64(%rbx), %rdi | |
movq ts_delkey(%rip), %rsi | |
movq %rax, %rdx | |
call PyDict_SetItem@PLT | |
testl %eax, %eax | |
jns .L640 | |
.p2align 4,,10 | |
.p2align 3 | |
.L635: | |
movq %rbx, %rdi | |
call PyErr_WriteUnraisable@PLT | |
.p2align 4,,3 | |
jmp .L666 | |
.p2align 4,,10 | |
.p2align 3 | |
.L702: | |
movq 8(%rdi), %rdx | |
movq %rax, 8(%rsp) | |
call *48(%rdx) | |
movq 8(%rsp), %rax | |
jmp .L637 | |
.L684: | |
leaq __PRETTY_FUNCTION__.11030(%rip), %rcx | |
leaq .LC7(%rip), %rsi | |
leaq .LC26(%rip), %rdi | |
movl $977, %edx | |
call __assert_fail@PLT | |
.L688: | |
leaq __PRETTY_FUNCTION__.11030(%rip), %rcx | |
leaq .LC7(%rip), %rsi | |
leaq .LC30(%rip), %rdi | |
movl $1006, %edx | |
call __assert_fail@PLT | |
.cfi_endproc | |
.LFE150: | |
.size green_dealloc, .-green_dealloc | |
.section .rodata.str1.1 | |
.LC31: | |
.string "()" | |
.text | |
.p2align 4,,15 | |
.type PyGreenlet_Switch, @function | |
PyGreenlet_Switch: | |
.LFB168: | |
.cfi_startproc | |
pushq %r12 | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 12, -16 | |
movq %rdi, %r12 | |
pushq %rbp | |
.cfi_def_cfa_offset 24 | |
.cfi_offset 6, -24 | |
movq %rsi, %rbp | |
movq PyGreenlet_Type@GOTPCREL(%rip), %rsi | |
pushq %rbx | |
.cfi_def_cfa_offset 32 | |
.cfi_offset 3, -32 | |
movq 8(%rdi), %rdi | |
movq %rdx, %rbx | |
cmpq %rsi, %rdi | |
je .L704 | |
call PyType_IsSubtype@PLT | |
testl %eax, %eax | |
je .L714 | |
.L704: | |
testq %rbp, %rbp | |
.p2align 4,,3 | |
je .L716 | |
addq $1, 0(%rbp) | |
.L707: | |
testq %rbx, %rbx | |
je .L708 | |
movq 8(%rbx), %rax | |
testb $32, 171(%rax) | |
je .L709 | |
addq $1, (%rbx) | |
.L708: | |
movq %r12, %rdi | |
movq %rbx, %rdx | |
movq %rbp, %rsi | |
call g_switch | |
popq %rbx | |
.cfi_remember_state | |
.cfi_def_cfa_offset 24 | |
popq %rbp | |
.cfi_def_cfa_offset 16 | |
popq %r12 | |
.cfi_def_cfa_offset 8 | |
movq %rax, %rdi | |
jmp single_result | |
.p2align 4,,10 | |
.p2align 3 | |
.L709: | |
.cfi_restore_state | |
xorl %ebx, %ebx | |
jmp .L708 | |
.p2align 4,,10 | |
.p2align 3 | |
.L716: | |
leaq .LC31(%rip), %rdi | |
xorl %eax, %eax | |
call Py_BuildValue@PLT | |
movq %rax, %rbp | |
jmp .L707 | |
.p2align 4,,10 | |
.p2align 3 | |
.L714: | |
call PyErr_BadArgument@PLT | |
popq %rbx | |
.cfi_def_cfa_offset 24 | |
popq %rbp | |
.cfi_def_cfa_offset 16 | |
xorl %eax, %eax | |
popq %r12 | |
.cfi_def_cfa_offset 8 | |
ret | |
.cfi_endproc | |
.LFE168: | |
.size PyGreenlet_Switch, .-PyGreenlet_Switch | |
.section .rodata.str1.1 | |
.LC32: | |
.string "greenlet" | |
.LC33: | |
.string "0.4.0" | |
.LC34: | |
.string "__version__" | |
.LC35: | |
.string "__greenlet_ts_curkey" | |
.LC36: | |
.string "__greenlet_ts_delkey" | |
.LC37: | |
.string "__greenlet_ts_tracekey" | |
.LC38: | |
.string "switch" | |
.LC39: | |
.string "throw" | |
.LC40: | |
.string "greenlet.error" | |
.LC41: | |
.string "greenlet.GreenletExit" | |
.LC42: | |
.string "error" | |
.LC43: | |
.string "GreenletExit" | |
.LC44: | |
.string "GREENLET_USE_GC" | |
.LC45: | |
.string "GREENLET_USE_TRACING" | |
.LC46: | |
.string "greenlet._C_API" | |
.LC47: | |
.string "_C_API" | |
.text | |
.p2align 4,,15 | |
.globl initgreenlet | |
.type initgreenlet, @function | |
initgreenlet: | |
.LFB173: | |
.cfi_startproc | |
pushq %r13 | |
.cfi_def_cfa_offset 16 | |
.cfi_offset 13, -16 | |
leaq GreenMethods(%rip), %rsi | |
leaq .LC32(%rip), %rdi | |
xorl %ecx, %ecx | |
xorl %edx, %edx | |
movl $1013, %r8d | |
pushq %r12 | |
.cfi_def_cfa_offset 24 | |
.cfi_offset 12, -24 | |
pushq %rbp | |
.cfi_def_cfa_offset 32 | |
.cfi_offset 6, -32 | |
pushq %rbx | |
.cfi_def_cfa_offset 40 | |
.cfi_offset 3, -40 | |
subq $8, %rsp | |
.cfi_def_cfa_offset 48 | |
call Py_InitModule4_64@PLT | |
testq %rax, %rax | |
movq %rax, %rbp | |
je .L717 | |
leaq .LC33(%rip), %rdx | |
leaq .LC34(%rip), %rsi | |
movq %rax, %rdi | |
call PyModule_AddStringConstant@PLT | |
testl %eax, %eax | |
js .L717 | |
leaq .LC35(%rip), %rdi | |
call PyString_InternFromString@PLT | |
leaq .LC36(%rip), %rdi | |
movq %rax, ts_curkey(%rip) | |
call PyString_InternFromString@PLT | |
leaq .LC37(%rip), %rdi | |
movq %rax, ts_delkey(%rip) | |
call PyString_InternFromString@PLT | |
leaq .LC38(%rip), %rdi | |
movq %rax, ts_tracekey(%rip) | |
call PyString_InternFromString@PLT | |
leaq .LC39(%rip), %rdi | |
movq %rax, ts_event_switch(%rip) | |
call PyString_InternFromString@PLT | |
cmpq $0, ts_curkey(%rip) | |
movq %rax, ts_event_throw(%rip) | |
je .L717 | |
cmpq $0, ts_delkey(%rip) | |
je .L717 | |
movq PyGreenlet_Type@GOTPCREL(%rip), %r13 | |
movq %r13, %rdi | |
call PyType_Ready@PLT | |
testl %eax, %eax | |
js .L717 | |
leaq .LC40(%rip), %rdi | |
xorl %edx, %edx | |
xorl %esi, %esi | |
call PyErr_NewException@PLT | |
testq %rax, %rax | |
movq %rax, PyExc_GreenletError(%rip) | |
je .L717 | |
movq PyExc_BaseException@GOTPCREL(%rip), %rax | |
leaq .LC41(%rip), %rdi | |
xorl %edx, %edx | |
movq (%rax), %rsi | |
call PyErr_NewException@PLT | |
testq %rax, %rax | |
movq %rax, PyExc_GreenletExit(%rip) | |
je .L717 | |
call green_create_main | |
movq %rax, ts_current(%rip) | |
movq ts_current(%rip), %rax | |
testq %rax, %rax | |
je .L717 | |
addq $1, 0(%r13) | |
leaq .LC32(%rip), %rsi | |
movq %r13, %rdx | |
movq %rbp, %rdi | |
leaq copy_on_greentype(%rip), %r12 | |
call PyModule_AddObject@PLT | |
movq PyExc_GreenletError(%rip), %rdx | |
leaq .LC42(%rip), %rsi | |
movq %rbp, %rdi | |
addq $1, (%rdx) | |
call PyModule_AddObject@PLT | |
movq PyExc_GreenletExit(%rip), %rdx | |
leaq .LC43(%rip), %rsi | |
movq %rbp, %rdi | |
addq $1, (%rdx) | |
call PyModule_AddObject@PLT | |
movl $1, %edi | |
call PyBool_FromLong@PLT | |
leaq .LC44(%rip), %rsi | |
movq %rax, %rdx | |
movq %rbp, %rdi | |
call PyModule_AddObject@PLT | |
movl $1, %edi | |
call PyBool_FromLong@PLT | |
leaq .LC45(%rip), %rsi | |
movq %rax, %rdx | |
movq %rbp, %rdi | |
call PyModule_AddObject@PLT | |
movq copy_on_greentype(%rip), %rsi | |
testq %rsi, %rsi | |
jne .L736 | |
jmp .L726 | |
.p2align 4,,10 | |
.p2align 3 | |
.L724: | |
addq $8, %r12 | |
movq (%r12), %rsi | |
testq %rsi, %rsi | |
je .L726 | |
.L736: | |
movq %rbp, %rdi | |
call PyObject_GetAttrString@PLT | |
testq %rax, %rax | |
movq %rax, %rbx | |
je .L724 | |
movq 264(%r13), %rdi | |
movq (%r12), %rsi | |
movq %rax, %rdx | |
call PyDict_SetItemString@PLT | |
subq $1, (%rbx) | |
jne .L724 | |
movq 8(%rbx), %rax | |
movq %rbx, %rdi | |
call *48(%rax) | |
jmp .L724 | |
.p2align 4,,10 | |
.p2align 3 | |
.L717: | |
addq $8, %rsp | |
.cfi_remember_state | |
.cfi_def_cfa_offset 40 | |
popq %rbx | |
.cfi_def_cfa_offset 32 | |
popq %rbp | |
.cfi_def_cfa_offset 24 | |
popq %r12 | |
.cfi_def_cfa_offset 16 | |
popq %r13 | |
.cfi_def_cfa_offset 8 | |
ret | |
.p2align 4,,10 | |
.p2align 3 | |
.L726: | |
.cfi_restore_state | |
movq PyExc_GreenletError(%rip), %rax | |
leaq .LC46(%rip), %rsi | |
leaq _PyGreenlet_API.11169(%rip), %rdi | |
xorl %edx, %edx | |
movq %r13, _PyGreenlet_API.11169(%rip) | |
movq %rax, 8+_PyGreenlet_API.11169(%rip) | |
movq PyExc_GreenletExit(%rip), %rax | |
movq %rax, 16+_PyGreenlet_API.11169(%rip) | |
leaq PyGreenlet_New(%rip), %rax | |
movq %rax, 24+_PyGreenlet_API.11169(%rip) | |
leaq PyGreenlet_GetCurrent(%rip), %rax | |
movq %rax, 32+_PyGreenlet_API.11169(%rip) | |
leaq PyGreenlet_Throw(%rip), %rax | |
movq %rax, 40+_PyGreenlet_API.11169(%rip) | |
leaq PyGreenlet_Switch(%rip), %rax | |
movq %rax, 48+_PyGreenlet_API.11169(%rip) | |
leaq PyGreenlet_SetParent(%rip), %rax | |
movq %rax, 56+_PyGreenlet_API.11169(%rip) | |
call PyCapsule_New@PLT | |
testq %rax, %rax | |
je .L717 | |
addq $8, %rsp | |
.cfi_def_cfa_offset 40 | |
movq %rbp, %rdi | |
leaq .LC47(%rip), %rsi | |
popq %rbx | |
.cfi_def_cfa_offset 32 | |
popq %rbp | |
.cfi_def_cfa_offset 24 | |
popq %r12 | |
.cfi_def_cfa_offset 16 | |
popq %r13 | |
.cfi_def_cfa_offset 8 | |
movq %rax, %rdx | |
jmp PyModule_AddObject@PLT | |
.cfi_endproc | |
.LFE173: | |
.size initgreenlet, .-initgreenlet | |
.local _PyGreenlet_API.11169 | |
.comm _PyGreenlet_API.11169,64,32 | |
.section .rodata | |
.type __PRETTY_FUNCTION__.11030, @object | |
.size __PRETTY_FUNCTION__.11030, 14 | |
__PRETTY_FUNCTION__.11030: | |
.string "green_dealloc" | |
.type __PRETTY_FUNCTION__.10968, @object | |
.size __PRETTY_FUNCTION__.10968, 14 | |
__PRETTY_FUNCTION__.10968: | |
.string "g_initialstub" | |
.type __PRETTY_FUNCTION__.10872, @object | |
.size __PRETTY_FUNCTION__.10872, 7 | |
__PRETTY_FUNCTION__.10872: | |
.string "g_save" | |
.type __PRETTY_FUNCTION__.10887, @object | |
.size __PRETTY_FUNCTION__.10887, 15 | |
__PRETTY_FUNCTION__.10887: | |
.string "slp_save_state" | |
.type __PRETTY_FUNCTION__.10907, @object | |
.size __PRETTY_FUNCTION__.10907, 14 | |
__PRETTY_FUNCTION__.10907: | |
.string "g_switchstack" | |
.type __PRETTY_FUNCTION__.10933, @object | |
.size __PRETTY_FUNCTION__.10933, 9 | |
__PRETTY_FUNCTION__.10933: | |
.string "g_switch" | |
.section .rodata.str1.1 | |
.LC48: | |
.string "parent" | |
.section .data.rel.local,"aw",@progbits | |
.align 16 | |
.type kwlist.10993, @object | |
.size kwlist.10993, 24 | |
kwlist.10993: | |
.quad .LC12 | |
.quad .LC48 | |
.quad 0 | |
.section .rodata | |
.align 16 | |
.type __PRETTY_FUNCTION__.10850, @object | |
.size __PRETTY_FUNCTION__.10850, 20 | |
__PRETTY_FUNCTION__.10850: | |
.string "green_updatecurrent" | |
.section .rodata.str1.1 | |
.LC49: | |
.string "getcurrent" | |
.LC50: | |
.string "settrace" | |
.LC51: | |
.string "gettrace" | |
.section .data.rel.local | |
.align 32 | |
.type copy_on_greentype, @object | |
.size copy_on_greentype, 48 | |
copy_on_greentype: | |
.quad .LC49 | |
.quad .LC42 | |
.quad .LC43 | |
.quad .LC50 | |
.quad .LC51 | |
.quad 0 | |
.align 32 | |
.type GreenMethods, @object | |
.size GreenMethods, 128 | |
GreenMethods: | |
.quad .LC49 | |
.quad mod_getcurrent | |
.long 4 | |
.zero 4 | |
.quad 0 | |
.quad .LC50 | |
.quad mod_settrace | |
.long 1 | |
.zero 4 | |
.quad 0 | |
.quad .LC51 | |
.quad mod_gettrace | |
.long 4 | |
.zero 4 | |
.quad 0 | |
.quad 0 | |
.quad 0 | |
.zero 16 | |
.globl PyGreenlet_Type | |
.section .rodata.str1.1 | |
.LC52: | |
.string "greenlet.greenlet" | |
.section .rodata.str1.8 | |
.align 8 | |
.LC53: | |
.string "greenlet(run=None, parent=None) -> greenlet\n\nCreates a new greenlet object (without running it).\n\n - *run* -- The callable to invoke.\n - *parent* -- The parent greenlet. The default is the current greenlet." | |
.section .data.rel,"aw",@progbits | |
.align 32 | |
.type PyGreenlet_Type, @object | |
.size PyGreenlet_Type, 392 | |
PyGreenlet_Type: | |
.quad 1 | |
.quad 0 | |
.quad 0 | |
.quad .LC52 | |
.quad 128 | |
.quad 0 | |
.quad green_dealloc | |
.quad 0 | |
.quad 0 | |
.quad 0 | |
.quad 0 | |
.quad 0 | |
.quad green_as_number | |
.quad 0 | |
.quad 0 | |
.quad 0 | |
.quad 0 | |
.quad 0 | |
.quad 0 | |
.quad 0 | |
.quad 0 | |
.quad 148971 | |
.quad .LC53 | |
.quad green_traverse | |
.quad green_clear | |
.quad 0 | |
.quad 88 | |
.quad 0 | |
.quad 0 | |
.quad green_methods | |
.quad 0 | |
.quad green_getsets | |
.quad 0 | |
.quad 0 | |
.quad 0 | |
.quad 0 | |
.quad 120 | |
.quad green_init | |
.quad PyType_GenericAlloc | |
.quad green_new | |
.quad PyObject_GC_Del | |
.quad green_is_gc | |
.zero 56 | |
.section .data.rel.local | |
.align 32 | |
.type green_as_number, @object | |
.size green_as_number, 312 | |
green_as_number: | |
.quad 0 | |
.quad 0 | |
.quad 0 | |
.quad 0 | |
.quad 0 | |
.quad 0 | |
.quad 0 | |
.quad 0 | |
.quad 0 | |
.quad 0 | |
.quad green_bool | |
.zero 224 | |
.section .rodata.str1.1 | |
.LC54: | |
.string "__dict__" | |
.LC55: | |
.string "gr_frame" | |
.LC56: | |
.string "dead" | |
.section .data.rel.local | |
.align 32 | |
.type green_getsets, @object | |
.size green_getsets, 240 | |
green_getsets: | |
.quad .LC54 | |
.quad green_getdict | |
.quad green_setdict | |
.quad 0 | |
.zero 8 | |
.quad .LC12 | |
.quad green_getrun | |
.quad green_setrun | |
.quad 0 | |
.zero 8 | |
.quad .LC48 | |
.quad green_getparent | |
.quad green_setparent | |
.quad 0 | |
.zero 8 | |
.quad .LC55 | |
.quad green_getframe | |
.quad 0 | |
.quad 0 | |
.zero 8 | |
.quad .LC56 | |
.quad green_getdead | |
.quad 0 | |
.quad 0 | |
.zero 8 | |
.quad 0 | |
.zero 32 | |
.section .rodata.str1.1 | |
.LC57: | |
.string "__getstate__" | |
.section .data.rel.local | |
.align 32 | |
.type green_methods, @object | |
.size green_methods, 128 | |
green_methods: | |
.quad .LC38 | |
.quad green_switch | |
.long 3 | |
.zero 4 | |
.quad green_switch_doc | |
.quad .LC39 | |
.quad green_throw | |
.long 1 | |
.zero 4 | |
.quad green_throw_doc | |
.quad .LC57 | |
.quad green_getstate | |
.long 4 | |
.zero 4 | |
.quad 0 | |
.quad 0 | |
.quad 0 | |
.zero 16 | |
.data | |
.align 32 | |
.type green_throw_doc, @object | |
.size green_throw_doc, 563 | |
green_throw_doc: | |
.ascii "Switches execution to the greenlet ``g``, but immediately ra" | |
.ascii "ises the\ngiven exception in ``g``. If no argument is provi" | |
.ascii "ded, the exception\ndefaults to ``greenlet.GreenletExit``. " | |
.ascii "The normal exception\npropagation rules apply, as described " | |
.ascii "above. Note that calling this\nmethod is almost equivalent " | |
.ascii "to the fol" | |
.string "lowing::\n\n def raiser():\n raise typ, val, tb\n g_raiser = greenlet(raiser, parent=g)\n g_raiser.switch()\n\nexcept that this trick does not work for the\n``greenlet.GreenletExit`` exception, which would not propagate\nfrom ``g_raiser`` to ``g``.\n" | |
.align 32 | |
.type green_switch_doc, @object | |
.size green_switch_doc, 651 | |
green_switch_doc: | |
.ascii "switch(*args, **kwargs)\n\nSwitch execution to this greenlet" | |
.ascii ".\n\nIf this greenlet has never been run, then this greenlet" | |
.ascii "\nwill be switched to using the body of self.run(*args, **kw" | |
.ascii "args).\n\nIf the greenlet is active (has been run, but was s" | |
.ascii "witch()'ed\nout before leaving its run function), then this " | |
.ascii "greenlet will\nbe resumed and the return value to its switch" | |
.ascii " call will be\nNone if no arguments are give" | |
.string "n, the given argument if one\nargument is given, or the args tuple and keyword args dict if\nmultiple arguments are given.\n\nIf the greenlet is dead, or is the current greenlet then this\nfunction will simply return the arguments using the same rules as\nabove." | |
.local PyExc_GreenletExit | |
.comm PyExc_GreenletExit,8,8 | |
.local PyExc_GreenletError | |
.comm PyExc_GreenletError,8,8 | |
.local ts_event_throw | |
.comm ts_event_throw,8,8 | |
.local ts_event_switch | |
.comm ts_event_switch,8,8 | |
.local ts_tracekey | |
.comm ts_tracekey,8,8 | |
.local ts_delkey | |
.comm ts_delkey,8,8 | |
.local ts_curkey | |
.comm ts_curkey,8,8 | |
.local ts_passaround_kwargs | |
.comm ts_passaround_kwargs,8,8 | |
.local ts_passaround_args | |
.comm ts_passaround_args,8,8 | |
.local ts_current | |
.comm ts_current,8,8 | |
.local ts_origin | |
.comm ts_origin,8,8 | |
.local ts_target | |
.comm ts_target,8,8 | |
.ident "GCC: (Gentoo 4.8.0 p1.1, pie-0.5.5) 4.8.0" | |
.section .note.GNU-stack,"",@progbits |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment