Skip to content

Instantly share code, notes, and snippets.

@ViktorStiskala
Created April 15, 2013 17:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ViktorStiskala/5389807 to your computer and use it in GitHub Desktop.
Save ViktorStiskala/5389807 to your computer and use it in GitHub Desktop.
.file "greenlet.c"
.text
.p2align 4,,15
.type green_is_gc, @function
green_is_gc:
.LFB142:
.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
.LFE142:
.size green_is_gc, .-green_is_gc
.p2align 4,,15
.type green_clear, @function
green_clear:
.LFB143:
.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
.LFE143:
.size green_clear, .-green_clear
.p2align 4,,15
.type single_result, @function
single_result:
.LFB145:
.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
.LFE145:
.size single_result, .-single_result
.p2align 4,,15
.type green_bool, @function
green_bool:
.LFB149:
.cfi_startproc
xorl %eax, %eax
cmpq $0, 16(%rdi)
setne %al
ret
.cfi_endproc
.LFE149:
.size green_bool, .-green_bool
.p2align 4,,15
.type green_getdead, @function
green_getdead:
.LFB152:
.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
.LFE152:
.size green_getdead, .-green_getdead
.p2align 4,,15
.type green_getparent, @function
green_getparent:
.LFB155:
.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
.LFE155:
.size green_getparent, .-green_getparent
.p2align 4,,15
.type green_getframe, @function
green_getframe:
.LFB157:
.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
.LFE157:
.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:
.LFB156:
.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
.LFE156:
.size green_setparent, .-green_setparent
.p2align 4,,15
.type green_getdict, @function
green_getdict:
.LFB150:
.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
.LFE150:
.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:
.LFB158:
.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
.LFE158:
.size green_getstate, .-green_getstate
.p2align 4,,15
.type g_handle_exit, @function
g_handle_exit:
.LFB136:
.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
.LFE136:
.size g_handle_exit, .-g_handle_exit
.p2align 4,,15
.type g_save, @function
g_save:
.LFB129:
.cfi_startproc
pushq %r14
.cfi_def_cfa_offset 16
.cfi_offset 14, -16
pushq %r13
.cfi_def_cfa_offset 24
.cfi_offset 13, -24
xorl %r13d, %r13d
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 %rsi, %rbx
subq 16(%rdi), %rbx
movq 40(%rdi), %r12
cmpq %rbx, %r12
jl .L109
.L105:
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
.L109:
.cfi_restore_state
movq 32(%rdi), %rdi
movq %rbx, %rsi
call PyMem_Realloc@PLT
testq %rax, %rax
movq %rax, %r14
je .L110
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
.L110:
.cfi_restore_state
call PyErr_NoMemory@PLT
movl $-1, %r13d
jmp .L105
.cfi_endproc
.LFE129:
.size g_save, .-g_save
.p2align 4,,15
.type slp_save_state, @function
slp_save_state:
.LFB131:
.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, 16(%rbx)
movq 24(%rax), %rbp
je .L121
movq %rdi, 16(%rbx)
jmp .L120
.p2align 4,,10
.p2align 3
.L116:
movq %rbx, %rdi
call g_save
testl %eax, %eax
jne .L117
.L121:
movq 48(%rbx), %rbx
.L120:
movq 24(%rbx), %rsi
cmpq %rsi, %rbp
ja .L116
movq ts_target(%rip), %rdx
xorl %eax, %eax
cmpq %rdx, %rbx
je .L115
movq %rbp, %rsi
movq %rbx, %rdi
call g_save
testl %eax, %eax
setne %al
movzbl %al, %eax
negl %eax
.L115:
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
.L117:
.cfi_restore_state
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
.LFE131:
.size slp_save_state, .-slp_save_state
.p2align 4,,15
.type slp_restore_state, @function
slp_restore_state:
.LFB130:
.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 .L138
cmpq $0, 16(%rbx)
je .L139
.L124:
movq 24(%rbp), %rax
jmp .L137
.p2align 4,,10
.p2align 3
.L140:
movq 48(%rbx), %rbx
testq %rbx, %rbx
je .L125
.L137:
cmpq %rax, 24(%rbx)
jbe .L140
.L125:
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
.L138:
.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 .L124
.L139:
movq 48(%rbx), %rbx
testq %rbx, %rbx
jne .L124
jmp .L125
.cfi_endproc
.LFE130:
.size slp_restore_state, .-slp_restore_state
.p2align 4,,15
.type slp_switch, @function
slp_switch:
.LFB132:
.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 .L143
movq ts_target(%rip), %rax
cmpq $0, 16(%rax)
je .L144
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
.L142:
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
.L144:
.cfi_restore_state
movl $1, %ebx
jmp .L142
.p2align 4,,10
.p2align 3
.L143:
movl $-1, %ebx
jmp .L142
.cfi_endproc
.LFE132:
.size slp_switch, .-slp_switch
.p2align 4,,15
.type g_switchstack, @function
g_switchstack:
.LFB133:
.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 .L150
movq ts_target(%rip), %rdx
movq (%rbx), %rcx
movq ts_current(%rip), %rsi
movl 80(%rdx), %edi
movq %rdx, ts_current(%rip)
movq %rsi, ts_origin(%rip)
movq $0, ts_target(%rip)
movl %edi, 24(%rcx)
movq 72(%rdx), %rdi
movq %rdi, 16(%rcx)
movq 96(%rdx), %rdi
movq $0, 72(%rdx)
movq %rdi, 96(%rcx)
movq 104(%rdx), %rdi
movq $0, 96(%rdx)
movq %rdi, 104(%rcx)
movq 112(%rdx), %rdi
movq $0, 104(%rdx)
movq %rdi, 112(%rcx)
addq $1, (%rdx)
movq $0, 112(%rdx)
popq %rbx
.cfi_remember_state
.cfi_def_cfa_offset 8
ret
.p2align 4,,10
.p2align 3
.L150:
.cfi_restore_state
movq ts_current(%rip), %rdx
movq $0, ts_target(%rip)
movq $0, 72(%rdx)
movq $0, 96(%rdx)
movq $0, 104(%rdx)
movq $0, 112(%rdx)
popq %rbx
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE133:
.size g_switchstack, .-g_switchstack
.section .rodata.str1.1
.LC6:
.string "O(OO)"
.text
.p2align 4,,15
.type g_calltrace, @function
g_calltrace:
.LFB134:
.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 .L173
.L152:
testq %rax, %rax
movl %ecx, 32(%rbx)
je .L174
movq (%rax), %rsi
leaq -1(%rsi), %rdx
testq %rdx, %rdx
movq %rdx, (%rax)
je .L175
.L166:
movq 24(%rsp), %rdx
movq 16(%rsp), %rsi
movq 8(%rsp), %rdi
call PyErr_Restore@PLT
xorl %eax, %eax
.L164:
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
.L175:
.cfi_restore_state
movq 8(%rax), %rdx
movq %rax, %rdi
call *48(%rdx)
jmp .L166
.p2align 4,,10
.p2align 3
.L173:
cmpq $0, 48(%rbx)
je .L153
.L154:
movl $1, %ecx
jmp .L152
.p2align 4,,10
.p2align 3
.L174:
movq 120(%rbx), %rdi
movq ts_tracekey(%rip), %rsi
call PyDict_GetItem@PLT
testq %rax, %rax
je .L156
movq 120(%rbx), %rdi
movq ts_tracekey(%rip), %rsi
call PyDict_DelItem@PLT
.L156:
movq 8(%rsp), %rdi
testq %rdi, %rdi
je .L158
subq $1, (%rdi)
je .L176
.L158:
movq 16(%rsp), %rdi
testq %rdi, %rdi
je .L161
subq $1, (%rdi)
je .L177
.L161:
movq 24(%rsp), %rdi
testq %rdi, %rdi
je .L172
subq $1, (%rdi)
je .L178
.L172:
movl $-1, %eax
jmp .L164
.p2align 4,,10
.p2align 3
.L178:
movq 8(%rdi), %rax
call *48(%rax)
jmp .L172
.p2align 4,,10
.p2align 3
.L177:
movq 8(%rdi), %rax
call *48(%rax)
.p2align 4,,6
jmp .L161
.p2align 4,,10
.p2align 3
.L176:
movq 8(%rdi), %rax
call *48(%rax)
.p2align 4,,6
jmp .L158
.p2align 4,,10
.p2align 3
.L153:
cmpq $0, 40(%rbx)
jne .L154
.p2align 4,,6
jmp .L152
.cfi_endproc
.LFE134:
.size g_calltrace, .-g_calltrace
.p2align 4,,15
.type green_traverse, @function
green_traverse:
.LFB141:
.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 .L184
movq %rdx, %rsi
call *%rbp
testl %eax, %eax
jne .L183
.L184:
movq 64(%rbx), %rdi
testq %rdi, %rdi
je .L182
movq %r12, %rsi
call *%rbp
testl %eax, %eax
jne .L183
.L182:
movq 96(%rbx), %rdi
testq %rdi, %rdi
je .L186
movq %r12, %rsi
call *%rbp
testl %eax, %eax
jne .L183
.L186:
movq 104(%rbx), %rdi
testq %rdi, %rdi
je .L188
movq %r12, %rsi
call *%rbp
testl %eax, %eax
jne .L183
.L188:
movq 112(%rbx), %rdi
testq %rdi, %rdi
je .L190
movq %r12, %rsi
call *%rbp
testl %eax, %eax
jne .L183
.L190:
movq 120(%rbx), %rdi
xorl %eax, %eax
testq %rdi, %rdi
je .L183
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
.L183:
.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
.LFE141:
.size green_traverse, .-green_traverse
.p2align 4,,15
.type green_create_main, @function
green_create_main:
.LFB126:
.cfi_startproc
pushq %rbx
.cfi_def_cfa_offset 16
.cfi_offset 3, -16
call PyThreadState_GetDict@PLT
testq %rax, %rax
movq %rax, %rbx
je .L205
movq PyGreenlet_Type@GOTPCREL(%rip), %rdi
xorl %esi, %esi
call PyType_GenericAlloc@PLT
testq %rax, %rax
je .L203
movq %rbx, 64(%rax)
movq $1, 16(%rax)
movq $-1, 24(%rax)
addq $1, (%rbx)
movq %rax, %rbx
.L201:
movq %rbx, %rax
popq %rbx
.cfi_remember_state
.cfi_def_cfa_offset 8
ret
.p2align 4,,10
.p2align 3
.L205:
.cfi_restore_state
call PyErr_Occurred@PLT
testq %rax, %rax
jne .L201
.p2align 4,,5
call PyErr_NoMemory@PLT
.p2align 4,,5
jmp .L201
.p2align 4,,10
.p2align 3
.L203:
xorl %ebx, %ebx
jmp .L201
.cfi_endproc
.LFE126:
.size green_create_main, .-green_create_main
.p2align 4,,15
.type green_updatecurrent, @function
green_updatecurrent:
.LFB127:
.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)
.L207:
.L233:
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 .L208
movq ts_curkey(%rip), %rsi
call PyDict_GetItem@PLT
testq %rax, %rax
movq %rax, %rbx
je .L208
addq $1, (%rax)
movq 120(%rbp), %rdi
movq ts_curkey(%rip), %rsi
call PyDict_DelItem@PLT
jmp .L210
.p2align 4,,10
.p2align 3
.L229:
movq 120(%rbp), %rdi
movq ts_delkey(%rip), %rsi
call PyDict_GetItem@PLT
testq %rax, %rax
je .L230
xorl %ecx, %ecx
movl $2147483647, %edx
xorl %esi, %esi
movq %rax, %rdi
call PyList_SetSlice@PLT
.L230:
movq ts_current(%rip), %rax
cmpq %rax, %rbx
je .L231
movq 120(%rbp), %rdi
movq ts_curkey(%rip), %rsi
call PyDict_DelItem@PLT
.L210:
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 .L255
testq %rax, %rax
jne .L229
movq 8(%r13), %rax
movq %r13, %rdi
call *48(%rax)
jmp .L229
.p2align 4,,10
.p2align 3
.L255:
testq %rax, %rax
je .L256
.L221:
subq $1, (%rbx)
.p2align 4,,4
je .L257
.L222:
movq 24(%rsp), %rdi
testq %rdi, %rdi
je .L224
subq $1, (%rdi)
je .L258
.L224:
movq 32(%rsp), %rdi
testq %rdi, %rdi
je .L227
subq $1, (%rdi)
je .L259
.L227:
movq 40(%rsp), %rdi
testq %rdi, %rdi
je .L247
subq $1, (%rdi)
je .L260
.L247:
movl $-1, %r12d
.L218:
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
.L231:
.cfi_restore_state
subq $1, (%rbx)
je .L261
.L232:
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 .L233
jmp .L218
.L209:
.p2align 4,,10
.p2align 3
.L208:
call green_create_main
testq %rax, %rax
movq %rax, %rbx
.p2align 4,,2
jne .L210
.p2align 4,,2
jmp .L222
.p2align 4,,10
.p2align 3
.L260:
movq 8(%rdi), %rax
call *48(%rax)
.p2align 4,,6
jmp .L247
.p2align 4,,10
.p2align 3
.L257:
movq 8(%rbx), %rax
movq %rbx, %rdi
call *48(%rax)
.p2align 4,,3
jmp .L222
.p2align 4,,10
.p2align 3
.L256:
movq 8(%r13), %rax
movq %r13, %rdi
call *48(%rax)
.p2align 4,,3
jmp .L221
.p2align 4,,10
.p2align 3
.L261:
movq 8(%rbx), %rax
movq %rbx, %rdi
call *48(%rax)
.p2align 4,,3
jmp .L232
.p2align 4,,10
.p2align 3
.L259:
movq 8(%rdi), %rax
call *48(%rax)
.p2align 4,,6
jmp .L227
.p2align 4,,10
.p2align 3
.L258:
movq 8(%rdi), %rax
call *48(%rax)
.p2align 4,,6
jmp .L224
.cfi_endproc
.LFE127:
.size green_updatecurrent, .-green_updatecurrent
.p2align 4,,15
.type green_new, @function
green_new:
.LFB138:
.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 .L266
call green_updatecurrent
testl %eax, %eax
jne .L269
.L266:
xorl %esi, %esi
movq %rbx, %rdi
call *304(%rbx)
testq %rax, %rax
je .L265
movq ts_current(%rip), %rdx
addq $1, (%rdx)
movq ts_current(%rip), %rdx
movq %rdx, 56(%rax)
.L265:
popq %rbx
.cfi_remember_state
.cfi_def_cfa_offset 8
ret
.p2align 4,,10
.p2align 3
.L269:
.cfi_restore_state
xorl %eax, %eax
popq %rbx
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE138:
.size green_new, .-green_new
.p2align 4,,15
.type PyGreenlet_GetCurrent, @function
PyGreenlet_GetCurrent:
.LFB159:
.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 .L273
call green_updatecurrent
testl %eax, %eax
jne .L278
.L273:
movq ts_current(%rip), %rax
addq $1, (%rax)
movq ts_current(%rip), %rax
.L272:
addq $8, %rsp
.cfi_remember_state
.cfi_def_cfa_offset 8
ret
.p2align 4,,10
.p2align 3
.L278:
.cfi_restore_state
xorl %eax, %eax
jmp .L272
.cfi_endproc
.LFE159:
.size PyGreenlet_GetCurrent, .-PyGreenlet_GetCurrent
.p2align 4,,15
.type mod_gettrace, @function
mod_gettrace:
.LFB166:
.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 .L283
call green_updatecurrent
testl %eax, %eax
jne .L287
.L283:
movq ts_current(%rip), %rax
movq ts_tracekey(%rip), %rsi
movq 64(%rax), %rdi
call PyDict_GetItem@PLT
testq %rax, %rax
je .L288
.L281:
addq $1, (%rax)
.L282:
addq $8, %rsp
.cfi_remember_state
.cfi_def_cfa_offset 8
ret
.p2align 4,,10
.p2align 3
.L288:
.cfi_restore_state
movq _Py_NoneStruct@GOTPCREL(%rip), %rax
jmp .L281
.p2align 4,,10
.p2align 3
.L287:
xorl %eax, %eax
jmp .L282
.cfi_endproc
.LFE166:
.size mod_gettrace, .-mod_gettrace
.p2align 4,,15
.type mod_getcurrent, @function
mod_getcurrent:
.LFB164:
.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 .L292
call green_updatecurrent
testl %eax, %eax
jne .L297
.L292:
movq ts_current(%rip), %rax
addq $1, (%rax)
movq ts_current(%rip), %rax
.L291:
addq $8, %rsp
.cfi_remember_state
.cfi_def_cfa_offset 8
ret
.p2align 4,,10
.p2align 3
.L297:
.cfi_restore_state
xorl %eax, %eax
jmp .L291
.cfi_endproc
.LFE164:
.size mod_getcurrent, .-mod_getcurrent
.section .rodata.str1.1
.LC7:
.string "O"
.text
.p2align 4,,15
.type mod_settrace, @function
mod_settrace:
.LFB165:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsi, %rdi
leaq .LC7(%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 .L313
movq _PyThreadState_Current@GOTPCREL(%rip), %rax
movq ts_current(%rip), %rdx
movq (%rax), %rax
movq 120(%rax), %rax
cmpq %rax, 64(%rdx)
je .L305
call green_updatecurrent
testl %eax, %eax
jne .L313
.L305:
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 .L314
addq $1, (%rax)
movq 8(%rsp), %rdx
movq _Py_NoneStruct@GOTPCREL(%rip), %rax
cmpq %rax, %rdx
je .L315
.L306:
movq 64(%rbp), %rdi
movq ts_tracekey(%rip), %rsi
call PyDict_SetItem@PLT
.L308:
testl %eax, %eax
js .L309
movq %rbx, %rax
jmp .L310
.p2align 4,,10
.p2align 3
.L309:
subq $1, (%rbx)
jne .L313
movq 8(%rbx), %rax
movq %rbx, %rdi
call *48(%rax)
.p2align 4,,10
.p2align 3
.L313:
xorl %eax, %eax
.L310:
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
.L315:
.cfi_restore_state
cmpq %rdx, %rbx
je .L310
movq 64(%rbp), %rdi
movq ts_tracekey(%rip), %rsi
call PyDict_DelItem@PLT
jmp .L308
.L314:
movq _Py_NoneStruct@GOTPCREL(%rip), %rax
movq 8(%rsp), %rdx
addq $1, (%rax)
cmpq %rax, %rdx
je .L310
movq %rax, %rbx
jmp .L306
.cfi_endproc
.LFE165:
.size mod_settrace, .-mod_settrace
.section .rodata.str1.8
.align 8
.LC8:
.string "cannot switch to a different thread"
.align 8
.LC9:
.string "cannot switch to a garbage collected greenlet"
.text
.p2align 4,,15
.type g_switch, @function
g_switch:
.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
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 .L317
call green_updatecurrent
testl %eax, %eax
je .L317
testq %r12, %r12
.p2align 4,,3
je .L319
subq $1, (%r12)
je .L387
.L319:
testq %rbp, %rbp
je .L348
subq $1, 0(%rbp)
je .L388
.L348:
xorl %eax, %eax
.L378:
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
.L317:
.cfi_restore_state
movq %rbx, %rax
jmp .L324
.p2align 4,,10
.p2align 3
.L326:
movq 56(%rax), %rax
testq %rax, %rax
je .L363
.L324:
cmpq $0, 24(%rax)
je .L326
movq 64(%rax), %r13
testq %r13, %r13
je .L325
movq ts_current(%rip), %rax
cmpq %r13, 64(%rax)
jne .L325
testq %rbx, %rbx
movq %r12, ts_passaround_args(%rip)
movq %rbp, ts_passaround_kwargs(%rip)
je .L335
cmpq $0, 16(%rbx)
leaq 24(%rsp), %rbp
je .L338
jmp .L336
.p2align 4,,10
.p2align 3
.L340:
movq 56(%rbx), %rbx
testq %rbx, %rbx
je .L335
.L342:
cmpq $0, 16(%rbx)
jne .L336
.L338:
cmpq $0, 24(%rbx)
jne .L340
movq %rbp, %rdi
movq %rbx, ts_target(%rip)
call g_initialstub
cmpl $1, %eax
je .L342
.L339:
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 .L343
testq %rbx, %rbx
je .L345
subq $1, (%rbx)
je .L389
.L345:
testq %rbp, %rbp
je .L348
subq $1, 0(%rbp)
jne .L348
movq 8(%rbp), %rax
movq %rbp, %rdi
call *48(%rax)
jmp .L348
.p2align 4,,10
.p2align 3
.L335:
movq ts_passaround_args(%rip), %rbp
movq $0, ts_passaround_args(%rip)
movq ts_passaround_kwargs(%rip), %rbx
movq $0, ts_passaround_kwargs(%rip)
.L343:
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 .L349
addq $1, (%rax)
testq %rbp, %rbp
je .L350
movq ts_event_switch(%rip), %rsi
.L351:
movq %r14, %rcx
movq %r13, %rdx
movq %r12, %rdi
call g_calltrace
testl %eax, %eax
js .L390
.L352:
subq $1, (%r12)
jne .L349
movq 8(%r12), %rax
movq %r12, %rdi
call *48(%rax)
.L349:
subq $1, 0(%r13)
je .L391
.L358:
testq %rbx, %rbx
je .L365
movq %rbx, %rdi
call PyDict_Size@PLT
testq %rax, %rax
jne .L359
movq (%rbx), %rax
leaq -1(%rax), %rdx
movq %rbp, %rax
testq %rdx, %rdx
movq %rdx, (%rbx)
jne .L378
movq 8(%rbx), %rdx
movq %rbp, 8(%rsp)
movq %rbx, %rdi
call *48(%rdx)
movq 8(%rsp), %rax
jmp .L378
.p2align 4,,10
.p2align 3
.L363:
xorl %r13d, %r13d
.L325:
testq %r12, %r12
je .L329
subq $1, (%r12)
je .L392
.L329:
testq %rbp, %rbp
je .L332
subq $1, 0(%rbp)
je .L393
.L332:
leaq .LC9(%rip), %rax
leaq .LC8(%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
.L388:
.cfi_restore_state
movq 8(%rbp), %rax
movq %rbp, %rdi
call *48(%rax)
xorl %eax, %eax
jmp .L378
.L392:
movq 8(%r12), %rax
movq %r12, %rdi
call *48(%rax)
jmp .L329
.L393:
movq 8(%rbp), %rax
movq %rbp, %rdi
call *48(%rax)
.p2align 4,,3
jmp .L332
.L391:
movq 8(%r13), %rax
movq %r13, %rdi
call *48(%rax)
.p2align 4,,3
jmp .L358
.p2align 4,,10
.p2align 3
.L336:
movq %rbx, ts_target(%rip)
call g_switchstack
jmp .L339
.p2align 4,,10
.p2align 3
.L359:
movq %rbp, %rdi
call PySequence_Size@PLT
testq %rax, %rax
.p2align 4,,2
jne .L360
movq 0(%rbp), %rax
leaq -1(%rax), %rdx
movq %rbx, %rax
testq %rdx, %rdx
movq %rdx, 0(%rbp)
jne .L378
movq 8(%rbp), %rdx
movq %rbx, 8(%rsp)
movq %rbp, %rdi
call *48(%rdx)
movq 8(%rsp), %rax
jmp .L378
.p2align 4,,10
.p2align 3
.L387:
movq 8(%r12), %rax
movq %r12, %rdi
call *48(%rax)
jmp .L319
.L390:
testq %rbx, %rbx
je .L354
subq $1, (%rbx)
.p2align 4,,4
je .L394
.L354:
testq %rbp, %rbp
je .L386
subq $1, 0(%rbp)
je .L395
.L386:
xorl %ebx, %ebx
xorl %ebp, %ebp
jmp .L352
.L389:
movq 8(%rbx), %rax
movq %rbx, %rdi
call *48(%rax)
jmp .L345
.L360:
movl $2, %edi
call PyTuple_New@PLT
testq %rax, %rax
je .L396
movq %rbp, 24(%rax)
movq %rbx, 32(%rax)
jmp .L378
.L350:
movq ts_event_throw(%rip), %rsi
jmp .L351
.L394:
movq 8(%rbx), %rax
movq %rbx, %rdi
call *48(%rax)
jmp .L354
.L395:
movq 8(%rbp), %rax
movq %rbp, %rdi
call *48(%rax)
.p2align 4,,3
jmp .L386
.L396:
subq $1, 0(%rbp)
jne .L362
movq 8(%rbp), %rax
movq %rbp, %rdi
call *48(%rax)
.L362:
subq $1, (%rbx)
jne .L348
movq 8(%rbx), %rax
movq %rbx, %rdi
call *48(%rax)
xorl %eax, %eax
jmp .L378
.L365:
movq %rbp, %rax
jmp .L378
.cfi_endproc
.LFE135:
.size g_switch, .-g_switch
.section .rodata.str1.1
.LC10:
.string "run"
.LC11:
.string "greenlets cannot continue"
.text
.p2align 4,,15
.type g_initialstub, @function
g_initialstub:
.LFB137:
.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 .LC10(%rip), %rsi
movq %rbx, %rdi
call PyObject_GetAttrString@PLT
testq %rax, %rax
movq %rax, %r15
je .L468
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 .L408
call green_updatecurrent
testl %eax, %eax
je .L408
subq $1, (%r15)
.p2align 4,,2
je .L469
.L467:
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
.L408:
.cfi_restore_state
movq %rbx, %r8
jmp .L409
.p2align 4,,10
.p2align 3
.L411:
movq 56(%r8), %r8
testq %r8, %r8
je .L440
.L409:
cmpq $0, 24(%r8)
je .L411
movq 64(%r8), %rax
testq %rax, %rax
je .L410
movq ts_current(%rip), %rdx
cmpq %rax, 64(%rdx)
jne .L410
cmpq $0, 24(%rbx)
je .L415
subq $1, (%r15)
je .L470
.L416:
movq %rbp, ts_passaround_args(%rip)
movl $1, %eax
movq %r13, ts_passaround_kwargs(%rip)
.L406:
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
.L468:
.cfi_restore_state
movq 24(%rsp), %rdi
testq %rdi, %rdi
je .L400
subq $1, (%rdi)
je .L471
.L400:
movq 32(%rsp), %rdi
testq %rdi, %rdi
je .L403
subq $1, (%rdi)
je .L472
.L403:
movq 40(%rsp), %rdi
testq %rdi, %rdi
je .L467
subq $1, (%rdi)
jne .L467
movq 8(%rdi), %rax
call *48(%rax)
.p2align 4,,2
jmp .L467
.p2align 4,,10
.p2align 3
.L440:
xorl %eax, %eax
.L410:
movq (%r15), %rcx
leaq -1(%rcx), %rdx
testq %rdx, %rdx
movq %rdx, (%r15)
je .L473
.L413:
testq %rax, %rax
leaq .LC8(%rip), %rsi
leaq .LC9(%rip), %rax
movq PyExc_GreenletError(%rip), %rdi
cmove %rax, %rsi
call PyErr_SetString@PLT
movl $-1, %eax
jmp .L406
.p2align 4,,10
.p2align 3
.L470:
movq 8(%r15), %rax
movq %r15, %rdi
call *48(%rax)
jmp .L416
.p2align 4,,10
.p2align 3
.L472:
movq 8(%rdi), %rax
call *48(%rax)
.p2align 4,,6
jmp .L403
.p2align 4,,10
.p2align 3
.L471:
movq 8(%rdi), %rax
call *48(%rax)
.p2align 4,,6
jmp .L400
.p2align 4,,10
.p2align 3
.L469:
movq 8(%r15), %rax
movq %r15, %rdi
call *48(%rax)
movl $-1, %eax
jmp .L406
.p2align 4,,10
.p2align 3
.L415:
movq ts_current(%rip), %rax
movq $0, 16(%rbx)
movq %r14, 24(%rbx)
cmpq $0, 16(%rax)
movq ts_current(%rip), %rax
je .L474
movq %rax, 48(%rbx)
.L418:
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 .L475
testl %eax, %eax
jns .L406
movq $0, 16(%rbx)
movq $0, 24(%rbx)
movq $0, 48(%rbx)
jmp .L406
.L473:
movq 8(%r15), %rdx
movq %rax, 8(%rsp)
movq %r15, %rdi
call *48(%rdx)
movq 8(%rsp), %rax
jmp .L413
.L474:
movq 48(%rax), %rax
movq %rax, 48(%rbx)
jmp .L418
.L475:
movq ts_origin(%rip), %r12
movq $1, 16(%rbx)
movq $0, ts_origin(%rip)
movq 64(%rbx), %rdx
movq 56(%rbx), %rax
jmp .L420
.p2align 4,,10
.p2align 3
.L422:
movq 56(%rax), %rax
testq %rax, %rax
je .L442
.L420:
cmpq $0, 24(%rax)
je .L422
movq 64(%rax), %rdi
.L421:
movq %rdi, 64(%rbx)
addq $1, (%rdi)
testq %rdx, %rdx
je .L423
subq $1, (%rdx)
je .L476
.L423:
movq ts_tracekey(%rip), %rsi
call PyDict_GetItem@PLT
testq %rax, %rax
movq %rax, %r14
je .L424
addq $1, (%rax)
testq %rbp, %rbp
je .L425
movq ts_event_switch(%rip), %rsi
.L426:
movq %rbx, %rcx
movq %r12, %rdx
movq %r14, %rdi
call g_calltrace
testl %eax, %eax
js .L477
.L427:
subq $1, (%r14)
je .L478
.L424:
subq $1, (%r12)
je .L479
.L433:
xorl %r12d, %r12d
testq %rbp, %rbp
je .L434
movq %r13, %rdx
movq %rbp, %rsi
movq %r15, %rdi
call PyEval_CallObjectWithKeywords@PLT
subq $1, 0(%rbp)
movq %rax, %r12
je .L480
.L435:
testq %r13, %r13
je .L434
subq $1, 0(%r13)
je .L481
.L434:
movq (%r15), %rax
leaq -1(%rax), %rdx
testq %rdx, %rdx
movq %rdx, (%r15)
je .L482
.L436:
movq %r12, %rdi
call g_handle_exit
movq 56(%rbx), %rbp
movq $0, 16(%rbx)
testq %rbp, %rbp
je .L438
.p2align 4,,10
.p2align 3
.L457:
xorl %edx, %edx
movq %rbp, %rdi
movq %rax, %rsi
call g_switch
movq 56(%rbp), %rbp
testq %rbp, %rbp
jne .L457
.L438:
movq %rbx, %rdi
call PyErr_WriteUnraisable@PLT
leaq .LC11(%rip), %rdi
call Py_FatalError@PLT
movl $1, %eax
jmp .L406
.L442:
xorl %edi, %edi
jmp .L421
.L482:
movq 8(%r15), %rax
movq %r15, %rdi
call *48(%rax)
jmp .L436
.L479:
movq 8(%r12), %rax
movq %r12, %rdi
call *48(%rax)
.p2align 4,,2
jmp .L433
.L477:
testq %r13, %r13
je .L429
subq $1, 0(%r13)
.p2align 4,,3
jne .L429
movq 8(%r13), %rax
movq %r13, %rdi
call *48(%rax)
.L429:
testq %rbp, %rbp
je .L466
subq $1, 0(%rbp)
jne .L466
movq 8(%rbp), %rax
movq %rbp, %rdi
call *48(%rax)
.L466:
xorl %r13d, %r13d
xorl %ebp, %ebp
jmp .L427
.L476:
movq 8(%rdx), %rax
movq %rdx, %rdi
call *48(%rax)
movq 64(%rbx), %rdi
jmp .L423
.L478:
movq 8(%r14), %rax
movq %r14, %rdi
call *48(%rax)
jmp .L424
.L480:
movq 8(%rbp), %rax
movq %rbp, %rdi
call *48(%rax)
.p2align 4,,3
jmp .L435
.L481:
movq 8(%r13), %rax
movq %r13, %rdi
call *48(%rax)
.p2align 4,,3
jmp .L434
.L425:
movq ts_event_throw(%rip), %rsi
jmp .L426
.cfi_endproc
.LFE137:
.size g_initialstub, .-g_initialstub
.p2align 4,,15
.type throw_greenlet, @function
throw_greenlet:
.LFB146:
.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 .L484
cmpq $0, 16(%rbx)
je .L488
.L484:
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
.L488:
.cfi_restore_state
xorl %edi, %edi
call g_handle_exit
movq %rax, %rsi
jmp .L484
.cfi_endproc
.LFE146:
.size throw_greenlet, .-throw_greenlet
.section .rodata.str1.1
.LC12:
.string "|OOO:throw"
.section .rodata.str1.8
.align 8
.LC13:
.string "throw() third argument must be a traceback object"
.align 8
.LC14:
.string "instance exception may not have a separate value"
.align 8
.LC15:
.string "exceptions must be classes, or instances, not %s"
.text
.p2align 4,,15
.type green_throw, @function
green_throw:
.LFB148:
.cfi_startproc
pushq %r13
.cfi_def_cfa_offset 16
.cfi_offset 13, -16
movq %rdi, %r13
movq %rsi, %rdi
leaq .LC12(%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 .L531
movq 24(%rsp), %rax
movq _Py_NoneStruct@GOTPCREL(%rip), %rcx
cmpq %rcx, %rax
je .L532
testq %rax, %rax
je .L510
movq PyTraceBack_Type@GOTPCREL(%rip), %rdx
cmpq %rdx, 8(%rax)
jne .L533
.L493:
movq 8(%rsp), %rdx
movq 16(%rsp), %r9
addq $1, (%rdx)
testq %r9, %r9
je .L494
addq $1, (%r9)
.L494:
testq %rax, %rax
je .L495
addq $1, (%rax)
.L495:
movq 8(%rdx), %rsi
cmpq PyClass_Type@GOTPCREL(%rip), %rsi
je .L496
movq 168(%rsi), %rdi
testl $2147483648, %edi
je .L497
testb $64, 171(%rdx)
je .L497
.L496:
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
.L498:
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
.L497:
.cfi_restore_state
cmpq PyInstance_Type@GOTPCREL(%rip), %rsi
je .L499
testl $1073741824, %edi
je .L500
.L499:
testq %r9, %r9
je .L501
cmpq %rcx, %r9
je .L502
.L503:
movq PyExc_TypeError@GOTPCREL(%rip), %rax
leaq .LC14(%rip), %rsi
movq (%rax), %rdi
call PyErr_SetString@PLT
movq 8(%rsp), %rdi
subq $1, (%rdi)
je .L534
.L505:
movq 16(%rsp), %rdi
testq %rdi, %rdi
je .L507
subq $1, (%rdi)
je .L535
.L507:
movq 24(%rsp), %rdi
testq %rdi, %rdi
je .L531
subq $1, (%rdi)
je .L536
.L531:
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
.L536:
.cfi_restore_state
movq 8(%rdi), %rax
call *48(%rax)
jmp .L531
.p2align 4,,10
.p2align 3
.L502:
movq (%r9), %rbx
leaq -1(%rbx), %rcx
testq %rcx, %rcx
movq %rcx, (%r9)
jne .L501
movq 8(%r9), %rax
movq %r9, %rdi
call *48(%rax)
movq 8(%rsp), %rdx
movq 24(%rsp), %rax
movq 8(%rdx), %rsi
.L501:
cmpq PyInstance_Type@GOTPCREL(%rip), %rsi
movq %rdx, 16(%rsp)
je .L537
.L504:
movq %rsi, 8(%rsp)
addq $1, (%rsi)
jmp .L498
.p2align 4,,10
.p2align 3
.L532:
movq $0, 24(%rsp)
xorl %eax, %eax
jmp .L493
.p2align 4,,10
.p2align 3
.L533:
movq PyExc_TypeError@GOTPCREL(%rip), %rax
leaq .LC13(%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
.L500:
.cfi_restore_state
movq PyExc_TypeError@GOTPCREL(%rip), %rax
movq 24(%rsi), %rdx
leaq .LC15(%rip), %rsi
movq (%rax), %rdi
xorl %eax, %eax
call PyErr_Format@PLT
movq 8(%rsp), %rdi
subq $1, (%rdi)
jne .L505
.L534:
movq 8(%rdi), %rax
call *48(%rax)
jmp .L505
.p2align 4,,10
.p2align 3
.L510:
xorl %eax, %eax
jmp .L493
.p2align 4,,10
.p2align 3
.L535:
movq 8(%rdi), %rax
call *48(%rax)
.p2align 4,,4
jmp .L507
.p2align 4,,10
.p2align 3
.L537:
movq 16(%rdx), %rsi
jmp .L504
.cfi_endproc
.LFE148:
.size green_throw, .-green_throw
.p2align 4,,15
.type PyGreenlet_Throw, @function
PyGreenlet_Throw:
.LFB163:
.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 .L539
movq %rcx, 8(%rsp)
movq %rdx, (%rsp)
call PyType_IsSubtype@PLT
testl %eax, %eax
movq (%rsp), %rdx
movq 8(%rsp), %rcx
je .L550
.L539:
addq $1, (%rbx)
testq %rdx, %rdx
je .L541
addq $1, (%rdx)
.L541:
testq %rcx, %rcx
je .L542
addq $1, (%rcx)
.L542:
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
.L550:
.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
.LFE163:
.size PyGreenlet_Throw, .-PyGreenlet_Throw
.p2align 4,,15
.type green_switch, @function
green_switch:
.LFB147:
.cfi_startproc
subq $8, %rsp
.cfi_def_cfa_offset 16
addq $1, (%rsi)
testq %rdx, %rdx
je .L553
addq $1, (%rdx)
.L553:
call g_switch
addq $8, %rsp
.cfi_def_cfa_offset 8
movq %rax, %rdi
jmp single_result
.cfi_endproc
.LFE147:
.size green_switch, .-green_switch
.section .rodata.str1.1
.LC16:
.string "()"
.text
.p2align 4,,15
.type PyGreenlet_Switch, @function
PyGreenlet_Switch:
.LFB162:
.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 .L559
call PyType_IsSubtype@PLT
testl %eax, %eax
je .L569
.L559:
testq %rbp, %rbp
.p2align 4,,3
je .L571
addq $1, 0(%rbp)
.L562:
testq %rbx, %rbx
je .L563
movq 8(%rbx), %rax
testb $32, 171(%rax)
je .L564
addq $1, (%rbx)
.L563:
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
.L564:
.cfi_restore_state
xorl %ebx, %ebx
jmp .L563
.p2align 4,,10
.p2align 3
.L571:
leaq .LC16(%rip), %rdi
xorl %eax, %eax
call Py_BuildValue@PLT
movq %rax, %rbp
jmp .L562
.p2align 4,,10
.p2align 3
.L569:
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
.LFE162:
.size PyGreenlet_Switch, .-PyGreenlet_Switch
.section .rodata.str1.1
.LC17:
.string "stderr"
.LC18:
.string "GreenletExit did not kill "
.LC19:
.string "\n"
.text
.p2align 4,,15
.type green_dealloc, @function
green_dealloc:
.LFB144:
.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 _PyThreadState_Current@GOTPCREL(%rip), %r12
movq (%r12), %rbp
movl 152(%rbp), %eax
cmpl $49, %eax
jg .L573
addl $1, %eax
cmpq $0, 16(%rbx)
movl %eax, 152(%rbp)
je .L574
cmpq $0, 64(%rbx)
je .L574
cmpq $-1, 24(%rbx)
je .L574
leaq 24(%rsp), %rdi
leaq 40(%rsp), %rdx
leaq 32(%rsp), %rsi
movq $1, (%rbx)
call PyErr_Fetch@PLT
movq (%r12), %rax
movq 64(%rbx), %rdi
cmpq 120(%rax), %rdi
je .L627
movq ts_delkey(%rip), %rsi
call PyDict_GetItem@PLT
testq %rax, %rax
movq %rax, %r13
je .L628
.L584:
movq %rbx, %rsi
movq %r13, %rdi
call PyList_Append@PLT
testl %eax, %eax
js .L579
movq ts_current(%rip), %rdx
movq (%r12), %rax
movq 120(%rax), %rax
cmpq %rax, 64(%rdx)
je .L609
call green_updatecurrent
testl %eax, %eax
jne .L579
.L609:
cmpq $1, (%rbx)
.p2align 4,,2
je .L629
.L586:
movq 40(%rsp), %rdx
movq 32(%rsp), %rsi
movq 24(%rsp), %rdi
call PyErr_Restore@PLT
subq $1, (%rbx)
jne .L630
.L574:
cmpq $0, 88(%rbx)
je .L589
movq %rbx, %rdi
call PyObject_ClearWeakRefs@PLT
.L589:
movq 56(%rbx), %rdi
testq %rdi, %rdi
je .L591
movq $0, 56(%rbx)
subq $1, (%rdi)
je .L631
.L591:
movq 64(%rbx), %rdi
testq %rdi, %rdi
je .L594
movq $0, 64(%rbx)
subq $1, (%rdi)
je .L632
.L594:
movq 96(%rbx), %rdi
testq %rdi, %rdi
je .L597
movq $0, 96(%rbx)
subq $1, (%rdi)
je .L633
.L597:
movq 104(%rbx), %rdi
testq %rdi, %rdi
je .L600
movq $0, 104(%rbx)
subq $1, (%rdi)
je .L634
.L600:
movq 112(%rbx), %rdi
testq %rdi, %rdi
je .L603
movq $0, 112(%rbx)
subq $1, (%rdi)
je .L635
.L603:
movq 120(%rbx), %rdi
testq %rdi, %rdi
je .L606
movq $0, 120(%rbx)
subq $1, (%rdi)
je .L636
.L606:
movq 8(%rbx), %rax
movq %rbx, %rdi
call *320(%rax)
.L588:
movl 152(%rbp), %eax
subl $1, %eax
cmpq $0, 160(%rbp)
movl %eax, 152(%rbp)
je .L572
testl %eax, %eax
jle .L637
.L572:
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
.L573:
.cfi_restore_state
movq %rbx, %rdi
call _PyTrash_thread_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
.L635:
.cfi_restore_state
movq 8(%rdi), %rax
call *48(%rax)
jmp .L603
.p2align 4,,10
.p2align 3
.L632:
movq 8(%rdi), %rax
call *48(%rax)
.p2align 4,,6
jmp .L594
.p2align 4,,10
.p2align 3
.L633:
movq 8(%rdi), %rax
call *48(%rax)
.p2align 4,,6
jmp .L597
.p2align 4,,10
.p2align 3
.L634:
movq 8(%rdi), %rax
call *48(%rax)
.p2align 4,,6
jmp .L600
.p2align 4,,10
.p2align 3
.L636:
movq 8(%rdi), %rax
call *48(%rax)
.p2align 4,,6
jmp .L606
.p2align 4,,10
.p2align 3
.L631:
movq 8(%rdi), %rax
call *48(%rax)
.p2align 4,,6
jmp .L591
.p2align 4,,10
.p2align 3
.L630:
movq %rbx, %rdi
call PyObject_GC_Track@PLT
.p2align 4,,5
jmp .L588
.p2align 4,,10
.p2align 3
.L627:
movq ts_current(%rip), %rax
cmpq 64(%rax), %rdi
je .L580
call green_updatecurrent
testl %eax, %eax
jne .L579
.L580:
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 .L581
movq (%rdi), %rcx
leaq -1(%rcx), %rdx
testq %rdx, %rdx
movq %rdx, (%rdi)
je .L638
.L581:
testq %rax, %rax
je .L579
movq (%rax), %rcx
leaq -1(%rcx), %rdx
testq %rdx, %rdx
movq %rdx, (%rax)
jne .L609
movq 8(%rax), %rdx
movq %rax, %rdi
call *48(%rdx)
jmp .L609
.p2align 4,,10
.p2align 3
.L629:
cmpq $0, 16(%rbx)
je .L586
leaq .LC17(%rip), %rdi
call PySys_GetObject@PLT
addq $1, (%rbx)
testq %rax, %rax
movq %rax, %r12
je .L586
leaq .LC18(%rip), %rdi
movq %rax, %rsi
call PyFile_WriteString@PLT
movq %r12, %rsi
movq %rbx, %rdi
xorl %edx, %edx
call PyFile_WriteObject@PLT
leaq .LC19(%rip), %rdi
movq %r12, %rsi
call PyFile_WriteString@PLT
jmp .L586
.p2align 4,,10
.p2align 3
.L637:
call _PyTrash_thread_destroy_chain@PLT
.p2align 4,,8
jmp .L572
.p2align 4,,10
.p2align 3
.L628:
xorl %edi, %edi
call PyList_New@PLT
testq %rax, %rax
movq %rax, %r13
je .L579
movq 64(%rbx), %rdi
movq ts_delkey(%rip), %rsi
movq %rax, %rdx
call PyDict_SetItem@PLT
testl %eax, %eax
jns .L584
.p2align 4,,10
.p2align 3
.L579:
movq %rbx, %rdi
call PyErr_WriteUnraisable@PLT
.p2align 4,,3
jmp .L609
.p2align 4,,10
.p2align 3
.L638:
movq 8(%rdi), %rdx
movq %rax, 8(%rsp)
call *48(%rdx)
movq 8(%rsp), %rax
jmp .L581
.cfi_endproc
.LFE144:
.size green_dealloc, .-green_dealloc
.section .rodata.str1.8
.align 8
.LC20:
.string "run cannot be set after the start of the greenlet"
.text
.p2align 4,,15
.type green_setrun, @function
green_setrun:
.LFB154:
.cfi_startproc
subq $8, %rsp
.cfi_def_cfa_offset 16
cmpq $0, 24(%rdi)
jne .L650
testq %rsi, %rsi
movq 64(%rdi), %rax
movq %rsi, 64(%rdi)
je .L642
addq $1, (%rsi)
.L642:
testq %rax, %rax
je .L649
movq (%rax), %rcx
leaq -1(%rcx), %rdx
testq %rdx, %rdx
movq %rdx, (%rax)
je .L651
.L649:
xorl %eax, %eax
.L641:
addq $8, %rsp
.cfi_remember_state
.cfi_def_cfa_offset 8
ret
.p2align 4,,10
.p2align 3
.L651:
.cfi_restore_state
movq 8(%rax), %rdx
movq %rax, %rdi
call *48(%rdx)
jmp .L649
.p2align 4,,10
.p2align 3
.L650:
movq PyExc_AttributeError@GOTPCREL(%rip), %rax
leaq .LC20(%rip), %rsi
movq (%rax), %rdi
call PyErr_SetString@PLT
movl $-1, %eax
jmp .L641
.cfi_endproc
.LFE154:
.size green_setrun, .-green_setrun
.section .rodata.str1.1
.LC21:
.string "|OO:green"
.text
.p2align 4,,15
.type green_init, @function
green_init:
.LFB139:
.cfi_startproc
pushq %rbx
.cfi_def_cfa_offset 16
.cfi_offset 3, -16
leaq kwlist.10517(%rip), %rcx
movq %rdi, %rbx
movq %rsi, %rdi
movq %rdx, %rsi
leaq .LC21(%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 .L657
movq (%rsp), %rsi
testq %rsi, %rsi
je .L658
xorl %edx, %edx
movq %rbx, %rdi
call green_setrun
testl %eax, %eax
jne .L657
.L658:
movq 8(%rsp), %rsi
xorl %eax, %eax
testq %rsi, %rsi
je .L654
cmpq _Py_NoneStruct@GOTPCREL(%rip), %rsi
je .L654
xorl %edx, %edx
movq %rbx, %rdi
call green_setparent
.L654:
addq $16, %rsp
.cfi_remember_state
.cfi_def_cfa_offset 16
popq %rbx
.cfi_def_cfa_offset 8
ret
.p2align 4,,10
.p2align 3
.L657:
.cfi_restore_state
movl $-1, %eax
jmp .L654
.cfi_endproc
.LFE139:
.size green_init, .-green_init
.p2align 4,,15
.type green_getrun, @function
green_getrun:
.LFB153:
.cfi_startproc
subq $8, %rsp
.cfi_def_cfa_offset 16
cmpq $0, 24(%rdi)
jne .L662
movq 64(%rdi), %rax
testq %rax, %rax
je .L662
addq $1, (%rax)
addq $8, %rsp
.cfi_remember_state
.cfi_def_cfa_offset 8
ret
.p2align 4,,10
.p2align 3
.L662:
.cfi_restore_state
movq PyExc_AttributeError@GOTPCREL(%rip), %rax
leaq .LC10(%rip), %rsi
movq (%rax), %rdi
call PyErr_SetString@PLT
xorl %eax, %eax
addq $8, %rsp
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE153:
.size green_getrun, .-green_getrun
.section .rodata.str1.1
.LC22:
.string "__dict__ may not be deleted"
.LC23:
.string "__dict__ must be a dictionary"
.text
.p2align 4,,15
.type green_setdict, @function
green_setdict:
.LFB151:
.cfi_startproc
subq $8, %rsp
.cfi_def_cfa_offset 16
testq %rsi, %rsi
je .L674
movq 8(%rsi), %rax
testb $32, 171(%rax)
je .L675
movq 120(%rdi), %rax
addq $1, (%rsi)
movq %rsi, 120(%rdi)
testq %rax, %rax
je .L673
movq (%rax), %rcx
leaq -1(%rcx), %rdx
testq %rdx, %rdx
movq %rdx, (%rax)
je .L676
.L673:
xorl %eax, %eax
.L668:
addq $8, %rsp
.cfi_remember_state
.cfi_def_cfa_offset 8
ret
.p2align 4,,10
.p2align 3
.L676:
.cfi_restore_state
movq 8(%rax), %rdx
movq %rax, %rdi
call *48(%rdx)
jmp .L673
.p2align 4,,10
.p2align 3
.L675:
movq PyExc_TypeError@GOTPCREL(%rip), %rax
leaq .LC23(%rip), %rsi
movq (%rax), %rdi
call PyErr_SetString@PLT
movl $-1, %eax
jmp .L668
.L674:
movq PyExc_TypeError@GOTPCREL(%rip), %rax
leaq .LC22(%rip), %rsi
movq (%rax), %rdi
call PyErr_SetString@PLT
movl $-1, %eax
jmp .L668
.cfi_endproc
.LFE151:
.size green_setdict, .-green_setdict
.p2align 4,,15
.type PyGreenlet_SetParent, @function
PyGreenlet_SetParent:
.LFB160:
.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 .L678
call PyType_IsSubtype@PLT
testl %eax, %eax
je .L681
.L678:
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
.L681:
.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
.LFE160:
.size PyGreenlet_SetParent, .-PyGreenlet_SetParent
.p2align 4,,15
.type PyGreenlet_New, @function
PyGreenlet_New:
.LFB161:
.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 .L687
testq %rbp, %rbp
je .L685
addq $1, 0(%rbp)
movq %rbp, 64(%rax)
.L685:
testq %r12, %r12
je .L692
.L686:
movq %r12, %rsi
movq %rbx, %rdi
call PyGreenlet_SetParent
movq %rbx, %rax
.L684:
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
.L692:
.cfi_restore_state
call PyGreenlet_GetCurrent
movq %rax, %r12
jmp .L686
.p2align 4,,10
.p2align 3
.L687:
xorl %eax, %eax
jmp .L684
.cfi_endproc
.LFE161:
.size PyGreenlet_New, .-PyGreenlet_New
.section .rodata.str1.1
.LC24:
.string "greenlet"
.LC25:
.string "0.4.0"
.LC26:
.string "__version__"
.LC27:
.string "__greenlet_ts_curkey"
.LC28:
.string "__greenlet_ts_delkey"
.LC29:
.string "__greenlet_ts_tracekey"
.LC30:
.string "switch"
.LC31:
.string "throw"
.LC32:
.string "greenlet.error"
.LC33:
.string "greenlet.GreenletExit"
.LC34:
.string "error"
.LC35:
.string "GreenletExit"
.LC36:
.string "GREENLET_USE_GC"
.LC37:
.string "GREENLET_USE_TRACING"
.LC38:
.string "greenlet._C_API"
.LC39:
.string "_C_API"
.text
.p2align 4,,15
.globl initgreenlet
.type initgreenlet, @function
initgreenlet:
.LFB167:
.cfi_startproc
pushq %r13
.cfi_def_cfa_offset 16
.cfi_offset 13, -16
leaq GreenMethods(%rip), %rsi
leaq .LC24(%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 .L693
leaq .LC25(%rip), %rdx
leaq .LC26(%rip), %rsi
movq %rax, %rdi
call PyModule_AddStringConstant@PLT
testl %eax, %eax
js .L693
leaq .LC27(%rip), %rdi
call PyString_InternFromString@PLT
leaq .LC28(%rip), %rdi
movq %rax, ts_curkey(%rip)
call PyString_InternFromString@PLT
leaq .LC29(%rip), %rdi
movq %rax, ts_delkey(%rip)
call PyString_InternFromString@PLT
leaq .LC30(%rip), %rdi
movq %rax, ts_tracekey(%rip)
call PyString_InternFromString@PLT
leaq .LC31(%rip), %rdi
movq %rax, ts_event_switch(%rip)
call PyString_InternFromString@PLT
cmpq $0, ts_curkey(%rip)
movq %rax, ts_event_throw(%rip)
je .L693
cmpq $0, ts_delkey(%rip)
je .L693
movq PyGreenlet_Type@GOTPCREL(%rip), %r13
movq %r13, %rdi
call PyType_Ready@PLT
testl %eax, %eax
js .L693
leaq .LC32(%rip), %rdi
xorl %edx, %edx
xorl %esi, %esi
call PyErr_NewException@PLT
testq %rax, %rax
movq %rax, PyExc_GreenletError(%rip)
je .L693
movq PyExc_BaseException@GOTPCREL(%rip), %rax
leaq .LC33(%rip), %rdi
xorl %edx, %edx
movq (%rax), %rsi
call PyErr_NewException@PLT
testq %rax, %rax
movq %rax, PyExc_GreenletExit(%rip)
je .L693
call green_create_main
movq %rax, ts_current(%rip)
movq ts_current(%rip), %rax
testq %rax, %rax
je .L693
addq $1, 0(%r13)
leaq .LC24(%rip), %rsi
movq %r13, %rdx
movq %rbp, %rdi
leaq copy_on_greentype(%rip), %r12
call PyModule_AddObject@PLT
movq PyExc_GreenletError(%rip), %rdx
leaq .LC34(%rip), %rsi
movq %rbp, %rdi
addq $1, (%rdx)
call PyModule_AddObject@PLT
movq PyExc_GreenletExit(%rip), %rdx
leaq .LC35(%rip), %rsi
movq %rbp, %rdi
addq $1, (%rdx)
call PyModule_AddObject@PLT
movl $1, %edi
call PyBool_FromLong@PLT
leaq .LC36(%rip), %rsi
movq %rax, %rdx
movq %rbp, %rdi
call PyModule_AddObject@PLT
movl $1, %edi
call PyBool_FromLong@PLT
leaq .LC37(%rip), %rsi
movq %rax, %rdx
movq %rbp, %rdi
call PyModule_AddObject@PLT
movq copy_on_greentype(%rip), %rsi
testq %rsi, %rsi
jne .L712
jmp .L702
.p2align 4,,10
.p2align 3
.L700:
addq $8, %r12
movq (%r12), %rsi
testq %rsi, %rsi
je .L702
.L712:
movq %rbp, %rdi
call PyObject_GetAttrString@PLT
testq %rax, %rax
movq %rax, %rbx
je .L700
movq 264(%r13), %rdi
movq (%r12), %rsi
movq %rax, %rdx
call PyDict_SetItemString@PLT
subq $1, (%rbx)
jne .L700
movq 8(%rbx), %rax
movq %rbx, %rdi
call *48(%rax)
jmp .L700
.p2align 4,,10
.p2align 3
.L693:
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
.L702:
.cfi_restore_state
movq PyExc_GreenletError(%rip), %rax
leaq .LC38(%rip), %rsi
leaq _PyGreenlet_API.10693(%rip), %rdi
xorl %edx, %edx
movq %r13, _PyGreenlet_API.10693(%rip)
movq %rax, 8+_PyGreenlet_API.10693(%rip)
movq PyExc_GreenletExit(%rip), %rax
movq %rax, 16+_PyGreenlet_API.10693(%rip)
leaq PyGreenlet_New(%rip), %rax
movq %rax, 24+_PyGreenlet_API.10693(%rip)
leaq PyGreenlet_GetCurrent(%rip), %rax
movq %rax, 32+_PyGreenlet_API.10693(%rip)
leaq PyGreenlet_Throw(%rip), %rax
movq %rax, 40+_PyGreenlet_API.10693(%rip)
leaq PyGreenlet_Switch(%rip), %rax
movq %rax, 48+_PyGreenlet_API.10693(%rip)
leaq PyGreenlet_SetParent(%rip), %rax
movq %rax, 56+_PyGreenlet_API.10693(%rip)
call PyCapsule_New@PLT
testq %rax, %rax
je .L693
addq $8, %rsp
.cfi_def_cfa_offset 40
movq %rbp, %rdi
leaq .LC39(%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
.LFE167:
.size initgreenlet, .-initgreenlet
.local _PyGreenlet_API.10693
.comm _PyGreenlet_API.10693,64,32
.section .rodata.str1.1
.LC40:
.string "parent"
.section .data.rel.local,"aw",@progbits
.align 16
.type kwlist.10517, @object
.size kwlist.10517, 24
kwlist.10517:
.quad .LC10
.quad .LC40
.quad 0
.section .rodata.str1.1
.LC41:
.string "getcurrent"
.LC42:
.string "settrace"
.LC43:
.string "gettrace"
.section .data.rel.local
.align 32
.type copy_on_greentype, @object
.size copy_on_greentype, 48
copy_on_greentype:
.quad .LC41
.quad .LC34
.quad .LC35
.quad .LC42
.quad .LC43
.quad 0
.align 32
.type GreenMethods, @object
.size GreenMethods, 128
GreenMethods:
.quad .LC41
.quad mod_getcurrent
.long 4
.zero 4
.quad 0
.quad .LC42
.quad mod_settrace
.long 1
.zero 4
.quad 0
.quad .LC43
.quad mod_gettrace
.long 4
.zero 4
.quad 0
.quad 0
.quad 0
.zero 16
.globl PyGreenlet_Type
.section .rodata.str1.1
.LC44:
.string "greenlet.greenlet"
.section .rodata.str1.8
.align 8
.LC45:
.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 .LC44
.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 .LC45
.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
.LC46:
.string "__dict__"
.LC47:
.string "gr_frame"
.LC48:
.string "dead"
.section .data.rel.local
.align 32
.type green_getsets, @object
.size green_getsets, 240
green_getsets:
.quad .LC46
.quad green_getdict
.quad green_setdict
.quad 0
.zero 8
.quad .LC10
.quad green_getrun
.quad green_setrun
.quad 0
.zero 8
.quad .LC40
.quad green_getparent
.quad green_setparent
.quad 0
.zero 8
.quad .LC47
.quad green_getframe
.quad 0
.quad 0
.zero 8
.quad .LC48
.quad green_getdead
.quad 0
.quad 0
.zero 8
.quad 0
.zero 32
.section .rodata.str1.1
.LC49:
.string "__getstate__"
.section .data.rel.local
.align 32
.type green_methods, @object
.size green_methods, 128
green_methods:
.quad .LC30
.quad green_switch
.long 3
.zero 4
.quad green_switch_doc
.quad .LC31
.quad green_throw
.long 1
.zero 4
.quad green_throw_doc
.quad .LC49
.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: (GNU) 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