@@ -2071,6 +2071,11 @@ Local<String> Shell::Stringify(Isolate* isolate, Local<Value> value) {
2071
2071
2072
2072
Local<ObjectTemplate> Shell::CreateGlobalTemplate (Isolate* isolate) {
2073
2073
Local<ObjectTemplate> global_template = ObjectTemplate::New (isolate);
2074
+ global_template->Set (Symbol::GetToStringTag (isolate),
2075
+ String::NewFromUtf8Literal (isolate, " global" ));
2076
+ global_template->Set (isolate, " version" ,
2077
+ FunctionTemplate::New (isolate, Version));
2078
+
2074
2079
global_template->Set (isolate, " print" , FunctionTemplate::New (isolate, Print));
2075
2080
global_template->Set (isolate, " printErr" ,
2076
2081
FunctionTemplate::New (isolate, PrintErr));
@@ -2089,8 +2094,79 @@ Local<ObjectTemplate> Shell::CreateGlobalTemplate(Isolate* isolate) {
2089
2094
if (!options.omit_quit ) {
2090
2095
global_template->Set (isolate, " quit" , FunctionTemplate::New (isolate, Quit));
2091
2096
}
2097
+ global_template->Set (isolate, " testRunner" ,
2098
+ Shell::CreateTestRunnerTemplate (isolate));
2099
+ global_template->Set (isolate, " Realm" , Shell::CreateRealmTemplate (isolate));
2100
+ global_template->Set (isolate, " performance" ,
2101
+ Shell::CreatePerformanceTemplate (isolate));
2102
+ global_template->Set (isolate, " Worker" , Shell::CreateWorkerTemplate (isolate));
2103
+ global_template->Set (isolate, " os" , Shell::CreateOSTemplate (isolate));
2104
+ global_template->Set (isolate, " d8" , Shell::CreateD8Template (isolate));
2105
+
2106
+ #ifdef V8_FUZZILLI
2107
+ global_template->Set (
2108
+ String::NewFromUtf8 (isolate, " fuzzilli" , NewStringType::kNormal )
2109
+ .ToLocalChecked (),
2110
+ FunctionTemplate::New (isolate, Fuzzilli), PropertyAttribute::DontEnum);
2111
+ #endif // V8_FUZZILLI
2112
+
2113
+ if (i::FLAG_expose_async_hooks) {
2114
+ global_template->Set (isolate, " async_hooks" ,
2115
+ Shell::CreateAsyncHookTemplate (isolate));
2116
+ }
2117
+
2118
+ return global_template;
2119
+ }
2120
+
2121
+ Local<ObjectTemplate> Shell::CreateOSTemplate (Isolate* isolate) {
2122
+ Local<ObjectTemplate> os_template = ObjectTemplate::New (isolate);
2123
+ AddOSMethods (isolate, os_template);
2124
+ return os_template;
2125
+ }
2126
+
2127
+ Local<FunctionTemplate> Shell::CreateWorkerTemplate (Isolate* isolate) {
2128
+ Local<FunctionTemplate> worker_fun_template =
2129
+ FunctionTemplate::New (isolate, WorkerNew);
2130
+ Local<Signature> worker_signature =
2131
+ Signature::New (isolate, worker_fun_template);
2132
+ worker_fun_template->SetClassName (
2133
+ String::NewFromUtf8Literal (isolate, " Worker" ));
2134
+ worker_fun_template->ReadOnlyPrototype ();
2135
+ worker_fun_template->PrototypeTemplate ()->Set (
2136
+ isolate, " terminate" ,
2137
+ FunctionTemplate::New (isolate, WorkerTerminate, Local<Value>(),
2138
+ worker_signature));
2139
+ worker_fun_template->PrototypeTemplate ()->Set (
2140
+ isolate, " terminateAndWait" ,
2141
+ FunctionTemplate::New (isolate, WorkerTerminateAndWait, Local<Value>(),
2142
+ worker_signature));
2143
+ worker_fun_template->PrototypeTemplate ()->Set (
2144
+ isolate, " postMessage" ,
2145
+ FunctionTemplate::New (isolate, WorkerPostMessage, Local<Value>(),
2146
+ worker_signature));
2147
+ worker_fun_template->PrototypeTemplate ()->Set (
2148
+ isolate, " getMessage" ,
2149
+ FunctionTemplate::New (isolate, WorkerGetMessage, Local<Value>(),
2150
+ worker_signature));
2151
+ worker_fun_template->InstanceTemplate ()->SetInternalFieldCount (1 );
2152
+ return worker_fun_template;
2153
+ }
2154
+
2155
+ Local<ObjectTemplate> Shell::CreateAsyncHookTemplate (Isolate* isolate) {
2156
+ Local<ObjectTemplate> async_hooks_templ = ObjectTemplate::New (isolate);
2157
+ async_hooks_templ->Set (isolate, " createHook" ,
2158
+ FunctionTemplate::New (isolate, AsyncHooksCreateHook));
2159
+ async_hooks_templ->Set (
2160
+ isolate, " executionAsyncId" ,
2161
+ FunctionTemplate::New (isolate, AsyncHooksExecutionAsyncId));
2162
+ async_hooks_templ->Set (
2163
+ isolate, " triggerAsyncId" ,
2164
+ FunctionTemplate::New (isolate, AsyncHooksTriggerAsyncId));
2165
+ return async_hooks_templ;
2166
+ }
2167
+
2168
+ Local<ObjectTemplate> Shell::CreateTestRunnerTemplate (Isolate* isolate) {
2092
2169
Local<ObjectTemplate> test_template = ObjectTemplate::New (isolate);
2093
- global_template->Set (isolate, " testRunner" , test_template);
2094
2170
test_template->Set (isolate, " notifyDone" ,
2095
2171
FunctionTemplate::New (isolate, NotifyDone));
2096
2172
test_template->Set (isolate, " waitUntilDone" ,
@@ -2099,13 +2175,20 @@ Local<ObjectTemplate> Shell::CreateGlobalTemplate(Isolate* isolate) {
2099
2175
// installed on the global object can be hidden with the --omit-quit flag
2100
2176
// (e.g. on asan bots).
2101
2177
test_template->Set (isolate, " quit" , FunctionTemplate::New (isolate, Quit));
2178
+ return test_template;
2179
+ }
2102
2180
2103
- global_template->Set (isolate, " version" ,
2104
- FunctionTemplate::New (isolate, Version));
2105
- global_template->Set (Symbol::GetToStringTag (isolate),
2106
- String::NewFromUtf8Literal (isolate, " global" ));
2181
+ Local<ObjectTemplate> Shell::CreatePerformanceTemplate (Isolate* isolate) {
2182
+ Local<ObjectTemplate> performance_template = ObjectTemplate::New (isolate);
2183
+ performance_template->Set (isolate, " now" ,
2184
+ FunctionTemplate::New (isolate, PerformanceNow));
2185
+ performance_template->Set (
2186
+ isolate, " measureMemory" ,
2187
+ FunctionTemplate::New (isolate, PerformanceMeasureMemory));
2188
+ return performance_template;
2189
+ }
2107
2190
2108
- // Bind the Realm object.
2191
+ Local<ObjectTemplate> Shell::CreateRealmTemplate (Isolate* isolate) {
2109
2192
Local<ObjectTemplate> realm_template = ObjectTemplate::New (isolate);
2110
2193
realm_template->Set (isolate, " current" ,
2111
2194
FunctionTemplate::New (isolate, RealmCurrent));
@@ -2130,68 +2213,12 @@ Local<ObjectTemplate> Shell::CreateGlobalTemplate(Isolate* isolate) {
2130
2213
FunctionTemplate::New (isolate, RealmEval));
2131
2214
realm_template->SetAccessor (String::NewFromUtf8Literal (isolate, " shared" ),
2132
2215
RealmSharedGet, RealmSharedSet);
2133
- global_template->Set (isolate, " Realm" , realm_template);
2134
-
2135
- Local<ObjectTemplate> performance_template = ObjectTemplate::New (isolate);
2136
- performance_template->Set (isolate, " now" ,
2137
- FunctionTemplate::New (isolate, PerformanceNow));
2138
- performance_template->Set (
2139
- isolate, " measureMemory" ,
2140
- FunctionTemplate::New (isolate, PerformanceMeasureMemory));
2141
- global_template->Set (isolate, " performance" , performance_template);
2142
-
2143
- Local<FunctionTemplate> worker_fun_template =
2144
- FunctionTemplate::New (isolate, WorkerNew);
2145
- Local<Signature> worker_signature =
2146
- Signature::New (isolate, worker_fun_template);
2147
- worker_fun_template->SetClassName (
2148
- String::NewFromUtf8Literal (isolate, " Worker" ));
2149
- worker_fun_template->ReadOnlyPrototype ();
2150
- worker_fun_template->PrototypeTemplate ()->Set (
2151
- isolate, " terminate" ,
2152
- FunctionTemplate::New (isolate, WorkerTerminate, Local<Value>(),
2153
- worker_signature));
2154
- worker_fun_template->PrototypeTemplate ()->Set (
2155
- isolate, " terminateAndWait" ,
2156
- FunctionTemplate::New (isolate, WorkerTerminateAndWait, Local<Value>(),
2157
- worker_signature));
2158
- worker_fun_template->PrototypeTemplate ()->Set (
2159
- isolate, " postMessage" ,
2160
- FunctionTemplate::New (isolate, WorkerPostMessage, Local<Value>(),
2161
- worker_signature));
2162
- worker_fun_template->PrototypeTemplate ()->Set (
2163
- isolate, " getMessage" ,
2164
- FunctionTemplate::New (isolate, WorkerGetMessage, Local<Value>(),
2165
- worker_signature));
2166
- worker_fun_template->InstanceTemplate ()->SetInternalFieldCount (1 );
2167
- global_template->Set (isolate, " Worker" , worker_fun_template);
2168
-
2169
- Local<ObjectTemplate> os_templ = ObjectTemplate::New (isolate);
2170
- AddOSMethods (isolate, os_templ);
2171
- global_template->Set (isolate, " os" , os_templ);
2172
-
2173
- #ifdef V8_FUZZILLI
2174
- global_template->Set (
2175
- String::NewFromUtf8 (isolate, " fuzzilli" , NewStringType::kNormal )
2176
- .ToLocalChecked (),
2177
- FunctionTemplate::New (isolate, Fuzzilli), PropertyAttribute::DontEnum);
2178
- #endif // V8_FUZZILLI
2179
-
2180
- if (i::FLAG_expose_async_hooks) {
2181
- Local<ObjectTemplate> async_hooks_templ = ObjectTemplate::New (isolate);
2182
- async_hooks_templ->Set (
2183
- isolate, " createHook" ,
2184
- FunctionTemplate::New (isolate, AsyncHooksCreateHook));
2185
- async_hooks_templ->Set (
2186
- isolate, " executionAsyncId" ,
2187
- FunctionTemplate::New (isolate, AsyncHooksExecutionAsyncId));
2188
- async_hooks_templ->Set (
2189
- isolate, " triggerAsyncId" ,
2190
- FunctionTemplate::New (isolate, AsyncHooksTriggerAsyncId));
2191
- global_template->Set (isolate, " async_hooks" , async_hooks_templ);
2192
- }
2216
+ return realm_template;
2217
+ }
2193
2218
2194
- return global_template;
2219
+ Local<ObjectTemplate> Shell::CreateD8Template (Isolate* isolate) {
2220
+ Local<ObjectTemplate> d8_template = ObjectTemplate::New (isolate);
2221
+ return d8_template;
2195
2222
}
2196
2223
2197
2224
static void PrintMessageCallback (Local<Message> message, Local<Value> error) {
0 commit comments