Merged requested to merge branch/wb_before_move into branch/default
list.pop/list.insert operations that shift many items were very slow in old large list objects. This is because it was done by manually reading and writing all items, and the card-marking adds overhead to every single write. With this branch, it's done via support for a new operation in the GC, writebarrier_before_move(). This could be renamed if needed for other use cases, but basically, this operation takes an array, looks for the flag that says there is at least one marked card in it, and in that case applies a general write barrier to it. After such an operation, the shift of items can always be done with a simple memmove() call.