-
Notifications
You must be signed in to change notification settings - Fork 30.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
zlib: use common owner symbol to access JS wrapper #23189
Conversation
Use the same symbol that other `AsyncWrap` instances also use for accessing the JS wrapper.
@@ -300,7 +301,8 @@ function Zlib(opts, mode) { | |||
Transform.call(this, opts); | |||
this.bytesWritten = 0; | |||
this._handle = new binding.Zlib(mode); | |||
this._handle.jsref = this; // Used by processCallback() and zlibOnError() | |||
// Used by processCallback() and zlibOnError() | |||
this._handle[owner_symbol] = this; |
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.
Maybe use a non-enumerable property here? Or would this not show up when inspecting the object?
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.
It would, but it would show up only when inspecting the handle object. In that case, I think pointing to the JS wrapper is a good idea.
When inspecting the JS wrapper, this shows up as [Circular]
, which seems okay to me.
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.
I personally would rather hide it since the property itself is probably not useful for the regular user. I also prefer to hide such things so less users would try to abuse any internals. If someone wants to see these properties it's always possible by explicitly requesting that.
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.
In that case _handle
is probably the thing to hide, not the owner on the handle.
One thing I know I’ve thought about a while ago is a custom inspection function for all native handles – not something that blends them out completely, but rather gives a useful overview over the current state in some way.
FreeBSD again: https://ci.nodejs.org/job/node-test-commit-freebsd/21012/ |
Landed in a9bb653 |
Use the same symbol that other `AsyncWrap` instances also use for accessing the JS wrapper. PR-URL: #23189 Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com>
Use the same symbol that other `AsyncWrap` instances also use for accessing the JS wrapper. PR-URL: #23189 Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com>
Use the same symbol that other `AsyncWrap` instances also use for accessing the JS wrapper. PR-URL: #23189 Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com>
Use the same symbol that other
AsyncWrap
instances also usefor accessing the JS wrapper.
Checklist
make -j4 test
(UNIX), orvcbuild test
(Windows) passes