ee0c7f459d
The invariants in this method are fairly strict since it is called during object evacution and thus a) objects may be in transitory states and b) multiple threads are working on evacuation objects concurrently. Previously, this method ensured valid object accesses because only the object currently being observed by ProfilingMigrationObserver was accessed. This changed with crrev.com/c/4178821, where we (incorrectly) also accessed another object (InstructionStream::code), leading to data races and incorrect behavior. This CL fixes that problem by changing LogEventListener API as follows: void CodeMoveEvent(InstructionStream from, InstructionStream to); void BytecodeMoveEvent(BytecodeArray from, BytecodeArray to); With this change we again correctly observe invariants, and also remove one use of AbstractCode. Bug: v8:13654 Change-Id: Ida022e8c7f14d821e1139f025edc71c20fa386c0 Fixed: chromium:1409786 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4194192 Commit-Queue: Jakob Linke <jgruber@chromium.org> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/main@{#85474} |
||
---|---|---|
.. | ||
counters-unittest.cc | ||
log-unittest.cc | ||
runtime-call-stats-unittest.cc |