70def _find_LINENO_from_code_22(code):
71 """return all of the SET_LINENO information from a code block"""
72 co_code = code.co_code
73 linenos = {}
74
75
76 n = len(co_code)
77 i = 0
78 prev_op = None
79 prev_lineno = 0
80 while i < n:
81 c = co_code[i]
82 op = ord(c)
83 if op == dis.SET_LINENO:
84 if prev_op == op:
85
86
87
88 del linenos[prev_lineno]
89 prev_lineno = ord(co_code[i+1]) + ord(co_code[i+2])*256
90 linenos[prev_lineno] = 1
91 if op >= dis.HAVE_ARGUMENT:
92 i = i + 3
93 else:
94 i = i + 1
95 prev_op = op
96 return linenos
97
98
99