Skip to content

Commit ea80076

Browse files
address review
1 parent 4bd1b49 commit ea80076

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

Objects/codeobject.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1014,9 +1014,12 @@ PyCode_Addr2Line(PyCodeObject *co, int addrq)
10141014
if (addrq < 0) {
10151015
return co->co_firstlineno;
10161016
}
1017-
if (FT_ATOMIC_LOAD_PTR_ACQUIRE(co->_co_monitoring) &&
1018-
FT_ATOMIC_LOAD_PTR_ACQUIRE(co->_co_monitoring->lines)) {
1019-
return _Py_Instrumentation_GetLine(co, addrq/sizeof(_Py_CODEUNIT));
1017+
_PyCoMonitoringData *data = _Py_atomic_load_ptr_acquire(co->_co_monitoring);
1018+
if (data) {
1019+
_PyCoLineInstrumentationData *lines = _Py_atomic_load_ptr_acquire(data->lines);
1020+
if (lines) {
1021+
return _Py_Instrumentation_GetLine(co, addrq/sizeof(_Py_CODEUNIT));
1022+
}
10201023
}
10211024
assert(addrq >= 0 && addrq < _PyCode_NBYTES(co));
10221025
PyCodeAddressRange bounds;

Python/instrumentation.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1633,7 +1633,6 @@ initialize_lines(_PyCoLineInstrumentationData *line_data, PyCodeObject *code, in
16331633
set_original_opcode(line_data, handler, original_opcode);
16341634
}
16351635
}
1636-
FT_ATOMIC_STORE_PTR_RELEASE(code->_co_monitoring->lines, line_data);
16371636
}
16381637

16391638
static void
@@ -1667,7 +1666,7 @@ allocate_instrumentation_data(PyCodeObject *code)
16671666
monitoring->line_tools = NULL;
16681667
monitoring->per_instruction_opcodes = NULL;
16691668
monitoring->per_instruction_tools = NULL;
1670-
FT_ATOMIC_STORE_PTR_RELEASE(code->_co_monitoring, monitoring);
1669+
_Py_atomic_store_ptr_release(code->_co_monitoring, monitoring);
16711670
}
16721671
return 0;
16731672
}
@@ -1738,6 +1737,7 @@ update_instrumentation_data(PyCodeObject *code, PyInterpreterState *interp)
17381737
return -1;
17391738
}
17401739
initialize_lines(lines, code, bytes_per_entry);
1740+
_Py_atomic_store_ptr_release(code->_co_monitoring->lines, line_data);
17411741
}
17421742
if (multitools && code->_co_monitoring->line_tools == NULL) {
17431743
code->_co_monitoring->line_tools = PyMem_Malloc(code_len);

0 commit comments

Comments
 (0)