summaryrefslogtreecommitdiff
path: root/tests/skipCrossGenFiles.x86.txt
diff options
context:
space:
mode:
authorPeter Sollich <petersol@microsoft.com>2019-06-25 15:55:05 +0200
committerGitHub <noreply@github.com>2019-06-25 15:55:05 +0200
commit899f7faa6e2b0b2a9c9a2aaa5a78909a3ae79fe3 (patch)
tree67e2eabc1319471b6b54711c001109976065a4fd /tests/skipCrossGenFiles.x86.txt
parent3eac718c85cde9121fb5f03da58bb949914b51e1 (diff)
downloadcoreclr-899f7faa6e2b0b2a9c9a2aaa5a78909a3ae79fe3.tar.gz
coreclr-899f7faa6e2b0b2a9c9a2aaa5a78909a3ae79fe3.tar.bz2
coreclr-899f7faa6e2b0b2a9c9a2aaa5a78909a3ae79fe3.zip
Brick table (#25349)
Fix brick table logic to fix perf issue in several ASP.NET tests, remove #ifdef FFIND_OBJECT. What I observed was that some GCs spent a lot of time in find_first_object called from find_object, which is called during stack scanning to find the containing object for interior pointers. A substantial fraction of generation 0 was being scanned, indicating that the brick table logic didn't work properly in these cases. The root cause was the fact that the brick table entries were not being set in adjust_limit_clr if the allocation was satisfied from the free list in gen0 instead of newly allocated space. This is the case if there are pinned objects in gen0 as well. The main fix is in adjust_limit_clr - if the allocation is satisfied from the freelist, seg is nullptr, the change is to set the bricks in this case as well if we are allocating in gen0 and the allocated piece is above a reasonable size threshold. The bricks are not set always set during allocation - instead, when we detect an interior pointer during GC, we make the allocator set the bricks during the next GC cycles by setting gen0_must_clear_bricks. I changed the way this is handled for server GC (multiple heaps). We used to multiply the decay time by the number of heaps (gc_heap::n_heaps), but only applied it to the single heap where an interior pointer was found. Instead, I think it's better to instead set gen0_must_clear_bricks for all heaps, but leave the decay time unchanged compared to workstation GC. Maoni suggested to remove the #ifdef FFIND_OBJECT - interior pointers are not going away, so the #ifdefs are unnecessary clutter. Addressed code review feedback: - add parentheses as per GC coding conventions - use max instead of if-statement - merge body of for-loop over all into existing for-loop
Diffstat (limited to 'tests/skipCrossGenFiles.x86.txt')
0 files changed, 0 insertions, 0 deletions