-
Jose Dapena Paz authored
If a tracing session starts after a script load has happened, then it is not emitted, so the source information is not visible in ETW. This is because we keep track of the loads already emitted, and we try to launch traces even when recording is not happening. To prevent this problem, this CS keeps track of when recording is happening. So, when it starts, it will emit all the already generated code immediately. This will add some overhead on tracing session start if system instrumentation is enabled, but this is better than not having instrumentation for previous symbols. There is still one problem: for each active isolate, it calls for replaying the event recording in an asynchronous task. So, for any JS task that is already running when tracing start, symbols will not be available. This makes this change less useful as, for a batch task or any long JS code that is already running when tracing start, we will not get symbols yet. Only after the foreground task runner runs the task to emit the ETW events we will get the symbols resolved in the trace. An specific approach was required for d8 interactive shell. As, when showing prompt, it is not processing the task runner queue, and it is only processed when the next script is launched, it first checks if it needs to generate ETW symbols information before running the script. Bug: v8:12932 Change-Id: I8b056c69cee0350f921a01c87beb9f2d51e10583 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3705541Reviewed-by: Camillo Bruni <cbruni@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Commit-Queue: José Dapena Paz <jdapena@igalia.com> Cr-Commit-Position: refs/heads/main@{#81673}
0e7d5763