Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
inspector: only write coverage in fully bootstrapped Environments
The NODE_V8_COVERAGE folder and the source map computation are setup
during pre-execution since they rely on environment variables as well
as JS states. Therefore, we need to give up serialization of JS coverage
profiles for Environments that have not go through pre-execution. Currently
this is only possible for Environments created using the embedder API
CreateEnvironment().

As a result we won't have JS coverage data for most cctests, but if that
proves to be necessary we could just run lib/internal/main/environment.js
for these Environments created for cctests.

Fixes: #32912
Refs: 65e18a8
Refs: 5bf4372
8aa7ef7
  • Loading branch information
joyeecheung committed Apr 21, 2020
commit df4831ce81bd1c968a0d232b469cd885b34314ac
10 changes: 10 additions & 0 deletions src/inspector_profiler.cc
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,16 @@ void V8CoverageConnection::WriteProfile(Local<String> message) {
HandleScope handle_scope(isolate);
Context::Scope context_scope(context);

// This is only set up during pre-execution (when the environment variables
// becomes available in the JS land). If it's empty, we don't have coverage
// directory path (which is resolved in JS land at the moment) either, so
// the best we could to is to just discard the profile and do nothing.
// This should only happen in half-baked Environments created using the
// embedder API.
if (env_->source_map_cache_getter().IsEmpty()) {
return;
}

// Get message.result from the response.
Local<Object> result;
if (!ParseProfile(env_, message, type()).ToLocal(&result)) {
Expand Down