You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently we use Allocator.get_space() then invoke initialize_object_metadata on the space. This is the only use fo Allocator.get_space(). As initialize_object_metadata is a function in SFT, we can use SFT to call initialize_object_metadata, and remove Allocator.get_space().
The text was updated successfully, but these errors were encountered:
Currently this method mainly sets the VO bit of the object. It is performance critical, but (1) the bottleneck is likely to be cache miss rather than function call or virtual dispatch, and (2) if performance is important, the binding needs to inline the VO-bit set operation anyway, and optimise it into a non-atomic bit set (taking advantage of the fact that most bump-pointer allocators give each mutator exclusive access to the page it is allocating into).
So I think it is OK to use SFT to dispatch this operation in order to remove the reference from the allocator to the space. It preserves correctness in the slow path, and makes the code simpler.
So I think it is OK to use SFT to dispatch this operation in order to remove the reference from the allocator to the space. It preserves correctness in the slow path, and makes the code simpler.
The allocator will still need a reference to the space, as it needs to allocate from the space. But if we use SFT for initialize_object_metadata, we do not need to expose the space to other types by Allocator::get_space().
Currently we use
Allocator.get_space()
then invokeinitialize_object_metadata
on the space. This is the only use foAllocator.get_space()
. Asinitialize_object_metadata
is a function in SFT, we can use SFT to callinitialize_object_metadata
, and removeAllocator.get_space()
.The text was updated successfully, but these errors were encountered: