Chromium Code Reviews
DescriptionModifies the debug garbage collector (CollectAllGarbage()) to correctly remove inter-generational garbage by evacuating all of new space.
Adds tests to check if this issue has been correctly resolved.
Updates the WeakProperty_PreserveCrossGen test to call for one new and one old space collection instead of CollectAllGarbage(). Otherwise, all weak properties are swept as garbage.
DETAILS:
ISSUE
Specifically, the following arrangements in a heap resulted
in garbage surviving a GC.
- Dead object in old space pointing to dead object in new space results
in the new space object surviving.
- A cycle between two dead objects, one in each space, results in the
cycle surviving until all objects are in the old space.
BUG=
R=rmacnak@google.com
Committed: https://github.com/dart-lang/sdk/commit/abf40fc8d221530cf589a7d7af11324fed48a823
Patch Set 1 #
Total comments: 5
Patch Set 2 : Evacuate the new space in CollectAllGarbage(). #Patch Set 3 : Removes an extra space introduced in the last set. #
Total comments: 4
Patch Set 4 : Rewrites Evacuate() to use one Scavenge() #
Total comments: 6
Patch Set 5 : Adds comments to explain changes to Evacuate() and CollectAllGarbage() #Patch Set 6 : Adds logging from CollectNewSpaceGarbage() to Evacuate() #
Messages
Total messages: 14 (6 generated)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||