[DOC] Add missing opts argument to IO.binwrite
[DOC] for IO.write (#16857)
[DOC] Doc for Pathname#write
[DOC] Add Japanese and data to IO.read
Refactor setivar caches to include the source and destination shapes
This is how caches used to work prior to 913979bede2a1b79109fa2072352882560d55fe0, however since inline cache need to be set atomically, they are limited to 64bits, which wasn't enough to store an attr_index_t...
attr_index_t
Reduce INVALID_SHAPE_ID to only its offset
Given we only store the shape offset in ivar caches, and the offset is only 19bits, we should be able to store two shape offsets and an attribute index in a single uint64_t.
Which is perfect for setivar caches....
setivar
shape.c: rename shape_id and shape_offset helpers
shape_id
shape_offset
These are natural variable names, so by using macro like case we avoid name conflicts.
shape.c: finalize the "offset" rename
To better distinguish fully formed shape ids from "naked" offsets.
vm_callinfo.h: stop uselessly incrementing attr_index
There might have been a reason for this, but it's likely long gone.
gc: Simplify updating the shape after move
Back when this code was added, moving a T_OBJECT to a different size pool required to rebuilt its shape tree, which could allocate, potentially triggering GC during GC.
Ref: https://github.com/ruby/ruby/pull/6926...
View all revisions | View revisions
Also available in: Atom