Skip to content

Commit 327838d

Browse files
Stephen BelangerMylesBorins
Stephen Belanger
authored andcommitted
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 <[email protected]> > Commit-Queue: Camillo Bruni <[email protected]> > Cr-Commit-Position: refs/heads/master@{#69801} Tbr: [email protected] Bug: v8:10668 Change-Id: If3256ec4e11f01ef1dc5c2e61fa33ed6d7a6aee3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2409274 Reviewed-by: Camillo Bruni <[email protected]> Commit-Queue: Camillo Bruni <[email protected]> Cr-Commit-Position: refs/heads/master@{#69867} Refs: v8/v8@c922458 PR-URL: #39743 Reviewed-By: Tobias Nießen <[email protected]> Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Franziska Hinkelmann <[email protected]> Reviewed-By: Gerhard Stöbich <[email protected]> Reviewed-By: Michaël Zasso <[email protected]>
1 parent 89c1bbd commit 327838d

File tree

3 files changed

+105
-65
lines changed

3 files changed

+105
-65
lines changed

common.gypi

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
# Reset this number to 0 on major V8 upgrades.
3838
# Increment by one for each non-official patch applied to deps/v8.
39-
'v8_embedder_string': '-node.82',
39+
'v8_embedder_string': '-node.83',
4040

4141
##### V8 defaults for Node.js #####
4242

deps/v8/src/d8/d8.cc

+94-64
Original file line numberDiff line numberDiff line change
@@ -1877,6 +1877,11 @@ Local<String> Shell::Stringify(Isolate* isolate, Local<Value> value) {
18771877

18781878
Local<ObjectTemplate> Shell::CreateGlobalTemplate(Isolate* isolate) {
18791879
Local<ObjectTemplate> global_template = ObjectTemplate::New(isolate);
1880+
global_template->Set(Symbol::GetToStringTag(isolate),
1881+
String::NewFromUtf8Literal(isolate, "global"));
1882+
global_template->Set(isolate, "version",
1883+
FunctionTemplate::New(isolate, Version));
1884+
18801885
global_template->Set(isolate, "print", FunctionTemplate::New(isolate, Print));
18811886
global_template->Set(isolate, "printErr",
18821887
FunctionTemplate::New(isolate, PrintErr));
@@ -1895,8 +1900,77 @@ Local<ObjectTemplate> Shell::CreateGlobalTemplate(Isolate* isolate) {
18951900
if (!options.omit_quit) {
18961901
global_template->Set(isolate, "quit", FunctionTemplate::New(isolate, Quit));
18971902
}
1903+
global_template->Set(isolate, "testRunner",
1904+
Shell::CreateTestRunnerTemplate(isolate));
1905+
global_template->Set(isolate, "Realm", Shell::CreateRealmTemplate(isolate));
1906+
global_template->Set(isolate, "performance",
1907+
Shell::CreatePerformanceTemplate(isolate));
1908+
global_template->Set(isolate, "Worker", Shell::CreateWorkerTemplate(isolate));
1909+
global_template->Set(isolate, "os", Shell::CreateOSTemplate(isolate));
1910+
global_template->Set(isolate, "d8", Shell::CreateD8Template(isolate));
1911+
1912+
if (i::FLAG_expose_async_hooks) {
1913+
global_template->Set(isolate, "async_hooks",
1914+
Shell::CreateAsyncHookTemplate(isolate));
1915+
}
1916+
1917+
return global_template;
1918+
}
1919+
1920+
Local<ObjectTemplate> Shell::CreateOSTemplate(Isolate* isolate) {
1921+
Local<ObjectTemplate> os_template = ObjectTemplate::New(isolate);
1922+
AddOSMethods(isolate, os_template);
1923+
return os_template;
1924+
}
1925+
1926+
Local<FunctionTemplate> Shell::CreateWorkerTemplate(Isolate* isolate) {
1927+
Local<FunctionTemplate> worker_fun_template =
1928+
FunctionTemplate::New(isolate, WorkerNew);
1929+
Local<Signature> worker_signature =
1930+
Signature::New(isolate, worker_fun_template);
1931+
worker_fun_template->SetClassName(
1932+
String::NewFromUtf8Literal(isolate, "Worker"));
1933+
worker_fun_template->ReadOnlyPrototype();
1934+
worker_fun_template->PrototypeTemplate()->Set(
1935+
isolate, "terminate",
1936+
FunctionTemplate::New(isolate, WorkerTerminate, Local<Value>(),
1937+
worker_signature));
1938+
worker_fun_template->PrototypeTemplate()->Set(
1939+
isolate, "postMessage",
1940+
FunctionTemplate::New(isolate, WorkerPostMessage, Local<Value>(),
1941+
worker_signature));
1942+
worker_fun_template->PrototypeTemplate()->Set(
1943+
isolate, "getMessage",
1944+
FunctionTemplate::New(isolate, WorkerGetMessage, Local<Value>(),
1945+
worker_signature));
1946+
worker_fun_template->InstanceTemplate()->SetInternalFieldCount(1);
1947+
return worker_fun_template;
1948+
}
1949+
1950+
Local<ObjectTemplate> Shell::CreateAsyncHookTemplate(Isolate* isolate) {
1951+
Local<ObjectTemplate> async_hooks_templ = ObjectTemplate::New(isolate);
1952+
async_hooks_templ->Set(isolate, "createHook",
1953+
FunctionTemplate::New(isolate, AsyncHooksCreateHook));
1954+
async_hooks_templ->Set(
1955+
isolate, "executionAsyncId",
1956+
FunctionTemplate::New(isolate, AsyncHooksExecutionAsyncId));
1957+
async_hooks_templ->Set(
1958+
isolate, "triggerAsyncId",
1959+
FunctionTemplate::New(isolate, AsyncHooksTriggerAsyncId));
1960+
return async_hooks_templ;
1961+
}
1962+
1963+
Local<ObjectTemplate> Shell::CreatePromiseHookTemplate(Isolate* isolate) {
1964+
Local<ObjectTemplate> promise_hooks_templ = ObjectTemplate::New(isolate);
1965+
promise_hooks_templ->Set(
1966+
isolate, "setHooks",
1967+
FunctionTemplate::New(isolate, SetPromiseHooks, Local<Value>(),
1968+
Local<Signature>(), 4));
1969+
return promise_hooks_templ;
1970+
}
1971+
1972+
Local<ObjectTemplate> Shell::CreateTestRunnerTemplate(Isolate* isolate) {
18981973
Local<ObjectTemplate> test_template = ObjectTemplate::New(isolate);
1899-
global_template->Set(isolate, "testRunner", test_template);
19001974
test_template->Set(isolate, "notifyDone",
19011975
FunctionTemplate::New(isolate, NotifyDone));
19021976
test_template->Set(isolate, "waitUntilDone",
@@ -1905,13 +1979,20 @@ Local<ObjectTemplate> Shell::CreateGlobalTemplate(Isolate* isolate) {
19051979
// installed on the global object can be hidden with the --omit-quit flag
19061980
// (e.g. on asan bots).
19071981
test_template->Set(isolate, "quit", FunctionTemplate::New(isolate, Quit));
1982+
return test_template;
1983+
}
19081984

1909-
global_template->Set(isolate, "version",
1910-
FunctionTemplate::New(isolate, Version));
1911-
global_template->Set(Symbol::GetToStringTag(isolate),
1912-
String::NewFromUtf8Literal(isolate, "global"));
1985+
Local<ObjectTemplate> Shell::CreatePerformanceTemplate(Isolate* isolate) {
1986+
Local<ObjectTemplate> performance_template = ObjectTemplate::New(isolate);
1987+
performance_template->Set(isolate, "now",
1988+
FunctionTemplate::New(isolate, PerformanceNow));
1989+
performance_template->Set(
1990+
isolate, "measureMemory",
1991+
FunctionTemplate::New(isolate, PerformanceMeasureMemory));
1992+
return performance_template;
1993+
}
19131994

1914-
// Bind the Realm object.
1995+
Local<ObjectTemplate> Shell::CreateRealmTemplate(Isolate* isolate) {
19151996
Local<ObjectTemplate> realm_template = ObjectTemplate::New(isolate);
19161997
realm_template->Set(isolate, "current",
19171998
FunctionTemplate::New(isolate, RealmCurrent));
@@ -1936,64 +2017,13 @@ Local<ObjectTemplate> Shell::CreateGlobalTemplate(Isolate* isolate) {
19362017
FunctionTemplate::New(isolate, RealmEval));
19372018
realm_template->SetAccessor(String::NewFromUtf8Literal(isolate, "shared"),
19382019
RealmSharedGet, RealmSharedSet);
1939-
global_template->Set(isolate, "Realm", realm_template);
1940-
1941-
Local<ObjectTemplate> performance_template = ObjectTemplate::New(isolate);
1942-
performance_template->Set(isolate, "now",
1943-
FunctionTemplate::New(isolate, PerformanceNow));
1944-
performance_template->Set(
1945-
isolate, "measureMemory",
1946-
FunctionTemplate::New(isolate, PerformanceMeasureMemory));
1947-
global_template->Set(isolate, "performance", performance_template);
1948-
1949-
Local<FunctionTemplate> worker_fun_template =
1950-
FunctionTemplate::New(isolate, WorkerNew);
1951-
Local<Signature> worker_signature =
1952-
Signature::New(isolate, worker_fun_template);
1953-
worker_fun_template->SetClassName(
1954-
String::NewFromUtf8Literal(isolate, "Worker"));
1955-
worker_fun_template->ReadOnlyPrototype();
1956-
worker_fun_template->PrototypeTemplate()->Set(
1957-
isolate, "terminate",
1958-
FunctionTemplate::New(isolate, WorkerTerminate, Local<Value>(),
1959-
worker_signature));
1960-
worker_fun_template->PrototypeTemplate()->Set(
1961-
isolate, "postMessage",
1962-
FunctionTemplate::New(isolate, WorkerPostMessage, Local<Value>(),
1963-
worker_signature));
1964-
worker_fun_template->PrototypeTemplate()->Set(
1965-
isolate, "getMessage",
1966-
FunctionTemplate::New(isolate, WorkerGetMessage, Local<Value>(),
1967-
worker_signature));
1968-
worker_fun_template->InstanceTemplate()->SetInternalFieldCount(1);
1969-
global_template->Set(isolate, "Worker", worker_fun_template);
1970-
1971-
Local<ObjectTemplate> os_templ = ObjectTemplate::New(isolate);
1972-
AddOSMethods(isolate, os_templ);
1973-
global_template->Set(isolate, "os", os_templ);
1974-
1975-
if (i::FLAG_expose_async_hooks) {
1976-
Local<ObjectTemplate> async_hooks_templ = ObjectTemplate::New(isolate);
1977-
async_hooks_templ->Set(
1978-
isolate, "createHook",
1979-
FunctionTemplate::New(isolate, AsyncHooksCreateHook));
1980-
async_hooks_templ->Set(
1981-
isolate, "executionAsyncId",
1982-
FunctionTemplate::New(isolate, AsyncHooksExecutionAsyncId));
1983-
async_hooks_templ->Set(
1984-
isolate, "triggerAsyncId",
1985-
FunctionTemplate::New(isolate, AsyncHooksTriggerAsyncId));
1986-
global_template->Set(isolate, "async_hooks", async_hooks_templ);
1987-
}
1988-
{
1989-
Local<ObjectTemplate> promise_template = ObjectTemplate::New(isolate);
1990-
promise_template->Set(
1991-
isolate, "setHooks",
1992-
FunctionTemplate::New(isolate, SetPromiseHooks, Local<Value>(),
1993-
Local<Signature>(), 4));
1994-
global_template->Set(isolate, "promise", promise_template);
1995-
}
1996-
return global_template;
2020+
return realm_template;
2021+
}
2022+
Local<ObjectTemplate> Shell::CreateD8Template(Isolate* isolate) {
2023+
Local<ObjectTemplate> d8_template = ObjectTemplate::New(isolate);
2024+
d8_template->Set(isolate, "promise",
2025+
Shell::CreatePromiseHookTemplate(isolate));
2026+
return d8_template;
19972027
}
19982028

19992029
static void PrintMessageCallback(Local<Message> message, Local<Value> error) {

deps/v8/src/d8/d8.h

+10
Original file line numberDiff line numberDiff line change
@@ -492,7 +492,17 @@ class Shell : public i::AllStatic {
492492
static Local<String> Stringify(Isolate* isolate, Local<Value> value);
493493
static void RunShell(Isolate* isolate);
494494
static bool SetOptions(int argc, char* argv[]);
495+
495496
static Local<ObjectTemplate> CreateGlobalTemplate(Isolate* isolate);
497+
static Local<ObjectTemplate> CreateOSTemplate(Isolate* isolate);
498+
static Local<FunctionTemplate> CreateWorkerTemplate(Isolate* isolate);
499+
static Local<ObjectTemplate> CreateAsyncHookTemplate(Isolate* isolate);
500+
static Local<ObjectTemplate> CreatePromiseHookTemplate(Isolate* isolate);
501+
static Local<ObjectTemplate> CreateTestRunnerTemplate(Isolate* isolate);
502+
static Local<ObjectTemplate> CreatePerformanceTemplate(Isolate* isolate);
503+
static Local<ObjectTemplate> CreateRealmTemplate(Isolate* isolate);
504+
static Local<ObjectTemplate> CreateD8Template(Isolate* isolate);
505+
496506
static MaybeLocal<Context> CreateRealm(
497507
const v8::FunctionCallbackInfo<v8::Value>& args, int index,
498508
v8::MaybeLocal<Value> global_object);

0 commit comments

Comments
 (0)