Commit 603d52f3 authored by Andreas Haas's avatar Andreas Haas Committed by Commit Bot

[d8] Fix --enable-tracing

This CL fixes an issue with --enable-tracing which was introduced
recently where the tracing file was closed too early. In addition it
adds a test for --enable-tracing to avoid such an issue in the future.

R=machenbach@chromium.org, rmcilroy@chromium.org

Change-Id: I1b3699a4dfbe27230ac1d21d5f6bc7b2ee9ed435
Reviewed-on: https://chromium-review.googlesource.com/796214Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49742}
parent df659b17
...@@ -90,6 +90,7 @@ TAGS ...@@ -90,6 +90,7 @@ TAGS
bsuite bsuite
compile_commands.json compile_commands.json
d8 d8
!/test/mjsunit/d8
d8_g d8_g
gccauses gccauses
gcsuspects gcsuspects
......
...@@ -2876,6 +2876,9 @@ bool Shell::SetOptions(int argc, char* argv[]) { ...@@ -2876,6 +2876,9 @@ bool Shell::SetOptions(int argc, char* argv[]) {
} else if (strcmp(argv[i], "--enable-tracing") == 0) { } else if (strcmp(argv[i], "--enable-tracing") == 0) {
options.trace_enabled = true; options.trace_enabled = true;
argv[i] = nullptr; argv[i] = nullptr;
} else if (strncmp(argv[i], "--trace-path=", 13) == 0) {
options.trace_path = argv[i] + 13;
argv[i] = nullptr;
} else if (strncmp(argv[i], "--trace-config=", 15) == 0) { } else if (strncmp(argv[i], "--trace-config=", 15) == 0) {
options.trace_config = argv[i] + 15; options.trace_config = argv[i] + 15;
argv[i] = nullptr; argv[i] = nullptr;
...@@ -3306,7 +3309,8 @@ int Shell::Main(int argc, char* argv[]) { ...@@ -3306,7 +3309,8 @@ int Shell::Main(int argc, char* argv[]) {
std::unique_ptr<platform::tracing::TracingController> tracing; std::unique_ptr<platform::tracing::TracingController> tracing;
if (options.trace_enabled && !i::FLAG_verify_predictable) { if (options.trace_enabled && !i::FLAG_verify_predictable) {
tracing = base::make_unique<platform::tracing::TracingController>(); tracing = base::make_unique<platform::tracing::TracingController>();
trace_file.open("v8_trace.json");
trace_file.open(options.trace_path ? options.trace_path : "v8_trace.json");
platform::tracing::TraceBuffer* trace_buffer = platform::tracing::TraceBuffer* trace_buffer =
platform::tracing::TraceBuffer::CreateTraceBufferRingBuffer( platform::tracing::TraceBuffer::CreateTraceBufferRingBuffer(
platform::tracing::TraceBuffer::kRingBufferChunks, platform::tracing::TraceBuffer::kRingBufferChunks,
...@@ -3438,6 +3442,9 @@ int Shell::Main(int argc, char* argv[]) { ...@@ -3438,6 +3442,9 @@ int Shell::Main(int argc, char* argv[]) {
V8::Dispose(); V8::Dispose();
V8::ShutdownPlatform(); V8::ShutdownPlatform();
// Delete the platform explicitly here to write the tracing output to the
// tracing file.
g_platform.reset();
return result; return result;
} }
......
...@@ -301,6 +301,7 @@ class ShellOptions { ...@@ -301,6 +301,7 @@ class ShellOptions {
natives_blob(nullptr), natives_blob(nullptr),
snapshot_blob(nullptr), snapshot_blob(nullptr),
trace_enabled(false), trace_enabled(false),
trace_path(nullptr),
trace_config(nullptr), trace_config(nullptr),
lcov_file(nullptr), lcov_file(nullptr),
disable_in_process_stack_traces(false), disable_in_process_stack_traces(false),
...@@ -334,6 +335,7 @@ class ShellOptions { ...@@ -334,6 +335,7 @@ class ShellOptions {
const char* natives_blob; const char* natives_blob;
const char* snapshot_blob; const char* snapshot_blob;
bool trace_enabled; bool trace_enabled;
const char* trace_path;
const char* trace_config; const char* trace_config;
const char* lcov_file; const char* lcov_file;
bool disable_in_process_stack_traces; bool disable_in_process_stack_traces;
......
// Copyright 2017 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --enable-tracing --trace-path=test/mjsunit/d8/v8_trace.json
// Just test that running d8 with --enable-tracing does not crash in a normal
// execution without exceptions or calls to natives.
...@@ -113,6 +113,12 @@ ...@@ -113,6 +113,12 @@
'tools/tickprocessor': [PASS, NO_VARIANTS, ['arch == android_arm or arch == android_arm64 or arch == android_ia32', SKIP]], 'tools/tickprocessor': [PASS, NO_VARIANTS, ['arch == android_arm or arch == android_arm64 or arch == android_ia32', SKIP]],
'tools/dumpcpp': [PASS, NO_VARIANTS, ['arch == android_arm or arch == android_arm64 or arch == android_ia32', SKIP]], 'tools/dumpcpp': [PASS, NO_VARIANTS, ['arch == android_arm or arch == android_arm64 or arch == android_ia32', SKIP]],
##############################################################################
# This test generates a file in the test directory, so we cannot run several
# variants of the test simultaneously. Additionally the test should not be
# affected by variants.
'd8/enable-tracing': [PASS, NO_VARIANTS],
############################################################################## ##############################################################################
# Long running test that reproduces memory leak and should be run manually. # Long running test that reproduces memory leak and should be run manually.
'regress/regress-2073': [SKIP], 'regress/regress-2073': [SKIP],
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment