Commits on Source (26)
-
Ben Gamari authored
This commit does two things: * Allow aging of objects during the preparatory minor GC * Refactor handling of static objects to avoid the use of a hashtable
-
Ben Gamari authored
-
Ben Gamari authored
-
Ben Gamari authored
Perf showed that the this single div was capturing up to 10% of samples in nonmovingMark. However, the overwhelming majority of cases is looking at small block sizes. These cases we can easily compute explicitly, allowing the compiler to turn the division into a significantly more efficient division-by-constant. While the increase in source code looks scary, this all optimises down to very nice looking assembler. At this point the only remaining hotspots in nonmovingBlockCount are due to memory access.
-
Ben Gamari authored
-
Ben Gamari authored
This shortens MarkQueueEntry by 30% (one word)
-
Ben Gamari authored
Use memchr instead of a open-coded loop. This is nearly twice as fast in a synthetic benchmark.
-
Ben Gamari authored
-
Ben Gamari authored
Ensure that the bitmap of the segmentt that we will clear next is in cache by the time we reach it.
-
Ben Gamari authored
-
Ben Gamari authored
-
Ben Gamari authored
This improved overall runtime on nofib's constraints test by nearly 10%.
-
Ben Gamari authored
-
Ben Gamari authored
Previously we would look at the segment header to determine the block size despite the fact that we already had the block size at hand.
-
Ben Gamari authored
-
Ben Gamari authored
Previously we would perform a preparatory moving collection, resulting in many things being added to the mark queue. When we finished with this we would realize in nonmovingCollect that there was already a collection running, in which case we would simply not run the nonmoving collector. However, it was very easy to end up in a "treadmilling" situation: all subsequent GC following the first failed major GC would be scheduled as major GCs. Consequently we would continuously feed the concurrent collector with more mark queue entries and it would never finish. This patch aborts the major collection far earlier, meaning that we avoid adding nonmoving objects to the mark queue and allowing the concurrent collector to finish.
-
Ben Gamari authored
-
Ben Gamari authored
-
This allows indirection chains residing in the non-moving heap to be shorted-out.
-
-
Ben Gamari authored
This will allow us to easily move the block size elsewhere.
-
Ben Gamari authored
-
Ben Gamari authored
-
Ben Gamari authored
-
Ben Gamari authored
-
Ben Gamari authored