Lines Matching defs:env

2 #include "env-inl.h"
48 [&](JSVM_Env env) { cb(env, data, hint); });
54 // destructing the env.
55 // When the env is being destructed, queued finalizers are drained in the
91 node_jsvm_env__* env = static_cast<node_jsvm_env__*>(env_);
92 if (env->terminatedOrTerminating()) {
95 node::Environment* node_env = env->node_env();
96 if (env->module_api_version < JSVM_VERSION_EXPERIMENTAL &&
110 env->trigger_fatal_exception(local_err);
120 static BufferFinalizer* New(JSVM_Env env,
125 env, finalizeCallback, finalizeData, finalizeHint);
145 BufferFinalizer(JSVM_Env env,
149 : Finalizer(env, finalizeCallback, finalizeData, finalizeHint) {
220 env(env_),
225 ref.Reset(env->isolate, func);
226 node::AddEnvironmentCleanupHook(env->isolate, Cleanup, this);
227 env->Ref();
231 node::RemoveEnvironmentCleanupHook(env->isolate, Cleanup, this);
232 env->Unref();
307 uv_loop_t* loop = env->node_env()->event_loop();
317 env->node_env()->CloseHandle(
408 v8::HandleScope scope(env->isolate);
413 v8::Local<v8::Function>::New(env->isolate, ref);
416 env->CallbackIntoModule<false>(
417 [&](JSVM_Env env) { call_js_cb(env, js_callback, context, data); });
424 v8::HandleScope scope(env->isolate);
427 env->CallFinalizer<false>(finalizeCb, finalizeData, context);
433 v8::HandleScope scope(env->isolate);
445 env->node_env()->CloseHandle(
467 static void CallJs(JSVM_Env env, JSVM_Value cb, void* context, void* data) {
468 if (!(env == nullptr || cb == nullptr)) {
472 status = OH_JSVM_GetUndefined(env, &recv);
474 OH_JSVM_ThrowError(env,
480 status = OH_JSVM_CallFunction(env, recv, cb, 0, nullptr, nullptr);
483 env, "ERR_JSVM_TSFN_CALL_JS", "Failed to call JS callback");
523 node_jsvm_env env;
538 AsyncContext(node_jsvm_env env,
542 : env_(env) {
605 static inline void CloseCallbackScope(node_jsvm_env env,
609 env->open_callback_scopes--;
705 // We set `env->filename` from `module.filename` here, but we could just as
724 JSVM_Env env = v8impl::NewEnv(context, module_filename, module_api_version);
727 env->CallIntoModule([&](JSVM_Env env) {
728 _exports = init(env, v8impl::JsValueFromV8LocalValue(exports));
737 OH_JSVM_SetNamedProperty(env, _module, "exports", _exports);
764 JSVM_Status JSVM_CDECL jsvm_add_env_cleanup_hook(JSVM_Env env,
767 CHECK_ENV(env);
768 CHECK_ARG(env, fun);
770 node::AddEnvironmentCleanupHook(env->isolate, fun, arg);
775 JSVM_Status JSVM_CDECL jsvm_remove_env_cleanup_hook(JSVM_Env env,
778 CHECK_ENV(env);
779 CHECK_ARG(env, fun);
781 node::RemoveEnvironmentCleanupHook(env->isolate, fun, arg);
787 jsvm_async_cleanup_hook_handle__(JSVM_Env env,
790 : env_(env), user_hook_(user_hook), user_data_(user_data) {
791 handle_ = node::AddEnvironmentCleanupHook(env->isolate, Hook, this);
792 env->Ref();
799 // Release the `env` handle asynchronously since it would be surprising if
800 // a call to a N-API function would destroy `env` synchronously.
802 [env = env_](node::Environment*) { env->Unref(); });
822 jsvm_add_async_cleanup_hook(JSVM_Env env,
826 CHECK_ENV(env);
827 CHECK_ARG(env, hook);
830 new jsvm_async_cleanup_hook_handle__(env, hook, arg);
834 return jsvm_clear_last_error(env);
846 JSVM_Status JSVM_CDECL jsvm_fatal_exception(JSVM_Env env, JSVM_Value err) {
847 JSVM_PREAMBLE(env);
848 CHECK_ARG(env, err);
851 static_cast<node_jsvm_env>(env)->trigger_fatal_exception(local_err);
853 return jsvm_clear_last_error(env);
879 jsvm_open_callback_scope(JSVM_Env env,
885 CHECK_ENV(env);
886 CHECK_ARG(env, result);
893 return jsvm_clear_last_error(env);
896 JSVM_Status JSVM_CDECL jsvm_close_callback_scope(JSVM_Env env,
900 CHECK_ENV(env);
901 CHECK_ARG(env, scope);
902 if (env->open_callback_scopes == 0) {
906 v8impl::AsyncContext::CloseCallbackScope(reinterpret_cast<node_jsvm_env>(env),
909 return jsvm_clear_last_error(env);
912 JSVM_Status JSVM_CDECL jsvm_async_init(JSVM_Env env,
916 CHECK_ENV(env);
917 CHECK_ARG(env, async_resource_name);
918 CHECK_ARG(env, result);
920 v8::Isolate* isolate = env->isolate;
921 v8::Local<v8::Context> context = env->context();
926 CHECK_TO_OBJECT(env, context, v8_resource, async_resource);
934 CHECK_TO_STRING(env, context, v8_resource_name, async_resource_name);
937 new v8impl::AsyncContext(reinterpret_cast<node_jsvm_env>(env),
944 return jsvm_clear_last_error(env);
947 JSVM_Status JSVM_CDECL jsvm_async_destroy(JSVM_Env env,
949 CHECK_ENV(env);
950 CHECK_ARG(env, async_context);
957 return jsvm_clear_last_error(env);
960 JSVM_Status JSVM_CDECL jsvm_make_callback(JSVM_Env env,
967 JSVM_PREAMBLE(env);
968 CHECK_ARG(env, recv);
970 CHECK_ARG(env, argv);
973 v8::Local<v8::Context> context = env->context();
976 CHECK_TO_OBJECT(env, context, v8recv, recv);
979 CHECK_TO_FUNCTION(env, v8func, func);
985 env->isolate,
1002 return jsvm_set_last_error(env, JSVM_PENDING_EXCEPTION);
1004 CHECK_MAYBE_EMPTY(env, callback_result, JSVM_GENERIC_FAILURE);
1011 return GET_RETURN_STATUS(env);
1014 JSVM_Status JSVM_CDECL jsvm_create_buffer(JSVM_Env env,
1018 JSVM_PREAMBLE(env);
1019 CHECK_ARG(env, result);
1021 v8::MaybeLocal<v8::Object> maybe = node::Buffer::New(env->isolate, length);
1023 CHECK_MAYBE_EMPTY(env, maybe, JSVM_GENERIC_FAILURE);
1033 return GET_RETURN_STATUS(env);
1036 JSVM_Status JSVM_CDECL OH_JSVM_CreateExternal_buffer(JSVM_Env env,
1042 JSVM_PREAMBLE(env);
1043 CHECK_ARG(env, result);
1046 return jsvm_set_last_error(env, JSVM_NO_EXTERNAL_BUFFERS_ALLOWED);
1049 v8::Isolate* isolate = env->isolate;
1053 v8impl::BufferFinalizer::New(env, finalizeCb, nullptr, finalizeHint);
1062 CHECK_MAYBE_EMPTY(env, maybe, JSVM_GENERIC_FAILURE);
1065 return GET_RETURN_STATUS(env);
1072 JSVM_Status JSVM_CDECL jsvm_create_buffer_copy(JSVM_Env env,
1077 JSVM_PREAMBLE(env);
1078 CHECK_ARG(env, result);
1081 node::Buffer::Copy(env->isolate, static_cast<const char*>(data), length);
1083 CHECK_MAYBE_EMPTY(env, maybe, JSVM_GENERIC_FAILURE);
1092 return GET_RETURN_STATUS(env);
1095 JSVM_Status JSVM_CDECL jsvm_is_buffer(JSVM_Env env,
1098 CHECK_ENV(env);
1099 CHECK_ARG(env, value);
1100 CHECK_ARG(env, result);
1103 return jsvm_clear_last_error(env);
1106 JSVM_Status JSVM_CDECL jsvm_get_buffer_info(JSVM_Env env,
1110 CHECK_ENV(env);
1111 CHECK_ARG(env, value);
1122 return jsvm_clear_last_error(env);
1125 JSVM_Status JSVM_CDECL jsvm_get_node_version(JSVM_Env env,
1127 CHECK_ENV(env);
1128 CHECK_ARG(env, result);
1132 return jsvm_clear_last_error(env);
1154 explicit Work(node_jsvm_env env,
1161 env->isolate,
1163 *v8::String::Utf8Value(env->isolate, async_resource_name)),
1164 ThreadPoolWork(env->node_env(), "node_api"),
1165 _env(env),
1173 static Work* New(node_jsvm_env env,
1180 env, async_resource, async_resource_name, execute, complete, data);
1196 _env->CallbackIntoModule<true>([&](JSVM_Env env) {
1197 _complete(env, ConvertUVErrorCode(status), _data);
1214 #define CALL_UV(env, condition) \
1219 return jsvm_set_last_error(env, status, result); \
1224 jsvm_create_async_work(JSVM_Env env,
1231 CHECK_ENV(env);
1232 CHECK_ARG(env, execute);
1233 CHECK_ARG(env, result);
1235 v8::Local<v8::Context> context = env->context();
1239 CHECK_TO_OBJECT(env, context, resource, async_resource);
1241 resource = v8::Object::New(env->isolate);
1245 CHECK_TO_STRING(env, context, resource_name, async_resource_name);
1247 uvimpl::Work* work = uvimpl::Work::New(reinterpret_cast<node_jsvm_env>(env),
1256 return jsvm_clear_last_error(env);
1259 JSVM_Status JSVM_CDECL jsvm_delete_async_work(JSVM_Env env,
1261 CHECK_ENV(env);
1262 CHECK_ARG(env, work);
1266 return jsvm_clear_last_error(env);
1269 JSVM_Status JSVM_CDECL jsvm_get_uv_event_loop(JSVM_Env env, uv_loop_t** loop) {
1270 CHECK_ENV(env);
1271 CHECK_ARG(env, loop);
1272 *loop = reinterpret_cast<node_jsvm_env>(env)->node_env()->event_loop();
1273 return jsvm_clear_last_error(env);
1276 JSVM_Status JSVM_CDECL jsvm_queue_async_work(JSVM_Env env,
1278 CHECK_ENV(env);
1279 CHECK_ARG(env, work);
1282 STATUS_CALL(jsvm_get_uv_event_loop(env, &event_loop));
1288 return jsvm_clear_last_error(env);
1291 JSVM_Status JSVM_CDECL jsvm_cancel_async_work(JSVM_Env env,
1293 CHECK_ENV(env);
1294 CHECK_ARG(env, work);
1298 CALL_UV(env, w->CancelWork());
1300 return jsvm_clear_last_error(env);
1304 jsvm_create_threadsafe_function(JSVM_Env env,
1315 CHECK_ENV(env);
1316 CHECK_ARG(env, async_resource_name);
1317 RETURN_STATUS_IF_FALSE(env, initial_thread_count > 0, JSVM_INVALID_ARG);
1318 CHECK_ARG(env, result);
1324 CHECK_ARG(env, call_js_cb);
1326 CHECK_TO_FUNCTION(env, v8_func, func);
1329 v8::Local<v8::Context> v8_context = env->context();
1333 v8_resource = v8::Object::New(env->isolate);
1335 CHECK_TO_OBJECT(env, v8_context, v8_resource, async_resource);
1339 CHECK_TO_STRING(env, v8_context, v8_name, async_resource_name);
1348 reinterpret_cast<node_jsvm_env>(env),
1363 return jsvm_set_last_error(env, status);
1397 jsvm_unref_threadsafe_function(JSVM_Env env, jsvm_threadsafe_function func) {
1403 jsvm_ref_threadsafe_function(JSVM_Env env, jsvm_threadsafe_function func) {
1408 JSVM_Status JSVM_CDECL node_api_get_module_file_name(JSVM_Env env,
1410 CHECK_ENV(env);
1411 CHECK_ARG(env, result);
1413 *result = static_cast<node_jsvm_env>(env)->GetFilename();
1414 return jsvm_clear_last_error(env);