Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/deps
diff options
context:
space:
mode:
authorStephen Belanger <stephen.belanger@datadoghq.com>2021-08-26 12:45:03 +0300
committerMyles Borins <mylesborins@github.com>2021-08-31 17:55:09 +0300
commit327838dd9670d9f3a19eb0d804dfb8929d6985b4 (patch)
tree146af9ef99f1ab25c3274510534c2f626801a85b /deps
parent89c1bbd7b2f6871858f185ace701af51e521de7c (diff)
deps: V8: backport c9224589cf53
Original commit message: [PATCH] Reland "[d8] Add d8 global variable" This is a reland of 6798619a69dfe3e244f85b83c4a327d94d426b32 Original change's description: > [d8] Add d8 global variable > > - Add a a "d8" global variable where d8 can provide helpers. > This in in preparation of adding d8.log for testing our log parsers > written in JavaScript. > > - Separate d8 helper creation into individual functions. > > Bug: v8:10668 > Change-Id: I84e434452463afb93ae403f890d8841b20b00703 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2400990 > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Commit-Queue: Camillo Bruni <cbruni@chromium.org> > Cr-Commit-Position: refs/heads/master@{#69801} Tbr: verwaest@chromium.org Bug: v8:10668 Change-Id: If3256ec4e11f01ef1dc5c2e61fa33ed6d7a6aee3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2409274 Reviewed-by: Camillo Bruni <cbruni@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#69867} Refs: https://github.com/v8/v8/commit/c9224589cf538d722ee1adccf378bbacef80eccc PR-URL: https://github.com/nodejs/node/pull/39743 Reviewed-By: Tobias Nießen <tniessen@tnie.de> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com> Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de> Reviewed-By: Michaël Zasso <targos@protonmail.com>
Diffstat (limited to 'deps')
-rw-r--r--deps/v8/src/d8/d8.cc158
-rw-r--r--deps/v8/src/d8/d8.h10
2 files changed, 104 insertions, 64 deletions
diff --git a/deps/v8/src/d8/d8.cc b/deps/v8/src/d8/d8.cc
index 523b3066635..a6c55be0523 100644
--- a/deps/v8/src/d8/d8.cc
+++ b/deps/v8/src/d8/d8.cc
@@ -1877,6 +1877,11 @@ Local<String> Shell::Stringify(Isolate* isolate, Local<Value> value) {
Local<ObjectTemplate> Shell::CreateGlobalTemplate(Isolate* isolate) {
Local<ObjectTemplate> global_template = ObjectTemplate::New(isolate);
+ global_template->Set(Symbol::GetToStringTag(isolate),
+ String::NewFromUtf8Literal(isolate, "global"));
+ global_template->Set(isolate, "version",
+ FunctionTemplate::New(isolate, Version));
+
global_template->Set(isolate, "print", FunctionTemplate::New(isolate, Print));
global_template->Set(isolate, "printErr",
FunctionTemplate::New(isolate, PrintErr));
@@ -1895,8 +1900,77 @@ Local<ObjectTemplate> Shell::CreateGlobalTemplate(Isolate* isolate) {
if (!options.omit_quit) {
global_template->Set(isolate, "quit", FunctionTemplate::New(isolate, Quit));
}
+ global_template->Set(isolate, "testRunner",
+ Shell::CreateTestRunnerTemplate(isolate));
+ global_template->Set(isolate, "Realm", Shell::CreateRealmTemplate(isolate));
+ global_template->Set(isolate, "performance",
+ Shell::CreatePerformanceTemplate(isolate));
+ global_template->Set(isolate, "Worker", Shell::CreateWorkerTemplate(isolate));
+ global_template->Set(isolate, "os", Shell::CreateOSTemplate(isolate));
+ global_template->Set(isolate, "d8", Shell::CreateD8Template(isolate));
+
+ if (i::FLAG_expose_async_hooks) {
+ global_template->Set(isolate, "async_hooks",
+ Shell::CreateAsyncHookTemplate(isolate));
+ }
+
+ return global_template;
+}
+
+Local<ObjectTemplate> Shell::CreateOSTemplate(Isolate* isolate) {
+ Local<ObjectTemplate> os_template = ObjectTemplate::New(isolate);
+ AddOSMethods(isolate, os_template);
+ return os_template;
+}
+
+Local<FunctionTemplate> Shell::CreateWorkerTemplate(Isolate* isolate) {
+ Local<FunctionTemplate> worker_fun_template =
+ FunctionTemplate::New(isolate, WorkerNew);
+ Local<Signature> worker_signature =
+ Signature::New(isolate, worker_fun_template);
+ worker_fun_template->SetClassName(
+ String::NewFromUtf8Literal(isolate, "Worker"));
+ worker_fun_template->ReadOnlyPrototype();
+ worker_fun_template->PrototypeTemplate()->Set(
+ isolate, "terminate",
+ FunctionTemplate::New(isolate, WorkerTerminate, Local<Value>(),
+ worker_signature));
+ worker_fun_template->PrototypeTemplate()->Set(
+ isolate, "postMessage",
+ FunctionTemplate::New(isolate, WorkerPostMessage, Local<Value>(),
+ worker_signature));
+ worker_fun_template->PrototypeTemplate()->Set(
+ isolate, "getMessage",
+ FunctionTemplate::New(isolate, WorkerGetMessage, Local<Value>(),
+ worker_signature));
+ worker_fun_template->InstanceTemplate()->SetInternalFieldCount(1);
+ return worker_fun_template;
+}
+
+Local<ObjectTemplate> Shell::CreateAsyncHookTemplate(Isolate* isolate) {
+ Local<ObjectTemplate> async_hooks_templ = ObjectTemplate::New(isolate);
+ async_hooks_templ->Set(isolate, "createHook",
+ FunctionTemplate::New(isolate, AsyncHooksCreateHook));
+ async_hooks_templ->Set(
+ isolate, "executionAsyncId",
+ FunctionTemplate::New(isolate, AsyncHooksExecutionAsyncId));
+ async_hooks_templ->Set(
+ isolate, "triggerAsyncId",
+ FunctionTemplate::New(isolate, AsyncHooksTriggerAsyncId));
+ return async_hooks_templ;
+}
+
+Local<ObjectTemplate> Shell::CreatePromiseHookTemplate(Isolate* isolate) {
+ Local<ObjectTemplate> promise_hooks_templ = ObjectTemplate::New(isolate);
+ promise_hooks_templ->Set(
+ isolate, "setHooks",
+ FunctionTemplate::New(isolate, SetPromiseHooks, Local<Value>(),
+ Local<Signature>(), 4));
+ return promise_hooks_templ;
+}
+
+Local<ObjectTemplate> Shell::CreateTestRunnerTemplate(Isolate* isolate) {
Local<ObjectTemplate> test_template = ObjectTemplate::New(isolate);
- global_template->Set(isolate, "testRunner", test_template);
test_template->Set(isolate, "notifyDone",
FunctionTemplate::New(isolate, NotifyDone));
test_template->Set(isolate, "waitUntilDone",
@@ -1905,13 +1979,20 @@ Local<ObjectTemplate> Shell::CreateGlobalTemplate(Isolate* isolate) {
// installed on the global object can be hidden with the --omit-quit flag
// (e.g. on asan bots).
test_template->Set(isolate, "quit", FunctionTemplate::New(isolate, Quit));
+ return test_template;
+}
- global_template->Set(isolate, "version",
- FunctionTemplate::New(isolate, Version));
- global_template->Set(Symbol::GetToStringTag(isolate),
- String::NewFromUtf8Literal(isolate, "global"));
+Local<ObjectTemplate> Shell::CreatePerformanceTemplate(Isolate* isolate) {
+ Local<ObjectTemplate> performance_template = ObjectTemplate::New(isolate);
+ performance_template->Set(isolate, "now",
+ FunctionTemplate::New(isolate, PerformanceNow));
+ performance_template->Set(
+ isolate, "measureMemory",
+ FunctionTemplate::New(isolate, PerformanceMeasureMemory));
+ return performance_template;
+}
- // Bind the Realm object.
+Local<ObjectTemplate> Shell::CreateRealmTemplate(Isolate* isolate) {
Local<ObjectTemplate> realm_template = ObjectTemplate::New(isolate);
realm_template->Set(isolate, "current",
FunctionTemplate::New(isolate, RealmCurrent));
@@ -1936,64 +2017,13 @@ Local<ObjectTemplate> Shell::CreateGlobalTemplate(Isolate* isolate) {
FunctionTemplate::New(isolate, RealmEval));
realm_template->SetAccessor(String::NewFromUtf8Literal(isolate, "shared"),
RealmSharedGet, RealmSharedSet);
- global_template->Set(isolate, "Realm", realm_template);
-
- Local<ObjectTemplate> performance_template = ObjectTemplate::New(isolate);
- performance_template->Set(isolate, "now",
- FunctionTemplate::New(isolate, PerformanceNow));
- performance_template->Set(
- isolate, "measureMemory",
- FunctionTemplate::New(isolate, PerformanceMeasureMemory));
- global_template->Set(isolate, "performance", performance_template);
-
- Local<FunctionTemplate> worker_fun_template =
- FunctionTemplate::New(isolate, WorkerNew);
- Local<Signature> worker_signature =
- Signature::New(isolate, worker_fun_template);
- worker_fun_template->SetClassName(
- String::NewFromUtf8Literal(isolate, "Worker"));
- worker_fun_template->ReadOnlyPrototype();
- worker_fun_template->PrototypeTemplate()->Set(
- isolate, "terminate",
- FunctionTemplate::New(isolate, WorkerTerminate, Local<Value>(),
- worker_signature));
- worker_fun_template->PrototypeTemplate()->Set(
- isolate, "postMessage",
- FunctionTemplate::New(isolate, WorkerPostMessage, Local<Value>(),
- worker_signature));
- worker_fun_template->PrototypeTemplate()->Set(
- isolate, "getMessage",
- FunctionTemplate::New(isolate, WorkerGetMessage, Local<Value>(),
- worker_signature));
- worker_fun_template->InstanceTemplate()->SetInternalFieldCount(1);
- global_template->Set(isolate, "Worker", worker_fun_template);
-
- Local<ObjectTemplate> os_templ = ObjectTemplate::New(isolate);
- AddOSMethods(isolate, os_templ);
- global_template->Set(isolate, "os", os_templ);
-
- if (i::FLAG_expose_async_hooks) {
- Local<ObjectTemplate> async_hooks_templ = ObjectTemplate::New(isolate);
- async_hooks_templ->Set(
- isolate, "createHook",
- FunctionTemplate::New(isolate, AsyncHooksCreateHook));
- async_hooks_templ->Set(
- isolate, "executionAsyncId",
- FunctionTemplate::New(isolate, AsyncHooksExecutionAsyncId));
- async_hooks_templ->Set(
- isolate, "triggerAsyncId",
- FunctionTemplate::New(isolate, AsyncHooksTriggerAsyncId));
- global_template->Set(isolate, "async_hooks", async_hooks_templ);
- }
- {
- Local<ObjectTemplate> promise_template = ObjectTemplate::New(isolate);
- promise_template->Set(
- isolate, "setHooks",
- FunctionTemplate::New(isolate, SetPromiseHooks, Local<Value>(),
- Local<Signature>(), 4));
- global_template->Set(isolate, "promise", promise_template);
- }
- return global_template;
+ return realm_template;
+}
+Local<ObjectTemplate> Shell::CreateD8Template(Isolate* isolate) {
+ Local<ObjectTemplate> d8_template = ObjectTemplate::New(isolate);
+ d8_template->Set(isolate, "promise",
+ Shell::CreatePromiseHookTemplate(isolate));
+ return d8_template;
}
static void PrintMessageCallback(Local<Message> message, Local<Value> error) {
diff --git a/deps/v8/src/d8/d8.h b/deps/v8/src/d8/d8.h
index b4fbde5a9d6..069115525d4 100644
--- a/deps/v8/src/d8/d8.h
+++ b/deps/v8/src/d8/d8.h
@@ -492,7 +492,17 @@ class Shell : public i::AllStatic {
static Local<String> Stringify(Isolate* isolate, Local<Value> value);
static void RunShell(Isolate* isolate);
static bool SetOptions(int argc, char* argv[]);
+
static Local<ObjectTemplate> CreateGlobalTemplate(Isolate* isolate);
+ static Local<ObjectTemplate> CreateOSTemplate(Isolate* isolate);
+ static Local<FunctionTemplate> CreateWorkerTemplate(Isolate* isolate);
+ static Local<ObjectTemplate> CreateAsyncHookTemplate(Isolate* isolate);
+ static Local<ObjectTemplate> CreatePromiseHookTemplate(Isolate* isolate);
+ static Local<ObjectTemplate> CreateTestRunnerTemplate(Isolate* isolate);
+ static Local<ObjectTemplate> CreatePerformanceTemplate(Isolate* isolate);
+ static Local<ObjectTemplate> CreateRealmTemplate(Isolate* isolate);
+ static Local<ObjectTemplate> CreateD8Template(Isolate* isolate);
+
static MaybeLocal<Context> CreateRealm(
const v8::FunctionCallbackInfo<v8::Value>& args, int index,
v8::MaybeLocal<Value> global_object);