• Home
  • Raw
  • Download

Lines Matching +full:constant +full:- +full:pool

7  *     http://www.apache.org/licenses/LICENSE-2.0
24 #include "v8-debug.h"
25 #include "v8-internal.h"
26 #include "v8-local-handle.h"
27 #include "v8-primitive.h"
28 #include "v8-statistics.h"
29 #include "v8-version-string.h"
38 #include "libplatform/v8-tracing.h"
45 #define TRACE_DISABLED_BY_DEFAULT(name) "disabled-by-default-" name
93 auto pool = isolate->GetData(v8impl::K_ISOLATE_HANDLER_POOL_SLOT); in GetIsolateHandlerPool() local
94 return reinterpret_cast<IsolateHandlerPool*>(pool); in GetIsolateHandlerPool()
99 auto* pool = isolate->GetData(v8impl::K_ISOLATE_HANDLER_POOL_SLOT); in GetOrCreateIsolateHandlerPool() local
100 if (pool != nullptr) { in GetOrCreateIsolateHandlerPool()
101 return reinterpret_cast<IsolateHandlerPool*>(pool); in GetOrCreateIsolateHandlerPool()
104 isolate->SetData(v8impl::K_ISOLATE_HANDLER_POOL_SLOT, createdPool); in GetOrCreateIsolateHandlerPool()
114 auto env = context->GetAlignedPointerFromEmbedderData(v8impl::K_CONTEXT_ENV_INDEX); in GetEnvByContext()
139 auto wrapperKey = isolate->GetDataFromSnapshotOnce<v8::Private>(0); in CreateIsolateData()
140 auto typeTagKey = isolate->GetDataFromSnapshotOnce<v8::Private>(1); in CreateIsolateData()
141 data->wrapperKey.Set(isolate, wrapperKey.ToLocalChecked()); in CreateIsolateData()
142 data->typeTagKey.Set(isolate, typeTagKey.ToLocalChecked()); in CreateIsolateData()
144 data->wrapperKey.Set(isolate, v8::Private::New(isolate)); in CreateIsolateData()
145 data->typeTagKey.Set(isolate, v8::Private::New(isolate)); in CreateIsolateData()
147 isolate->SetData(v8impl::K_ISOLATE_DATA, data); in CreateIsolateData()
152 auto data = isolate->GetData(v8impl::K_ISOLATE_DATA); in GetIsolateData()
158 isolate->SetData(v8impl::K_ISOLATE_SNAPSHOT_CREATOR_SLOT, creator); in SetIsolateSnapshotCreator()
163 auto data = isolate->GetData(v8impl::K_ISOLATE_SNAPSHOT_CREATOR_SLOT); in GetIsolateSnapshotCreator()
169 context->SetAlignedPointerInEmbedderData(K_CONTEXT_ENV_INDEX, env); in SetContextEnv()
174 auto data = context->GetAlignedPointerFromEmbedderData(K_CONTEXT_ENV_INDEX); in GetContextEnv()
245 auto&& prevSourceMapUrl = it->second; in SetFileToSourceMapMapping()
253 return it->second; in GetSourceMapFromFileName()
263 auto isolate = env->isolate; in NewString()
290 env->CallFinalizer(finalizeCallback, static_cast<CharType*>(str), finalizeHint); in NewExternalString()
306 if (p->utf8name != nullptr) { in V8NameFromPropertyDescriptor()
307 CHECK_NEW_FROM_UTF8(env, *result, p->utf8name); in V8NameFromPropertyDescriptor()
309 v8::Local<v8::Value> propertyValue = v8impl::V8LocalValueFromJsValue(p->name); in V8NameFromPropertyDescriptor()
311 RETURN_STATUS_IF_FALSE(env, propertyValue->IsName(), JSVM_NAME_EXPECTED); in V8NameFromPropertyDescriptor()
318 // convert from jsvm-api property attributes to v8::PropertyAttribute
325 if ((descriptor->getter == nullptr && descriptor->setter == nullptr) && in V8PropertyAttributesFromDescriptor()
326 (descriptor->attributes & JSVM_WRITABLE) == 0) { in V8PropertyAttributesFromDescriptor()
330 if ((descriptor->attributes & JSVM_ENUMERABLE) == 0) { in V8PropertyAttributesFromDescriptor()
333 if ((descriptor->attributes & JSVM_CONFIGURABLE) == 0) { in V8PropertyAttributesFromDescriptor()
343 v8::Local<v8::Context> context = env->context(); in ConcludeDeferred()
345 v8::Local<v8::Value> v8Deferred = v8::Local<v8::Value>::New(env->isolate, *deferredRef); in ConcludeDeferred()
349 …v8::Maybe<bool> success = isResolved ? resolver->Resolve(context, v8impl::V8LocalValueFromJsValue(… in ConcludeDeferred()
350 … : resolver->Reject(context, v8impl::V8LocalValueFromJsValue(result)); in ConcludeDeferred()
367 v8::Local<v8::Context> context = env->context(); in Unwrap()
370 RETURN_STATUS_IF_FALSE(env, value->IsObject(), JSVM_INVALID_ARG); in Unwrap()
373 auto val = obj->GetPrivate(context, JSVM_PRIVATE_KEY(env->isolate, wrapper)).ToLocalChecked(); in Unwrap()
374 RETURN_STATUS_IF_FALSE(env, val->IsExternal(), JSVM_INVALID_ARG); in Unwrap()
375 …RuntimeReference* reference = static_cast<v8impl::RuntimeReference*>(val.As<v8::External>()->Value… in Unwrap()
378 *result = reference->GetData(); in Unwrap()
382 CHECK(obj->DeletePrivate(context, JSVM_PRIVATE_KEY(env->isolate, wrapper)).FromJust()); in Unwrap()
391 // Use this data structure to associate callback data with each N-API function
394 // calling through N-API.
403 return v8::External::New(env->isolate, cb); in New()
408 return v8::External::New(env->isolate, cb); in New()
452 cb = static_cast<JSVM_Callback>(cbinfo.Data().As<v8::External>()->Value()); in CallbackWrapperBase()
453 data = cb->data; in CallbackWrapperBase()
467 auto context = cbinfo.GetIsolate()->GetCurrentContext(); in InvokeCallback()
469 auto func = cb->callback; in InvokeCallback()
473 env->CallIntoModule([&](JSVM_Env env) { result = func(env, cbinfoWrapper); }, in InvokeCallback()
476 if (env->IsTerminatedOrTerminating()) { in InvokeCallback()
479 env->isolate->ThrowException(value); in InvokeCallback()
483 this->SetReturnValue(result); in InvokeCallback()
505 … v8::MaybeLocal<v8::Function> maybeFunction = v8::Function::New(env->context(), Invoke, cbdata); in NewFunction()
520 *result = v8::FunctionTemplate::New(env->isolate, Invoke, cbdata, sig); in NewTemplate()
576 …c_cast<v8impl::JSVM_PropertyHandlerCfgStruct*>(cbinfo.Data().template As<v8::External>()->Value()); in PropertyCallbackWrapperBase()
589 auto context = cbinfo.GetIsolate()->GetCurrentContext(); in NameSetterInvokeCallback()
591 auto setterCb = propertyHandler->namedSetterCallback; in NameSetterInvokeCallback()
594 if (propertyHandler->namedPropertyData != nullptr) { in NameSetterInvokeCallback()
596 reinterpret_cast<v8impl::UserReference*>(propertyHandler->namedPropertyData); in NameSetterInvokeCallback()
597 innerData = v8impl::JsValueFromV8LocalValue(reference->Get()); in NameSetterInvokeCallback()
604 JSVM_Value thisArg = this->This(); in NameSetterInvokeCallback()
605 env->CallIntoModule( in NameSetterInvokeCallback()
613 if (env->IsTerminatedOrTerminating()) { in NameSetterInvokeCallback()
616 env->isolate->ThrowException(v8Value); in NameSetterInvokeCallback()
619 this->SetReturnValue(result); in NameSetterInvokeCallback()
625 auto context = cbinfo.GetIsolate()->GetCurrentContext(); in NameGetterInvokeCallback()
627 auto getterCb = propertyHandler->namedGetterCallback; in NameGetterInvokeCallback()
630 if (propertyHandler->namedPropertyData != nullptr) { in NameGetterInvokeCallback()
632 reinterpret_cast<v8impl::UserReference*>(propertyHandler->namedPropertyData); in NameGetterInvokeCallback()
633 innerData = v8impl::JsValueFromV8LocalValue(reference->Get()); in NameGetterInvokeCallback()
638 JSVM_Value thisArg = this->This(); in NameGetterInvokeCallback()
639 env->CallIntoModule( in NameGetterInvokeCallback()
647 if (env->IsTerminatedOrTerminating()) { in NameGetterInvokeCallback()
650 env->isolate->ThrowException(v8Value); in NameGetterInvokeCallback()
653 this->SetReturnValue(result); in NameGetterInvokeCallback()
659 auto context = cbinfo.GetIsolate()->GetCurrentContext(); in NameDeleterInvokeCallback()
661 auto deleterCb = propertyHandler->nameDeleterCallback; in NameDeleterInvokeCallback()
664 if (propertyHandler->namedPropertyData != nullptr) { in NameDeleterInvokeCallback()
666 reinterpret_cast<v8impl::UserReference*>(propertyHandler->namedPropertyData); in NameDeleterInvokeCallback()
667 innerData = v8impl::JsValueFromV8LocalValue(reference->Get()); in NameDeleterInvokeCallback()
673 JSVM_Value thisArg = this->This(); in NameDeleterInvokeCallback()
674 env->CallIntoModule( in NameDeleterInvokeCallback()
682 if (env->IsTerminatedOrTerminating()) { in NameDeleterInvokeCallback()
685 env->isolate->ThrowException(v8Value); in NameDeleterInvokeCallback()
688 if (v8impl::V8LocalValueFromJsValue(result)->IsBoolean()) { in NameDeleterInvokeCallback()
689 this->SetReturnValue(result); in NameDeleterInvokeCallback()
696 auto context = cbinfo.GetIsolate()->GetCurrentContext(); in NameEnumeratorInvokeCallback()
698 auto enumeratorCb = propertyHandler->namedEnumeratorCallback; in NameEnumeratorInvokeCallback()
701 if (propertyHandler->namedPropertyData != nullptr) { in NameEnumeratorInvokeCallback()
703 reinterpret_cast<v8impl::UserReference*>(propertyHandler->namedPropertyData); in NameEnumeratorInvokeCallback()
704 innerData = v8impl::JsValueFromV8LocalValue(reference->Get()); in NameEnumeratorInvokeCallback()
709 JSVM_Value thisArg = this->This(); in NameEnumeratorInvokeCallback()
710 env->CallIntoModule( in NameEnumeratorInvokeCallback()
718 if (env->IsTerminatedOrTerminating()) { in NameEnumeratorInvokeCallback()
721 env->isolate->ThrowException(v8Value); in NameEnumeratorInvokeCallback()
724 if (v8impl::V8LocalValueFromJsValue(result)->IsArray()) { in NameEnumeratorInvokeCallback()
725 this->SetReturnValue(result); in NameEnumeratorInvokeCallback()
732 auto context = cbinfo.GetIsolate()->GetCurrentContext(); in IndexSetterInvokeCallback()
734 auto indexSetterCb = propertyHandler->indexedSetterCallback; in IndexSetterInvokeCallback()
737 if (propertyHandler->indexedPropertyData != nullptr) { in IndexSetterInvokeCallback()
739 reinterpret_cast<v8impl::UserReference*>(propertyHandler->indexedPropertyData); in IndexSetterInvokeCallback()
740 innerData = v8impl::JsValueFromV8LocalValue(reference->Get()); in IndexSetterInvokeCallback()
745 … JSVM_Value v8Index = JsValueFromV8LocalValue(v8::Integer::NewFromUnsigned(env->isolate, index)); in IndexSetterInvokeCallback()
747 JSVM_Value thisArg = this->This(); in IndexSetterInvokeCallback()
748 env->CallIntoModule( in IndexSetterInvokeCallback()
756 if (env->IsTerminatedOrTerminating()) { in IndexSetterInvokeCallback()
759 env->isolate->ThrowException(v8Value); in IndexSetterInvokeCallback()
762 this->SetReturnValue(result); in IndexSetterInvokeCallback()
768 auto context = cbinfo.GetIsolate()->GetCurrentContext(); in IndexGetterInvokeCallback()
770 auto indexGetterCb = propertyHandler->indexedGetterCallback; in IndexGetterInvokeCallback()
773 if (propertyHandler->indexedPropertyData != nullptr) { in IndexGetterInvokeCallback()
775 reinterpret_cast<v8impl::UserReference*>(propertyHandler->indexedPropertyData); in IndexGetterInvokeCallback()
776 innerData = v8impl::JsValueFromV8LocalValue(reference->Get()); in IndexGetterInvokeCallback()
781 … JSVM_Value v8Index = JsValueFromV8LocalValue(v8::Integer::NewFromUnsigned(env->isolate, index)); in IndexGetterInvokeCallback()
782 JSVM_Value thisArg = this->This(); in IndexGetterInvokeCallback()
783 env->CallIntoModule( in IndexGetterInvokeCallback()
791 if (env->IsTerminatedOrTerminating()) { in IndexGetterInvokeCallback()
794 env->isolate->ThrowException(v8Value); in IndexGetterInvokeCallback()
797 this->SetReturnValue(result); in IndexGetterInvokeCallback()
803 auto context = cbinfo.GetIsolate()->GetCurrentContext(); in IndexDeleterInvokeCallback()
805 auto indexDeleterCb = propertyHandler->indexedDeleterCallback; in IndexDeleterInvokeCallback()
808 if (propertyHandler->indexedPropertyData != nullptr) { in IndexDeleterInvokeCallback()
810 reinterpret_cast<v8impl::UserReference*>(propertyHandler->indexedPropertyData); in IndexDeleterInvokeCallback()
811 innerData = v8impl::JsValueFromV8LocalValue(reference->Get()); in IndexDeleterInvokeCallback()
816 … JSVM_Value v8Index = JsValueFromV8LocalValue(v8::Integer::NewFromUnsigned(env->isolate, index)); in IndexDeleterInvokeCallback()
817 JSVM_Value thisArg = this->This(); in IndexDeleterInvokeCallback()
818 env->CallIntoModule( in IndexDeleterInvokeCallback()
826 if (env->IsTerminatedOrTerminating()) { in IndexDeleterInvokeCallback()
829 env->isolate->ThrowException(v8Value); in IndexDeleterInvokeCallback()
832 if (v8impl::V8LocalValueFromJsValue(result)->IsBoolean()) { in IndexDeleterInvokeCallback()
833 this->SetReturnValue(result); in IndexDeleterInvokeCallback()
840 auto context = cbinfo.GetIsolate()->GetCurrentContext(); in IndexEnumeratorInvokeCallback()
842 auto enumeratorCb = propertyHandler->indexedEnumeratorCallback; in IndexEnumeratorInvokeCallback()
845 if (propertyHandler->indexedPropertyData != nullptr) { in IndexEnumeratorInvokeCallback()
847 reinterpret_cast<v8impl::UserReference*>(propertyHandler->indexedPropertyData); in IndexEnumeratorInvokeCallback()
848 innerData = v8impl::JsValueFromV8LocalValue(reference->Get()); in IndexEnumeratorInvokeCallback()
853 JSVM_Value thisArg = this->This(); in IndexEnumeratorInvokeCallback()
854 env->CallIntoModule( in IndexEnumeratorInvokeCallback()
862 if (env->IsTerminatedOrTerminating()) { in IndexEnumeratorInvokeCallback()
865 env->isolate->ThrowException(v8Value); in IndexEnumeratorInvokeCallback()
868 if (v8impl::V8LocalValueFromJsValue(result)->IsArray()) { in IndexEnumeratorInvokeCallback()
869 this->SetReturnValue(result); in IndexEnumeratorInvokeCallback()
969 v8::Local<v8::Context> context = env->context(); in Wrap()
972 RETURN_STATUS_IF_FALSE(env, value->IsObject(), JSVM_INVALID_ARG); in Wrap()
976 …RETURN_STATUS_IF_FALSE(env, !obj->HasPrivate(context, JSVM_PRIVATE_KEY(env->isolate, wrapper)).Fro… in Wrap()
985 …CHECK(obj->SetPrivate(context, JSVM_PRIVATE_KEY(env->isolate, wrapper), v8::External::New(env->iso… in Wrap()
1014 if (options && options->argc && options->argv) { in OH_JSVM_Init()
1015 v8::V8::SetFlagsFromCommandLine(options->argc, options->argv, options->removeFlags); in OH_JSVM_Init()
1021 if (auto p = options ? options->externalReferences : nullptr) { in OH_JSVM_Init()
1032 *result = reinterpret_cast<JSVM_VM>(env->isolate); in OH_JSVM_GetVM()
1045 if (options && options->snapshotBlobData) { in OH_JSVM_CreateVM()
1047 snapshotBlob->data = options->snapshotBlobData; in OH_JSVM_CreateVM()
1048 snapshotBlob->raw_size = options->snapshotBlobSize; in OH_JSVM_CreateVM()
1050 if (!snapshotBlob->IsValid()) { in OH_JSVM_CreateVM()
1058 if (options && options->isForSnapshotting) { in OH_JSVM_CreateVM()
1069 isolate->SetData(v8impl::K_ISOLATE_HANDLER_POOL_SLOT, nullptr); in OH_JSVM_CreateVM()
1087 isolate->Dispose(); in OH_JSVM_DestroyVM()
1128 if ((p->attributes & JSVM_STATIC) != 0) { in OH_JSVM_CreateEnv()
1134 … v8::String::NewFromUtf8(isolate, p->utf8name, v8::NewStringType::kInternalized).ToLocalChecked(); in OH_JSVM_CreateEnv()
1138 if (p->getter != nullptr || p->setter != nullptr) { in OH_JSVM_CreateEnv()
1141 if (p->getter != nullptr) { in OH_JSVM_CreateEnv()
1142 … STATUS_CALL(v8impl::FunctionCallbackWrapper::NewTemplate(env, p->getter, &getterTpl)); in OH_JSVM_CreateEnv()
1144 if (p->setter != nullptr) { in OH_JSVM_CreateEnv()
1145 … STATUS_CALL(v8impl::FunctionCallbackWrapper::NewTemplate(env, p->setter, &setterTpl)); in OH_JSVM_CreateEnv()
1148 globalTemplate->SetAccessorProperty(propertyName, getterTpl, setterTpl, attributes); in OH_JSVM_CreateEnv()
1149 } else if (p->method != nullptr) { in OH_JSVM_CreateEnv()
1151 STATUS_CALL(v8impl::FunctionCallbackWrapper::NewTemplate(env, p->method, &methodTpl)); in OH_JSVM_CreateEnv()
1153 globalTemplate->Set(propertyName, methodTpl, attributes); in OH_JSVM_CreateEnv()
1155 v8::Local<v8::Value> value = v8impl::V8LocalValueFromJsValue(p->value); in OH_JSVM_CreateEnv()
1156 globalTemplate->Set(propertyName, value, attributes); in OH_JSVM_CreateEnv()
1161 env->contextPersistent.Reset(isolate, context); in OH_JSVM_CreateEnv()
1181 env->contextPersistent.Reset(isolate, context); in OH_JSVM_CreateEnvFromSnapshot()
1190 env->DeleteMe(); in OH_JSVM_DestroyEnv()
1196 auto v8scope = new v8::Context::Scope(env->context()); in OH_JSVM_OpenEnvScope()
1222 RETURN_STATUS_IF_FALSE(env, v8Script->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_CompileScript()
1224 v8::Local<v8::Context> context = env->context(); in OH_JSVM_CompileScript()
1235 *cacheRejected = cache->rejected; in OH_JSVM_CompileScript()
1240 *result = reinterpret_cast<JSVM_Script>(env->NewJsvmData(compiledScript)); in OH_JSVM_CompileScript()
1250 options->Set(isolate, 0, v8::Uint32::New(isolate, kOptionsMagicConstant)); in CreateScriptOrigin()
1251 options->Set(isolate, 1, resourceName); in CreateScriptOrigin()
1252 …return v8::ScriptOrigin(isolate, resourceName, 0, 0, false, -1, v8::Local<v8::Value>(), false, fal… in CreateScriptOrigin()
1260 auto* isolate = context->GetIsolate(); in PrepareStackTraceCallback()
1270 auto result = script->Run(moduleContext).ToLocalChecked(); in PrepareStackTraceCallback()
1273 v8::Local<v8::Value> element = trace->Get(context, 0).ToLocalChecked(); in PrepareStackTraceCallback()
1275 if (element->IsObject()) { in PrepareStackTraceCallback()
1276 auto obj = element->ToObject(context); in PrepareStackTraceCallback()
1278 … auto function = obj.ToLocalChecked()->Get(context, getFileName.ToLocalChecked()).ToLocalChecked(); in PrepareStackTraceCallback()
1280 auto fileNameObj = lineNumberFunction->Call(context, obj.ToLocalChecked(), 0, {}); in PrepareStackTraceCallback()
1306 CHECK_NOT_NULL(origin->resourceName); in OH_JSVM_CompileScriptWithOrigin()
1310 RETURN_STATUS_IF_FALSE(env, v8Script->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_CompileScriptWithOrigin()
1312 v8::Local<v8::Context> context = env->context(); in OH_JSVM_CompileScriptWithOrigin()
1313 auto* isolate = context->GetIsolate(); in OH_JSVM_CompileScriptWithOrigin()
1315 if (origin->sourceMapUrl) { in OH_JSVM_CompileScriptWithOrigin()
1316 v8impl::SetFileToSourceMapMapping(origin->resourceName, origin->sourceMapUrl); in OH_JSVM_CompileScriptWithOrigin()
1317 isolate->SetPrepareStackTraceCallback(PrepareStackTraceCallback); in OH_JSVM_CompileScriptWithOrigin()
1319 auto sourceMapUrl = !origin->sourceMapUrl in OH_JSVM_CompileScriptWithOrigin()
1321 … : v8::String::NewFromUtf8(isolate, origin->sourceMapUrl).ToLocalChecked().As<v8::Value>(); in OH_JSVM_CompileScriptWithOrigin()
1322 auto resourceName = v8::String::NewFromUtf8(isolate, origin->resourceName).ToLocalChecked(); in OH_JSVM_CompileScriptWithOrigin()
1323 …v8::ScriptOrigin scriptOrigin(isolate, resourceName, origin->resourceLineOffset, origin->resourceC… in OH_JSVM_CompileScriptWithOrigin()
1324 false, -1, sourceMapUrl); in OH_JSVM_CompileScriptWithOrigin()
1335 *cacheRejected = cache->rejected; in OH_JSVM_CompileScriptWithOrigin()
1339 *result = reinterpret_cast<JSVM_Script>(env->NewJsvmData(compiledScript)); in OH_JSVM_CompileScriptWithOrigin()
1357 … cache->cache ? new v8::ScriptCompiler::CachedData(cache->cache, cache->length) : nullptr; in CompileOptionResolver()
1377 …auto sourceString = jsvmOrigin ? jsvmOrigin->resourceName : "script_" + std::to_string(compileCoun… in CompileOptionResolver()
1378 … auto sourceMapPtr = jsvmOrigin && jsvmOrigin->sourceMapUrl ? jsvmOrigin->sourceMapUrl : nullptr; in CompileOptionResolver()
1380 (jsvmOrigin && jsvmOrigin->sourceMapUrl) in CompileOptionResolver()
1381 … ? v8::String::NewFromUtf8(isolate, jsvmOrigin->sourceMapUrl).ToLocalChecked().As<v8::Value>() in CompileOptionResolver()
1384 …v8Origin = new v8::ScriptOrigin(isolate, resourceName, jsvmOrigin ? jsvmOrigin->resourceLineOffset… in CompileOptionResolver()
1385 … jsvmOrigin ? jsvmOrigin->resourceColumnOffset : 0, false, -1, sourceMapUrl); in CompileOptionResolver()
1387 v8impl::SetFileToSourceMapMapping(jsvmOrigin->resourceName, sourceMapPtr); in CompileOptionResolver()
1388 isolate->SetPrepareStackTraceCallback(PrepareStackTraceCallback); in CompileOptionResolver()
1440 v8::Local<v8::Context> context = env->context(); in OH_JSVM_CompileScriptWithOptions()
1441 auto* isolate = context->GetIsolate(); in OH_JSVM_CompileScriptWithOptions()
1447 RETURN_STATUS_IF_FALSE(env, v8Script->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_CompileScriptWithOptions()
1454 *result = reinterpret_cast<JSVM_Script>(env->NewJsvmData(compiledScript)); in OH_JSVM_CompileScriptWithOptions()
1467 auto v8script = jsvmData->ToV8Local<v8::Script>(env->isolate); in OH_JSVM_CreateCodeCache()
1469 …v8::ScriptCompiler::CachedData* cache = v8::ScriptCompiler::CreateCodeCache(v8script->GetUnboundSc… in OH_JSVM_CreateCodeCache()
1474 *data = cache->data; in OH_JSVM_CreateCodeCache()
1475 *length = cache->length; in OH_JSVM_CreateCodeCache()
1476 cache->buffer_policy = v8::ScriptCompiler::CachedData::BufferNotOwned; in OH_JSVM_CreateCodeCache()
1488 auto v8script = jsvmData->ToV8Local<v8::Script>(env->isolate); in OH_JSVM_RunScript()
1489 auto scriptResult = v8script->Run(env->context()); in OH_JSVM_RunScript()
1502 RETURN_STATUS_IF_FALSE(env, val->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_JsonParse()
1504 auto maybe = v8::JSON::Parse(env->context(), val.As<v8::String>()); in OH_JSVM_JsonParse()
1518 auto maybe = v8::JSON::Stringify(env->context(), val); in OH_JSVM_JsonStringify()
1539 creator->SetDefaultContext(defaultContext); in OH_JSVM_CreateSnapshot()
1542 creator->AddData(JSVM_PRIVATE_KEY(isolate, wrapper)); in OH_JSVM_CreateSnapshot()
1543 creator->AddData(JSVM_PRIVATE_KEY(isolate, typeTag)); in OH_JSVM_CreateSnapshot()
1546 auto ctx = contexts[i]->context(); in OH_JSVM_CreateSnapshot()
1547 creator->AddData(ctx, ctx); in OH_JSVM_CreateSnapshot()
1548 creator->AddContext(ctx); in OH_JSVM_CreateSnapshot()
1551 auto blob = creator->CreateBlob(v8::SnapshotCreator::FunctionCodeHandling::kKeep); in OH_JSVM_CreateSnapshot()
1560 result->apiVersion = 1; in OH_JSVM_GetVMInfo()
1561 result->engine = "v8"; in OH_JSVM_GetVMInfo()
1562 result->version = V8_VERSION_STRING; in OH_JSVM_GetVMInfo()
1563 result->cachedDataVersionTag = v8::ScriptCompiler::CachedDataVersionTag(); in OH_JSVM_GetVMInfo()
1570 env->isolate->MemoryPressureNotification(v8::MemoryPressureLevel(level)); in OH_JSVM_MemoryPressureNotification()
1578 isolate->GetHeapStatistics(&stats); in OH_JSVM_GetHeapStatistics()
1579 result->totalHeapSize = stats.total_heap_size(); in OH_JSVM_GetHeapStatistics()
1580 result->totalHeapSizeExecutable = stats.total_heap_size_executable(); in OH_JSVM_GetHeapStatistics()
1581 result->totalPhysicalSize = stats.total_physical_size(); in OH_JSVM_GetHeapStatistics()
1582 result->totalAvailableSize = stats.total_available_size(); in OH_JSVM_GetHeapStatistics()
1583 result->usedHeapSize = stats.used_heap_size(); in OH_JSVM_GetHeapStatistics()
1584 result->heapSizeLimit = stats.heap_size_limit(); in OH_JSVM_GetHeapStatistics()
1585 result->mallocedMemory = stats.malloced_memory(); in OH_JSVM_GetHeapStatistics()
1586 result->externalMemory = stats.external_memory(); in OH_JSVM_GetHeapStatistics()
1587 result->peakMallocedMemory = stats.peak_malloced_memory(); in OH_JSVM_GetHeapStatistics()
1588 result->numberOfNativeContexts = stats.number_of_native_contexts(); in OH_JSVM_GetHeapStatistics()
1589 result->numberOfDetachedContexts = stats.number_of_detached_contexts(); in OH_JSVM_GetHeapStatistics()
1590 result->totalGlobalHandlesSize = stats.total_global_handles_size(); in OH_JSVM_GetHeapStatistics()
1591 result->usedGlobalHandlesSize = stats.used_global_handles_size(); in OH_JSVM_GetHeapStatistics()
1601 profiler->Start(v8::String::Empty(isolate), std::move(options)); in OH_JSVM_StartCpuProfiler()
1615 auto profile = v8profiler->StopProfiling(v8::String::Empty(isolate)); in OH_JSVM_StopCpuProfiler()
1617 profile->Serialize(&os); in OH_JSVM_StopCpuProfiler()
1625 auto profiler = isolate->GetHeapProfiler(); in OH_JSVM_TakeHeapSnapshot()
1626 auto snapshot = profiler->TakeHeapSnapshot(); in OH_JSVM_TakeHeapSnapshot()
1628 snapshot->Serialize(&os); in OH_JSVM_TakeHeapSnapshot()
1640 auto agent = env->GetInspectorAgent(); in OH_JSVM_OpenInspector()
1641 if (!agent->Start(inspectorPath, hostName, port)) { in OH_JSVM_OpenInspector()
1652 auto agent = env->GetInspectorAgent(); in OH_JSVM_CloseInspector()
1653 if (!agent->IsActive()) { in OH_JSVM_CloseInspector()
1656 agent->Stop(); in OH_JSVM_CloseInspector()
1663 auto* agent = env->GetInspectorAgent(); in OH_JSVM_WaitForDebugger()
1664 if (!agent->IsActive()) { in OH_JSVM_WaitForDebugger()
1668 agent->WaitForConnect(); in OH_JSVM_WaitForDebugger()
1670 agent->PauseOnNextJavascriptStatement("Break on debugger attached"); in OH_JSVM_WaitForDebugger()
1686 isolate->PerformMicrotaskCheckpoint(); in OH_JSVM_PerformMicrotaskCheckpoint()
1690 // Warning: Keep in-sync with JSVM_Status enum
1707 "Thread-safe function queue is full",
1708 "Thread-safe function handle is closing",
1724 // The value of the constant below must be updated to reference the last in OH_JSVM_GetLastErrorInfo()
1732 CHECK_LE(env->lastError.errorCode, lastStatus); in OH_JSVM_GetLastErrorInfo()
1735 env->lastError.errorMessage = errorMessages[env->lastError.errorCode]; in OH_JSVM_GetLastErrorInfo()
1737 if (env->lastError.errorCode == JSVM_OK) { in OH_JSVM_GetLastErrorInfo()
1740 *result = &(env->lastError); in OH_JSVM_GetLastErrorInfo()
1755 v8::EscapableHandleScope scope(env->isolate); in OH_JSVM_CreateFunction()
1763 returnValue->SetName(nameString); in OH_JSVM_CreateFunction()
1785 …RETURN_STATUS_IF_FALSE(env, v8impl::V8LocalValueFromJsValue(argv[i])->IsString(), JSVM_STRING_EXPE… in OH_JSVM_CreateFunctionWithScript()
1791 RETURN_STATUS_IF_FALSE(env, v8Script->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_CreateFunctionWithScript()
1795 v8::Local<v8::Context> context = env->context(); in OH_JSVM_CreateFunctionWithScript()
1807 func->SetName(funcNameString); in OH_JSVM_CreateFunctionWithScript()
1831 v8::Isolate* isolate = env->isolate; in OH_JSVM_DefineClass()
1839 tpl->SetClassName(nameString); in OH_JSVM_DefineClass()
1845 if ((p->attributes & JSVM_STATIC) != 0) { in OH_JSVM_DefineClass()
1860 if (p->getter != nullptr || p->setter != nullptr) { in OH_JSVM_DefineClass()
1863 if (p->getter != nullptr) { in OH_JSVM_DefineClass()
1864 … STATUS_CALL(v8impl::FunctionCallbackWrapper::NewTemplate(env, p->getter, &getterTpl)); in OH_JSVM_DefineClass()
1866 if (p->setter != nullptr) { in OH_JSVM_DefineClass()
1867 … STATUS_CALL(v8impl::FunctionCallbackWrapper::NewTemplate(env, p->setter, &setterTpl)); in OH_JSVM_DefineClass()
1870 … tpl->PrototypeTemplate()->SetAccessorProperty(propertyName, getterTpl, setterTpl, attributes, in OH_JSVM_DefineClass()
1872 } else if (p->method != nullptr) { in OH_JSVM_DefineClass()
1874 if (p->attributes & JSVM_NO_RECEIVER_CHECK) { in OH_JSVM_DefineClass()
1875 STATUS_CALL(v8impl::FunctionCallbackWrapper::NewTemplate(env, p->method, &t)); in OH_JSVM_DefineClass()
1878 …v8impl::FunctionCallbackWrapper::NewTemplate(env, p->method, &t, v8::Signature::New(isolate, tpl))… in OH_JSVM_DefineClass()
1881 tpl->PrototypeTemplate()->Set(propertyName, t, attributes); in OH_JSVM_DefineClass()
1883 v8::Local<v8::Value> value = v8impl::V8LocalValueFromJsValue(p->value); in OH_JSVM_DefineClass()
1884 tpl->PrototypeTemplate()->Set(propertyName, value, attributes); in OH_JSVM_DefineClass()
1888 v8::Local<v8::Context> context = env->context(); in OH_JSVM_DefineClass()
1889 …*result = v8impl::JsValueFromV8LocalValue(scope.Escape(tpl->GetFunction(context).ToLocalChecked())… in OH_JSVM_DefineClass()
1897 if ((p->attributes & JSVM_STATIC) != 0) { in OH_JSVM_DefineClass()
1925 v8::Local<v8::Context> context = env->context(); in OH_JSVM_GetAllPropertyNames()
1971 …obj->GetPropertyNames(context, collectionMode, filter, v8::IndexFilter::kIncludeIndices, conversio… in OH_JSVM_GetAllPropertyNames()
1985 v8::Local<v8::Context> context = env->context(); in OH_JSVM_SetProperty()
1993 v8::Maybe<bool> setMaybe = obj->Set(context, k, val); in OH_JSVM_SetProperty()
2004 v8::Local<v8::Context> context = env->context(); in OH_JSVM_HasProperty()
2010 v8::Maybe<bool> hasMaybe = obj->Has(context, k); in OH_JSVM_HasProperty()
2023 v8::Local<v8::Context> context = env->context(); in OH_JSVM_GetProperty()
2029 auto getMaybe = obj->Get(context, k); in OH_JSVM_GetProperty()
2042 v8::Local<v8::Context> context = env->context(); in OH_JSVM_DeleteProperty()
2047 v8::Maybe<bool> deleteMaybe = obj->Delete(context, k); in OH_JSVM_DeleteProperty()
2062 v8::Local<v8::Context> context = env->context(); in OH_JSVM_HasOwnProperty()
2067 RETURN_STATUS_IF_FALSE(env, k->IsName(), JSVM_NAME_EXPECTED); in OH_JSVM_HasOwnProperty()
2068 v8::Maybe<bool> hasMaybe = obj->HasOwnProperty(context, k.As<v8::Name>()); in OH_JSVM_HasOwnProperty()
2080 v8::Local<v8::Context> context = env->context(); in OH_JSVM_SetNamedProperty()
2090 v8::Maybe<bool> setMaybe = obj->Set(context, key, val); in OH_JSVM_SetNamedProperty()
2100 v8::Local<v8::Context> context = env->context(); in OH_JSVM_HasNamedProperty()
2108 v8::Maybe<bool> hasMaybe = obj->Has(context, key); in OH_JSVM_HasNamedProperty()
2120 v8::Local<v8::Context> context = env->context(); in OH_JSVM_GetNamedProperty()
2129 auto getMaybe = obj->Get(context, key); in OH_JSVM_GetNamedProperty()
2142 v8::Local<v8::Context> context = env->context(); in OH_JSVM_SetElement()
2148 auto setMaybe = obj->Set(context, index, val); in OH_JSVM_SetElement()
2159 v8::Local<v8::Context> context = env->context(); in OH_JSVM_HasElement()
2164 v8::Maybe<bool> hasMaybe = obj->Has(context, index); in OH_JSVM_HasElement()
2176 v8::Local<v8::Context> context = env->context(); in OH_JSVM_GetElement()
2181 auto getMaybe = obj->Get(context, index); in OH_JSVM_GetElement()
2192 v8::Local<v8::Context> context = env->context(); in OH_JSVM_DeleteElement()
2196 v8::Maybe<bool> deleteMaybe = obj->Delete(context, index); in OH_JSVM_DeleteElement()
2215 v8::Local<v8::Context> context = env->context(); in OH_JSVM_DefineProperties()
2226 if (p->getter != nullptr || p->setter != nullptr) { in OH_JSVM_DefineProperties()
2230 if (p->getter != nullptr) { in OH_JSVM_DefineProperties()
2231 … STATUS_CALL(v8impl::FunctionCallbackWrapper::NewFunction(env, p->getter, &localGetter)); in OH_JSVM_DefineProperties()
2233 if (p->setter != nullptr) { in OH_JSVM_DefineProperties()
2234 … STATUS_CALL(v8impl::FunctionCallbackWrapper::NewFunction(env, p->setter, &localSetter)); in OH_JSVM_DefineProperties()
2238 descriptor.set_enumerable((p->attributes & JSVM_ENUMERABLE) != 0); in OH_JSVM_DefineProperties()
2239 descriptor.set_configurable((p->attributes & JSVM_CONFIGURABLE) != 0); in OH_JSVM_DefineProperties()
2241 auto defineMaybe = obj->DefineProperty(context, propertyName, descriptor); in OH_JSVM_DefineProperties()
2245 } else if (p->method != nullptr) { in OH_JSVM_DefineProperties()
2247 STATUS_CALL(v8impl::FunctionCallbackWrapper::NewFunction(env, p->method, &method)); in OH_JSVM_DefineProperties()
2248 v8::PropertyDescriptor descriptor(method, (p->attributes & JSVM_WRITABLE) != 0); in OH_JSVM_DefineProperties()
2249 descriptor.set_enumerable((p->attributes & JSVM_ENUMERABLE) != 0); in OH_JSVM_DefineProperties()
2250 descriptor.set_configurable((p->attributes & JSVM_CONFIGURABLE) != 0); in OH_JSVM_DefineProperties()
2252 auto defineMaybe = obj->DefineProperty(context, propertyName, descriptor); in OH_JSVM_DefineProperties()
2257 v8::Local<v8::Value> value = v8impl::V8LocalValueFromJsValue(p->value); in OH_JSVM_DefineProperties()
2260 if ((p->attributes & JSVM_ENUMERABLE) && (p->attributes & JSVM_WRITABLE) && in OH_JSVM_DefineProperties()
2261 (p->attributes & JSVM_CONFIGURABLE)) { in OH_JSVM_DefineProperties()
2263 auto defineMaybe = obj->CreateDataProperty(context, propertyName, value); in OH_JSVM_DefineProperties()
2266 v8::PropertyDescriptor descriptor(value, (p->attributes & JSVM_WRITABLE) != 0); in OH_JSVM_DefineProperties()
2267 descriptor.set_enumerable((p->attributes & JSVM_ENUMERABLE) != 0); in OH_JSVM_DefineProperties()
2268 descriptor.set_configurable((p->attributes & JSVM_CONFIGURABLE) != 0); in OH_JSVM_DefineProperties()
2270 auto defineMaybe = obj->DefineProperty(context, propertyName, descriptor); in OH_JSVM_DefineProperties()
2287 v8::Local<v8::Context> context = env->context(); in OH_JSVM_ObjectFreeze()
2292 v8::Maybe<bool> setFrozen = obj->SetIntegrityLevel(context, v8::IntegrityLevel::kFrozen); in OH_JSVM_ObjectFreeze()
2303 v8::Local<v8::Context> context = env->context(); in OH_JSVM_ObjectSeal()
2308 v8::Maybe<bool> setSealed = obj->SetIntegrityLevel(context, v8::IntegrityLevel::kSealed); in OH_JSVM_ObjectSeal()
2323 *result = val->IsArray(); in OH_JSVM_IsArray()
2335 *result = val->IsRegExp(); in OH_JSVM_IsRegExp()
2346 RETURN_STATUS_IF_FALSE(env, val->IsArray(), JSVM_ARRAY_EXPECTED); in OH_JSVM_GetArrayLength()
2349 *result = arr->Length(); in OH_JSVM_GetArrayLength()
2364 *result = a->StrictEquals(b); in OH_JSVM_StrictEquals()
2377 v8::Local<v8::Context> context = env->context(); in OH_JSVM_Equals()
2379 *result = a->Equals(context, b).FromJust(); in OH_JSVM_Equals()
2388 v8::Local<v8::Context> context = env->context(); in OH_JSVM_GetPrototype()
2393 v8::Local<v8::Value> val = obj->GetPrototype(); in OH_JSVM_GetPrototype()
2403 *result = v8impl::JsValueFromV8LocalValue(v8::Object::New(env->isolate)); in OH_JSVM_CreateObject()
2413 *result = v8impl::JsValueFromV8LocalValue(v8::Array::New(env->isolate)); in OH_JSVM_CreateArray()
2423 *result = v8impl::JsValueFromV8LocalValue(v8::Array::New(env->isolate, length)); in OH_JSVM_CreateArrayWithLength()
2456 *result = v8impl::JsValueFromV8LocalValue(v8::Number::New(env->isolate, value)); in OH_JSVM_CreateDouble()
2466 *result = v8impl::JsValueFromV8LocalValue(v8::Integer::New(env->isolate, value)); in OH_JSVM_CreateInt32()
2476 *result = v8impl::JsValueFromV8LocalValue(v8::Integer::NewFromUnsigned(env->isolate, value)); in OH_JSVM_CreateUint32()
2486 …*result = v8impl::JsValueFromV8LocalValue(v8::Number::New(env->isolate, static_cast<double>(value)… in OH_JSVM_CreateInt64()
2496 *result = v8impl::JsValueFromV8LocalValue(v8::BigInt::New(env->isolate, value)); in OH_JSVM_CreateBigintInt64()
2506 *result = v8impl::JsValueFromV8LocalValue(v8::BigInt::NewFromUnsigned(env->isolate, value)); in OH_JSVM_CreateBigintUint64()
2521 v8::Local<v8::Context> context = env->context(); in OH_JSVM_CreateBigintWords()
2538 v8::Isolate* isolate = env->isolate; in OH_JSVM_GetBoolean()
2554 v8::Isolate* isolate = env->isolate; in OH_JSVM_CreateSymbol()
2560 RETURN_STATUS_IF_FALSE(env, desc->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_CreateSymbol()
2577 *result = v8impl::JsValueFromV8LocalValue(v8::Symbol::For(env->isolate, descriptionString)); in OH_JSVM_SymbolFor()
2585 v8::Local<v8::Context> context = env->context(); in SetErrorCode()
2591 RETURN_STATUS_IF_FALSE(env, codeValue->IsString(), JSVM_STRING_EXPECTED); in SetErrorCode()
2599 v8::Maybe<bool> setMaybe = errObject->Set(context, codeKey, codeValue); in SetErrorCode()
2612 RETURN_STATUS_IF_FALSE(env, messageValue->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_CreateError()
2629 RETURN_STATUS_IF_FALSE(env, messageValue->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_CreateTypeError()
2646 RETURN_STATUS_IF_FALSE(env, messageValue->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_CreateRangeError()
2663 RETURN_STATUS_IF_FALSE(env, messageValue->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_CreateSyntaxError()
2683 if (v->IsNumber()) { in OH_JSVM_Typeof()
2685 } else if (v->IsBigInt()) { in OH_JSVM_Typeof()
2687 } else if (v->IsString()) { in OH_JSVM_Typeof()
2689 } else if (v->IsFunction()) { in OH_JSVM_Typeof()
2693 } else if (v->IsExternal()) { in OH_JSVM_Typeof()
2697 } else if (v->IsObject()) { in OH_JSVM_Typeof()
2699 } else if (v->IsBoolean()) { in OH_JSVM_Typeof()
2701 } else if (v->IsUndefined()) { in OH_JSVM_Typeof()
2703 } else if (v->IsSymbol()) { in OH_JSVM_Typeof()
2705 } else if (v->IsNull()) { in OH_JSVM_Typeof()
2720 *result = v8impl::JsValueFromV8LocalValue(v8::Undefined(env->isolate)); in OH_JSVM_GetUndefined()
2730 *result = v8impl::JsValueFromV8LocalValue(v8::Null(env->isolate)); in OH_JSVM_GetNull()
2737 JSVM_CallbackInfo cbinfo, // [in] Opaque callback-info handle in OH_JSVM_GetCbInfo()
2738 … size_t* argc, // [in-out] Specifies the size of the provided argv array in OH_JSVM_GetCbInfo()
2751 info->GetArgs(argv, *argc); in OH_JSVM_GetCbInfo()
2754 *argc = info->ArgsLength(); in OH_JSVM_GetCbInfo()
2757 *thisArg = info->This(); in OH_JSVM_GetCbInfo()
2760 *data = info->Data(); in OH_JSVM_GetCbInfo()
2774 *result = info->GetNewTarget(); in OH_JSVM_GetNewTarget()
2791 v8::Local<v8::Context> context = env->context(); in OH_JSVM_CallFunction()
2799 …v8func->Call(context, v8recv, argc, reinterpret_cast<v8::Local<v8::Value>*>(const_cast<JSVM_Value*… in OH_JSVM_CallFunction()
2815 *result = v8impl::JsValueFromV8LocalValue(env->context()->Global()); in OH_JSVM_GetGlobal()
2825 v8::Isolate* isolate = env->isolate; in OH_JSVM_Throw()
2827 isolate->ThrowException(v8impl::V8LocalValueFromJsValue(error)); in OH_JSVM_Throw()
2837 v8::Isolate* isolate = env->isolate; in OH_JSVM_ThrowError()
2844 isolate->ThrowException(errorObj); in OH_JSVM_ThrowError()
2854 v8::Isolate* isolate = env->isolate; in OH_JSVM_ThrowTypeError()
2861 isolate->ThrowException(errorObj); in OH_JSVM_ThrowTypeError()
2871 v8::Isolate* isolate = env->isolate; in OH_JSVM_ThrowRangeError()
2878 isolate->ThrowException(errorObj); in OH_JSVM_ThrowRangeError()
2888 v8::Isolate* isolate = env->isolate; in OH_JSVM_ThrowSyntaxError()
2895 isolate->ThrowException(errorObj); in OH_JSVM_ThrowSyntaxError()
2910 *result = val->IsNativeError(); in OH_JSVM_IsError()
2924 RETURN_STATUS_IF_FALSE(env, val->IsNumber(), JSVM_NUMBER_EXPECTED); in OH_JSVM_GetValueDouble()
2926 *result = val.As<v8::Number>()->Value(); in OH_JSVM_GetValueDouble()
2941 if (val->IsInt32()) { in OH_JSVM_GetValueInt32()
2942 *result = val.As<v8::Int32>()->Value(); in OH_JSVM_GetValueInt32()
2944 RETURN_STATUS_IF_FALSE(env, val->IsNumber(), JSVM_NUMBER_EXPECTED); in OH_JSVM_GetValueInt32()
2948 *result = val->Int32Value(context).FromJust(); in OH_JSVM_GetValueInt32()
2964 if (val->IsUint32()) { in OH_JSVM_GetValueUint32()
2965 *result = val.As<v8::Uint32>()->Value(); in OH_JSVM_GetValueUint32()
2967 RETURN_STATUS_IF_FALSE(env, val->IsNumber(), JSVM_NUMBER_EXPECTED); in OH_JSVM_GetValueUint32()
2971 *result = val->Uint32Value(context).FromJust(); in OH_JSVM_GetValueUint32()
2988 if (val->IsInt32()) { in OH_JSVM_GetValueInt64()
2989 *result = val.As<v8::Int32>()->Value(); in OH_JSVM_GetValueInt64()
2993 RETURN_STATUS_IF_FALSE(env, val->IsNumber(), JSVM_NUMBER_EXPECTED); in OH_JSVM_GetValueInt64()
2995 // v8::Value::IntegerValue() converts NaN, +Inf, and -Inf to INT64_MIN, in OH_JSVM_GetValueInt64()
2997 // Special-case all non-finite values to match that behavior. in OH_JSVM_GetValueInt64()
2998 double doubleValue = val.As<v8::Number>()->Value(); in OH_JSVM_GetValueInt64()
3002 *result = val->IntegerValue(context).FromJust(); in OH_JSVM_GetValueInt64()
3019 RETURN_STATUS_IF_FALSE(env, val->IsBigInt(), JSVM_BIGINT_EXPECTED); in OH_JSVM_GetValueBigintInt64()
3021 *result = val.As<v8::BigInt>()->Int64Value(lossless); in OH_JSVM_GetValueBigintInt64()
3035 RETURN_STATUS_IF_FALSE(env, val->IsBigInt(), JSVM_BIGINT_EXPECTED); in OH_JSVM_GetValueBigintUint64()
3037 *result = val.As<v8::BigInt>()->Uint64Value(lossless); in OH_JSVM_GetValueBigintUint64()
3054 RETURN_STATUS_IF_FALSE(env, val->IsBigInt(), JSVM_BIGINT_EXPECTED); in OH_JSVM_GetValueBigintWords()
3061 wordCountInt = big->WordCount(); in OH_JSVM_GetValueBigintWords()
3065 big->ToWordsArray(signBit, &wordCountInt, words); in OH_JSVM_GetValueBigintWords()
3082 RETURN_STATUS_IF_FALSE(env, val->IsBoolean(), JSVM_BOOLEAN_EXPECTED); in OH_JSVM_GetValueBool()
3084 *result = val.As<v8::Boolean>()->Value(); in OH_JSVM_GetValueBool()
3089 // Copies a JavaScript string into a LATIN-1 string buffer. The result is the
3103 RETURN_STATUS_IF_FALSE(env, val->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_GetValueStringLatin1()
3107 *result = val.As<v8::String>()->Length(); in OH_JSVM_GetValueStringLatin1()
3109 …int copied = val.As<v8::String>()->WriteOneByte(env->isolate, reinterpret_cast<uint8_t*>(buf), 0, … in OH_JSVM_GetValueStringLatin1()
3123 // Copies a JavaScript string into a UTF-8 string buffer. The result is the
3137 RETURN_STATUS_IF_FALSE(env, val->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_GetValueStringUtf8()
3141 *result = val.As<v8::String>()->Utf8Length(env->isolate); in OH_JSVM_GetValueStringUtf8()
3144 val.As<v8::String>()->WriteUtf8(env->isolate, buf, bufsize - 1, nullptr, in OH_JSVM_GetValueStringUtf8()
3158 // Copies a JavaScript string into a UTF-16 string buffer. The result is the
3159 // number of 2-byte code units (excluding the null terminator) copied into buf.
3163 // If buf is NULL, this method returns the length of the string (in 2-byte
3172 RETURN_STATUS_IF_FALSE(env, val->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_GetValueStringUtf16()
3176 // V8 assumes UTF-16 length is the same as the number of characters. in OH_JSVM_GetValueStringUtf16()
3177 *result = val.As<v8::String>()->Length(); in OH_JSVM_GetValueStringUtf16()
3179 …int copied = val.As<v8::String>()->Write(env->isolate, reinterpret_cast<uint16_t*>(buf), 0, bufsiz… in OH_JSVM_GetValueStringUtf16()
3199 v8::Isolate* isolate = env->isolate; in OH_JSVM_CoerceToBool()
3200 v8::Local<v8::Boolean> b = v8impl::V8LocalValueFromJsValue(value)->ToBoolean(isolate); in OH_JSVM_CoerceToBool()
3212 … v8::Local<v8::Context> context = env->context(); \
3257 v8::Isolate* isolate = env->isolate; in OH_JSVM_CreateExternal()
3271 v8::Local<v8::Context> context = env->context(); in OH_JSVM_TypeTagObject()
3276 auto key = JSVM_PRIVATE_KEY(env->isolate, typeTag); in OH_JSVM_TypeTagObject()
3277 auto maybeHas = obj->HasPrivate(context, key); in OH_JSVM_TypeTagObject()
3284 auto maybeSet = obj->SetPrivate(context, key, tag.ToLocalChecked()); in OH_JSVM_TypeTagObject()
3294 v8::Local<v8::Context> context = env->context(); in OH_JSVM_CheckObjectTypeTag()
3300 auto maybeValue = obj->GetPrivate(context, JSVM_PRIVATE_KEY(env->isolate, typeTag)); in OH_JSVM_CheckObjectTypeTag()
3308 if (val->IsBigInt()) { in OH_JSVM_CheckObjectTypeTag()
3312 val.As<v8::BigInt>()->ToWordsArray(&sign, &size, reinterpret_cast<uint64_t*>(&tag)); in OH_JSVM_CheckObjectTypeTag()
3315 *result = (tag.lower == typeTag->lower && tag.upper == typeTag->upper); in OH_JSVM_CheckObjectTypeTag()
3317 *result = (tag.lower == typeTag->lower && 0 == typeTag->upper); in OH_JSVM_CheckObjectTypeTag()
3319 *result = (0 == typeTag->lower && 0 == typeTag->upper); in OH_JSVM_CheckObjectTypeTag()
3334 RETURN_STATUS_IF_FALSE(env, val->IsExternal(), JSVM_INVALID_ARG); in OH_JSVM_GetValueExternal()
3337 *result = externalValue->Value(); in OH_JSVM_GetValueExternal()
3385 uint32_t count = reference->Ref(); in OH_JSVM_ReferenceRef()
3407 if (reference->RefCount() == 0) { in OH_JSVM_ReferenceUnref()
3411 uint32_t count = reference->Unref(); in OH_JSVM_ReferenceUnref()
3432 *result = v8impl::JsValueFromV8LocalValue(reference->Get()); in OH_JSVM_GetReferenceValue()
3444 *result = v8impl::JsHandleScopeFromV8HandleScope(new v8impl::HandleScopeWrapper(env->isolate)); in OH_JSVM_OpenHandleScope()
3445 env->openHandleScopes++; in OH_JSVM_OpenHandleScope()
3455 if (env->openHandleScopes == 0) { in OH_JSVM_CloseHandleScope()
3459 env->ReleaseJsvmData(); in OH_JSVM_CloseHandleScope()
3460 env->openHandleScopes--; in OH_JSVM_CloseHandleScope()
3473 …apableHandleScopeFromV8EscapableHandleScope(new v8impl::EscapableHandleScopeWrapper(env->isolate)); in OH_JSVM_OpenEscapableHandleScope()
3474 env->openHandleScopes++; in OH_JSVM_OpenEscapableHandleScope()
3484 if (env->openHandleScopes == 0) { in OH_JSVM_CloseEscapableHandleScope()
3489 env->openHandleScopes--; in OH_JSVM_CloseEscapableHandleScope()
3503 if (!s->IsEscapeCalled()) { in OH_JSVM_EscapeHandle()
3504 … *result = v8impl::JsValueFromV8LocalValue(s->Escape(v8impl::V8LocalValueFromJsValue(escapee))); in OH_JSVM_EscapeHandle()
3523 v8::Local<v8::Context> context = env->context(); in OH_JSVM_NewInstance()
3529 …ctor->NewInstance(context, argc, reinterpret_cast<v8::Local<v8::Value>*>(const_cast<JSVM_Value*>(a… in OH_JSVM_NewInstance()
3545 v8::Local<v8::Context> context = env->context(); in OH_JSVM_Instanceof()
3549 if (!ctor->IsFunction()) { in OH_JSVM_Instanceof()
3558 auto maybeResult = val->InstanceOf(context, ctor); in OH_JSVM_Instanceof()
3572 *result = !env->lastException.IsEmpty(); in OH_JSVM_IsExceptionPending()
3583 if (env->lastException.IsEmpty()) { in OH_JSVM_GetAndClearLastException()
3586 …*result = v8impl::JsValueFromV8LocalValue(v8::Local<v8::Value>::New(env->isolate, env->lastExcepti… in OH_JSVM_GetAndClearLastException()
3587 env->lastException.Reset(); in OH_JSVM_GetAndClearLastException()
3600 *result = val->IsArrayBuffer(); in OH_JSVM_IsArraybuffer()
3610 v8::Isolate* isolate = env->isolate; in OH_JSVM_CreateArraybuffer()
3616 *data = buffer->Data(); in OH_JSVM_CreateArraybuffer()
3631 *data = (initialized == JSVM_ZERO_INITIALIZED) ? allocator->Allocate(byteLength) in OH_JSVM_AllocateArrayBufferBackingStoreData()
3632 : allocator->AllocateUninitialized(byteLength); in OH_JSVM_AllocateArrayBufferBackingStoreData()
3642 allocator->Free(data, JSVM_AUTO_LENGTH); in OH_JSVM_FreeArrayBufferBackingStoreData()
3662 …v8::Local<v8::ArrayBuffer> arrayBuffer = v8::ArrayBuffer::New(env->isolate, std::move(backingStore… in OH_JSVM_CreateArrayBufferFromBackingStoreData()
3673 RETURN_STATUS_IF_FALSE(env, value->IsArrayBuffer(), JSVM_INVALID_ARG); in OH_JSVM_GetArraybufferInfo()
3678 *data = ab->Data(); in OH_JSVM_GetArraybufferInfo()
3682 *byteLength = ab->ByteLength(); in OH_JSVM_GetArraybufferInfo()
3695 *result = val->IsTypedArray(); in OH_JSVM_IsTypedarray()
3712 RETURN_STATUS_IF_FALSE(env, value->IsArrayBuffer(), JSVM_INVALID_ARG); in OH_JSVM_CreateTypedarray()
3771 RETURN_STATUS_IF_FALSE(env, value->IsTypedArray(), JSVM_INVALID_ARG); in OH_JSVM_GetTypedarrayInfo()
3776 if (value->IsInt8Array()) { in OH_JSVM_GetTypedarrayInfo()
3778 } else if (value->IsUint8Array()) { in OH_JSVM_GetTypedarrayInfo()
3780 } else if (value->IsUint8ClampedArray()) { in OH_JSVM_GetTypedarrayInfo()
3782 } else if (value->IsInt16Array()) { in OH_JSVM_GetTypedarrayInfo()
3784 } else if (value->IsUint16Array()) { in OH_JSVM_GetTypedarrayInfo()
3786 } else if (value->IsInt32Array()) { in OH_JSVM_GetTypedarrayInfo()
3788 } else if (value->IsUint32Array()) { in OH_JSVM_GetTypedarrayInfo()
3790 } else if (value->IsFloat32Array()) { in OH_JSVM_GetTypedarrayInfo()
3792 } else if (value->IsFloat64Array()) { in OH_JSVM_GetTypedarrayInfo()
3794 } else if (value->IsBigInt64Array()) { in OH_JSVM_GetTypedarrayInfo()
3796 } else if (value->IsBigUint64Array()) { in OH_JSVM_GetTypedarrayInfo()
3802 *length = array->Length(); in OH_JSVM_GetTypedarrayInfo()
3809 buffer = array->Buffer(); in OH_JSVM_GetTypedarrayInfo()
3813 *data = static_cast<uint8_t*>(buffer->Data()) + array->ByteOffset(); in OH_JSVM_GetTypedarrayInfo()
3821 *byteOffset = array->ByteOffset(); in OH_JSVM_GetTypedarrayInfo()
3838 RETURN_STATUS_IF_FALSE(env, value->IsArrayBuffer(), JSVM_INVALID_ARG); in OH_JSVM_CreateDataview()
3842 if (byteLength + byteOffset > buffer->ByteLength()) { in OH_JSVM_CreateDataview()
3861 *result = val->IsDataView(); in OH_JSVM_IsDataview()
3877 RETURN_STATUS_IF_FALSE(env, value->IsDataView(), JSVM_INVALID_ARG); in OH_JSVM_GetDataviewInfo()
3882 *byteLength = array->ByteLength(); in OH_JSVM_GetDataviewInfo()
3889 buffer = array->Buffer(); in OH_JSVM_GetDataviewInfo()
3893 *data = static_cast<uint8_t*>(buffer->Data()) + array->ByteOffset(); in OH_JSVM_GetDataviewInfo()
3901 *byteOffset = array->ByteOffset(); in OH_JSVM_GetDataviewInfo()
3921 auto maybe = v8::Promise::Resolver::New(env->context()); in OH_JSVM_CreatePromise()
3926 v8Deferred->Reset(env->isolate, resolver); in OH_JSVM_CreatePromise()
3929 *promise = v8impl::JsValueFromV8LocalValue(resolver->GetPromise()); in OH_JSVM_CreatePromise()
3961 *isPromise = v8impl::V8LocalValueFromJsValue(value)->IsPromise(); in OH_JSVM_IsPromise()
3971 v8::MaybeLocal<v8::Value> maybeDate = v8::Date::New(env->context(), time); in OH_JSVM_CreateDate()
3985 *isDate = v8impl::V8LocalValueFromJsValue(value)->IsDate(); in OH_JSVM_IsDate()
3997 RETURN_STATUS_IF_FALSE(env, val->IsDate(), JSVM_DATE_EXPECTED); in OH_JSVM_GetDateValue()
4000 *result = date->ValueOf(); in OH_JSVM_GetDateValue()
4019 RETURN_STATUS_IF_FALSE(env, v8Value->IsObject(), JSVM_INVALID_ARG); in OH_JSVM_AddFinalizer()
4035 *adjustedValue = env->isolate->AdjustAmountOfExternalAllocatedMemory(changeInBytes); in OH_JSVM_AdjustExternalMemory()
4044 v8impl::FinalizerTracker* oldData = static_cast<v8impl::FinalizerTracker*>(env->instanceData); in OH_JSVM_SetInstanceData()
4051 env->instanceData = v8impl::FinalizerTracker::New(env, finalizeCb, data, finalizeHint); in OH_JSVM_SetInstanceData()
4061 v8impl::FinalizerTracker* idata = static_cast<v8impl::FinalizerTracker*>(env->instanceData); in OH_JSVM_GetInstanceData()
4063 *data = (idata == nullptr ? nullptr : idata->GetData()); in OH_JSVM_GetInstanceData()
4074 …RETURN_STATUS_IF_FALSE(env, value->IsArrayBuffer() || value->IsSharedArrayBuffer(), JSVM_ARRAYBUFF… in OH_JSVM_DetachArraybuffer()
4077 RETURN_STATUS_IF_FALSE(env, it->IsDetachable(), JSVM_DETACHABLE_ARRAYBUFFER_EXPECTED); in OH_JSVM_DetachArraybuffer()
4079 it->Detach(); in OH_JSVM_DetachArraybuffer()
4092 *result = value->IsArrayBuffer() && value.As<v8::ArrayBuffer>()->WasDetached(); in OH_JSVM_IsDetachedArraybuffer()
4110 CHECK_ARG(env, constructor->callback); in OH_JSVM_DefineClassWithPropertyHandler()
4117 v8::Isolate* isolate = env->isolate; in OH_JSVM_DefineClassWithPropertyHandler()
4124 tpl->SetClassName(nameString); in OH_JSVM_DefineClassWithPropertyHandler()
4130 if ((p->attributes & JSVM_STATIC) != 0) { // attributes in OH_JSVM_DefineClassWithPropertyHandler()
4144 if (p->getter != nullptr || p->setter != nullptr) { in OH_JSVM_DefineClassWithPropertyHandler()
4147 if (p->getter != nullptr) { in OH_JSVM_DefineClassWithPropertyHandler()
4148 … STATUS_CALL(v8impl::FunctionCallbackWrapper::NewTemplate(env, p->getter, &getterTpl)); in OH_JSVM_DefineClassWithPropertyHandler()
4150 if (p->setter != nullptr) { in OH_JSVM_DefineClassWithPropertyHandler()
4151 … STATUS_CALL(v8impl::FunctionCallbackWrapper::NewTemplate(env, p->setter, &setterTpl)); in OH_JSVM_DefineClassWithPropertyHandler()
4154 … tpl->PrototypeTemplate()->SetAccessorProperty(propertyName, getterTpl, setterTpl, attributes, in OH_JSVM_DefineClassWithPropertyHandler()
4156 } else if (p->method != nullptr) { in OH_JSVM_DefineClassWithPropertyHandler()
4158 if (p->attributes & JSVM_NO_RECEIVER_CHECK) { in OH_JSVM_DefineClassWithPropertyHandler()
4159 STATUS_CALL(v8impl::FunctionCallbackWrapper::NewTemplate(env, p->method, &t)); in OH_JSVM_DefineClassWithPropertyHandler()
4162 …v8impl::FunctionCallbackWrapper::NewTemplate(env, p->method, &t, v8::Signature::New(isolate, tpl))… in OH_JSVM_DefineClassWithPropertyHandler()
4165 tpl->PrototypeTemplate()->Set(propertyName, t, attributes); in OH_JSVM_DefineClassWithPropertyHandler()
4167 v8::Local<v8::Value> value = v8impl::V8LocalValueFromJsValue(p->value); in OH_JSVM_DefineClassWithPropertyHandler()
4168 tpl->PrototypeTemplate()->Set(propertyName, value, attributes); in OH_JSVM_DefineClassWithPropertyHandler()
4181 if (propertyHandlerCfg->genericNamedPropertyGetterCallback) { in OH_JSVM_DefineClassWithPropertyHandler()
4184 if (propertyHandlerCfg->genericNamedPropertySetterCallback) { in OH_JSVM_DefineClassWithPropertyHandler()
4187 if (propertyHandlerCfg->genericNamedPropertyDeleterCallback) { in OH_JSVM_DefineClassWithPropertyHandler()
4190 if (propertyHandlerCfg->genericNamedPropertyEnumeratorCallback) { in OH_JSVM_DefineClassWithPropertyHandler()
4194 tpl->InstanceTemplate()->SetHandler(namedPropertyHandler); in OH_JSVM_DefineClassWithPropertyHandler()
4198 if (propertyHandlerCfg->genericIndexedPropertyGetterCallback) { in OH_JSVM_DefineClassWithPropertyHandler()
4201 if (propertyHandlerCfg->genericIndexedPropertySetterCallback) { in OH_JSVM_DefineClassWithPropertyHandler()
4204 if (propertyHandlerCfg->genericIndexedPropertyDeleterCallback) { in OH_JSVM_DefineClassWithPropertyHandler()
4207 if (propertyHandlerCfg->genericIndexedPropertyEnumeratorCallback) { in OH_JSVM_DefineClassWithPropertyHandler()
4211 tpl->InstanceTemplate()->SetHandler(indexPropertyHandler); in OH_JSVM_DefineClassWithPropertyHandler()
4214 if (callAsFunctionCallback && callAsFunctionCallback->callback) { in OH_JSVM_DefineClassWithPropertyHandler()
4216 …tpl->InstanceTemplate()->SetCallAsFunctionHandler(v8impl::FunctionCallbackWrapper::Invoke, funcCbd… in OH_JSVM_DefineClassWithPropertyHandler()
4219 v8::Local<v8::Context> context = env->context(); in OH_JSVM_DefineClassWithPropertyHandler()
4220 …*result = v8impl::JsValueFromV8LocalValue(scope.Escape(tpl->GetFunction(context).ToLocalChecked())… in OH_JSVM_DefineClassWithPropertyHandler()
4231 if ((p->attributes & JSVM_STATIC) != 0) { in OH_JSVM_DefineClassWithPropertyHandler()
4247 *isLocked = v8::Locker::IsLocked(env->isolate); in OH_JSVM_IsLocked()
4256 bool isLocked = v8::Locker::IsLocked(env->isolate); in OH_JSVM_AcquireLock()
4258 env->locker = new v8::Locker(env->isolate); in OH_JSVM_AcquireLock()
4268 bool isLocked = v8::Locker::IsLocked(env->isolate); in OH_JSVM_ReleaseLock()
4269 if (isLocked && env->locker != nullptr) { in OH_JSVM_ReleaseLock()
4270 delete env->locker; in OH_JSVM_ReleaseLock()
4271 env->locker = nullptr; in OH_JSVM_ReleaseLock()
4285 *isCallable = val->IsFunction(); in OH_JSVM_IsCallable()
4298 *isUndefined = val->IsUndefined(); in OH_JSVM_IsUndefined()
4312 *isNull = val->IsNull(); in OH_JSVM_IsNull()
4326 *isNullOrUndefined = val->IsNullOrUndefined(); in OH_JSVM_IsNullOrUndefined()
4340 *isBoolean = val->IsBoolean(); in OH_JSVM_IsBoolean()
4354 *isNumber = val->IsNumber(); in OH_JSVM_IsNumber()
4368 *isString = val->IsString(); in OH_JSVM_IsString()
4382 *isSymbol = val->IsSymbol(); in OH_JSVM_IsSymbol()
4396 *isFunction = val->IsFunction(); in OH_JSVM_IsFunction()
4410 *isObject = val->IsObject(); in OH_JSVM_IsObject()
4424 *isBigInt = val->IsBigInt(); in OH_JSVM_IsBigInt()
4436 if (!val->IsObject()) { in OH_JSVM_IsConstructor()
4441 *isConstructor = obj->IsConstructor(); in OH_JSVM_IsConstructor()
4453 RETURN_STATUS_IF_FALSE(env, pattern->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_CreateRegExp()
4454 v8::Local<v8::Context> context = env->context(); in OH_JSVM_CreateRegExp()
4468 *result = v8impl::JsValueFromV8LocalValue(v8::Map::New(env->isolate)); in OH_JSVM_CreateMap()
4481 *isMap = val->IsMap(); in OH_JSVM_IsMap()
4490 RETURN_STATUS_IF_FALSE(env, jsvmData && !jsvmData->isGlobal, JSVM_INVALID_ARG); in OH_JSVM_RetainScript()
4492 …jsvmData->taggedPointer = v8::Global<v8::Script>(env->isolate, jsvmData->ToV8Local<v8::Script>(env in OH_JSVM_RetainScript()
4494 jsvmData->isGlobal = true; in OH_JSVM_RetainScript()
4503 RETURN_STATUS_IF_FALSE(env, jsvmData && jsvmData->isGlobal, JSVM_INVALID_ARG); in OH_JSVM_ReleaseScript()
4505 std::get<v8::Global<v8::Script>>(jsvmData->taggedPointer).Reset(); in OH_JSVM_ReleaseScript()
4517 if (!env->GetInspectorAgent()->Start(path, pid)) { in OH_JSVM_OpenInspectorWithName()
4529 *result = v8impl::JsValueFromV8LocalValue(v8::Set::New(env->isolate)); in OH_JSVM_CreateSet()
4541 *isSet = val->IsSet(); in OH_JSVM_IsSet()
4551 v8::Local<v8::Context> context = env->context(); in OH_JSVM_ObjectGetPrototypeOf()
4556 v8::Local<v8::Value> val = obj->GetPrototypeV2(); in OH_JSVM_ObjectGetPrototypeOf()
4566 v8::Local<v8::Context> context = env->context(); in OH_JSVM_ObjectSetPrototypeOf()
4572 RETURN_STATUS_IF_FALSE(env, type->IsObject(), JSVM_INVALID_ARG); in OH_JSVM_ObjectSetPrototypeOf()
4573 v8::Maybe<bool> setMaybe = obj->SetPrototypeV2(context, type); in OH_JSVM_ObjectSetPrototypeOf()
4592 … maybeModule = v8::WasmModuleObject::Compile(env->isolate, { wasmBytecode, wasmBytecodeLength }); in OH_JSVM_CompileWasmModule()
4596 …maybeModule = v8::WasmModuleObject::DeserializeOrCompile(env->isolate, { wasmBytecode, wasmBytecod… in OH_JSVM_CompileWasmModule()
4617 RETURN_STATUS_IF_FALSE(env, val->IsWasmModuleObject(), JSVM_INVALID_ARG); in OH_JSVM_CompileWasmFunction()
4630 bool compileSuccess = v8WasmModule->CompileFunction(env->isolate, functionIndex, tier); in OH_JSVM_CompileWasmFunction()
4646 *result = val->IsWasmModuleObject(); in OH_JSVM_IsWasmModuleObject()
4659 RETURN_STATUS_IF_FALSE(env, val->IsWasmModuleObject(), JSVM_INVALID_ARG); in OH_JSVM_CreateWasmCache()
4662 v8::CompiledWasmModule compiledWasmModule = v8WasmModule->GetCompiledModule(); in OH_JSVM_CreateWasmCache()
4700 *result = v->IsBooleanObject(); in OH_JSVM_IsBooleanObject()
4712 *result = v->IsBigIntObject(); in OH_JSVM_IsBigIntObject()
4724 *result = v->IsStringObject(); in OH_JSVM_IsStringObject()
4736 *result = v->IsNumberObject(); in OH_JSVM_IsNumberObject()
4748 *result = v->IsSymbolObject(); in OH_JSVM_IsSymbolObject()
4758 v8::Local<v8::Symbol> symbolToStringTag = v8::Symbol::GetToStringTag(env->isolate); in OH_JSVM_GetSymbolToStringTag()
4769 v8::Local<v8::Symbol> symbolIterator = v8::Symbol::GetIterator(env->isolate); in OH_JSVM_GetSymbolIterator()
4780 v8::Local<v8::Symbol> symbolAsyncIterator = v8::Symbol::GetAsyncIterator(env->isolate); in OH_JSVM_GetSymbolAsyncIterator()
4791 v8::Local<v8::Symbol> symbolHasInstance = v8::Symbol::GetHasInstance(env->isolate); in OH_JSVM_GetSymbolHasInstance()
4802 v8::Local<v8::Symbol> symbolUnscopables = v8::Symbol::GetUnscopables(env->isolate); in OH_JSVM_GetSymbolUnscopables()
4813 … v8::Local<v8::Symbol> symbolIsConcatSpreadable = v8::Symbol::GetIsConcatSpreadable(env->isolate); in OH_JSVM_GetSymbolIsConcatSpreadable()
4824 v8::Local<v8::Symbol> symbolMatch = v8::Symbol::GetMatch(env->isolate); in OH_JSVM_GetSymbolMatch()
4835 v8::Local<v8::Symbol> symbolReplace = v8::Symbol::GetReplace(env->isolate); in OH_JSVM_GetSymbolReplace()
4846 v8::Local<v8::Symbol> symbolSearch = v8::Symbol::GetSearch(env->isolate); in OH_JSVM_GetSymbolSearch()
4857 v8::Local<v8::Symbol> symbolSplit = v8::Symbol::GetSplit(env->isolate); in OH_JSVM_GetSymbolSplit()
4868 v8::Local<v8::Symbol> symbolToPrimitive = v8::Symbol::GetToPrimitive(env->isolate); in OH_JSVM_GetSymbolToPrimitive()
4884 isolate->SetMicrotasksPolicy(converter[policy]); in OH_JSVM_SetMicrotaskPolicy()
4899 RETURN_STATUS_IF_FALSE(env, localTarget->IsObject(), JSVM_OBJECT_EXPECTED); in OH_JSVM_CreateProxy()
4901 RETURN_STATUS_IF_FALSE(env, localHandler->IsObject(), JSVM_OBJECT_EXPECTED); in OH_JSVM_CreateProxy()
4903 v8::Local<v8::Context> context = env->context(); in OH_JSVM_CreateProxy()
4923 *isProxy = val->IsProxy(); in OH_JSVM_IsProxy()
4936 RETURN_STATUS_IF_FALSE(env, val->IsProxy(), JSVM_INVALID_TYPE); in OH_JSVM_ProxyGetTarget()
4938 *result = v8impl::JsValueFromV8LocalValue(val.As<v8::Proxy>()->GetTarget()); in OH_JSVM_ProxyGetTarget()
4971 RETURN_STATUS_IF_FALSE(env, !reference->IsValue(), JSVM_INVALID_ARG); in OH_JSVM_GetReferenceData()
4972 *result = v8impl::JsDataFromV8LocalData(reference->GetData()); in OH_JSVM_GetReferenceData()
4982 v8::Isolate* isolate = env->isolate; in OH_JSVM_CreatePrivate()
4988 RETURN_STATUS_IF_FALSE(env, v8Name->IsString(), JSVM_STRING_EXPECTED); in OH_JSVM_CreatePrivate()
5003 auto context = env->context(); in OH_JSVM_SetPrivate()
5005 RETURN_STATUS_IF_FALSE(env, obj->IsObject(), JSVM_OBJECT_EXPECTED); in OH_JSVM_SetPrivate()
5007 RETURN_STATUS_IF_FALSE(env, privateKey->IsPrivate(), JSVM_INVALID_ARG); in OH_JSVM_SetPrivate()
5010 auto set_maybe = obj.As<v8::Object>()->SetPrivate(context, privateKey.As<v8::Private>(), val); in OH_JSVM_SetPrivate()
5023 auto context = env->context(); in OH_JSVM_GetPrivate()
5025 RETURN_STATUS_IF_FALSE(env, obj->IsObject(), JSVM_OBJECT_EXPECTED); in OH_JSVM_GetPrivate()
5027 RETURN_STATUS_IF_FALSE(env, privateKey->IsPrivate(), JSVM_INVALID_ARG); in OH_JSVM_GetPrivate()
5029 auto getMaybe = obj.As<v8::Object>()->GetPrivate(context, privateKey.As<v8::Private>()); in OH_JSVM_GetPrivate()
5043 auto context = env->context(); in OH_JSVM_DeletePrivate()
5045 RETURN_STATUS_IF_FALSE(env, obj->IsObject(), JSVM_OBJECT_EXPECTED); in OH_JSVM_DeletePrivate()
5047 RETURN_STATUS_IF_FALSE(env, privateKey->IsPrivate(), JSVM_INVALID_ARG); in OH_JSVM_DeletePrivate()
5049 auto deleteMaybe = obj.As<v8::Object>()->DeletePrivate(context, privateKey.As<v8::Private>()); in OH_JSVM_DeletePrivate()
5160 …gcHandlerWrapper->handler(reinterpret_cast<JSVM_VM>(isolate), gcType, gcFlags, gcHandlerWrapper->u… in OnBeforeGC()
5170 …gcHandlerWrapper->handler(reinterpret_cast<JSVM_VM>(isolate), gcType, gcFlags, gcHandlerWrapper->u… in OnAfterGC()
5183 auto* pool = v8impl::GetOrCreateIsolateHandlerPool(isolate); in OH_JSVM_AddHandlerForGC() local
5185 …triggerTime == JSVM_CB_TRIGGER_BEFORE_GC ? pool->handlerWrappersBeforeGC : pool->handlerWrappersAf… in OH_JSVM_AddHandlerForGC()
5187 return callbackData->handler == handler && callbackData->userData == data; in OH_JSVM_AddHandlerForGC()
5196 isolate->AddGCPrologueCallback(OnBeforeGC, callbackData, GetV8GCType(gcType)); in OH_JSVM_AddHandlerForGC()
5198 isolate->AddGCEpilogueCallback(OnAfterGC, callbackData, GetV8GCType(gcType)); in OH_JSVM_AddHandlerForGC()
5212 auto* pool = v8impl::GetOrCreateIsolateHandlerPool(isolate); in OH_JSVM_RemoveHandlerForGC() local
5213 if (pool == nullptr) { in OH_JSVM_RemoveHandlerForGC()
5217 …triggerTime == JSVM_CB_TRIGGER_BEFORE_GC ? pool->handlerWrappersBeforeGC : pool->handlerWrappersAf… in OH_JSVM_RemoveHandlerForGC()
5220 return callbackData->handler == handler && callbackData->userData == userData; in OH_JSVM_RemoveHandlerForGC()
5227 isolate->RemoveGCPrologueCallback(OnBeforeGC, (*it)); in OH_JSVM_RemoveHandlerForGC()
5229 isolate->RemoveGCEpilogueCallback(OnAfterGC, (*it)); in OH_JSVM_RemoveHandlerForGC()
5238 auto* pool = v8impl::GetIsolateHandlerPool(isolate); in OnOOMError() local
5239 if (pool == nullptr) { in OnOOMError()
5242 auto* handler = pool->handlerForOOMError; in OnOOMError()
5255 auto* pool = v8impl::GetOrCreateIsolateHandlerPool(isolate); in OH_JSVM_SetHandlerForOOMError() local
5256 pool->handlerForOOMError = handler; in OH_JSVM_SetHandlerForOOMError()
5257 isolate->SetOOMErrorHandler(OnOOMError); in OH_JSVM_SetHandlerForOOMError()
5264 auto* pool = v8impl::GetIsolateHandlerPool(isolate); in OnFatalError() local
5265 if (pool == nullptr) { in OnFatalError()
5268 auto* handler = pool->handlerForFatalError; in OnFatalError()
5281 auto* pool = v8impl::GetOrCreateIsolateHandlerPool(isolate); in OH_JSVM_SetHandlerForFatalError() local
5282 pool->handlerForFatalError = handler; in OH_JSVM_SetHandlerForFatalError()
5283 isolate->SetFatalErrorHandler(OnFatalError); in OH_JSVM_SetHandlerForFatalError()
5290 auto* pool = v8impl::GetIsolateHandlerPool(isolate); in OnPromiseReject() local
5291 if (pool == nullptr) { in OnPromiseReject()
5294 auto* handler = pool->handlerForPromiseReject; in OnPromiseReject()
5298 auto context = isolate->GetCurrentContext(); in OnPromiseReject()
5303 (void)rejectInfo->Set(context, strPromise, rejectMessage.GetPromise()); in OnPromiseReject()
5305 (void)rejectInfo->Set(context, strValue, rejectMessage.GetValue()); in OnPromiseReject()
5338 auto* pool = v8impl::GetOrCreateIsolateHandlerPool(isolate); in OH_JSVM_SetHandlerForPromiseReject() local
5339 pool->handlerForPromiseReject = handler; in OH_JSVM_SetHandlerForPromiseReject()
5340 isolate->SetPromiseRejectCallback(OnPromiseReject); in OH_JSVM_SetHandlerForPromiseReject()
5368 trace_config->AddIncludedCategory(v8impl::INTERNAL_TRACE_CATEGORIES[categories[i]]); in OH_JSVM_TraceStart()
5372 … TracingController* controller = static_cast<TracingController*>(platform->GetTracingController()); in OH_JSVM_TraceStart()
5386 max_chunks = (eventsCount + chunk_size - 1) / chunk_size; in OH_JSVM_TraceStart()
5392 controller->Initialize(ring_buffer); in OH_JSVM_TraceStart()
5393 controller->StartTracing(trace_config); in OH_JSVM_TraceStart()
5405 auto controller = static_cast<TracingController*>(platform->GetTracingController()); in OH_JSVM_TraceStop()
5407 controller->StopTracing(); in OH_JSVM_TraceStop()
5410 controller->Initialize(nullptr); in OH_JSVM_TraceStop()
5412 std::string output = v8impl::g_trace_stream.get()->rdbuf()->str(); in OH_JSVM_TraceStop()
5434 if (propertyHandlerCfg->genericNamedPropertyGetterCallback) { in ProcessPropertyHandler()
5437 if (propertyHandlerCfg->genericNamedPropertySetterCallback) { in ProcessPropertyHandler()
5440 if (propertyHandlerCfg->genericNamedPropertyDeleterCallback) { in ProcessPropertyHandler()
5443 if (propertyHandlerCfg->genericNamedPropertyEnumeratorCallback) { in ProcessPropertyHandler()
5447 tpl->InstanceTemplate()->SetHandler(namedPropertyHandler); in ProcessPropertyHandler()
5451 if (propertyHandlerCfg->genericIndexedPropertyGetterCallback) { in ProcessPropertyHandler()
5454 if (propertyHandlerCfg->genericIndexedPropertySetterCallback) { in ProcessPropertyHandler()
5457 if (propertyHandlerCfg->genericIndexedPropertyDeleterCallback) { in ProcessPropertyHandler()
5460 if (propertyHandlerCfg->genericIndexedPropertyEnumeratorCallback) { in ProcessPropertyHandler()
5464 tpl->InstanceTemplate()->SetHandler(indexPropertyHandler); in ProcessPropertyHandler()
5467 if (callAsFunctionCallback && callAsFunctionCallback->callback) { in ProcessPropertyHandler()
5469 …tpl->InstanceTemplate()->SetCallAsFunctionHandler(v8impl::FunctionCallbackWrapper::Invoke, funcCbd… in ProcessPropertyHandler()
5490 v8::Local<v8::ObjectTemplate> instance_templ = tpl->InstanceTemplate(); in ProcessOptions()
5491 instance_templ->SetInternalFieldCount(count); in ProcessOptions()
5497 propertyHandlerCfg = propertyHandle->propertyHandlerCfg; in ProcessOptions()
5498 callAsFunctionCallback = propertyHandle->callAsFunctionCallback; in ProcessOptions()
5547 CHECK_ARG(env, constructor->callback); in OH_JSVM_DefineClassWithOptions()
5553 v8::Isolate* isolate = env->isolate; in OH_JSVM_DefineClassWithOptions()
5560 tpl->SetClassName(nameString); in OH_JSVM_DefineClassWithOptions()
5566 if ((p->attributes & JSVM_STATIC) != 0) { // attributes in OH_JSVM_DefineClassWithOptions()
5578 if (p->getter != nullptr || p->setter != nullptr) { in OH_JSVM_DefineClassWithOptions()
5581 if (p->getter != nullptr) { in OH_JSVM_DefineClassWithOptions()
5582 … STATUS_CALL(v8impl::FunctionCallbackWrapper::NewTemplate(env, p->getter, &getterTpl)); in OH_JSVM_DefineClassWithOptions()
5584 if (p->setter != nullptr) { in OH_JSVM_DefineClassWithOptions()
5585 … STATUS_CALL(v8impl::FunctionCallbackWrapper::NewTemplate(env, p->setter, &setterTpl)); in OH_JSVM_DefineClassWithOptions()
5588 … tpl->PrototypeTemplate()->SetAccessorProperty(propertyName, getterTpl, setterTpl, attributes, in OH_JSVM_DefineClassWithOptions()
5590 } else if (p->method != nullptr) { in OH_JSVM_DefineClassWithOptions()
5593 …v8impl::FunctionCallbackWrapper::NewTemplate(env, p->method, &temp, v8::Signature::New(isolate, tp… in OH_JSVM_DefineClassWithOptions()
5595 tpl->PrototypeTemplate()->Set(propertyName, temp, attributes); in OH_JSVM_DefineClassWithOptions()
5597 v8::Local<v8::Value> value = v8impl::V8LocalValueFromJsValue(p->value); in OH_JSVM_DefineClassWithOptions()
5598 tpl->PrototypeTemplate()->Set(propertyName, value, attributes); in OH_JSVM_DefineClassWithOptions()
5605 if (!tpl->Inherit(parentFunc)) { in OH_JSVM_DefineClassWithOptions()
5617 v8::Local<v8::Context> context = env->context(); in OH_JSVM_DefineClassWithOptions()
5618 …*result = v8impl::JsValueFromV8LocalValue(scope.Escape(tpl->GetFunction(context).ToLocalChecked())… in OH_JSVM_DefineClassWithOptions()
5631 if ((p->attributes & JSVM_STATIC) != 0) { in OH_JSVM_DefineClassWithOptions()
5653 RETURN_STATUS_IF_FALSE(env, value->IsPromise(), JSVM_INVALID_TYPE); in OH_JSVM_PromiseRegisterHandler()
5656 v8::Local<v8::Context> ctx = env->context(); in OH_JSVM_PromiseRegisterHandler()
5661 RETURN_STATUS_IF_FALSE(env, rejectedHandler->IsFunction(), JSVM_INVALID_TYPE); in OH_JSVM_PromiseRegisterHandler()
5662 maybe = localPromise->Catch(ctx, rejectedHandler.As<v8::Function>()); in OH_JSVM_PromiseRegisterHandler()
5666 RETURN_STATUS_IF_FALSE(env, fulfiledHandler->IsFunction(), JSVM_INVALID_TYPE); in OH_JSVM_PromiseRegisterHandler()
5667 maybe = value.As<v8::Promise>()->Then(ctx, fulfiledHandler.As<v8::Function>()); in OH_JSVM_PromiseRegisterHandler()
5671 RETURN_STATUS_IF_FALSE(env, fulfiledHandler->IsFunction(), JSVM_INVALID_TYPE); in OH_JSVM_PromiseRegisterHandler()
5673 RETURN_STATUS_IF_FALSE(env, rejectedHandler->IsFunction(), JSVM_INVALID_TYPE); in OH_JSVM_PromiseRegisterHandler()
5675 …value.As<v8::Promise>()->Then(ctx, fulfiledHandler.As<v8::Function>(), rejectedHandler.As<v8::Func… in OH_JSVM_PromiseRegisterHandler()