inspector: use final API#9028
Conversation
|
I'll be looking into CI failures - CI UI seems to be down, so this might take some time. |
jasnell
left a comment
There was a problem hiding this comment.
Rubber stamp LGTM once CI is good.
src/inspector_agent.cc
Outdated
There was a problem hiding this comment.
sizeof(UChar) doesn't look self-evidently correct. I assume it's shorthand for sizeof(*view.characters16()) (which is sizeof(uint16_t)) but code points >= 0x800 encode to more than two bytes.
There was a problem hiding this comment.
Thanks. I changed the sizeof & allowed the code to resize the buffer if need be.
src/inspector_agent.cc
Outdated
There was a problem hiding this comment.
Style nit: can you line break at the ( or line up the second argument?
There was a problem hiding this comment.
There's no longer need for a line break here.
src/inspector_agent.cc
Outdated
There was a problem hiding this comment.
Style nit: can you line up arguments more here?
There was a problem hiding this comment.
I rearranged the code.
src/inspector_agent.cc
Outdated
There was a problem hiding this comment.
For my own curiosity, is .c_str() rather than .data() necessary here if you also pass len?
src/inspector_agent.cc
Outdated
There was a problem hiding this comment.
Can you put the operator on the line before?
src/inspector_agent.cc
Outdated
There was a problem hiding this comment.
Style nit: can you line up the arguments?
src/inspector_agent.cc
Outdated
src/inspector_agent.cc
Outdated
There was a problem hiding this comment.
It's not exactly wrong but I'd wrap the body in braces for legibility.
|
@bnoordhuis I addressed your comments, please take another look. CI: https://ci.nodejs.org/job/node-test-pull-request/4506/ Linux ARM failure: exception in Hudson on one bot. |
c133999 to
83c7a88
Compare
|
@bnoordhuis Please take another look. |
src/inspector_agent.cc
Outdated
There was a problem hiding this comment.
If you're taking a dependency on ICU, then configure should have a --with-intl=none -> --without-inspector implication.
There was a problem hiding this comment.
I modified configure - now disabling either ICU or OpenSSL will also disable inspector.
src/inspector_agent.cc
Outdated
There was a problem hiding this comment.
Can you line up the arguments and maybe put braces around the block?
src/inspector_agent.cc
Outdated
There was a problem hiding this comment.
Is this reinterpret_cast necessary? If for some reason UChar != uint16_t, then this line should arguably fail to compile instead of silently doing the wrong thing.
There was a problem hiding this comment.
Windows uses some different type for UChar (not clear from compiler messages - but probably wchar).
src/inspector_agent.cc
Outdated
There was a problem hiding this comment.
Does that mean this function may return partial strings? How bad is that?
There was a problem hiding this comment.
Not sure what you mean here. This code makes sure string has enough capacity.
There was a problem hiding this comment.
Correct me if I'm wrong but CheckedArrayByteSink is instantiated every time with the same arguments in this loop so logically sink.Overflowed() is either always true or always false. That means this loop either isn't (i.e., it's not a loop because it exits after the first iteration) or it's an infinite loop.
src/inspector_agent.cc
Outdated
There was a problem hiding this comment.
Same question as on line 212: is the reinterpret_cast necessary?
src/inspector_agent.cc
Outdated
There was a problem hiding this comment.
While you're here: s/NodeJS/Node.js/
src/inspector_agent.cc
Outdated
There was a problem hiding this comment.
Can you put each clause on its own line?
src/inspector_agent.cc
Outdated
|
@bnoordhuis Thank you for the review. I've updated the code, please take another look. |
|
@bnoordhuis Please, take another look. |
configure
Outdated
There was a problem hiding this comment.
Can you use options here? That way it won't depend on the order in which the configure_intl an/configure_openssl/configure_inspector functions are executed.
Also, please keep lines <= 80 columns.
src/inspector_agent.cc
Outdated
There was a problem hiding this comment.
Correct me if I'm wrong but CheckedArrayByteSink is instantiated every time with the same arguments in this loop so logically sink.Overflowed() is either always true or always false. That means this loop either isn't (i.e., it's not a loop because it exits after the first iteration) or it's an infinite loop.
src/inspector_agent.cc
Outdated
There was a problem hiding this comment.
Can you write this as stack_trace->GetFrameCount() > 0?
|
@bnoordhuis thank you for the review, I uploaded a new version - please take a look. GitHub Ui is not allowing me to answer this comment (does not show the reply entry field for some reason):
The code was relying on string length, that was updated in the loop. I changed the code to make it more obvious. |
bnoordhuis
left a comment
There was a problem hiding this comment.
LGTM with some final comments. I think I understand how sinking works now.
configure
Outdated
There was a problem hiding this comment.
I realize this is nitpicking but since we put operators at the end of the line everywhere else can you do it here too?
configure
Outdated
There was a problem hiding this comment.
This comment is no longer necessary.
src/inspector_agent.cc
Outdated
There was a problem hiding this comment.
If the reinterpret_cast is non-optional here, can you at least add a static_assert that checks the pointed-to types are of the same size? See #9280 for an example of what I mean.
|
Thank you for the review, I addressed the comments and submitted to CI: https://ci.nodejs.org/job/node-test-pull-request/4674/ |
|
Landed as 8f00455 |
This implementation switches to V8 inspector from the V8 repository. The new inspector integration is now using final APIs and exposes a stable wire protocol, removing the need for pointing the users to specific devtools version. PR-URL: #9028 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
|
hey @eugeneo this seemed to break configure on v6.x Would you be willing to manually backport |
|
Let me take a look. On Fri, Nov 18, 2016 at 1:50 PM Myles Borins notifications@github.com
|
|
@thealphanerd backporting this inspector to V8 5.1 is a significant effort. Can we opt out of it? I am not familiar with the process. |
|
@eugeneo we absolutely can opt out. Considering that v6.x has over 2 years of support left I'd like to get something as up to date as possible though. At what point will we no longer be able to update the inspector that we ship in v6? |
|
I guess this is the point inspector stops getting updated... The new On Fri, Nov 18, 2016 at 4:08 PM Myles Borins notifications@github.com
|
nodejs#9028 made Node.js use the V8 inspector bundled with the deps/v8 and removed the third party dependency. We can safely omit the non-existent license file.
Checklist
make -j8 test(UNIX), orvcbuild test nosign(Windows) passesAffected core subsystem(s)
deps: new version of the v8_inspector dependency
inspector: updated the code to use the new API
Description of change
This implementation switches to V8 inspector from the V8 repository. The
new inspector integration is now using final APIs and exposes a stable
wire protocol, removing the need for pointing the users to specific
devtools version.
CC: @ofrobots