summaryrefslogtreecommitdiff
path: root/compiler/optimizing/graph_visualizer.cc
diff options
context:
space:
mode:
author Lokesh Gidra <lokeshgidra@google.com> 2025-02-07 13:32:48 +0000
committer Lokesh Gidra <lokeshgidra@google.com> 2025-02-11 10:58:33 -0800
commitdd33afc86bf313c205d28cfba436658aa7a78c4c (patch)
tree2ff7d7de6f1d49b392850991a092253eb09ef0bb /compiler/optimizing/graph_visualizer.cc
parent01a7d316730f2ed7dac7fa85c9e707ab0241ef82 (diff)
Avoid moving old-gen object to young-gen in generational CMC
There were cases (typically during a full-heap collection) that some object was being moved from old-gen to young-gen. This was happening in few corner cases. The cases were either when we skipped compaction (as the objects were too densely packed), or due to aligning down the mid-gen. Moving an object from old-gen to young-gen causes correctness problems as this way we miss dirtying the corresponding card if it contains native-roots to young-gen. In this CL, we correctly adjust the generation boundaries whenever compaction is skipped. Also, mid-gen boundary is aligned up (instead of down). This ensures that once an object is promoted to old-gen, it may get back to mid-gen, which again gets consumed by old-gen, but never gets back to young gen. Test: ART_USE_READ_BARRIER=false art/tools/run-libcore-tests.sh --mode=host --variant=X64 --debug --gcstress Test: atest CtsPackageManagerTestCases (on aosp cuttlefish device) Bug: 392794369 Change-Id: I4472b34af3cbf409b2e0478e337c62ffc45c89f5
Diffstat (limited to 'compiler/optimizing/graph_visualizer.cc')
0 files changed, 0 insertions, 0 deletions