summaryrefslogtreecommitdiff
path: root/deps
diff options
context:
space:
mode:
authorochang <ochang@chromium.org>2017-05-05 09:00:27 -0700
committerRich Trott <rtrott@gmail.com>2017-07-02 15:42:22 -0700
commit31349e224576f1846a900958c9fecf566d07a04c (patch)
tree20dd6557a89a23f34093c0aaf7b42a0414a70d1e /deps
parent0794c101efe223a3d4b79a2848327946fb1b8c60 (diff)
downloadandroid-node-v8-31349e224576f1846a900958c9fecf566d07a04c.tar.gz
android-node-v8-31349e224576f1846a900958c9fecf566d07a04c.tar.bz2
android-node-v8-31349e224576f1846a900958c9fecf566d07a04c.zip
deps: cherry-pick 3f4536894ac from V8 upstream
Original commit message: d8: Make in process stack dumping optional Adds a flag (--disable-in-process-stack-traces) to not install signal handlers so that e.g. ASan signal handlers will work. This flag mirrors chromium's one. R=jochen@chromium.org BUG=chromium:716235 Review-Url: https://codereview.chromium.org/2854173002 Cr-Commit-Position: refs/heads/master@{#45142} PR-URL: https://github.com/nodejs/node/pull/13985 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'deps')
-rw-r--r--deps/v8/include/libplatform/libplatform.h5
-rw-r--r--deps/v8/src/d8.cc12
-rw-r--r--deps/v8/src/d8.h4
-rw-r--r--deps/v8/src/libplatform/default-platform.cc9
4 files changed, 24 insertions, 6 deletions
diff --git a/deps/v8/include/libplatform/libplatform.h b/deps/v8/include/libplatform/libplatform.h
index 55a10204ee..f77742f0f6 100644
--- a/deps/v8/include/libplatform/libplatform.h
+++ b/deps/v8/include/libplatform/libplatform.h
@@ -13,6 +13,7 @@ namespace v8 {
namespace platform {
enum class IdleTaskSupport { kDisabled, kEnabled };
+enum class InProcessStackDumping { kDisabled, kEnabled };
/**
* Returns a new instance of the default v8::Platform implementation.
@@ -27,7 +28,9 @@ enum class IdleTaskSupport { kDisabled, kEnabled };
*/
V8_PLATFORM_EXPORT v8::Platform* CreateDefaultPlatform(
int thread_pool_size = 0,
- IdleTaskSupport idle_task_support = IdleTaskSupport::kDisabled);
+ IdleTaskSupport idle_task_support = IdleTaskSupport::kDisabled,
+ InProcessStackDumping in_process_stack_dumping =
+ InProcessStackDumping::kEnabled);
/**
* Pumps the message loop for the given isolate.
diff --git a/deps/v8/src/d8.cc b/deps/v8/src/d8.cc
index cb29f4fd30..62a6518d68 100644
--- a/deps/v8/src/d8.cc
+++ b/deps/v8/src/d8.cc
@@ -2575,6 +2575,9 @@ bool Shell::SetOptions(int argc, char* argv[]) {
} else if (strncmp(argv[i], "--lcov=", 7) == 0) {
options.lcov_file = argv[i] + 7;
argv[i] = NULL;
+ } else if (strcmp(argv[i], "--disable-in-process-stack-traces") == 0) {
+ options.disable_in_process_stack_traces = true;
+ argv[i] = NULL;
}
}
@@ -2998,10 +3001,17 @@ int Shell::Main(int argc, char* argv[]) {
#endif // defined(_WIN32) || defined(_WIN64)
if (!SetOptions(argc, argv)) return 1;
v8::V8::InitializeICUDefaultLocation(argv[0], options.icu_data_file);
+
+ v8::platform::InProcessStackDumping in_process_stack_dumping =
+ options.disable_in_process_stack_traces
+ ? v8::platform::InProcessStackDumping::kDisabled
+ : v8::platform::InProcessStackDumping::kEnabled;
+
g_platform = i::FLAG_verify_predictable
? new PredictablePlatform()
: v8::platform::CreateDefaultPlatform(
- 0, v8::platform::IdleTaskSupport::kEnabled);
+ 0, v8::platform::IdleTaskSupport::kEnabled,
+ in_process_stack_dumping);
platform::tracing::TracingController* tracing_controller;
if (options.trace_enabled) {
diff --git a/deps/v8/src/d8.h b/deps/v8/src/d8.h
index 8e0a8f615f..d885817f7e 100644
--- a/deps/v8/src/d8.h
+++ b/deps/v8/src/d8.h
@@ -304,7 +304,8 @@ class ShellOptions {
snapshot_blob(NULL),
trace_enabled(false),
trace_config(NULL),
- lcov_file(NULL) {}
+ lcov_file(NULL),
+ disable_in_process_stack_traces(false) {}
~ShellOptions() {
delete[] isolate_sources;
@@ -336,6 +337,7 @@ class ShellOptions {
bool trace_enabled;
const char* trace_config;
const char* lcov_file;
+ bool disable_in_process_stack_traces;
};
class Shell : public i::AllStatic {
diff --git a/deps/v8/src/libplatform/default-platform.cc b/deps/v8/src/libplatform/default-platform.cc
index 5cd80ad316..93dff69709 100644
--- a/deps/v8/src/libplatform/default-platform.cc
+++ b/deps/v8/src/libplatform/default-platform.cc
@@ -29,9 +29,12 @@ void PrintStackTrace() {
} // namespace
-v8::Platform* CreateDefaultPlatform(int thread_pool_size,
- IdleTaskSupport idle_task_support) {
- v8::base::debug::EnableInProcessStackDumping();
+v8::Platform* CreateDefaultPlatform(
+ int thread_pool_size, IdleTaskSupport idle_task_support,
+ InProcessStackDumping in_process_stack_dumping) {
+ if (in_process_stack_dumping == InProcessStackDumping::kEnabled) {
+ v8::base::debug::EnableInProcessStackDumping();
+ }
DefaultPlatform* platform = new DefaultPlatform(idle_task_support);
platform->SetThreadPoolSize(thread_pool_size);
platform->EnsureInitialized();