aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/test/inspector/inspector-test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/inspector/inspector-test.cc')
-rw-r--r--deps/v8/test/inspector/inspector-test.cc108
1 files changed, 70 insertions, 38 deletions
diff --git a/deps/v8/test/inspector/inspector-test.cc b/deps/v8/test/inspector/inspector-test.cc
index d69ee6f4e2..4f5a31d290 100644
--- a/deps/v8/test/inspector/inspector-test.cc
+++ b/deps/v8/test/inspector/inspector-test.cc
@@ -21,6 +21,15 @@
#include "test/inspector/isolate-data.h"
#include "test/inspector/task-runner.h"
+namespace v8 {
+namespace internal {
+
+extern void DisableEmbeddedBlobRefcounting();
+extern void FreeCurrentEmbeddedBlob();
+
+} // namespace internal
+} // namespace v8
+
namespace {
std::vector<TaskRunner*> task_runners;
@@ -312,6 +321,9 @@ class UtilsExtension : public IsolateData::SetupGlobalTask {
v8::FunctionTemplate::New(isolate,
&UtilsExtension::CreateContextGroup));
utils->Set(
+ ToV8String(isolate, "resetContextGroup"),
+ v8::FunctionTemplate::New(isolate, &UtilsExtension::ResetContextGroup));
+ utils->Set(
ToV8String(isolate, "connectSession"),
v8::FunctionTemplate::New(isolate, &UtilsExtension::ConnectSession));
utils->Set(
@@ -526,6 +538,18 @@ class UtilsExtension : public IsolateData::SetupGlobalTask {
v8::Int32::New(args.GetIsolate(), context_group_id));
}
+ static void ResetContextGroup(
+ const v8::FunctionCallbackInfo<v8::Value>& args) {
+ if (args.Length() != 1 || !args[0]->IsInt32()) {
+ fprintf(stderr, "Internal error: resetContextGroup(context_group_id).");
+ Exit();
+ }
+ int context_group_id = args[0].As<v8::Int32>()->Value();
+ RunSyncTask(backend_runner_, [&context_group_id](IsolateData* data) {
+ data->ResetContextGroup(context_group_id);
+ });
+ }
+
static void ConnectSession(const v8::FunctionCallbackInfo<v8::Value>& args) {
if (args.Length() != 3 || !args[0]->IsInt32() || !args[1]->IsString() ||
!args[2]->IsFunction()) {
@@ -1059,6 +1083,7 @@ int main(int argc, char* argv[]) {
v8::V8::SetFlagsFromCommandLine(&argc, argv, true);
v8::V8::InitializeExternalStartupData(argv[0]);
v8::V8::Initialize();
+ i::DisableEmbeddedBlobRefcounting();
v8::base::Semaphore ready_semaphore(0);
@@ -1072,49 +1097,56 @@ int main(int argc, char* argv[]) {
}
}
- IsolateData::SetupGlobalTasks frontend_extensions;
- frontend_extensions.emplace_back(new UtilsExtension());
- TaskRunner frontend_runner(std::move(frontend_extensions), true,
- &ready_semaphore, nullptr, false);
- ready_semaphore.Wait();
+ {
+ IsolateData::SetupGlobalTasks frontend_extensions;
+ frontend_extensions.emplace_back(new UtilsExtension());
+ TaskRunner frontend_runner(std::move(frontend_extensions), true,
+ &ready_semaphore, nullptr, false);
+ ready_semaphore.Wait();
+
+ int frontend_context_group_id = 0;
+ RunSyncTask(&frontend_runner,
+ [&frontend_context_group_id](IsolateData* data) {
+ frontend_context_group_id = data->CreateContextGroup();
+ });
- int frontend_context_group_id = 0;
- RunSyncTask(&frontend_runner,
- [&frontend_context_group_id](IsolateData* data) {
- frontend_context_group_id = data->CreateContextGroup();
- });
-
- IsolateData::SetupGlobalTasks backend_extensions;
- backend_extensions.emplace_back(new SetTimeoutExtension());
- backend_extensions.emplace_back(new InspectorExtension());
- TaskRunner backend_runner(std::move(backend_extensions), false,
- &ready_semaphore,
- startup_data.data ? &startup_data : nullptr, true);
- ready_semaphore.Wait();
- UtilsExtension::set_backend_task_runner(&backend_runner);
+ IsolateData::SetupGlobalTasks backend_extensions;
+ backend_extensions.emplace_back(new SetTimeoutExtension());
+ backend_extensions.emplace_back(new InspectorExtension());
+ TaskRunner backend_runner(
+ std::move(backend_extensions), false, &ready_semaphore,
+ startup_data.data ? &startup_data : nullptr, true);
+ ready_semaphore.Wait();
+ UtilsExtension::set_backend_task_runner(&backend_runner);
+
+ task_runners.push_back(&frontend_runner);
+ task_runners.push_back(&backend_runner);
+
+ for (int i = 1; i < argc; ++i) {
+ // Ignore unknown flags.
+ if (argv[i] == nullptr || argv[i][0] == '-') continue;
+
+ bool exists = false;
+ std::string chars = v8::internal::ReadFile(argv[i], &exists, true);
+ if (!exists) {
+ fprintf(stderr, "Internal error: script file doesn't exists: %s\n",
+ argv[i]);
+ Exit();
+ }
+ frontend_runner.Append(
+ new ExecuteStringTask(chars, frontend_context_group_id));
+ }
- task_runners.push_back(&frontend_runner);
- task_runners.push_back(&backend_runner);
+ frontend_runner.Join();
+ backend_runner.Join();
- for (int i = 1; i < argc; ++i) {
- // Ignore unknown flags.
- if (argv[i] == nullptr || argv[i][0] == '-') continue;
+ UtilsExtension::ClearAllSessions();
+ delete startup_data.data;
- bool exists = false;
- std::string chars = v8::internal::ReadFile(argv[i], &exists, true);
- if (!exists) {
- fprintf(stderr, "Internal error: script file doesn't exists: %s\n",
- argv[i]);
- Exit();
- }
- frontend_runner.Append(
- new ExecuteStringTask(chars, frontend_context_group_id));
+ // TaskRunners go out of scope here, which causes Isolate teardown and all
+ // running background tasks to be properly joined.
}
- frontend_runner.Join();
- backend_runner.Join();
-
- delete startup_data.data;
- UtilsExtension::ClearAllSessions();
+ i::FreeCurrentEmbeddedBlob();
return 0;
}