| 211 | } |
| 212 | |
| 213 | remote_addr_t |
| 214 | PyThread::getFrameAddr( |
| 215 | const std::shared_ptr<const AbstractProcessManager>& manager, |
| 216 | Structure<py_thread_v>& ts) |
| 217 | { |
| 218 | if (manager->versionIsAtLeast(3, 11) && !manager->versionIsAtLeast(3, 13)) { |
| 219 | remote_addr_t cframe_addr = ts.getField(&py_thread_v::o_frame); |
| 220 | if (!manager->isAddressValid(cframe_addr)) { |
| 221 | return reinterpret_cast<remote_addr_t>(nullptr); |
| 222 | } |
| 223 | |
| 224 | Structure<py_cframe_v> cframe(manager, cframe_addr); |
| 225 | return cframe.getField(&py_cframe_v::current_frame); |
| 226 | } else { |
| 227 | return ts.getField(&py_thread_v::o_frame); |
| 228 | } |
| 229 | } |
| 230 | |
| 231 | std::shared_ptr<FrameObject> |
| 232 | PyThread::FirstFrame() const |
nothing calls this directly
no test coverage detected