DescriptionDebug garbage collector does not correctly remove cross-gen garbage
Modifies 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.
R=rmacnak@google.com
Committed: https://github.com/dart-lang/sdk/commit/98fe465b8580fe82027d474a04d338850962eb3f
Patch Set 1 #
Total comments: 8
Patch Set 2 : Formatting and rename EvacuateNewSpaceGarbage #
Messages
Total messages: 5 (1 generated)
|