diff options
author | Dino Viehland <dinoviehland@meta.com> | 2024-04-30 18:38:05 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-30 18:38:05 (GMT) |
commit | 4a1cf66c5c0afa36d7a51d5f9d3874cda10df79c (patch) | |
tree | 3a37a8d9e9758ba71ad558a051324c20e140c777 /Python/instrumentation.c | |
parent | 1f16b4ce569f222af74fcbb7b2ef98eee2398d20 (diff) | |
download | cpython-4a1cf66c5c0afa36d7a51d5f9d3874cda10df79c.zip cpython-4a1cf66c5c0afa36d7a51d5f9d3874cda10df79c.tar.gz cpython-4a1cf66c5c0afa36d7a51d5f9d3874cda10df79c.tar.bz2 |
gh-117657: Fix small issues with instrumentation and TSAN (#118064)
Small TSAN fixups for instrumentation
Diffstat (limited to 'Python/instrumentation.c')
-rw-r--r-- | Python/instrumentation.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/Python/instrumentation.c b/Python/instrumentation.c index 328a3b1..ce97c3a 100644 --- a/Python/instrumentation.c +++ b/Python/instrumentation.c @@ -626,9 +626,10 @@ de_instrument(PyCodeObject *code, int i, int event) return; } CHECK(_PyOpcode_Deopt[deinstrumented] == deinstrumented); - *opcode_ptr = deinstrumented; + FT_ATOMIC_STORE_UINT8_RELAXED(*opcode_ptr, deinstrumented); if (_PyOpcode_Caches[deinstrumented]) { - instr[1].counter = adaptive_counter_warmup(); + FT_ATOMIC_STORE_UINT16_RELAXED(instr[1].counter.as_counter, + adaptive_counter_warmup().as_counter); } } @@ -703,8 +704,10 @@ instrument(PyCodeObject *code, int i) int deopt = _PyOpcode_Deopt[opcode]; int instrumented = INSTRUMENTED_OPCODES[deopt]; assert(instrumented); - *opcode_ptr = instrumented; + FT_ATOMIC_STORE_UINT8_RELAXED(*opcode_ptr, instrumented); if (_PyOpcode_Caches[deopt]) { + FT_ATOMIC_STORE_UINT16_RELAXED(instr[1].counter.as_counter, + adaptive_counter_warmup().as_counter); instr[1].counter = adaptive_counter_warmup(); } } |