hashcode-bug.patch contains hash-code extraction and status change bug fix
generational mark swap garbage collector. this works similar to generational mark compact. but to overcome difficulties of implementing getNextObject, it stores object start ref at the back end of heap, grows towards start of heap.
Actually the mentioned "back end of heap" should be stated as "back end of region". This algorithm will count the live objects during marking phase, sort the region list, and make use of one temporary region to do swapping. In calculate forward pointer phase, a destination pointer will be stored into gc header of object, and in swap phase objects will be moved into destination address. Both forwarding and swapping are done by iterating the stored object start reference at the end of each region. Since there are reference type processing between the two phase, some arrays and object must be allocated into non-moving space.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
hashcode-bug.patch
generational markswap
contributor agreement
pre-commit test
Actually the mentioned "back end of heap" should be stated as "back end of region". This algorithm will count the live objects during marking phase, sort the region list, and make use of one temporary region to do swapping. In calculate forward pointer phase, a destination pointer will be stored into gc header of object, and in swap phase objects will be moved into destination address. Both forwarding and swapping are done by iterating the stored object start reference at the end of each region. Since there are reference type processing between the two phase, some arrays and object must be allocated into non-moving space.