Lines Matching refs:env
24 #include "env-inl.h"
66 void AsyncWrap::DestroyAsyncIdsCallback(Environment* env) {
67 Local<Function> fn = env->async_hooks_destroy_function();
69 TryCatchScope try_catch(env, TryCatchScope::CatchMode::kFatal);
73 destroy_async_id_list.swap(*env->destroy_async_id_list());
74 if (!env->can_call_into_js()) return;
78 HandleScope scope(env->isolate());
79 Local<Value> async_id_value = Number::New(env->isolate(), async_id);
81 env->context(), Undefined(env->isolate()), 1, &async_id_value);
86 } while (!env->destroy_async_id_list()->empty());
89 void Emit(Environment* env, double async_id, AsyncHooks::Fields type,
91 AsyncHooks* async_hooks = env->async_hooks();
93 if (async_hooks->fields()[type] == 0 || !env->can_call_into_js())
96 HandleScope handle_scope(env->isolate());
97 Local<Value> async_id_value = Number::New(env->isolate(), async_id);
98 TryCatchScope try_catch(env, TryCatchScope::CatchMode::kFatal);
99 USE(fn->Call(env->context(), Undefined(env->isolate()), 1, &async_id_value));
103 void AsyncWrap::EmitPromiseResolve(Environment* env, double async_id) {
104 Emit(env, async_id, AsyncHooks::kPromiseResolve,
105 env->async_hooks_promise_resolve_function());
125 void AsyncWrap::EmitBefore(Environment* env, double async_id) {
126 Emit(env, async_id, AsyncHooks::kBefore,
127 env->async_hooks_before_function());
147 void AsyncWrap::EmitAfter(Environment* env, double async_id) {
150 Emit(env, async_id, AsyncHooks::kAfter,
151 env->async_hooks_after_function());
155 Environment* env = Environment::GetCurrent(args);
163 CHECK(env->async_hooks_init_function().IsEmpty());
170 fn_obj->Get(env->context(), \
171 FIXED_ONE_BYTE_STRING(env->isolate(), #name)) \
174 env->set_async_hooks_##name##_function(v.As<Function>()); \
186 Environment* env = Environment::GetCurrent(args);
188 env->ResetPromiseHooks(
198 Environment* env;
215 p->env->RemoveCleanupHook(DestroyParamCleanupHook, p.get());
218 !prop_bag->Get(p->env->context(), p->env->destroyed_string())
224 AsyncWrap::EmitDestroy(p->env, p->asyncId);
238 p->env = Environment::GetCurrent(args);
244 p->env->AddCleanupHook(DestroyParamCleanupHook, p);
256 Environment* env = Environment::GetCurrent(args);
259 double async_id = args[0]->NumberValue(env->context()).FromJust();
260 double trigger_async_id = args[1]->NumberValue(env->context()).FromJust();
261 env->async_hooks()->push_async_context(async_id, trigger_async_id, {});
266 Environment* env = Environment::GetCurrent(args);
267 double async_id = args[0]->NumberValue(env->context()).FromJust();
268 args.GetReturnValue().Set(env->async_hooks()->pop_async_context(async_id));
274 Environment* env = Environment::GetCurrent(args);
276 if (!args[0]->Uint32Value(env->context()).To(&index)) return;
278 env->async_hooks()->native_execution_async_resource(index));
283 Environment* env = Environment::GetCurrent(args);
284 env->async_hooks()->clear_async_id_stack();
310 AsyncWrap::EmitDestroy(env(), async_id_);
315 HandleScope handle_scope(env()->isolate());
316 USE(object()->Set(env()->context(), env()->resource_symbol(), object()));
328 Environment* env = Environment::GetCurrent(args);
331 env->set_async_hooks_callback_trampoline(args[0].As<Function>());
333 env->set_async_hooks_callback_trampoline(Local<Function>());
337 Local<FunctionTemplate> AsyncWrap::GetConstructorTemplate(Environment* env) {
338 Local<FunctionTemplate> tmpl = env->async_wrap_ctor_template();
340 Isolate* isolate = env->isolate();
342 tmpl->SetClassName(FIXED_ONE_BYTE_STRING(env->isolate(), "AsyncWrap"));
343 tmpl->Inherit(BaseObject::GetConstructorTemplate(env));
348 env->set_async_wrap_ctor_template(tmpl);
357 Environment* env = Environment::GetCurrent(context);
358 Isolate* isolate = env->isolate();
386 env->async_hooks()->fields().GetJSArray());
400 env->async_hooks()->async_id_fields().GetJSArray());
404 env->async_hooks()->js_execution_async_resources());
407 env->async_ids_stack_string(),
408 env->async_hooks()->async_ids_stack().GetJSArray()).Check();
441 env->set_async_hooks_init_function(Local<Function>());
442 env->set_async_hooks_before_function(Local<Function>());
443 env->set_async_hooks_after_function(Local<Function>());
444 env->set_async_hooks_destroy_function(Local<Function>());
445 env->set_async_hooks_promise_resolve_function(Local<Function>());
446 env->set_async_hooks_callback_trampoline(Local<Function>());
447 env->set_async_hooks_binding(target);
466 AsyncWrap::AsyncWrap(Environment* env,
470 : AsyncWrap(env, object, provider, execution_async_id, false) {}
472 AsyncWrap::AsyncWrap(Environment* env,
477 : AsyncWrap(env, object) {
486 AsyncWrap::AsyncWrap(Environment* env,
491 : AsyncWrap(env, object, provider, execution_async_id, true) {
495 AsyncWrap::AsyncWrap(Environment* env, Local<Object> object)
496 : BaseObject(env, object) {
544 void AsyncWrap::EmitDestroy(Environment* env, double async_id) {
545 if (env->async_hooks()->fields()[AsyncHooks::kDestroy] == 0 ||
546 !env->can_call_into_js()) {
550 if (env->destroy_async_id_list()->empty()) {
551 env->SetImmediate(&DestroyAsyncIdsCallback, CallbackFlags::kUnrefed);
557 if (env->destroy_async_id_list()->size() == 16384) {
558 env->RequestInterrupt([](Environment* env) {
559 env->context()->GetMicrotaskQueue()->EnqueueMicrotask(
560 env->isolate(),
563 }, env);
567 env->destroy_async_id_list()->push_back(async_id);
585 async_id_ = execution_async_id == kInvalidAsyncId ? env()->new_async_id()
587 trigger_async_id_ = env()->get_default_trigger_async_id();
590 HandleScope handle_scope(env()->isolate());
594 USE(obj->Set(env()->context(), env()->resource_symbol(), resource));
605 static_cast<int64_t>(env()->execution_async_id())); \
622 EmitAsyncInit(env(), resource,
623 env()->async_hooks()->provider_string(provider_type()),
628 void AsyncWrap::EmitAsyncInit(Environment* env,
635 AsyncHooks* async_hooks = env->async_hooks();
642 HandleScope scope(env->isolate());
643 Local<Function> init_fn = env->async_hooks_init_function();
646 Number::New(env->isolate(), async_id),
648 Number::New(env->isolate(), trigger_async_id),
652 TryCatchScope try_catch(env, TryCatchScope::CatchMode::kFatal);
653 USE(init_fn->Call(env->context(), object, arraysize(argv), argv));
665 env(), object(), object(), cb, argc, argv, context);
684 env()->thread_id(),
690 return GetOwner(env(), object());
693 Local<Object> AsyncWrap::GetOwner(Environment* env, Local<Object> obj) {
694 EscapableHandleScope handle_scope(env->isolate());
697 TryCatchScope ignore_exceptions(env);
700 if (!obj->Get(env->context(),
701 env->owner_symbol()).ToLocal(&owner) ||