Lines Matching +full:vm +full:- +full:misc
6 #include "v8-debug.h"
7 #include "v8-internal.h"
8 #include "v8-local-handle.h"
9 #include "v8-primitive.h"
10 #include "v8-statistics.h"
11 #include "v8-version-string.h"
13 #include "env-inl.h"
18 #include "util-inl.h"
33 // n-api defines JSVM_AUTO_LENGTH as the indicator that a string
34 // is null terminated. For V8 the equivalent is -1. The assert
35 // validates that our cast of JSVM_AUTO_LENGTH results in -1 as
39 static_assert(static_cast<int>(JSVM_AUTO_LENGTH) == -1, \
40 "Casting JSVM_AUTO_LENGTH to int must result in -1"); \
44 auto str_maybe = v8::String::NewFromUtf8((env)->isolate, \
79 (length) * (size_of_element) + (byteOffset) <= buffer->ByteLength(), \
101 if (inspector_agent_->IsActive()) { in DeleteMe()
102 inspector_agent_->WaitForDisconnect(); in DeleteMe()
119 head->Call(this); in RunAndClearInterrupts()
131 finalizer->Finalize(); in InvokeFinalizerFromGC()
166 auto wrapper_key = isolate->GetDataFromSnapshotOnce<v8::Private>(0); in CreateIsolateData()
167 auto type_tag_key = isolate->GetDataFromSnapshotOnce<v8::Private>(1); in CreateIsolateData()
168 data->jsvm_wrapper_key.Set(isolate, wrapper_key.ToLocalChecked()); in CreateIsolateData()
169 data->jsvm_type_tag_key.Set(isolate, type_tag_key.ToLocalChecked()); in CreateIsolateData()
171 data->jsvm_wrapper_key.Set(isolate, v8::Private::New(isolate)); in CreateIsolateData()
172 data->jsvm_type_tag_key.Set(isolate, v8::Private::New(isolate)); in CreateIsolateData()
174 isolate->SetData(v8impl::kIsolateData, data); in CreateIsolateData()
178 auto data = isolate->GetData(v8impl::kIsolateData); in GetIsolateData()
184 isolate->SetData(v8impl::kIsolateSnapshotCreatorSlot, creator); in SetIsolateSnapshotCreator()
188 auto data = isolate->GetData(v8impl::kIsolateSnapshotCreatorSlot); in GetIsolateSnapshotCreator()
193 context->SetAlignedPointerInEmbedderData(kContextEnvIndex, env); in SetContextEnv()
197 auto data = context->GetAlignedPointerFromEmbedderData(kContextEnvIndex); in GetContextEnv()
243 auto &&prevSourceMapUrl = it->second; in SetFileToSourceMapMapping()
250 return it->second; in GetSourceMapFromFileName()
263 auto isolate = env->isolate; in NewString()
289 env->CallFinalizer( in NewExternalString()
309 Link(finalizeCallback == nullptr ? &env->reflist in TrackedStringResource()
310 : &env->finalizing_reflist); in TrackedStringResource()
333 env_->CallFinalizer(finalize_callback_, finalize_data_, finalize_hint_); in ~TrackedStringResource()
383 if (p->utf8name != nullptr) { in V8NameFromPropertyDescriptor()
384 CHECK_NEW_FROM_UTF8(env, *result, p->utf8name); in V8NameFromPropertyDescriptor()
387 v8impl::V8LocalValueFromJsValue(p->name); in V8NameFromPropertyDescriptor()
389 RETURN_STATUS_IF_FALSE(env, property_value->IsName(), JSVM_NAME_EXPECTED); in V8NameFromPropertyDescriptor()
396 // convert from n-api property attributes to v8::PropertyAttribute
403 if ((descriptor->getter == nullptr && descriptor->setter == nullptr) && in V8PropertyAttributesFromDescriptor()
404 (descriptor->attributes & JSVM_WRITABLE) == 0) { in V8PropertyAttributesFromDescriptor()
408 if ((descriptor->attributes & JSVM_ENUMERABLE) == 0) { in V8PropertyAttributesFromDescriptor()
411 if ((descriptor->attributes & JSVM_CONFIGURABLE) == 0) { in V8PropertyAttributesFromDescriptor()
484 v8::Local<v8::Context> context = env->context(); in ConcludeDeferred()
488 v8::Local<v8::Value>::New(env->isolate, *deferred_ref); in ConcludeDeferred()
493 is_resolved ? v8_resolver->Resolve( in ConcludeDeferred()
495 : v8_resolver->Reject( in ConcludeDeferred()
517 v8::Local<v8::Context> context = env->context(); in Unwrap()
520 RETURN_STATUS_IF_FALSE(env, value->IsObject(), JSVM_INVALID_ARG); in Unwrap()
523 auto val = obj->GetPrivate(context, JSVM_PRIVATE_KEY(env->isolate, wrapper)) in Unwrap()
525 RETURN_STATUS_IF_FALSE(env, val->IsExternal(), JSVM_INVALID_ARG); in Unwrap()
527 static_cast<v8impl::Reference*>(val.As<v8::External>()->Value()); in Unwrap()
530 *result = reference->Data(); in Unwrap()
534 CHECK(obj->DeletePrivate(context, JSVM_PRIVATE_KEY(env->isolate, wrapper)) in Unwrap()
536 if (reference->ownership() == Ownership::kUserland) { in Unwrap()
538 reference->ResetFinalizer(); in Unwrap()
549 // Use this data structure to associate callback data with each N-API function
552 // calling through N-API.
553 // Ref: benchmark/misc/function_call
561 return v8::External::New(env->isolate, cb); in New()
566 return v8::External::New(env->isolate, cb); in New()
600 _cb = (JSVM_Callback)cbinfo.Data().As<v8::External>()->Value(); in CallbackWrapperBase()
601 _data = _cb->data; in CallbackWrapperBase()
610 auto context = _cbinfo.GetIsolate()->GetCurrentContext(); in InvokeCallback()
612 auto cb = _cb->callback; in InvokeCallback()
616 env->CallIntoModule([&](JSVM_Env env) { result = cb(env, cbinfo_wrapper); }, in InvokeCallback()
619 if (env->terminatedOrTerminating()) { in InvokeCallback()
622 env->isolate->ThrowException(value); in InvokeCallback()
626 this->SetReturnValue(result); in InvokeCallback()
648 v8::Function::New(env->context(), Invoke, cbdata); in NewFunction()
663 *result = v8::FunctionTemplate::New(env->isolate, Invoke, cbdata, sig); in NewTemplate()
712 …_cb = (v8impl::JSVM_PropertyHandlerCfgStruct *)_cbinfo.Data().template As<v8::External>()->Value(); in PropertyCallbackWrapperBase()
717 auto context = _cbinfo.GetIsolate()->GetCurrentContext(); in NameSetterInvokeCallback()
719 auto setterCb = _cb->namedSetterCallback_; in NameSetterInvokeCallback()
722 if (_cb->namedPropertyData_ != nullptr) { in NameSetterInvokeCallback()
723 v8impl::Reference* reference = reinterpret_cast<v8impl::Reference*>(_cb->namedPropertyData_); in NameSetterInvokeCallback()
724 innerData = v8impl::JsValueFromV8LocalValue(reference->Get()); in NameSetterInvokeCallback()
731 JSVM_Value thisArg = this->This(); in NameSetterInvokeCallback()
732 env->CallIntoModule([&](JSVM_Env env) { in NameSetterInvokeCallback()
739 if (env->terminatedOrTerminating()) { in NameSetterInvokeCallback()
742 env->isolate->ThrowException(value); in NameSetterInvokeCallback()
745 this->SetReturnValue(result); in NameSetterInvokeCallback()
750 auto context = _cbinfo.GetIsolate()->GetCurrentContext(); in NameGetterInvokeCallback()
752 auto getterCb = _cb->namedGetterCallback_; in NameGetterInvokeCallback()
755 if (_cb->namedPropertyData_ != nullptr) { in NameGetterInvokeCallback()
756 v8impl::Reference* reference = reinterpret_cast<v8impl::Reference*>(_cb->namedPropertyData_); in NameGetterInvokeCallback()
757 innerData = v8impl::JsValueFromV8LocalValue(reference->Get()); in NameGetterInvokeCallback()
762 JSVM_Value thisArg = this->This(); in NameGetterInvokeCallback()
763 env->CallIntoModule([&](JSVM_Env env) { in NameGetterInvokeCallback()
770 if (env->terminatedOrTerminating()) { in NameGetterInvokeCallback()
773 env->isolate->ThrowException(value); in NameGetterInvokeCallback()
776 this->SetReturnValue(result); in NameGetterInvokeCallback()
781 auto context = _cbinfo.GetIsolate()->GetCurrentContext(); in NameDeleterInvokeCallback()
783 auto deleterCb = _cb->nameDeleterCallback_; in NameDeleterInvokeCallback()
786 if (_cb->namedPropertyData_ != nullptr) { in NameDeleterInvokeCallback()
787 v8impl::Reference* reference = reinterpret_cast<v8impl::Reference*>(_cb->namedPropertyData_); in NameDeleterInvokeCallback()
788 innerData = v8impl::JsValueFromV8LocalValue(reference->Get()); in NameDeleterInvokeCallback()
794 JSVM_Value thisArg = this->This(); in NameDeleterInvokeCallback()
795 env->CallIntoModule([&](JSVM_Env env) { in NameDeleterInvokeCallback()
802 if (env->terminatedOrTerminating()) { in NameDeleterInvokeCallback()
805 env->isolate->ThrowException(value); in NameDeleterInvokeCallback()
808 if (v8impl::V8LocalValueFromJsValue(result)->IsBoolean()) { in NameDeleterInvokeCallback()
809 this->SetReturnValue(result); in NameDeleterInvokeCallback()
815 auto context = _cbinfo.GetIsolate()->GetCurrentContext(); in NameEnumeratorInvokeCallback()
817 auto enumeratorCb = _cb->namedEnumeratorCallback_; in NameEnumeratorInvokeCallback()
820 if (_cb->namedPropertyData_ != nullptr) { in NameEnumeratorInvokeCallback()
821 v8impl::Reference* reference = reinterpret_cast<v8impl::Reference*>(_cb->namedPropertyData_); in NameEnumeratorInvokeCallback()
822 innerData = v8impl::JsValueFromV8LocalValue(reference->Get()); in NameEnumeratorInvokeCallback()
827 JSVM_Value thisArg = this->This(); in NameEnumeratorInvokeCallback()
828 env->CallIntoModule([&](JSVM_Env env) { in NameEnumeratorInvokeCallback()
835 if (env->terminatedOrTerminating()) { in NameEnumeratorInvokeCallback()
838 env->isolate->ThrowException(value); in NameEnumeratorInvokeCallback()
841 if (v8impl::V8LocalValueFromJsValue(result)->IsArray()) { in NameEnumeratorInvokeCallback()
842 this->SetReturnValue(result); in NameEnumeratorInvokeCallback()
848 auto context = _cbinfo.GetIsolate()->GetCurrentContext(); in IndexSetterInvokeCallback()
850 auto indexSetterCb = _cb->indexedSetterCallback_; in IndexSetterInvokeCallback()
853 if (_cb->indexedPropertyData_ != nullptr) { in IndexSetterInvokeCallback()
854 … v8impl::Reference* reference = reinterpret_cast<v8impl::Reference*>(_cb->indexedPropertyData_); in IndexSetterInvokeCallback()
855 innerData = v8impl::JsValueFromV8LocalValue(reference->Get()); in IndexSetterInvokeCallback()
860 JSVM_Value index = JsValueFromV8LocalValue(v8::Integer::NewFromUnsigned(env->isolate, _index)); in IndexSetterInvokeCallback()
862 JSVM_Value thisArg = this->This(); in IndexSetterInvokeCallback()
863 env->CallIntoModule([&](JSVM_Env env) { in IndexSetterInvokeCallback()
870 if (env->terminatedOrTerminating()) { in IndexSetterInvokeCallback()
873 env->isolate->ThrowException(value); in IndexSetterInvokeCallback()
876 this->SetReturnValue(result); in IndexSetterInvokeCallback()
881 auto context = _cbinfo.GetIsolate()->GetCurrentContext(); in IndexGetterInvokeCallback()
883 auto indexGetterCb = _cb->indexedGetterCallback_; in IndexGetterInvokeCallback()
886 if (_cb->indexedPropertyData_ != nullptr) { in IndexGetterInvokeCallback()
887 … v8impl::Reference* reference = reinterpret_cast<v8impl::Reference*>(_cb->indexedPropertyData_); in IndexGetterInvokeCallback()
888 innerData = v8impl::JsValueFromV8LocalValue(reference->Get()); in IndexGetterInvokeCallback()
893 JSVM_Value index = JsValueFromV8LocalValue(v8::Integer::NewFromUnsigned(env->isolate, _index)); in IndexGetterInvokeCallback()
894 JSVM_Value thisArg = this->This(); in IndexGetterInvokeCallback()
895 env->CallIntoModule([&](JSVM_Env env) { in IndexGetterInvokeCallback()
902 if (env->terminatedOrTerminating()) { in IndexGetterInvokeCallback()
905 env->isolate->ThrowException(value); in IndexGetterInvokeCallback()
908 this->SetReturnValue(result); in IndexGetterInvokeCallback()
913 auto context = _cbinfo.GetIsolate()->GetCurrentContext(); in IndexDeleterInvokeCallback()
915 auto indexDeleterCb = _cb->indexedDeleterCallback_; in IndexDeleterInvokeCallback()
918 if (_cb->indexedPropertyData_ != nullptr) { in IndexDeleterInvokeCallback()
919 … v8impl::Reference* reference = reinterpret_cast<v8impl::Reference*>(_cb->indexedPropertyData_); in IndexDeleterInvokeCallback()
920 innerData = v8impl::JsValueFromV8LocalValue(reference->Get()); in IndexDeleterInvokeCallback()
925 JSVM_Value index = JsValueFromV8LocalValue(v8::Integer::NewFromUnsigned(env->isolate, _index)); in IndexDeleterInvokeCallback()
926 JSVM_Value thisArg = this->This(); in IndexDeleterInvokeCallback()
927 env->CallIntoModule([&](JSVM_Env env) { in IndexDeleterInvokeCallback()
934 if (env->terminatedOrTerminating()) { in IndexDeleterInvokeCallback()
937 env->isolate->ThrowException(value); in IndexDeleterInvokeCallback()
940 if (v8impl::V8LocalValueFromJsValue(result)->IsBoolean()) { in IndexDeleterInvokeCallback()
941 this->SetReturnValue(result); in IndexDeleterInvokeCallback()
947 auto context = _cbinfo.GetIsolate()->GetCurrentContext(); in IndexEnumeratorInvokeCallback()
949 auto enumeratorCb = _cb->indexedEnumeratorCallback_; in IndexEnumeratorInvokeCallback()
952 if (_cb->indexedPropertyData_ != nullptr) { in IndexEnumeratorInvokeCallback()
953 … v8impl::Reference* reference = reinterpret_cast<v8impl::Reference*>(_cb->indexedPropertyData_); in IndexEnumeratorInvokeCallback()
954 innerData = v8impl::JsValueFromV8LocalValue(reference->Get()); in IndexEnumeratorInvokeCallback()
959 JSVM_Value thisArg = this->This(); in IndexEnumeratorInvokeCallback()
960 env->CallIntoModule([&](JSVM_Env env) { in IndexEnumeratorInvokeCallback()
967 if (env->terminatedOrTerminating()) { in IndexEnumeratorInvokeCallback()
970 env->isolate->ThrowException(value); in IndexEnumeratorInvokeCallback()
973 if (v8impl::V8LocalValueFromJsValue(result)->IsArray()) { in IndexEnumeratorInvokeCallback()
974 this->SetReturnValue(result); in IndexEnumeratorInvokeCallback()
1058 v8::Local<v8::Context> context = env->context(); in Wrap()
1061 RETURN_STATUS_IF_FALSE(env, value->IsObject(), JSVM_INVALID_ARG); in Wrap()
1067 !obj->HasPrivate(context, JSVM_PRIVATE_KEY(env->isolate, wrapper)).FromJust(), in Wrap()
1086 // Create a self-deleting reference. in Wrap()
1097 CHECK(obj->SetPrivate(context, in Wrap()
1098 JSVM_PRIVATE_KEY(env->isolate, wrapper), in Wrap()
1099 v8::External::New(env->isolate, reference)) in Wrap()
1112 // This matches the current Node-API behavior.
1114 return value->IsObject() || value->IsSymbol(); in CanBeHeldWeakly()
1131 Link(finalizeCallback == nullptr ? &env->reflist : &env->finalizing_reflist); in TrackedFinalizer()
1148 env_->DequeueFinalizer(this); in ~TrackedFinalizer()
1170 env_->CallFinalizer(finalizeCallback, finalizeData, finalizeHint); in FinalizeCore()
1215 return --refcount_; in Unref()
1231 persistent_(env->isolate, value), in Reference()
1293 return v8::Local<v8::Value>::New(env_->isolate, persistent_); in Get()
1326 // The N-API finalizer callback may make calls into the engine. V8's heap is
1332 reference->persistent_.Reset(); in WeakCallback()
1333 assert(reference->wait_callback); in WeakCallback()
1337 bool need_delete = reference->deleted_by_user; in WeakCallback()
1338 reference->wait_callback = false; in WeakCallback()
1339 reference->env_->InvokeFinalizerFromGC(reference); in WeakCallback()
1366 char *secArgv[SECARGCNT] = {"jsvm", "--jitless"}; in OH_JSVM_Init()
1370 if (options && options->argc && options->argv) { in OH_JSVM_Init()
1371 v8::V8::SetFlagsFromCommandLine(options->argc, options->argv, options->removeFlags); in OH_JSVM_Init()
1377 if (auto p = options ? options->externalReferences : nullptr) { in OH_JSVM_Init()
1388 *result = reinterpret_cast<JSVM_VM>(env->isolate); in OH_JSVM_GetVM()
1403 if (options && options->snapshotBlobData) { in OH_JSVM_CreateVM()
1405 snapshotBlob->data = options->snapshotBlobData; in OH_JSVM_CreateVM()
1406 snapshotBlob->raw_size = options->snapshotBlobSize; in OH_JSVM_CreateVM()
1408 if (!snapshotBlob->IsValid()) { in OH_JSVM_CreateVM()
1417 if (options && options->isForSnapshotting) { in OH_JSVM_CreateVM()
1433 OH_JSVM_DestroyVM(JSVM_VM vm) { in OH_JSVM_DestroyVM() argument
1434 auto isolate = reinterpret_cast<v8::Isolate*>(vm); in OH_JSVM_DestroyVM()
1441 isolate->Dispose(); in OH_JSVM_DestroyVM()
1450 JSVM_Status JSVM_CDECL OH_JSVM_OpenVMScope(JSVM_VM vm, JSVM_VMScope* result) { in OH_JSVM_OpenVMScope() argument
1451 auto isolate = reinterpret_cast<v8::Isolate*>(vm); in OH_JSVM_OpenVMScope()
1458 OH_JSVM_CloseVMScope(JSVM_VM vm, JSVM_VMScope scope) { in OH_JSVM_CloseVMScope() argument
1465 OH_JSVM_CreateEnv(JSVM_VM vm, in OH_JSVM_CreateEnv() argument
1469 auto isolate = reinterpret_cast<v8::Isolate*>(vm); in OH_JSVM_CreateEnv()
1477 if ((p->attributes & JSVM_STATIC) != 0) { in OH_JSVM_CreateEnv()
1483 v8::String::NewFromUtf8(isolate, p->utf8name, v8::NewStringType::kInternalized) in OH_JSVM_CreateEnv()
1489 if (p->getter != nullptr || p->setter != nullptr) { in OH_JSVM_CreateEnv()
1492 if (p->getter != nullptr) { in OH_JSVM_CreateEnv()
1494 env, p->getter, &getter_tpl)); in OH_JSVM_CreateEnv()
1496 if (p->setter != nullptr) { in OH_JSVM_CreateEnv()
1498 env, p->setter, &setter_tpl)); in OH_JSVM_CreateEnv()
1501 global_template->SetAccessorProperty( in OH_JSVM_CreateEnv()
1503 } else if (p->method != nullptr) { in OH_JSVM_CreateEnv()
1506 env, p->method, &method_tpl)); in OH_JSVM_CreateEnv()
1508 global_template->Set(property_name, method_tpl, attributes); in OH_JSVM_CreateEnv()
1510 v8::Local<v8::Value> value = v8impl::V8LocalValueFromJsValue(p->value); in OH_JSVM_CreateEnv()
1511 global_template->Set(property_name, value, attributes); in OH_JSVM_CreateEnv()
1516 env->context_persistent.Reset(isolate, context); in OH_JSVM_CreateEnv()
1523 OH_JSVM_CreateEnvFromSnapshot(JSVM_VM vm, size_t index, JSVM_Env* result) { in OH_JSVM_CreateEnvFromSnapshot() argument
1524 auto isolate = reinterpret_cast<v8::Isolate*>(vm); in OH_JSVM_CreateEnvFromSnapshot()
1536 env->context_persistent.Reset(isolate, context); in OH_JSVM_CreateEnvFromSnapshot()
1545 env->DeleteMe(); in OH_JSVM_DestroyEnv()
1551 auto v8scope = new v8::Context::Scope(env->context()); in OH_JSVM_OpenEnvScope()
1577 RETURN_STATUS_IF_FALSE(env, v8_script->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_CompileScript()
1579 v8::Local<v8::Context> context = env->context(); in OH_JSVM_CompileScript()
1590 *cacheRejected = cache->rejected; in OH_JSVM_CompileScript()
1595 *result = reinterpret_cast<JSVM_Script>(env->NewJsvmData(compiled_script)); in OH_JSVM_CompileScript()
1605 options->Set(isolate, 0, v8::Uint32::New(isolate, kOptionsMagicConstant)); in CreateScriptOrigin()
1606 options->Set(isolate, 1, resource_name); in CreateScriptOrigin()
1607 return v8::ScriptOrigin(isolate, resource_name, 0, 0, false, -1, v8::Local<v8::Value>(), in CreateScriptOrigin()
1613 auto *isolate = context->GetIsolate(); in PrepareStackTraceCallback()
1626 auto result = script->Run(moduleContext).ToLocalChecked(); in PrepareStackTraceCallback()
1629 v8::Local<v8::Value> element = trace->Get(context, 0).ToLocalChecked(); in PrepareStackTraceCallback()
1631 if (element->IsObject()) { in PrepareStackTraceCallback()
1632 auto obj = element->ToObject(context); in PrepareStackTraceCallback()
1634 … auto function = obj.ToLocalChecked()->Get(context, getFileName.ToLocalChecked()).ToLocalChecked(); in PrepareStackTraceCallback()
1636 auto fileNameObj = lineNumberFunction->Call(context, obj.ToLocalChecked(), 0, {}); in PrepareStackTraceCallback()
1650 return resultFunc->Call(moduleContext, v8::Undefined(isolate), node::arraysize(args), args); in PrepareStackTraceCallback()
1665 CHECK_NOT_NULL(origin->resourceName); in OH_JSVM_CompileScriptWithOrigin()
1669 RETURN_STATUS_IF_FALSE(env, v8_script->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_CompileScriptWithOrigin()
1671 v8::Local<v8::Context> context = env->context(); in OH_JSVM_CompileScriptWithOrigin()
1672 auto *isolate = context->GetIsolate(); in OH_JSVM_CompileScriptWithOrigin()
1674 if (origin->sourceMapUrl) { in OH_JSVM_CompileScriptWithOrigin()
1675 v8impl::SetFileToSourceMapMapping(origin->resourceName, origin->sourceMapUrl); in OH_JSVM_CompileScriptWithOrigin()
1676 isolate->SetPrepareStackTraceCallback(PrepareStackTraceCallback); in OH_JSVM_CompileScriptWithOrigin()
1678 auto sourceMapUrl = !origin->sourceMapUrl ? v8::Local<v8::Value>() : in OH_JSVM_CompileScriptWithOrigin()
1679 v8::String::NewFromUtf8(isolate, origin->sourceMapUrl).ToLocalChecked().As<v8::Value>(); in OH_JSVM_CompileScriptWithOrigin()
1681 v8::String::NewFromUtf8(isolate, origin->resourceName).ToLocalChecked(); in OH_JSVM_CompileScriptWithOrigin()
1683 origin->resourceLineOffset, origin->resourceColumnOffset, false, -1, sourceMapUrl); in OH_JSVM_CompileScriptWithOrigin()
1694 *cacheRejected = cache->rejected; in OH_JSVM_CompileScriptWithOrigin()
1699 *result = reinterpret_cast<JSVM_Script>(env->NewJsvmData(compiled_script)); in OH_JSVM_CompileScriptWithOrigin()
1715 cachedData = cache->cache ? in CompileOptionResolver()
1716 new v8::ScriptCompiler::CachedData(cache->cache, cache->length) : nullptr; in CompileOptionResolver()
1736 auto sourceString = jsvmOrigin ? jsvmOrigin->resourceName : in CompileOptionResolver()
1738 auto sourceMapPtr = jsvmOrigin && jsvmOrigin->sourceMapUrl ? in CompileOptionResolver()
1739 jsvmOrigin->sourceMapUrl : nullptr; in CompileOptionResolver()
1740 auto sourceMapUrl = (jsvmOrigin && jsvmOrigin->sourceMapUrl) ? in CompileOptionResolver()
1741 v8::String::NewFromUtf8(isolate, jsvmOrigin->sourceMapUrl).ToLocalChecked().As<v8::Value>() : in CompileOptionResolver()
1745 jsvmOrigin ? jsvmOrigin->resourceLineOffset : 0, in CompileOptionResolver()
1746 jsvmOrigin ? jsvmOrigin->resourceColumnOffset : 0, in CompileOptionResolver()
1747 false, -1, sourceMapUrl); in CompileOptionResolver()
1749 v8impl::SetFileToSourceMapMapping(jsvmOrigin->resourceName, sourceMapPtr); in CompileOptionResolver()
1750 isolate->SetPrepareStackTraceCallback(PrepareStackTraceCallback); in CompileOptionResolver()
1785 v8::Local<v8::Context> context = env->context(); in OH_JSVM_CompileScriptWithOptions()
1786 auto *isolate = context->GetIsolate(); in OH_JSVM_CompileScriptWithOptions()
1792 RETURN_STATUS_IF_FALSE(env, v8_script->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_CompileScriptWithOptions()
1800 *result = reinterpret_cast<JSVM_Script>(env->NewJsvmData(compiled_script)); in OH_JSVM_CompileScriptWithOptions()
1811 auto v8script = jsvmData->ToV8Local<v8::Script>(env->isolate); in OH_JSVM_CreateCodeCache()
1813 cache = v8::ScriptCompiler::CreateCodeCache(v8script->GetUnboundScript()); in OH_JSVM_CreateCodeCache()
1820 *data = cache->data; in OH_JSVM_CreateCodeCache()
1821 *length = cache->length; in OH_JSVM_CreateCodeCache()
1822 cache->buffer_policy = v8::ScriptCompiler::CachedData::BufferNotOwned; in OH_JSVM_CreateCodeCache()
1834 auto v8script = jsvmData->ToV8Local<v8::Script>(env->isolate); in OH_JSVM_RunScript()
1835 auto script_result = v8script->Run(env->context()); in OH_JSVM_RunScript()
1848 RETURN_STATUS_IF_FALSE(env, val->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_JsonParse()
1850 auto maybe = v8::JSON::Parse(env->context(), val.As<v8::String>()); in OH_JSVM_JsonParse()
1864 auto maybe = v8::JSON::Stringify(env->context(), val); in OH_JSVM_JsonStringify()
1872 OH_JSVM_CreateSnapshot(JSVM_VM vm, in OH_JSVM_CreateSnapshot() argument
1877 auto isolate = reinterpret_cast<v8::Isolate*>(vm); in OH_JSVM_CreateSnapshot()
1887 creator->SetDefaultContext(default_context); in OH_JSVM_CreateSnapshot()
1890 creator->AddData(JSVM_PRIVATE_KEY(isolate, wrapper)); in OH_JSVM_CreateSnapshot()
1891 creator->AddData(JSVM_PRIVATE_KEY(isolate, type_tag)); in OH_JSVM_CreateSnapshot()
1894 auto ctx = contexts[i]->context(); in OH_JSVM_CreateSnapshot()
1895 creator->AddData(ctx, ctx); in OH_JSVM_CreateSnapshot()
1896 creator->AddContext(ctx); in OH_JSVM_CreateSnapshot()
1899 auto blob = creator->CreateBlob(v8::SnapshotCreator::FunctionCodeHandling::kKeep); in OH_JSVM_CreateSnapshot()
1907 result->apiVersion = 1; in OH_JSVM_GetVMInfo()
1908 result->engine = "v8"; in OH_JSVM_GetVMInfo()
1909 result->version = V8_VERSION_STRING; in OH_JSVM_GetVMInfo()
1910 result->cachedDataVersionTag = v8::ScriptCompiler::CachedDataVersionTag(); in OH_JSVM_GetVMInfo()
1918 env->isolate->MemoryPressureNotification(v8::MemoryPressureLevel(level)); in OH_JSVM_MemoryPressureNotification()
1923 OH_JSVM_GetHeapStatistics(JSVM_VM vm, JSVM_HeapStatistics* result) { in OH_JSVM_GetHeapStatistics() argument
1924 auto isolate = reinterpret_cast<v8::Isolate*>(vm); in OH_JSVM_GetHeapStatistics()
1926 isolate->GetHeapStatistics(&stats); in OH_JSVM_GetHeapStatistics()
1927 result->totalHeapSize = stats.total_heap_size(); in OH_JSVM_GetHeapStatistics()
1928 result->totalHeapSizeExecutable = stats.total_heap_size_executable(); in OH_JSVM_GetHeapStatistics()
1929 result->totalPhysicalSize = stats.total_physical_size(); in OH_JSVM_GetHeapStatistics()
1930 result->totalAvailableSize = stats.total_available_size(); in OH_JSVM_GetHeapStatistics()
1931 result->usedHeapSize = stats.used_heap_size(); in OH_JSVM_GetHeapStatistics()
1932 result->heapSizeLimit = stats.heap_size_limit(); in OH_JSVM_GetHeapStatistics()
1933 result->mallocedMemory = stats.malloced_memory(); in OH_JSVM_GetHeapStatistics()
1934 result->externalMemory = stats.external_memory(); in OH_JSVM_GetHeapStatistics()
1935 result->peakMallocedMemory = stats.peak_malloced_memory(); in OH_JSVM_GetHeapStatistics()
1936 result->numberOfNativeContexts = stats.number_of_native_contexts(); in OH_JSVM_GetHeapStatistics()
1937 result->numberOfDetachedContexts = stats.number_of_detached_contexts(); in OH_JSVM_GetHeapStatistics()
1938 result->totalGlobalHandlesSize = stats.total_global_handles_size(); in OH_JSVM_GetHeapStatistics()
1939 result->usedGlobalHandlesSize = stats.used_global_handles_size(); in OH_JSVM_GetHeapStatistics()
1944 OH_JSVM_StartCpuProfiler(JSVM_VM vm, JSVM_CpuProfiler* result) { in OH_JSVM_StartCpuProfiler() argument
1945 auto isolate = reinterpret_cast<v8::Isolate*>(vm); in OH_JSVM_StartCpuProfiler()
1949 profiler->Start(v8::String::Empty(isolate), std::move(options)); in OH_JSVM_StartCpuProfiler()
1955 OH_JSVM_StopCpuProfiler(JSVM_VM vm, JSVM_CpuProfiler profiler, in OH_JSVM_StopCpuProfiler() argument
1957 auto isolate = reinterpret_cast<v8::Isolate*>(vm); in OH_JSVM_StopCpuProfiler()
1960 auto profile = v8profiler->StopProfiling(v8::String::Empty(isolate)); in OH_JSVM_StopCpuProfiler()
1962 profile->Serialize(&os); in OH_JSVM_StopCpuProfiler()
1967 OH_JSVM_TakeHeapSnapshot(JSVM_VM vm, in OH_JSVM_TakeHeapSnapshot() argument
1969 auto isolate = reinterpret_cast<v8::Isolate*>(vm); in OH_JSVM_TakeHeapSnapshot()
1970 auto profiler = isolate->GetHeapProfiler(); in OH_JSVM_TakeHeapSnapshot()
1971 auto snapshot = profiler->TakeHeapSnapshot(); in OH_JSVM_TakeHeapSnapshot()
1973 snapshot->Serialize(&os); in OH_JSVM_TakeHeapSnapshot()
1985 env->inspector_agent()->Start(inspectorPath, hostPort, true, false); in OH_JSVM_OpenInspector()
1992 auto agent = env->inspector_agent(); in OH_JSVM_CloseInspector()
1993 if (!agent->IsActive()) { in OH_JSVM_CloseInspector()
1996 agent->Stop(); in OH_JSVM_CloseInspector()
2002 auto agent = env->inspector_agent(); in OH_JSVM_WaitForDebugger()
2003 if (!agent->IsActive()) { in OH_JSVM_WaitForDebugger()
2007 agent->WaitForConnect(); in OH_JSVM_WaitForDebugger()
2009 agent->PauseOnNextJavascriptStatement("Break on debugger attached"); in OH_JSVM_WaitForDebugger()
2015 JSVM_EXTERN JSVM_Status JSVM_CDECL OH_JSVM_PumpMessageLoop(JSVM_VM vm, bool* result) { in OH_JSVM_PumpMessageLoop() argument
2016 auto isolate = reinterpret_cast<v8::Isolate*>(vm); in OH_JSVM_PumpMessageLoop()
2021 JSVM_EXTERN JSVM_Status JSVM_CDECL OH_JSVM_PerformMicrotaskCheckpoint(JSVM_VM vm) { in OH_JSVM_PerformMicrotaskCheckpoint() argument
2022 auto isolate = reinterpret_cast<v8::Isolate*>(vm); in OH_JSVM_PerformMicrotaskCheckpoint()
2023 isolate->PerformMicrotaskCheckpoint(); in OH_JSVM_PerformMicrotaskCheckpoint()
2027 // Warning: Keep in-sync with JSVM_Status enum
2044 "Thread-safe function queue is full",
2045 "Thread-safe function handle is closing",
2068 CHECK_LE(env->last_error.errorCode, last_status); in OH_JSVM_GetLastErrorInfo()
2071 env->last_error.errorMessage = error_messages[env->last_error.errorCode]; in OH_JSVM_GetLastErrorInfo()
2073 if (env->last_error.errorCode == JSVM_OK) { in OH_JSVM_GetLastErrorInfo()
2076 *result = &(env->last_error); in OH_JSVM_GetLastErrorInfo()
2090 v8::EscapableHandleScope scope(env->isolate); in OH_JSVM_CreateFunction()
2099 return_value->SetName(name_string); in OH_JSVM_CreateFunction()
2120 RETURN_STATUS_IF_FALSE(env, v8impl::V8LocalValueFromJsValue(argv[i])->IsString(), in OH_JSVM_CreateFunctionWithScript()
2127 RETURN_STATUS_IF_FALSE(env, v8_script->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_CreateFunctionWithScript()
2131 v8::Local<v8::Context> context = env->context(); in OH_JSVM_CreateFunctionWithScript()
2144 func->SetName(funcNameString); in OH_JSVM_CreateFunctionWithScript()
2169 v8::Isolate* isolate = env->isolate; in OH_JSVM_DefineClass()
2178 tpl->SetClassName(name_string); in OH_JSVM_DefineClass()
2184 if ((p->attributes & JSVM_STATIC) != 0) { in OH_JSVM_DefineClass()
2200 if (p->getter != nullptr || p->setter != nullptr) { in OH_JSVM_DefineClass()
2203 if (p->getter != nullptr) { in OH_JSVM_DefineClass()
2205 env, p->getter, &getter_tpl)); in OH_JSVM_DefineClass()
2207 if (p->setter != nullptr) { in OH_JSVM_DefineClass()
2209 env, p->setter, &setter_tpl)); in OH_JSVM_DefineClass()
2212 tpl->PrototypeTemplate()->SetAccessorProperty(property_name, in OH_JSVM_DefineClass()
2217 } else if (p->method != nullptr) { in OH_JSVM_DefineClass()
2219 if (p->attributes & JSVM_NO_RECEIVER_CHECK) { in OH_JSVM_DefineClass()
2221 env, p->method, &t)); in OH_JSVM_DefineClass()
2224 env, p->method, &t, v8::Signature::New(isolate, tpl))); in OH_JSVM_DefineClass()
2227 tpl->PrototypeTemplate()->Set(property_name, t, attributes); in OH_JSVM_DefineClass()
2229 v8::Local<v8::Value> value = v8impl::V8LocalValueFromJsValue(p->value); in OH_JSVM_DefineClass()
2230 tpl->PrototypeTemplate()->Set(property_name, value, attributes); in OH_JSVM_DefineClass()
2234 v8::Local<v8::Context> context = env->context(); in OH_JSVM_DefineClass()
2236 scope.Escape(tpl->GetFunction(context).ToLocalChecked())); in OH_JSVM_DefineClass()
2244 if ((p->attributes & JSVM_STATIC) != 0) { in OH_JSVM_DefineClass()
2278 v8::Local<v8::Context> context = env->context(); in OH_JSVM_GetAllPropertyNames()
2329 obj->GetPropertyNames(context, in OH_JSVM_GetAllPropertyNames()
2351 v8::Local<v8::Context> context = env->context(); in OH_JSVM_SetProperty()
2359 v8::Maybe<bool> set_maybe = obj->Set(context, k, val); in OH_JSVM_SetProperty()
2373 v8::Local<v8::Context> context = env->context(); in OH_JSVM_HasProperty()
2379 v8::Maybe<bool> has_maybe = obj->Has(context, k); in OH_JSVM_HasProperty()
2395 v8::Local<v8::Context> context = env->context(); in OH_JSVM_GetProperty()
2401 auto get_maybe = obj->Get(context, k); in OH_JSVM_GetProperty()
2417 v8::Local<v8::Context> context = env->context(); in OH_JSVM_DeleteProperty()
2422 v8::Maybe<bool> delete_maybe = obj->Delete(context, k); in OH_JSVM_DeleteProperty()
2438 v8::Local<v8::Context> context = env->context(); in OH_JSVM_HasOwnProperty()
2443 RETURN_STATUS_IF_FALSE(env, k->IsName(), JSVM_NAME_EXPECTED); in OH_JSVM_HasOwnProperty()
2444 v8::Maybe<bool> has_maybe = obj->HasOwnProperty(context, k.As<v8::Name>()); in OH_JSVM_HasOwnProperty()
2458 v8::Local<v8::Context> context = env->context(); in OH_JSVM_SetNamedProperty()
2468 v8::Maybe<bool> set_maybe = obj->Set(context, key, val); in OH_JSVM_SetNamedProperty()
2481 v8::Local<v8::Context> context = env->context(); in OH_JSVM_HasNamedProperty()
2489 v8::Maybe<bool> has_maybe = obj->Has(context, key); in OH_JSVM_HasNamedProperty()
2504 v8::Local<v8::Context> context = env->context(); in OH_JSVM_GetNamedProperty()
2513 auto get_maybe = obj->Get(context, key); in OH_JSVM_GetNamedProperty()
2529 v8::Local<v8::Context> context = env->context(); in OH_JSVM_SetElement()
2535 auto set_maybe = obj->Set(context, index, val); in OH_JSVM_SetElement()
2549 v8::Local<v8::Context> context = env->context(); in OH_JSVM_HasElement()
2554 v8::Maybe<bool> has_maybe = obj->Has(context, index); in OH_JSVM_HasElement()
2569 v8::Local<v8::Context> context = env->context(); in OH_JSVM_GetElement()
2574 auto get_maybe = obj->Get(context, index); in OH_JSVM_GetElement()
2588 v8::Local<v8::Context> context = env->context(); in OH_JSVM_DeleteElement()
2592 v8::Maybe<bool> delete_maybe = obj->Delete(context, index); in OH_JSVM_DeleteElement()
2610 v8::Local<v8::Context> context = env->context(); in OH_JSVM_DefineProperties()
2621 if (p->getter != nullptr || p->setter != nullptr) { in OH_JSVM_DefineProperties()
2625 if (p->getter != nullptr) { in OH_JSVM_DefineProperties()
2627 env, p->getter, &local_getter)); in OH_JSVM_DefineProperties()
2629 if (p->setter != nullptr) { in OH_JSVM_DefineProperties()
2631 env, p->setter, &local_setter)); in OH_JSVM_DefineProperties()
2635 descriptor.set_enumerable((p->attributes & JSVM_ENUMERABLE) != 0); in OH_JSVM_DefineProperties()
2636 descriptor.set_configurable((p->attributes & JSVM_CONFIGURABLE) != 0); in OH_JSVM_DefineProperties()
2639 obj->DefineProperty(context, property_name, descriptor); in OH_JSVM_DefineProperties()
2644 } else if (p->method != nullptr) { in OH_JSVM_DefineProperties()
2647 env, p->method, &method)); in OH_JSVM_DefineProperties()
2649 (p->attributes & JSVM_WRITABLE) != 0); in OH_JSVM_DefineProperties()
2650 descriptor.set_enumerable((p->attributes & JSVM_ENUMERABLE) != 0); in OH_JSVM_DefineProperties()
2651 descriptor.set_configurable((p->attributes & JSVM_CONFIGURABLE) != 0); in OH_JSVM_DefineProperties()
2654 obj->DefineProperty(context, property_name, descriptor); in OH_JSVM_DefineProperties()
2660 v8::Local<v8::Value> value = v8impl::V8LocalValueFromJsValue(p->value); in OH_JSVM_DefineProperties()
2663 if ((p->attributes & JSVM_ENUMERABLE) && in OH_JSVM_DefineProperties()
2664 (p->attributes & JSVM_WRITABLE) && in OH_JSVM_DefineProperties()
2665 (p->attributes & JSVM_CONFIGURABLE)) { in OH_JSVM_DefineProperties()
2668 obj->CreateDataProperty(context, property_name, value); in OH_JSVM_DefineProperties()
2672 (p->attributes & JSVM_WRITABLE) != 0); in OH_JSVM_DefineProperties()
2673 descriptor.set_enumerable((p->attributes & JSVM_ENUMERABLE) != 0); in OH_JSVM_DefineProperties()
2674 descriptor.set_configurable((p->attributes & JSVM_CONFIGURABLE) != 0); in OH_JSVM_DefineProperties()
2677 obj->DefineProperty(context, property_name, descriptor); in OH_JSVM_DefineProperties()
2693 v8::Local<v8::Context> context = env->context(); in OH_JSVM_ObjectFreeze()
2699 obj->SetIntegrityLevel(context, v8::IntegrityLevel::kFrozen); in OH_JSVM_ObjectFreeze()
2710 v8::Local<v8::Context> context = env->context(); in OH_JSVM_ObjectSeal()
2716 obj->SetIntegrityLevel(context, v8::IntegrityLevel::kSealed); in OH_JSVM_ObjectSeal()
2733 *result = val->IsArray(); in OH_JSVM_IsArray()
2746 *result = val->IsRegExp(); in OH_JSVM_IsRegExp()
2758 RETURN_STATUS_IF_FALSE(env, val->IsArray(), JSVM_ARRAY_EXPECTED); in OH_JSVM_GetArrayLength()
2761 *result = arr->Length(); in OH_JSVM_GetArrayLength()
2778 *result = a->StrictEquals(b); in OH_JSVM_StrictEquals()
2794 v8::Local<v8::Context> context = env->context(); in OH_JSVM_Equals()
2796 *result = a->Equals(context, b).FromJust(); in OH_JSVM_Equals()
2806 v8::Local<v8::Context> context = env->context(); in OH_JSVM_GetPrototype()
2811 v8::Local<v8::Value> val = obj->GetPrototype(); in OH_JSVM_GetPrototype()
2820 *result = v8impl::JsValueFromV8LocalValue(v8::Object::New(env->isolate)); in OH_JSVM_CreateObject()
2829 *result = v8impl::JsValueFromV8LocalValue(v8::Array::New(env->isolate)); in OH_JSVM_CreateArray()
2841 v8impl::JsValueFromV8LocalValue(v8::Array::New(env->isolate, length)); in OH_JSVM_CreateArrayWithLength()
2887 v8impl::JsValueFromV8LocalValue(v8::Number::New(env->isolate, value)); in OH_JSVM_CreateDouble()
2899 v8impl::JsValueFromV8LocalValue(v8::Integer::New(env->isolate, value)); in OH_JSVM_CreateInt32()
2911 v8::Integer::NewFromUnsigned(env->isolate, value)); in OH_JSVM_CreateUint32()
2923 v8::Number::New(env->isolate, static_cast<double>(value))); in OH_JSVM_CreateInt64()
2935 v8impl::JsValueFromV8LocalValue(v8::BigInt::New(env->isolate, value)); in OH_JSVM_CreateBigintInt64()
2947 v8::BigInt::NewFromUnsigned(env->isolate, value)); in OH_JSVM_CreateBigintUint64()
2961 v8::Local<v8::Context> context = env->context(); in OH_JSVM_CreateBigintWords()
2980 v8::Isolate* isolate = env->isolate; in OH_JSVM_GetBoolean()
2997 v8::Isolate* isolate = env->isolate; in OH_JSVM_CreateSymbol()
3003 RETURN_STATUS_IF_FALSE(env, desc->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_CreateSymbol()
3026 v8::Symbol::For(env->isolate, description_string)); in OH_JSVM_SymbolFor()
3036 v8::Local<v8::Context> context = env->context(); in set_error_code()
3042 RETURN_STATUS_IF_FALSE(env, code_value->IsString(), JSVM_STRING_EXPECTED); in set_error_code()
3050 v8::Maybe<bool> set_maybe = err_object->Set(context, code_key, code_value); in set_error_code()
3066 RETURN_STATUS_IF_FALSE(env, message_value->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_CreateError()
3086 RETURN_STATUS_IF_FALSE(env, message_value->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_CreateTypeError()
3106 RETURN_STATUS_IF_FALSE(env, message_value->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_CreateRangeError()
3126 RETURN_STATUS_IF_FALSE(env, message_value->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_CreateSyntaxError()
3148 if (v->IsNumber()) { in OH_JSVM_Typeof()
3150 } else if (v->IsBigInt()) { in OH_JSVM_Typeof()
3152 } else if (v->IsString()) { in OH_JSVM_Typeof()
3154 } else if (v->IsFunction()) { in OH_JSVM_Typeof()
3158 } else if (v->IsExternal()) { in OH_JSVM_Typeof()
3162 } else if (v->IsObject()) { in OH_JSVM_Typeof()
3164 } else if (v->IsBoolean()) { in OH_JSVM_Typeof()
3166 } else if (v->IsUndefined()) { in OH_JSVM_Typeof()
3168 } else if (v->IsSymbol()) { in OH_JSVM_Typeof()
3170 } else if (v->IsNull()) { in OH_JSVM_Typeof()
3184 *result = v8impl::JsValueFromV8LocalValue(v8::Undefined(env->isolate)); in OH_JSVM_GetUndefined()
3193 *result = v8impl::JsValueFromV8LocalValue(v8::Null(env->isolate)); in OH_JSVM_GetNull()
3201 JSVM_CallbackInfo cbinfo, // [in] Opaque callback-info handle in OH_JSVM_GetCbInfo()
3202 size_t* argc, // [in-out] Specifies the size of the provided argv array in OH_JSVM_GetCbInfo()
3215 info->Args(argv, *argc); in OH_JSVM_GetCbInfo()
3218 *argc = info->ArgsLength(); in OH_JSVM_GetCbInfo()
3221 *thisArg = info->This(); in OH_JSVM_GetCbInfo()
3224 *data = info->Data(); in OH_JSVM_GetCbInfo()
3240 *result = info->GetNewTarget(); in OH_JSVM_GetNewTarget()
3256 v8::Local<v8::Context> context = env->context(); in OH_JSVM_CallFunction()
3263 auto maybe = v8func->Call( in OH_JSVM_CallFunction()
3284 *result = v8impl::JsValueFromV8LocalValue(env->context()->Global()); in OH_JSVM_GetGlobal()
3293 v8::Isolate* isolate = env->isolate; in OH_JSVM_Throw()
3295 isolate->ThrowException(v8impl::V8LocalValueFromJsValue(error)); in OH_JSVM_Throw()
3296 // any VM calls after this point and before returning in OH_JSVM_Throw()
3306 v8::Isolate* isolate = env->isolate; in OH_JSVM_ThrowError()
3313 isolate->ThrowException(error_obj); in OH_JSVM_ThrowError()
3314 // any VM calls after this point and before returning in OH_JSVM_ThrowError()
3324 v8::Isolate* isolate = env->isolate; in OH_JSVM_ThrowTypeError()
3331 isolate->ThrowException(error_obj); in OH_JSVM_ThrowTypeError()
3332 // any VM calls after this point and before returning in OH_JSVM_ThrowTypeError()
3342 v8::Isolate* isolate = env->isolate; in OH_JSVM_ThrowRangeError()
3349 isolate->ThrowException(error_obj); in OH_JSVM_ThrowRangeError()
3350 // any VM calls after this point and before returning in OH_JSVM_ThrowRangeError()
3360 v8::Isolate* isolate = env->isolate; in OH_JSVM_ThrowSyntaxError()
3367 isolate->ThrowException(error_obj); in OH_JSVM_ThrowSyntaxError()
3368 // any VM calls after this point and before returning in OH_JSVM_ThrowSyntaxError()
3383 *result = val->IsNativeError(); in OH_JSVM_IsError()
3398 RETURN_STATUS_IF_FALSE(env, val->IsNumber(), JSVM_NUMBER_EXPECTED); in OH_JSVM_GetValueDouble()
3400 *result = val.As<v8::Number>()->Value(); in OH_JSVM_GetValueDouble()
3416 if (val->IsInt32()) { in OH_JSVM_GetValueInt32()
3417 *result = val.As<v8::Int32>()->Value(); in OH_JSVM_GetValueInt32()
3419 RETURN_STATUS_IF_FALSE(env, val->IsNumber(), JSVM_NUMBER_EXPECTED); in OH_JSVM_GetValueInt32()
3423 *result = val->Int32Value(context).FromJust(); in OH_JSVM_GetValueInt32()
3440 if (val->IsUint32()) { in OH_JSVM_GetValueUint32()
3441 *result = val.As<v8::Uint32>()->Value(); in OH_JSVM_GetValueUint32()
3443 RETURN_STATUS_IF_FALSE(env, val->IsNumber(), JSVM_NUMBER_EXPECTED); in OH_JSVM_GetValueUint32()
3447 *result = val->Uint32Value(context).FromJust(); in OH_JSVM_GetValueUint32()
3465 if (val->IsInt32()) { in OH_JSVM_GetValueInt64()
3466 *result = val.As<v8::Int32>()->Value(); in OH_JSVM_GetValueInt64()
3470 RETURN_STATUS_IF_FALSE(env, val->IsNumber(), JSVM_NUMBER_EXPECTED); in OH_JSVM_GetValueInt64()
3472 // v8::Value::IntegerValue() converts NaN, +Inf, and -Inf to INT64_MIN, in OH_JSVM_GetValueInt64()
3474 // Special-case all non-finite values to match that behavior. in OH_JSVM_GetValueInt64()
3475 double doubleValue = val.As<v8::Number>()->Value(); in OH_JSVM_GetValueInt64()
3479 *result = val->IntegerValue(context).FromJust(); in OH_JSVM_GetValueInt64()
3498 RETURN_STATUS_IF_FALSE(env, val->IsBigInt(), JSVM_BIGINT_EXPECTED); in OH_JSVM_GetValueBigintInt64()
3500 *result = val.As<v8::BigInt>()->Int64Value(lossless); in OH_JSVM_GetValueBigintInt64()
3516 RETURN_STATUS_IF_FALSE(env, val->IsBigInt(), JSVM_BIGINT_EXPECTED); in OH_JSVM_GetValueBigintUint64()
3518 *result = val.As<v8::BigInt>()->Uint64Value(lossless); in OH_JSVM_GetValueBigintUint64()
3534 RETURN_STATUS_IF_FALSE(env, val->IsBigInt(), JSVM_BIGINT_EXPECTED); in OH_JSVM_GetValueBigintWords()
3541 word_count_int = big->WordCount(); in OH_JSVM_GetValueBigintWords()
3545 big->ToWordsArray(signBit, &word_count_int, words); in OH_JSVM_GetValueBigintWords()
3563 RETURN_STATUS_IF_FALSE(env, val->IsBoolean(), JSVM_BOOLEAN_EXPECTED); in OH_JSVM_GetValueBool()
3565 *result = val.As<v8::Boolean>()->Value(); in OH_JSVM_GetValueBool()
3570 // Copies a JavaScript string into a LATIN-1 string buffer. The result is the
3584 RETURN_STATUS_IF_FALSE(env, val->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_GetValueStringLatin1()
3588 *result = val.As<v8::String>()->Length(); in OH_JSVM_GetValueStringLatin1()
3591 val.As<v8::String>()->WriteOneByte(env->isolate, in OH_JSVM_GetValueStringLatin1()
3594 bufsize - 1, in OH_JSVM_GetValueStringLatin1()
3608 // Copies a JavaScript string into a UTF-8 string buffer. The result is the
3622 RETURN_STATUS_IF_FALSE(env, val->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_GetValueStringUtf8()
3626 *result = val.As<v8::String>()->Utf8Length(env->isolate); in OH_JSVM_GetValueStringUtf8()
3628 int copied = val.As<v8::String>()->WriteUtf8( in OH_JSVM_GetValueStringUtf8()
3629 env->isolate, in OH_JSVM_GetValueStringUtf8()
3631 bufsize - 1, in OH_JSVM_GetValueStringUtf8()
3646 // Copies a JavaScript string into a UTF-16 string buffer. The result is the
3647 // number of 2-byte code units (excluding the null terminator) copied into buf.
3651 // If buf is NULL, this method returns the length of the string (in 2-byte
3663 RETURN_STATUS_IF_FALSE(env, val->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_GetValueStringUtf16()
3667 // V8 assumes UTF-16 length is the same as the number of characters. in OH_JSVM_GetValueStringUtf16()
3668 *result = val.As<v8::String>()->Length(); in OH_JSVM_GetValueStringUtf16()
3670 int copied = val.As<v8::String>()->Write(env->isolate, in OH_JSVM_GetValueStringUtf16()
3673 bufsize - 1, in OH_JSVM_GetValueStringUtf16()
3694 v8::Isolate* isolate = env->isolate; in OH_JSVM_CoerceToBool()
3696 v8impl::V8LocalValueFromJsValue(value)->ToBoolean(isolate); in OH_JSVM_CoerceToBool()
3708 v8::Local<v8::Context> context = env->context(); \
3754 v8::Isolate* isolate = env->isolate; in OH_JSVM_CreateExternal()
3779 v8::Local<v8::Context> context = env->context(); in OH_JSVM_TypeTagObject()
3784 auto key = JSVM_PRIVATE_KEY(env->isolate, type_tag); in OH_JSVM_TypeTagObject()
3785 auto maybe_has = obj->HasPrivate(context, key); in OH_JSVM_TypeTagObject()
3794 auto maybe_set = obj->SetPrivate(context, key, tag.ToLocalChecked()); in OH_JSVM_TypeTagObject()
3807 v8::Local<v8::Context> context = env->context(); in OH_JSVM_CheckObjectTypeTag()
3814 obj->GetPrivate(context, JSVM_PRIVATE_KEY(env->isolate, type_tag)); in OH_JSVM_CheckObjectTypeTag()
3822 if (val->IsBigInt()) { in OH_JSVM_CheckObjectTypeTag()
3826 val.As<v8::BigInt>()->ToWordsArray( in OH_JSVM_CheckObjectTypeTag()
3831 (tag.lower == typeTag->lower && tag.upper == typeTag->upper); in OH_JSVM_CheckObjectTypeTag()
3833 *result = (tag.lower == typeTag->lower && 0 == typeTag->upper); in OH_JSVM_CheckObjectTypeTag()
3835 *result = (0 == typeTag->lower && 0 == typeTag->upper); in OH_JSVM_CheckObjectTypeTag()
3851 RETURN_STATUS_IF_FALSE(env, val->IsExternal(), JSVM_INVALID_ARG); in OH_JSVM_GetValueExternal()
3854 *result = external_value->Value(); in OH_JSVM_GetValueExternal()
3886 reinterpret_cast<v8impl::Reference*>(ref)->Delete(); in OH_JSVM_DeleteReference()
3905 if (reference->HasDeletedByUser()) { in OH_JSVM_ReferenceRef()
3908 uint32_t count = reference->Ref(); in OH_JSVM_ReferenceRef()
3931 if (reference->RefCount() == 0 || reference->HasDeletedByUser()) { in OH_JSVM_ReferenceUnref()
3935 uint32_t count = reference->Unref(); in OH_JSVM_ReferenceUnref()
3957 *result = v8impl::JsValueFromV8LocalValue(reference->Get()); in OH_JSVM_GetReferenceValue()
3970 new v8impl::HandleScopeWrapper(env->isolate)); in OH_JSVM_OpenHandleScope()
3971 env->open_handle_scopes++; in OH_JSVM_OpenHandleScope()
3981 if (env->open_handle_scopes == 0) { in OH_JSVM_CloseHandleScope()
3985 env->ReleaseJsvmData(); in OH_JSVM_CloseHandleScope()
3986 env->open_handle_scopes--; in OH_JSVM_CloseHandleScope()
3999 new v8impl::EscapableHandleScopeWrapper(env->isolate)); in OH_JSVM_OpenEscapableHandleScope()
4000 env->open_handle_scopes++; in OH_JSVM_OpenEscapableHandleScope()
4010 if (env->open_handle_scopes == 0) { in OH_JSVM_CloseEscapableHandleScope()
4015 env->open_handle_scopes--; in OH_JSVM_CloseEscapableHandleScope()
4032 if (!s->escape_called()) { in OH_JSVM_EscapeHandle()
4034 s->Escape(v8impl::V8LocalValueFromJsValue(escapee))); in OH_JSVM_EscapeHandle()
4052 v8::Local<v8::Context> context = env->context(); in OH_JSVM_NewInstance()
4057 auto maybe = ctor->NewInstance( in OH_JSVM_NewInstance()
4079 v8::Local<v8::Context> context = env->context(); in OH_JSVM_Instanceof()
4083 if (!ctor->IsFunction()) { in OH_JSVM_Instanceof()
4093 auto maybe_result = val->InstanceOf(context, ctor); in OH_JSVM_Instanceof()
4106 *result = !env->last_exception.IsEmpty(); in OH_JSVM_IsExceptionPending()
4117 if (env->last_exception.IsEmpty()) { in OH_JSVM_GetAndClearLastException()
4121 v8::Local<v8::Value>::New(env->isolate, env->last_exception)); in OH_JSVM_GetAndClearLastException()
4122 env->last_exception.Reset(); in OH_JSVM_GetAndClearLastException()
4136 *result = val->IsArrayBuffer(); in OH_JSVM_IsArraybuffer()
4148 v8::Isolate* isolate = env->isolate; in OH_JSVM_CreateArraybuffer()
4155 *data = buffer->Data(); in OH_JSVM_CreateArraybuffer()
4170 allocator->Allocate(byteLength) : in OH_JSVM_AllocateArrayBufferBackingStoreData()
4171 allocator->AllocateUninitialized(byteLength); in OH_JSVM_AllocateArrayBufferBackingStoreData()
4180 allocator->Free(data, JSVM_AUTO_LENGTH); in OH_JSVM_FreeArrayBufferBackingStoreData()
4202 v8::ArrayBuffer::New(env->isolate, std::move(backingStore)); in OH_JSVM_CreateArrayBufferFromBackingStoreData()
4232 RETURN_STATUS_IF_FALSE(env, value->IsArrayBuffer(), JSVM_INVALID_ARG); in OH_JSVM_GetArraybufferInfo()
4237 *data = ab->Data(); in OH_JSVM_GetArraybufferInfo()
4241 *byteLength = ab->ByteLength(); in OH_JSVM_GetArraybufferInfo()
4255 *result = val->IsTypedArray(); in OH_JSVM_IsTypedarray()
4271 RETURN_STATUS_IF_FALSE(env, value->IsArrayBuffer(), JSVM_INVALID_ARG); in OH_JSVM_CreateTypedarray()
4340 RETURN_STATUS_IF_FALSE(env, value->IsTypedArray(), JSVM_INVALID_ARG); in OH_JSVM_GetTypedarrayInfo()
4345 if (value->IsInt8Array()) { in OH_JSVM_GetTypedarrayInfo()
4347 } else if (value->IsUint8Array()) { in OH_JSVM_GetTypedarrayInfo()
4349 } else if (value->IsUint8ClampedArray()) { in OH_JSVM_GetTypedarrayInfo()
4351 } else if (value->IsInt16Array()) { in OH_JSVM_GetTypedarrayInfo()
4353 } else if (value->IsUint16Array()) { in OH_JSVM_GetTypedarrayInfo()
4355 } else if (value->IsInt32Array()) { in OH_JSVM_GetTypedarrayInfo()
4357 } else if (value->IsUint32Array()) { in OH_JSVM_GetTypedarrayInfo()
4359 } else if (value->IsFloat32Array()) { in OH_JSVM_GetTypedarrayInfo()
4361 } else if (value->IsFloat64Array()) { in OH_JSVM_GetTypedarrayInfo()
4363 } else if (value->IsBigInt64Array()) { in OH_JSVM_GetTypedarrayInfo()
4365 } else if (value->IsBigUint64Array()) { in OH_JSVM_GetTypedarrayInfo()
4371 *length = array->Length(); in OH_JSVM_GetTypedarrayInfo()
4378 buffer = array->Buffer(); in OH_JSVM_GetTypedarrayInfo()
4382 *data = static_cast<uint8_t*>(buffer->Data()) + array->ByteOffset(); in OH_JSVM_GetTypedarrayInfo()
4390 *byteOffset = array->ByteOffset(); in OH_JSVM_GetTypedarrayInfo()
4406 RETURN_STATUS_IF_FALSE(env, value->IsArrayBuffer(), JSVM_INVALID_ARG); in OH_JSVM_CreateDataview()
4409 if (byteLength + byteOffset > buffer->ByteLength()) { in OH_JSVM_CreateDataview()
4431 *result = val->IsDataView(); in OH_JSVM_IsDataview()
4446 RETURN_STATUS_IF_FALSE(env, value->IsDataView(), JSVM_INVALID_ARG); in OH_JSVM_GetDataviewInfo()
4451 *byteLength = array->ByteLength(); in OH_JSVM_GetDataviewInfo()
4458 buffer = array->Buffer(); in OH_JSVM_GetDataviewInfo()
4462 *data = static_cast<uint8_t*>(buffer->Data()) + array->ByteOffset(); in OH_JSVM_GetDataviewInfo()
4470 *byteOffset = array->ByteOffset(); in OH_JSVM_GetDataviewInfo()
4490 auto maybe = v8::Promise::Resolver::New(env->context()); in OH_JSVM_CreatePromise()
4495 v8_deferred->Reset(env->isolate, v8_resolver); in OH_JSVM_CreatePromise()
4498 *promise = v8impl::JsValueFromV8LocalValue(v8_resolver->GetPromise()); in OH_JSVM_CreatePromise()
4521 *is_promise = v8impl::V8LocalValueFromJsValue(value)->IsPromise(); in OH_JSVM_IsPromise()
4532 v8::MaybeLocal<v8::Value> maybe_date = v8::Date::New(env->context(), time); in OH_JSVM_CreateDate()
4547 *isDate = v8impl::V8LocalValueFromJsValue(value)->IsDate(); in OH_JSVM_IsDate()
4560 RETURN_STATUS_IF_FALSE(env, val->IsDate(), JSVM_DATE_EXPECTED); in OH_JSVM_GetDateValue()
4563 *result = date->ValueOf(); in OH_JSVM_GetDateValue()
4581 RETURN_STATUS_IF_FALSE(env, v8_value->IsObject(), JSVM_INVALID_ARG); in OH_JSVM_AddFinalizer()
4583 // Create a self-deleting reference if the optional out-param result is not in OH_JSVM_AddFinalizer()
4604 env->isolate->AdjustAmountOfExternalAllocatedMemory(changeInBytes); in OH_JSVM_AdjustExternalMemory()
4615 v8impl::RefBase* old_data = static_cast<v8impl::RefBase*>(env->instance_data); in OH_JSVM_SetInstanceData()
4622 env->instance_data = v8impl::RefBase::New( in OH_JSVM_SetInstanceData()
4632 v8impl::RefBase* idata = static_cast<v8impl::RefBase*>(env->instance_data); in OH_JSVM_GetInstanceData()
4634 *data = (idata == nullptr ? nullptr : idata->Data()); in OH_JSVM_GetInstanceData()
4646 env, value->IsArrayBuffer() || value->IsSharedArrayBuffer(), JSVM_ARRAYBUFFER_EXPECTED); in OH_JSVM_DetachArraybuffer()
4650 env, it->IsDetachable(), JSVM_DETACHABLE_ARRAYBUFFER_EXPECTED); in OH_JSVM_DetachArraybuffer()
4652 it->Detach(); in OH_JSVM_DetachArraybuffer()
4667 value->IsArrayBuffer() && value.As<v8::ArrayBuffer>()->WasDetached(); in OH_JSVM_IsDetachedArraybuffer()
4685 CHECK_ARG(env, constructor->callback); in OH_JSVM_DefineClassWithPropertyHandler()
4692 v8::Isolate* isolate = env->isolate; in OH_JSVM_DefineClassWithPropertyHandler()
4700 tpl->SetClassName(name_string); in OH_JSVM_DefineClassWithPropertyHandler()
4706 if ((p->attributes & JSVM_STATIC) != 0) { // attributes in OH_JSVM_DefineClassWithPropertyHandler()
4720 if (p->getter != nullptr || p->setter != nullptr) { in OH_JSVM_DefineClassWithPropertyHandler()
4723 if (p->getter != nullptr) { in OH_JSVM_DefineClassWithPropertyHandler()
4725 env, p->getter, &getter_tpl)); in OH_JSVM_DefineClassWithPropertyHandler()
4727 if (p->setter != nullptr) { in OH_JSVM_DefineClassWithPropertyHandler()
4729 env, p->setter, &setter_tpl)); in OH_JSVM_DefineClassWithPropertyHandler()
4732 tpl->PrototypeTemplate()->SetAccessorProperty(property_name, in OH_JSVM_DefineClassWithPropertyHandler()
4737 } else if (p->method != nullptr) { in OH_JSVM_DefineClassWithPropertyHandler()
4739 if (p->attributes & JSVM_NO_RECEIVER_CHECK) { in OH_JSVM_DefineClassWithPropertyHandler()
4741 env, p->method, &t)); in OH_JSVM_DefineClassWithPropertyHandler()
4744 env, p->method, &t, v8::Signature::New(isolate, tpl))); in OH_JSVM_DefineClassWithPropertyHandler()
4747 tpl->PrototypeTemplate()->Set(property_name, t, attributes); in OH_JSVM_DefineClassWithPropertyHandler()
4749 v8::Local<v8::Value> value = v8impl::V8LocalValueFromJsValue(p->value); in OH_JSVM_DefineClassWithPropertyHandler()
4750 tpl->PrototypeTemplate()->Set(property_name, value, attributes); in OH_JSVM_DefineClassWithPropertyHandler()
4763 if (propertyHandlerCfg->genericNamedPropertyGetterCallback) { in OH_JSVM_DefineClassWithPropertyHandler()
4766 if (propertyHandlerCfg->genericNamedPropertySetterCallback) { in OH_JSVM_DefineClassWithPropertyHandler()
4769 if (propertyHandlerCfg->genericNamedPropertyDeleterCallback) { in OH_JSVM_DefineClassWithPropertyHandler()
4772 if (propertyHandlerCfg->genericNamedPropertyEnumeratorCallback) { in OH_JSVM_DefineClassWithPropertyHandler()
4776 tpl->InstanceTemplate()->SetHandler(namedPropertyHandler); in OH_JSVM_DefineClassWithPropertyHandler()
4780 if (propertyHandlerCfg->genericIndexedPropertyGetterCallback) { in OH_JSVM_DefineClassWithPropertyHandler()
4783 if (propertyHandlerCfg->genericIndexedPropertySetterCallback) { in OH_JSVM_DefineClassWithPropertyHandler()
4786 if (propertyHandlerCfg->genericIndexedPropertyDeleterCallback) { in OH_JSVM_DefineClassWithPropertyHandler()
4789 if (propertyHandlerCfg->genericIndexedPropertyEnumeratorCallback) { in OH_JSVM_DefineClassWithPropertyHandler()
4793 tpl->InstanceTemplate()->SetHandler(indexPropertyHandler); in OH_JSVM_DefineClassWithPropertyHandler()
4796 if (callAsFunctionCallback && callAsFunctionCallback->callback) { in OH_JSVM_DefineClassWithPropertyHandler()
4798 …tpl->InstanceTemplate()->SetCallAsFunctionHandler(v8impl::FunctionCallbackWrapper::Invoke, funcCbd… in OH_JSVM_DefineClassWithPropertyHandler()
4801 v8::Local<v8::Context> context = env->context(); in OH_JSVM_DefineClassWithPropertyHandler()
4803 scope.Escape(tpl->GetFunction(context).ToLocalChecked())); in OH_JSVM_DefineClassWithPropertyHandler()
4814 if ((p->attributes & JSVM_STATIC) != 0) { in OH_JSVM_DefineClassWithPropertyHandler()
4831 *isLocked = v8::Locker::IsLocked(env->isolate); in OH_JSVM_IsLocked()
4839 bool isLocked = v8::Locker::IsLocked(env->isolate); in OH_JSVM_AcquireLock()
4841 env->locker = new v8::Locker(env->isolate); in OH_JSVM_AcquireLock()
4850 bool isLocked = v8::Locker::IsLocked(env->isolate); in OH_JSVM_ReleaseLock()
4851 if (isLocked && env->locker != nullptr) { in OH_JSVM_ReleaseLock()
4852 delete env->locker; in OH_JSVM_ReleaseLock()
4853 env->locker = nullptr; in OH_JSVM_ReleaseLock()
4868 *isCallable = val->IsFunction(); in OH_JSVM_IsCallable()
4882 *isUndefined = val->IsUndefined(); in OH_JSVM_IsUndefined()
4897 *isNull = val->IsNull(); in OH_JSVM_IsNull()
4912 *isNullOrUndefined = val->IsNullOrUndefined(); in OH_JSVM_IsNullOrUndefined()
4927 *isBoolean = val->IsBoolean(); in OH_JSVM_IsBoolean()
4942 *isNumber = val->IsNumber(); in OH_JSVM_IsNumber()
4957 *isString = val->IsString(); in OH_JSVM_IsString()
4972 *isSymbol = val->IsSymbol(); in OH_JSVM_IsSymbol()
4987 *isFunction = val->IsFunction(); in OH_JSVM_IsFunction()
5002 *isObject = val->IsObject(); in OH_JSVM_IsObject()
5017 *isBigInt = val->IsBigInt(); in OH_JSVM_IsBigInt()
5027 *result = v8impl::JsValueFromV8LocalValue(v8::Set::New(env->isolate)); in OH_JSVM_CreateSet()
5040 *isSet = val->IsSet(); in OH_JSVM_IsSet()
5051 v8::Local<v8::Context> context = env->context(); in OH_JSVM_ObjectGetPrototypeOf()
5056 v8::Local<v8::Value> val = obj->GetPrototypeV2(); in OH_JSVM_ObjectGetPrototypeOf()
5067 v8::Local<v8::Context> context = env->context(); in OH_JSVM_ObjectSetPrototypeOf()
5073 RETURN_STATUS_IF_FALSE(env, type->IsObject(), JSVM_INVALID_ARG); in OH_JSVM_ObjectSetPrototypeOf()
5074 v8::Maybe<bool> set_maybe = obj->SetPrototypeV2(context, type); in OH_JSVM_ObjectSetPrototypeOf()
5084 RETURN_STATUS_IF_FALSE(env, jsvmData && !jsvmData->isGlobal, JSVM_INVALID_ARG); in OH_JSVM_RetainScript()
5086 jsvmData->taggedPointer = v8::Global<v8::Script>( in OH_JSVM_RetainScript()
5087 env->isolate, jsvmData->ToV8Local<v8::Script>(env->isolate)); in OH_JSVM_RetainScript()
5089 jsvmData->isGlobal = true; in OH_JSVM_RetainScript()
5097 RETURN_STATUS_IF_FALSE(env, jsvmData && jsvmData->isGlobal, JSVM_INVALID_ARG); in OH_JSVM_ReleaseScript()
5099 std::get<v8::Global<v8::Script>>(jsvmData->taggedPointer).Reset(); in OH_JSVM_ReleaseScript()
5107 constexpr int invalidPort = -1; in FindAvailablePort()
5108 int sockfd = -1; in FindAvailablePort()
5144 env->inspector_agent()->Start(path, hostPort, true, false); in OH_JSVM_OpenInspectorWithName()
5157 if (!val->IsObject()) { in OH_JSVM_IsConstructor()
5162 *isConstructor = obj->IsConstructor(); in OH_JSVM_IsConstructor()
5177 RETURN_STATUS_IF_FALSE(env, pattern->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_CreateRegExp()
5178 v8::Local<v8::Context> context = env->context(); in OH_JSVM_CreateRegExp()
5192 *result = v8impl::JsValueFromV8LocalValue(v8::Map::New(env->isolate)); in OH_JSVM_CreateMap()
5207 *isMap = val->IsMap(); in OH_JSVM_IsMap()
5223 maybe_module = v8::WasmModuleObject::Compile(env->isolate, {wasmBytecode, wasmBytecodeLength}); in OH_JSVM_CompileWasmModule()
5228 env->isolate, {wasmBytecode, wasmBytecodeLength}, {cacheData, cacheDataLength}, rejected); in OH_JSVM_CompileWasmModule()
5249 RETURN_STATUS_IF_FALSE(env, val->IsWasmModuleObject(), JSVM_INVALID_ARG); in OH_JSVM_CompileWasmFunction()
5262 bool compileSuccess = v8WasmModule->CompileFunction(env->isolate, functionIndex, tier); in OH_JSVM_CompileWasmFunction()
5281 *result = val->IsWasmModuleObject(); in OH_JSVM_IsWasmModuleObject()
5296 RETURN_STATUS_IF_FALSE(env, val->IsWasmModuleObject(), JSVM_INVALID_ARG); in OH_JSVM_CreateWasmCache()
5299 v8::CompiledWasmModule compiledWasmModule = v8WasmModule->GetCompiledModule(); in OH_JSVM_CreateWasmCache()