node-api: remove RefBase and CallbackWrapper #53590
Open
+360
−350
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR simplifies internal Node-API implementation to reduce the code complexity and to reduce allocated memory size.
There are no API changes or changes to the code behavior. All existing tests are passing and no new tests are needed.
RefBase
class.Reference
class directly inherits fromRefTracker
.napi_set_instance_data
andnapi_get_instance_data
useTrackedFinalizer
instead ofRefBase
.v8impl::Ownership
enum is renamed tov8impl::ReferenceOwnership
to better reflect its purpose.v8impl::ReferenceOwnership
size changed to one byte to reduceReference
size.Finalizer
class became non-virtual to reduce its size.Finalizer
fields became private for better encapsulation.TrackedFinalizer
andTrackedStringResource
size changed from 64 to 56 bytes on 64-bit platforms.Reference
class is split up into three classes depending on the usage scenario:Reference
,ReferenceWithData
, andReferenceWithFinalizer
.Reference
instance size on 64-bit platforms was 88 bytes.Reference
size is 40 bytes,ReferenceWithData
is 48 bytes, andReferenceWithFinalizer
is 72 bytes.ReferenceWithFinalizer
size reduced by 16 bytes due to changes toFinalizer
(8 bytes) and removal ofRefBase
that along with thev8impl::ReferenceOwnership
to be one byte gained reduction of another 8 bytes.Reference
andReferenceWithData
are not queued for finalization since they do not have user finalizer callbacks. They are finalized immediately.FunctionCallbackWrapper
.CallbackWrapper
andCallbackWrapperBase