Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP bpo-44800: Rename _PyInterpreterFrame to _Py_framedata #27525

Closed
Closed
Changes from 1 commit
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
a133e0d
bpo-44800: Clearly distinguish execution & introspection frames
ncoghlan Aug 1, 2021
d8858aa
'frame' and 'frame data' replaces introspection and execution frames
ncoghlan Aug 14, 2021
cd340b0
Merge remote-tracking branch 'origin/main' into bpo-44800-rename-inte…
ncoghlan Aug 14, 2021
ccf953b
Tweak some comments
ncoghlan Aug 14, 2021
4a097bd
Another comment fix
ncoghlan Aug 14, 2021
bd00490
Fix LLTRACE macro compile error
ncoghlan Aug 14, 2021
04aa7e8
Revert unintended function name changes
ncoghlan Aug 14, 2021
e9018e7
Fix comment alignment
ncoghlan Aug 14, 2021
0ce41c8
Follow proposed new naming conventions in gdb hooks
ncoghlan Aug 14, 2021
c269e1f
Merge remote-tracking branch 'origin/main' into bpo-44800-rename-inte…
ncoghlan Aug 21, 2021
4eeff9a
Reduce conflicts for main branch merge
ncoghlan Mar 6, 2022
6fa0f53
Fix bad search & replace
ncoghlan Mar 6, 2022
776ca80
main branch has no underscore
ncoghlan Mar 6, 2022
682af23
Reduce function header conflicts
ncoghlan Mar 6, 2022
c76e63b
Yet more merge conflict reduction
ncoghlan Mar 6, 2022
b1d1438
Merged and compiles, naming is inconsistent
ncoghlan Mar 6, 2022
cae935d
Reinstate _Py_framedata struct rename
ncoghlan Mar 6, 2022
2866bfa
Fix type declaration for gen/coro frame data
ncoghlan Mar 6, 2022
239a62f
Document frame related naming conventions
ncoghlan Mar 6, 2022
2680f35
Migrate gen/coro iframe field to fdata naming convention
ncoghlan Mar 6, 2022
ebda1d3
Use fdata for frame data locals and parameters
ncoghlan Mar 12, 2022
269a4a0
frame -> fdata in ceval.c & allow compilation
ncoghlan Mar 12, 2022
34cf023
Disambiguate f_fdata and f_frame_data
ncoghlan Mar 12, 2022
55d9276
Merge remote-tracking branch 'origin/main' into bpo-44800-rename-inte…
ncoghlan Mar 12, 2022
3eba918
Document the currently implemented conventions
ncoghlan Mar 12, 2022
e8a4adf
Note the 'current_frame' exception
ncoghlan Mar 12, 2022
3d654a0
Fix test_gdb
ncoghlan Mar 12, 2022
b09b114
Fix header file include guard var
ncoghlan Mar 12, 2022
9b51976
Distinguish frame state error messages
ncoghlan Mar 12, 2022
0a3611c
super() does not access C frame structs
ncoghlan Mar 12, 2022
08410cc
new_frame -> new_fdata in frame push
ncoghlan Mar 12, 2022
c694768
Add missing error check in PyImport_Import
ncoghlan Mar 12, 2022
ba87ef3
No Python frame seems legit for PyImport_Import()
ncoghlan Mar 12, 2022
7168f7d
Get test_gdb passing locally
ncoghlan Mar 12, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Follow proposed new naming conventions in gdb hooks
  • Loading branch information
ncoghlan committed Aug 14, 2021

Verified

This commit was signed with the committer’s verified signature.
frostming Frost Ming
commit 0ce41c8d7e704575559cae7104a00fa8f2992a3f
26 changes: 13 additions & 13 deletions Tools/gdb/libpython.py
Original file line number Diff line number Diff line change
@@ -861,7 +861,7 @@ def __init__(self, gdbval, cast_to=None):
PyObjectPtr.__init__(self, gdbval, cast_to)

if not self.is_optimized_out():
self._frame = Py_framedataPtr(self.field('f_fdata'))
self._fdata = _Py_framedataPtr(self.field('f_fdata'))

def iter_locals(self):
'''
@@ -870,7 +870,7 @@ def iter_locals(self):
'''
if self.is_optimized_out():
return
return self._frame.iter_locals()
return self._fdata.iter_locals()

def iter_globals(self):
'''
@@ -879,7 +879,7 @@ def iter_globals(self):
'''
if self.is_optimized_out():
return ()
return self._frame.iter_globals()
return self._fdata.iter_globals()

def iter_builtins(self):
'''
@@ -888,19 +888,19 @@ def iter_builtins(self):
'''
if self.is_optimized_out():
return ()
return self._frame.iter_builtins()
return self._fdata.iter_builtins()

def get_var_by_name(self, name):

if self.is_optimized_out():
return None, None
return self._frame.get_var_by_name(name)
return self._fdata.get_var_by_name(name)

def filename(self):
'''Get the path of the current Python source file, as a string'''
if self.is_optimized_out():
return FRAME_INFO_OPTIMIZED_OUT
return self._frame.filename()
return self._fdata.filename()

def current_line_num(self):
'''Get current line number as an integer (1-based)
@@ -911,28 +911,28 @@ def current_line_num(self):
'''
if self.is_optimized_out():
return None
return self._frame.current_line_num()
return self._fdata.current_line_num()

def current_line(self):
'''Get the text of the current source line as a string, with a trailing
newline character'''
if self.is_optimized_out():
return FRAME_INFO_OPTIMIZED_OUT
return self._frame.current_line()
return self._fdata.current_line()

def write_repr(self, out, visited):
if self.is_optimized_out():
out.write(FRAME_INFO_OPTIMIZED_OUT)
return
return self._frame.write_repr(out, visited)
return self._fdata.write_repr(out, visited)

def print_traceback(self):
if self.is_optimized_out():
sys.stdout.write(' %s\n' % FRAME_INFO_OPTIMIZED_OUT)
return
return self._frame.print_traceback()
return self._fdata.print_traceback()

class Py_framedataPtr:
class _Py_framedataPtr:

def __init__(self, gdbval):
self._gdbval = gdbval
@@ -1734,7 +1734,7 @@ def is_gc_collect(self):
def get_pyop(self):
try:
fdata = self._gdbframe.read_var('fdata')
fdata = Py_framedataPtr(fdata)
fdata = _Py_framedataPtr(fdata)
if not fdata.is_optimized_out():
return fdata
# gdb is unable to get the "fdata" argument of PyEval_EvalFrameEx()
@@ -1744,7 +1744,7 @@ def get_pyop(self):
caller = self._gdbframe.older()
if caller:
fdata = caller.read_var('fdata')
fdata = Py_framedataPtr(fdata)
fdata = _Py_framedataPtr(fdata)
if not fdata.is_optimized_out():
return fdata
return orig_fdata