-
Notifications
You must be signed in to change notification settings - Fork 28.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
node-api: remove RefBase and CallbackWrapper #53590
Open
vmoroz
wants to merge
3
commits into
nodejs:main
Choose a base branch
from
vmoroz:PR/remove_refbase
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Review requested:
|
legendecas
reviewed
Jun 27, 2024
legendecas
reviewed
Jun 28, 2024
gabrielschulhof
approved these changes
Jun 28, 2024
legendecas
approved these changes
Jul 1, 2024
toyobayashi
added a commit
to toyobayashi/emnapi
that referenced
this pull request
Jul 2, 2024
jasnell
approved these changes
Jul 4, 2024
e8bb387
to
e73c7a0
Compare
mhdawson
approved these changes
Jul 12, 2024
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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