-
Notifications
You must be signed in to change notification settings - Fork 29.1k
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
Merged
Merged
+360
−350
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:
|
nodejs-github-bot
added
c++
Issues and PRs that require attention from people who are familiar with C++.
needs-ci
PRs that need a full CI run.
node-api
Issues and PRs related to the Node-API.
labels
Jun 25, 2024
legendecas
reviewed
Jun 27, 2024
github-actions
bot
removed
the
request-ci
Add this label to start a Jenkins CI on a PR.
label
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
github-actions
bot
removed
the
request-ci
Add this label to start a Jenkins CI on a PR.
label
Jul 3, 2024
jasnell
approved these changes
Jul 4, 2024
github-actions
bot
removed
the
request-ci
Add this label to start a Jenkins CI on a PR.
label
Jul 12, 2024
vmoroz
force-pushed
the
PR/remove_refbase
branch
from
July 12, 2024 15:04
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
github-actions
bot
removed
the
request-ci
Add this label to start a Jenkins CI on a PR.
label
Jul 12, 2024
github-actions
bot
removed
the
request-ci
Add this label to start a Jenkins CI on a PR.
label
Aug 14, 2024
anonrig
approved these changes
Aug 14, 2024
Co-authored-by: Yagiz Nizipli <yagiz@nizipli.com>
legendecas
added
request-ci
Add this label to start a Jenkins CI on a PR.
author ready
PRs that have at least one approval, no pending requests for changes, and a CI started.
labels
Aug 23, 2024
github-actions
bot
removed
the
request-ci
Add this label to start a Jenkins CI on a PR.
label
Aug 23, 2024
vmoroz
added
the
commit-queue
Add this label to land a pull request using GitHub Actions.
label
Aug 25, 2024
nodejs-github-bot
removed
the
commit-queue
Add this label to land a pull request using GitHub Actions.
label
Aug 25, 2024
Commit Queue failed- Loading data for nodejs/node/pull/53590 ✔ Done loading data for nodejs/node/pull/53590 ----------------------------------- PR info ------------------------------------ Title node-api: remove RefBase and CallbackWrapper (#53590) Author Vladimir Morozov <vmorozov@microsoft.com> (@vmoroz) Branch vmoroz:PR/remove_refbase -> nodejs:main Labels c++, node-api, author ready, needs-ci Commits 4 - node-api: remove RefBase and CallbackWrapper - reduce size of Reference - address PR feedback - add const for refcount() Committers 2 - Vladimir Morozov <vmorozov@microsoft.com> - GitHub <noreply@github.com> PR-URL: https://github.com/nodejs/node/pull/53590 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Gabriel Schulhof <gabrielschulhof@gmail.com> Reviewed-By: Chengzhong Wu <legendecas@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Michael Dawson <midawson@redhat.com> ------------------------------ Generated metadata ------------------------------ PR-URL: https://github.com/nodejs/node/pull/53590 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Gabriel Schulhof <gabrielschulhof@gmail.com> Reviewed-By: Chengzhong Wu <legendecas@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Michael Dawson <midawson@redhat.com> -------------------------------------------------------------------------------- ⚠ Commits were pushed since the last approving review: ⚠ - node-api: remove RefBase and CallbackWrapper ⚠ - reduce size of Reference ⚠ - address PR feedback ⚠ - add const for refcount() ℹ This PR was created on Tue, 25 Jun 2024 21:35:58 GMT ✔ Approvals: 5 ✔ - Yagiz Nizipli (@anonrig) (TSC): https://github.com/nodejs/node/pull/53590#pullrequestreview-2141773353 ✔ - Gabriel Schulhof (@gabrielschulhof): https://github.com/nodejs/node/pull/53590#pullrequestreview-2148413989 ✔ - Chengzhong Wu (@legendecas) (TSC): https://github.com/nodejs/node/pull/53590#pullrequestreview-2151082401 ✔ - James M Snell (@jasnell) (TSC): https://github.com/nodejs/node/pull/53590#pullrequestreview-2157911770 ✔ - Michael Dawson (@mhdawson) (TSC): https://github.com/nodejs/node/pull/53590#pullrequestreview-2175228053 ✔ Last GitHub CI successful ℹ Last Full PR CI on 2024-08-23T13:20:52Z: https://ci.nodejs.org/job/node-test-pull-request/61377/ - Querying data for job/node-test-pull-request/61377/ ✔ Last Jenkins CI successful -------------------------------------------------------------------------------- ✔ Aborted `git node land` session in /home/runner/work/node/node/.ncuhttps://github.com/nodejs/node/actions/runs/10548497690 |
nodejs-github-bot
added
the
commit-queue-failed
An error occurred while landing this pull request using GitHub Actions.
label
Aug 25, 2024
@nodejs/node-api , could you please sign off the latest changes. The last CI build is succeeded and we must be able to merge the PR. |
legendecas
approved these changes
Aug 27, 2024
legendecas
added
commit-queue
Add this label to land a pull request using GitHub Actions.
commit-queue-squash
Add this label to instruct the Commit Queue to squash all the PR commits into the first one.
and removed
commit-queue-failed
An error occurred while landing this pull request using GitHub Actions.
labels
Aug 27, 2024
nodejs-github-bot
removed
the
commit-queue
Add this label to land a pull request using GitHub Actions.
label
Aug 27, 2024
Landed in 431ac16 |
toyobayashi
added a commit
to toyobayashi/emnapi
that referenced
this pull request
Aug 27, 2024
* refactor: remove RefBase (nodejs/node#53590) * export ReferenceOwnership as runtime value
@legendecas , thank you for merging it! :) |
RafaelGSS
pushed a commit
that referenced
this pull request
Aug 30, 2024
PR-URL: #53590 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Gabriel Schulhof <gabrielschulhof@gmail.com> Reviewed-By: Chengzhong Wu <legendecas@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Michael Dawson <midawson@redhat.com>
RafaelGSS
pushed a commit
that referenced
this pull request
Aug 30, 2024
PR-URL: #53590 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Gabriel Schulhof <gabrielschulhof@gmail.com> Reviewed-By: Chengzhong Wu <legendecas@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Michael Dawson <midawson@redhat.com>
Merged
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
author ready
PRs that have at least one approval, no pending requests for changes, and a CI started.
c++
Issues and PRs that require attention from people who are familiar with C++.
commit-queue-squash
Add this label to instruct the Commit Queue to squash all the PR commits into the first one.
needs-ci
PRs that need a full CI run.
node-api
Issues and PRs related to the Node-API.
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