mmtk / mmtk-core

Memory Management ToolKit
https://www.mmtk.io
Other
379 stars 69 forks source link

Enqueue to BlockQueue backwards #1235

Open wks opened 1 week ago

wks commented 1 week ago

Due to the LIFO nature of BlockQueue, if we enqueue multiple blocks into BlockQueue forwards, allocation fast paths will get blocks from BlockQueue in the opposite direction. This commit fixes this anomaly by enqueuing consecutive blocks backwards.

This PR is currently a DRAFT.

  1. We modified alloc_pages_slow_sync so that blocks of a new Chunk will be enqueued backwards. We observe that in the beginning of execution, mutators obtain blocks forwards. But after one GC, mutators will start to obtain blocks backwards again. It may be related to SweepChunk work packets still sweeping blocks forwards and enqueuing blocks in the same order.
  2. Remove debugging log statements before merging.