From 74d0e64f142f0a5190e8d7b2cbaa9530776aa18c Mon Sep 17 00:00:00 2001 From: Sam Cao Date: Fri, 19 Jul 2024 11:19:15 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A7=20Javet=20v3.1.4=20(#371)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Upgraded Node.js to `v20.15.1` ([2024-07-08](https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V20.md#20.15.1)) * Upgraded V8 to `v12.7.224.16` (2024-07-15) * Rewrote `getV8HeapStatistics()`, `getV8HeapSpaceStatistics()` for `V8Runtime` to remediate the race condition and fixed possible memory leak * Added `observerTimeoutMillis` to `JavetEngineConfig` * Added `V8StatisticsFuture` * Added `isStopping()`, `setStopping()` to `NodeRuntime` * Removed `idleNotificationDeadline()` from `V8Runtime` * Removed `--track-retaining-path` from `V8Flags` --- .github/workflows/android_node_build.yml | 4 +- .github/workflows/android_v8_build.yml | 5 +- .github/workflows/linux_build_artifact.yml | 6 +- .../workflows/linux_build_node_v8_image.yml | 6 +- .github/workflows/linux_x86_64_build.yml | 7 +- .github/workflows/macos_arm64_build.yml | 7 +- .github/workflows/macos_x86_64_build.yml | 7 +- README.rst | 30 +- android/javet-android/build.gradle.kts | 2 +- .../src/main/AndroidManifest.xml | 2 +- android/pom.xml | 4 +- build.gradle.kts | 2 +- cpp/CMakeLists.txt | 3 +- cpp/build-android.sh | 2 +- cpp/build-linux-arm64.sh | 2 +- cpp/build-linux-x86_64.sh | 2 +- cpp/build-macos.sh | 2 +- cpp/build-windows.cmd | 2 +- .../com_caoccao_javet_interop_NodeNative.h | 16 + cpp/jni/com_caoccao_javet_interop_V8Native.h | 20 +- cpp/jni/javet_converter.cpp | 2 + cpp/jni/javet_enums.h | 8 + cpp/jni/javet_jni_core_node.cpp | 13 + cpp/jni/javet_jni_core_v8.cpp | 35 +- cpp/jni/javet_monitor.cpp | 119 ++++- cpp/jni/javet_monitor.h | 44 +- cpp/jni/javet_resource_node.rc | 12 +- cpp/jni/javet_resource_v8.rc | 12 +- cpp/jni/javet_v8_internal.h | 3 + cpp/jni/javet_v8_runtime.cpp | 13 +- cpp/jni/javet_v8_runtime.h | 13 + docker/android/base.Dockerfile | 4 +- docker/android/build.Dockerfile | 2 +- docker/linux-arm64/base_all_in_one.Dockerfile | 4 +- docker/linux-arm64/base_gradle.Dockerfile | 2 +- docker/linux-arm64/base_v8.Dockerfile | 6 +- docker/linux-arm64/build_artifact.Dockerfile | 4 +- .../linux-x86_64/base_all_in_one.Dockerfile | 6 +- docker/linux-x86_64/base_gradle.Dockerfile | 2 +- docker/linux-x86_64/base_node.Dockerfile | 6 +- docker/linux-x86_64/base_v8.Dockerfile | 6 +- docker/linux-x86_64/build.env | 6 +- .../linux-x86_64/build_all_in_one.Dockerfile | 2 +- docker/linux-x86_64/build_artifact.Dockerfile | 4 +- docker/windows-x86_64/base.Dockerfile | 6 +- docker/windows-x86_64/build.Dockerfile | 2 +- docs/_static/documentation_options.js | 2 +- docs/conf.py | 2 +- docs/development/build.html | 9 +- .../development/build_javet_from_scratch.html | 9 +- docs/development/build_javet_with_docker.html | 9 +- .../debug_with_chrome_developer_tools.html | 9 +- docs/development/design.html | 9 +- docs/development/index.html | 9 +- docs/development/performance.html | 9 +- docs/development/test.html | 9 +- docs/development/tools.html | 9 +- docs/faq/background/history_with_j2v8.html | 9 +- docs/faq/background/index.html | 9 +- .../background/what_is_the_motivation.html | 9 +- .../can_native_image_be_supported.html | 9 +- .../development/how_to_think_in_javet.html | 9 +- docs/faq/development/index.html | 9 +- .../where_are_es6_api_in_v8_mode.html | 9 +- .../development/where_are_the_examples.html | 9 +- ...he_inspector_disabled_in_node_js_mode.html | 9 +- .../can_javet_support_legacy_linux.html | 9 +- docs/faq/environment/index.html | 9 +- docs/faq/index.html | 10 +- ...ary_dll_initialization_routine_failed.html | 9 +- .../can_i18n_be_supported.html | 9 +- ...can_i_debug_javet_in_chrome_dev_tools.html | 15 +- .../can_node_js_event_loop_be_skipped.html | 375 ++++++++++++++++ .../can_node_js_event_loop_be_skipped.rst | 17 + docs/faq/troubleshooting/index.html | 10 +- ..._at_createv8runtime_in_v8_mode_on_aws.html | 15 +- ...why_node_js_crashes_when_being_closed.html | 9 +- docs/genindex.html | 9 +- docs/index.html | 39 +- .../converters/bridge_converter.html | 9 +- .../converters/custom_converter.html | 9 +- docs/reference/converters/index.html | 9 +- .../converters/object_converter.html | 9 +- .../converters/primitive_converter.html | 9 +- .../reference/converters/proxy_converter.html | 9 +- docs/reference/converters/proxy_plugins.html | 9 +- docs/reference/index.html | 9 +- docs/reference/javadoc/allclasses-frame.html | 5 +- .../reference/javadoc/allclasses-noframe.html | 5 +- .../javet/annotations/CheckReturnValue.html | 4 +- .../caoccao/javet/annotations/NodeModule.html | 4 +- .../caoccao/javet/annotations/V8Allow.html | 4 +- .../javet/annotations/V8BindingEnabler.html | 4 +- .../caoccao/javet/annotations/V8Block.html | 4 +- .../caoccao/javet/annotations/V8Convert.html | 4 +- .../caoccao/javet/annotations/V8Function.html | 4 +- .../caoccao/javet/annotations/V8Getter.html | 4 +- .../caoccao/javet/annotations/V8Property.html | 4 +- .../annotations/V8ProxyFunctionApply.html | 4 +- .../javet/annotations/V8RuntimeSetter.html | 4 +- .../caoccao/javet/annotations/V8Setter.html | 4 +- .../javet/annotations/package-frame.html | 2 +- .../javet/annotations/package-summary.html | 4 +- .../javet/annotations/package-tree.html | 22 +- .../javet/entities/JavetEntityError.html | 4 +- .../javet/entities/JavetEntityFunction.html | 4 +- .../javet/entities/JavetEntityMap.html | 4 +- .../javet/entities/JavetEntityObject.html | 4 +- .../JavetEntityPropertyDescriptor.html | 4 +- .../javet/entities/JavetEntitySymbol.html | 4 +- .../caoccao/javet/entities/package-frame.html | 2 +- .../javet/entities/package-summary.html | 4 +- .../caoccao/javet/entities/package-tree.html | 4 +- .../caoccao/javet/enums/JSFunctionType.html | 4 +- .../caoccao/javet/enums/JSRuntimeType.html | 4 +- .../com/caoccao/javet/enums/JSScopeType.html | 13 +- .../caoccao/javet/enums/JavetErrorType.html | 4 +- .../javet/enums/JavetPromiseRejectEvent.html | 4 +- .../caoccao/javet/enums/RawPointerType.html | 422 ++++++++++++++++++ .../javet/enums/V8AllocationSpace.html | 8 +- .../com/caoccao/javet/enums/V8AwaitMode.html | 4 +- .../caoccao/javet/enums/V8ContextType.html | 4 +- .../caoccao/javet/enums/V8ConversionMode.html | 4 +- .../javet/enums/V8GCCallbackFlags.html | 4 +- .../com/caoccao/javet/enums/V8GCType.html | 4 +- .../com/caoccao/javet/enums/V8ProxyMode.html | 4 +- .../com/caoccao/javet/enums/V8ScopeType.html | 4 +- .../caoccao/javet/enums/V8ValueErrorType.html | 4 +- .../javet/enums/V8ValueInternalType.html | 4 +- .../javet/enums/V8ValueReferenceType.html | 4 +- .../javet/enums/V8ValueSymbolType.html | 4 +- .../caoccao/javet/enums/package-frame.html | 3 +- .../caoccao/javet/enums/package-summary.html | 36 +- .../com/caoccao/javet/enums/package-tree.html | 27 +- .../BaseJavetScriptingException.html | 4 +- .../exceptions/JavetCompilationException.html | 4 +- .../exceptions/JavetConverterException.html | 4 +- .../caoccao/javet/exceptions/JavetError.html | 4 +- .../javet/exceptions/JavetException.html | 4 +- .../exceptions/JavetExecutionException.html | 4 +- .../exceptions/JavetOutOfMemoryException.html | 4 +- .../javet/exceptions/JavetScriptingError.html | 4 +- .../exceptions/JavetTerminatedException.html | 4 +- .../javet/exceptions/V8ErrorTemplate.html | 4 +- .../javet/exceptions/package-frame.html | 2 +- .../javet/exceptions/package-summary.html | 4 +- .../javet/exceptions/package-tree.html | 4 +- .../BaseJavetDirectCallableInterceptor.html | 4 +- .../interception/BaseJavetInterceptor.html | 4 +- .../interception/jvm/JavetJVMInterceptor.html | 4 +- .../javet/interception/jvm/package-frame.html | 2 +- .../interception/jvm/package-summary.html | 4 +- .../javet/interception/jvm/package-tree.html | 4 +- .../logging/BaseJavetConsoleInterceptor.html | 4 +- .../JavetStandardConsoleInterceptor.html | 4 +- .../interception/logging/package-frame.html | 2 +- .../interception/logging/package-summary.html | 4 +- .../interception/logging/package-tree.html | 4 +- .../javet/interception/package-frame.html | 2 +- .../javet/interception/package-summary.html | 4 +- .../javet/interception/package-tree.html | 4 +- .../caoccao/javet/interfaces/IEnumBitset.html | 4 +- .../javet/interfaces/IJavaFunction.html | 4 +- .../javet/interfaces/IJavaSupplier.html | 4 +- .../javet/interfaces/IJavetAnonymous.html | 4 +- .../javet/interfaces/IJavetBiConsumer.html | 4 +- .../javet/interfaces/IJavetBiFunction.html | 4 +- .../interfaces/IJavetBiIndexedConsumer.html | 4 +- .../javet/interfaces/IJavetClosable.html | 4 +- .../javet/interfaces/IJavetEntityError.html | 4 +- .../interfaces/IJavetEntityFunction.html | 4 +- .../javet/interfaces/IJavetEntityMap.html | 4 +- .../javet/interfaces/IJavetEntityObject.html | 4 +- .../IJavetEntityPropertyDescriptor.html | 4 +- .../javet/interfaces/IJavetEntitySymbol.html | 4 +- .../javet/interfaces/IJavetInterceptor.html | 4 +- .../javet/interfaces/IJavetLogger.html | 4 +- .../javet/interfaces/IJavetMappable.html | 8 +- .../javet/interfaces/IJavetRawPointer.html | 236 ++++++++++ .../javet/interfaces/IJavetResettable.html | 8 +- .../javet/interfaces/IJavetSupplier.html | 4 +- .../javet/interfaces/IJavetUniConsumer.html | 4 +- .../javet/interfaces/IJavetUniFunction.html | 4 +- .../interfaces/IJavetUniIndexedConsumer.html | 4 +- .../javet/interfaces/package-frame.html | 3 +- .../javet/interfaces/package-summary.html | 18 +- .../javet/interfaces/package-tree.html | 5 +- .../caoccao/javet/interop/INodeNative.html | 69 ++- .../caoccao/javet/interop/IV8Cloneable.html | 4 +- .../caoccao/javet/interop/IV8Convertible.html | 4 +- .../caoccao/javet/interop/IV8Creatable.html | 4 +- .../caoccao/javet/interop/IV8Executable.html | 4 +- .../javet/interop/IV8InspectorListener.html | 4 +- .../com/caoccao/javet/interop/IV8Native.html | 234 +++++----- .../caoccao/javet/interop/NodeRuntime.html | 54 ++- .../com/caoccao/javet/interop/V8Guard.html | 4 +- .../com/caoccao/javet/interop/V8Host.html | 83 ++-- .../caoccao/javet/interop/V8Inspector.html | 4 +- .../com/caoccao/javet/interop/V8Internal.html | 4 +- .../com/caoccao/javet/interop/V8Locker.html | 4 +- .../com/caoccao/javet/interop/V8Notifier.html | 4 +- .../com/caoccao/javet/interop/V8Runtime.html | 114 ++--- .../com/caoccao/javet/interop/V8Scope.html | 4 +- .../caoccao/javet/interop/V8ScriptOrigin.html | 4 +- .../javet/interop/binding/BindingContext.html | 4 +- .../interop/binding/BindingContextStore.html | 4 +- .../interop/binding/ClassDescriptor.html | 4 +- .../interop/binding/ClassDescriptorStore.html | 4 +- .../interop/binding/IClassProxyPlugin.html | 4 +- .../binding/IClassProxyPluginFunction.html | 4 +- .../interop/binding/MethodDescriptor.html | 4 +- .../javet/interop/binding/package-frame.html | 2 +- .../interop/binding/package-summary.html | 4 +- .../javet/interop/binding/package-tree.html | 4 +- .../IJavetDirectCallable.DirectCall.html | 4 +- .../IJavetDirectCallable.GetterAndNoThis.html | 4 +- .../IJavetDirectCallable.GetterAndThis.html | 4 +- ...JavetDirectCallable.NoThisAndNoResult.html | 4 +- .../IJavetDirectCallable.NoThisAndResult.html | 4 +- .../IJavetDirectCallable.SetterAndNoThis.html | 4 +- .../IJavetDirectCallable.SetterAndThis.html | 4 +- .../IJavetDirectCallable.ThisAndNoResult.html | 4 +- .../IJavetDirectCallable.ThisAndResult.html | 4 +- .../callback/IJavetDirectCallable.html | 4 +- .../interop/callback/IJavetGCCallback.html | 4 +- .../callback/IJavetPromiseRejectCallback.html | 4 +- .../interop/callback/IV8ModuleResolver.html | 4 +- .../callback/JavetBuiltInModuleResolver.html | 4 +- .../callback/JavetCallbackContext.html | 4 +- .../interop/callback/JavetCallbackType.html | 4 +- .../interop/callback/JavetGCCallback.html | 4 +- .../callback/JavetPromiseRejectCallback.html | 4 +- .../interop/callback/V8FunctionCallback.html | 4 +- .../javet/interop/callback/package-frame.html | 2 +- .../interop/callback/package-summary.html | 4 +- .../javet/interop/callback/package-tree.html | 4 +- .../converters/BaseJavetConverter.html | 4 +- .../interop/converters/IJavetConverter.html | 4 +- .../converters/JavetBridgeConverter.html | 4 +- .../converters/JavetConverterConfig.html | 4 +- .../converters/JavetObjectConverter.html | 4 +- .../converters/JavetPrimitiveConverter.html | 4 +- .../converters/JavetProxyConverter.html | 4 +- .../interop/converters/package-frame.html | 2 +- .../interop/converters/package-summary.html | 4 +- .../interop/converters/package-tree.html | 4 +- .../javet/interop/engine/IJavetEngine.html | 4 +- .../interop/engine/IJavetEnginePool.html | 4 +- .../javet/interop/engine/JavetEngine.html | 4 +- .../interop/engine/JavetEngineConfig.html | 192 +++++--- .../javet/interop/engine/JavetEnginePool.html | 4 +- .../interop/engine/JavetEngineUsage.html | 4 +- .../engine/observers/IV8RuntimeObserver.html | 13 +- ...meObserverAverageCallbackContextCount.html | 13 +- ...8RuntimeObserverAverageReferenceCount.html | 13 +- ...eObserverAverageV8HeapSpaceStatistics.html | 104 ++++- ...untimeObserverAverageV8HeapStatistics.html | 100 ++++- ...V8RuntimeObserverAverageV8ModuleCount.html | 13 +- .../engine/observers/package-frame.html | 2 +- .../engine/observers/package-summary.html | 4 +- .../engine/observers/package-tree.html | 4 +- .../javet/interop/engine/package-frame.html | 2 +- .../javet/interop/engine/package-summary.html | 4 +- .../javet/interop/engine/package-tree.html | 4 +- .../interop/executors/BaseV8Executor.html | 4 +- .../javet/interop/executors/IV8Executor.html | 4 +- .../interop/executors/V8FileExecutor.html | 4 +- .../interop/executors/V8PathExecutor.html | 4 +- .../interop/executors/V8StringExecutor.html | 4 +- .../interop/executors/package-frame.html | 2 +- .../interop/executors/package-summary.html | 4 +- .../javet/interop/executors/package-tree.html | 4 +- .../loader/IJavetLibLoadingListener.html | 4 +- .../javet/interop/loader/JavetLibLoader.html | 4 +- .../loader/JavetLibLoadingListener.html | 4 +- .../javet/interop/loader/package-frame.html | 2 +- .../javet/interop/loader/package-summary.html | 4 +- .../javet/interop/loader/package-tree.html | 4 +- .../monitoring/V8HeapSpaceStatistics.html | 4 +- .../interop/monitoring/V8HeapStatistics.html | 4 +- .../monitoring/V8SharedMemoryStatistics.html | 8 +- .../monitoring/V8StatisticsFuture.html | 374 ++++++++++++++++ .../interop/monitoring/package-frame.html | 3 +- .../interop/monitoring/package-summary.html | 10 +- .../interop/monitoring/package-tree.html | 9 +- .../interop/options/NodeRuntimeOptions.html | 4 +- .../javet/interop/options/RuntimeOptions.html | 4 +- .../javet/interop/options/V8Flags.html | 94 +--- .../interop/options/V8RuntimeOptions.html | 4 +- .../javet/interop/options/package-frame.html | 2 +- .../interop/options/package-summary.html | 4 +- .../javet/interop/options/package-tree.html | 4 +- .../caoccao/javet/interop/package-frame.html | 2 +- .../javet/interop/package-summary.html | 4 +- .../caoccao/javet/interop/package-tree.html | 6 +- .../proxy/BaseJavetDirectProxyHandler.html | 4 +- .../interop/proxy/BaseJavetProxyHandler.html | 4 +- .../proxy/BaseJavetProxySymbolConverter.html | 4 +- .../BaseJavetReflectionProxyHandler.html | 4 +- ...JavetReflectionProxyInvocationHandler.html | 4 +- .../proxy/IJavetDirectProxyHandler.html | 4 +- .../javet/interop/proxy/IJavetNonProxy.html | 4 +- .../interop/proxy/IJavetProxyHandler.html | 4 +- .../proxy/IJavetProxySymbolConverter.html | 4 +- .../proxy/IJavetReflectionObjectFactory.html | 4 +- .../JavetDirectProxyFunctionHandler.html | 4 +- .../proxy/JavetDirectProxyObjectHandler.html | 4 +- .../proxy/JavetProxyPrototypeStore.html | 4 +- .../JavetReflectionProxyClassHandler.html | 4 +- .../proxy/JavetReflectionProxyFactory.html | 4 +- .../JavetReflectionProxyFunctionHandler.html | 4 +- .../JavetReflectionProxyObjectHandler.html | 4 +- ...ProxyV8ValueFunctionInvocationHandler.html | 4 +- ...onProxyV8ValueObjectInvocationHandler.html | 4 +- .../javet/interop/proxy/package-frame.html | 2 +- .../javet/interop/proxy/package-summary.html | 4 +- .../javet/interop/proxy/package-tree.html | 4 +- .../proxy/plugins/BaseJavetProxyPlugin.html | 4 +- .../plugins/BaseJavetProxyPluginMultiple.html | 4 +- .../plugins/BaseJavetProxyPluginSingle.html | 4 +- .../proxy/plugins/JavetProxyPluginArray.html | 4 +- .../proxy/plugins/JavetProxyPluginClass.html | 4 +- .../plugins/JavetProxyPluginDefault.html | 4 +- .../proxy/plugins/JavetProxyPluginList.html | 4 +- .../proxy/plugins/JavetProxyPluginMap.html | 4 +- .../proxy/plugins/JavetProxyPluginSet.html | 4 +- .../interop/proxy/plugins/package-frame.html | 2 +- .../proxy/plugins/package-summary.html | 4 +- .../interop/proxy/plugins/package-tree.html | 4 +- .../javet/node/modules/BaseNodeModule.html | 4 +- .../javet/node/modules/INodeModule.html | 4 +- .../javet/node/modules/NodeModuleAny.html | 4 +- .../javet/node/modules/NodeModuleModule.html | 4 +- .../javet/node/modules/NodeModuleProcess.html | 4 +- .../javet/node/modules/package-frame.html | 2 +- .../javet/node/modules/package-summary.html | 4 +- .../javet/node/modules/package-tree.html | 4 +- .../com/caoccao/javet/utils/ArrayUtils.html | 4 +- .../javet/utils/JavetDateTimeUtils.html | 4 +- .../javet/utils/JavetDefaultLogger.html | 4 +- .../com/caoccao/javet/utils/JavetOSUtils.html | 4 +- .../javet/utils/JavetReflectionUtils.html | 4 +- .../javet/utils/JavetResourceUtils.html | 4 +- .../caoccao/javet/utils/JavetTypeUtils.html | 4 +- .../javet/utils/JavetVirtualObject.html | 4 +- .../com/caoccao/javet/utils/ListUtils.html | 4 +- .../javet/utils/SimpleFreeMarkerFormat.html | 4 +- .../com/caoccao/javet/utils/SimpleList.html | 4 +- .../com/caoccao/javet/utils/SimpleMap.html | 4 +- .../com/caoccao/javet/utils/SimpleSet.html | 4 +- .../com/caoccao/javet/utils/StringUtils.html | 4 +- .../javet/utils/ThreadSafeMap.Type.html | 4 +- .../caoccao/javet/utils/ThreadSafeMap.html | 4 +- .../com/caoccao/javet/utils/V8ValueUtils.html | 4 +- .../caoccao/javet/utils/package-frame.html | 2 +- .../caoccao/javet/utils/package-summary.html | 4 +- .../com/caoccao/javet/utils/package-tree.html | 4 +- .../receivers/IJavetCallbackReceiver.html | 4 +- .../receivers/JavetCallbackReceiver.html | 4 +- .../javet/utils/receivers/package-frame.html | 2 +- .../utils/receivers/package-summary.html | 4 +- .../javet/utils/receivers/package-tree.html | 4 +- .../com/caoccao/javet/values/IV8Value.html | 4 +- .../javet/values/IV8ValueNonProxyable.html | 4 +- .../javet/values/IV8ValuePrimitiveObject.html | 4 +- .../javet/values/IV8ValuePrimitiveValue.html | 4 +- .../com/caoccao/javet/values/V8Data.html | 4 +- .../com/caoccao/javet/values/V8Value.html | 4 +- .../caoccao/javet/values/package-frame.html | 2 +- .../caoccao/javet/values/package-summary.html | 4 +- .../caoccao/javet/values/package-tree.html | 4 +- .../values/primitive/V8ValueBigInteger.html | 4 +- .../values/primitive/V8ValueBigNumber.html | 4 +- .../values/primitive/V8ValueBoolean.html | 4 +- .../javet/values/primitive/V8ValueDouble.html | 4 +- .../values/primitive/V8ValueInteger.html | 4 +- .../javet/values/primitive/V8ValueLong.html | 4 +- .../javet/values/primitive/V8ValueNull.html | 4 +- .../javet/values/primitive/V8ValueNumber.html | 4 +- .../values/primitive/V8ValuePrimitive.html | 4 +- .../javet/values/primitive/V8ValueString.html | 4 +- .../values/primitive/V8ValueUndefined.html | 4 +- .../values/primitive/V8ValueUnknown.html | 4 +- .../primitive/V8ValueZonedDateTime.html | 4 +- .../javet/values/primitive/package-frame.html | 2 +- .../values/primitive/package-summary.html | 4 +- .../javet/values/primitive/package-tree.html | 4 +- .../javet/values/reference/IV8Cacheable.html | 4 +- .../javet/values/reference/IV8Context.html | 4 +- .../javet/values/reference/IV8Module.html | 4 +- .../javet/values/reference/IV8Script.html | 4 +- .../javet/values/reference/IV8ValueArray.html | 4 +- ...IV8ValueFunction.GetScopeInfosOptions.html | 4 +- .../reference/IV8ValueFunction.ScopeInfo.html | 4 +- .../IV8ValueFunction.ScopeInfos.html | 4 +- .../IV8ValueFunction.ScriptSource.html | 4 +- ...IV8ValueFunction.SetSourceCodeOptions.html | 4 +- .../values/reference/IV8ValueFunction.html | 4 +- .../values/reference/IV8ValueIterator.html | 4 +- .../reference/IV8ValueKeyContainer.html | 4 +- .../javet/values/reference/IV8ValueMap.html | 4 +- .../values/reference/IV8ValueObject.html | 4 +- .../reference/IV8ValuePromise.IListener.html | 4 +- .../values/reference/IV8ValuePromise.html | 4 +- .../javet/values/reference/IV8ValueProxy.html | 4 +- .../values/reference/IV8ValueReference.html | 4 +- .../javet/values/reference/IV8ValueSet.html | 4 +- .../values/reference/IV8ValueTypedArray.html | 4 +- .../javet/values/reference/V8Context.html | 4 +- .../javet/values/reference/V8Module.html | 4 +- .../javet/values/reference/V8Script.html | 4 +- .../values/reference/V8ValueArguments.html | 4 +- .../javet/values/reference/V8ValueArray.html | 4 +- .../values/reference/V8ValueArrayBuffer.html | 4 +- .../reference/V8ValueBooleanObject.html | 4 +- .../values/reference/V8ValueDataView.html | 4 +- .../values/reference/V8ValueDoubleObject.html | 4 +- .../javet/values/reference/V8ValueError.html | 4 +- .../values/reference/V8ValueFunction.html | 4 +- .../values/reference/V8ValueGlobalObject.html | 4 +- .../reference/V8ValueIntegerObject.html | 4 +- .../values/reference/V8ValueIterator.html | 4 +- .../values/reference/V8ValueLongObject.html | 4 +- .../javet/values/reference/V8ValueMap.html | 4 +- .../javet/values/reference/V8ValueObject.html | 4 +- .../values/reference/V8ValuePromise.html | 4 +- .../javet/values/reference/V8ValueProxy.html | 4 +- .../values/reference/V8ValueReference.html | 4 +- .../javet/values/reference/V8ValueRegExp.html | 4 +- .../javet/values/reference/V8ValueSet.html | 4 +- .../reference/V8ValueSharedArrayBuffer.html | 4 +- .../values/reference/V8ValueStringObject.html | 4 +- .../javet/values/reference/V8ValueSymbol.html | 4 +- .../values/reference/V8ValueSymbolObject.html | 4 +- .../values/reference/V8ValueTypedArray.html | 4 +- .../values/reference/V8ValueWeakMap.html | 4 +- .../values/reference/V8ValueWeakSet.html | 4 +- .../reference/builtin/V8ValueBuiltInJson.html | 4 +- .../builtin/V8ValueBuiltInObject.html | 4 +- .../builtin/V8ValueBuiltInPromise.html | 4 +- .../builtin/V8ValueBuiltInReflect.html | 4 +- .../builtin/V8ValueBuiltInSymbol.html | 4 +- .../reference/builtin/package-frame.html | 2 +- .../reference/builtin/package-summary.html | 4 +- .../reference/builtin/package-tree.html | 4 +- .../javet/values/reference/package-frame.html | 2 +- .../values/reference/package-summary.html | 4 +- .../javet/values/reference/package-tree.html | 4 +- .../values/virtual/V8VirtualIterator.html | 4 +- .../javet/values/virtual/V8VirtualValue.html | 4 +- .../values/virtual/V8VirtualValueList.html | 4 +- .../javet/values/virtual/package-frame.html | 2 +- .../javet/values/virtual/package-summary.html | 4 +- .../javet/values/virtual/package-tree.html | 4 +- docs/reference/javadoc/constant-values.html | 109 ++++- docs/reference/javadoc/deprecated-list.html | 4 +- docs/reference/javadoc/help-doc.html | 4 +- docs/reference/javadoc/index-all.html | 143 ++++-- docs/reference/javadoc/index.html | 2 +- docs/reference/javadoc/overview-frame.html | 2 +- docs/reference/javadoc/overview-summary.html | 6 +- docs/reference/javadoc/overview-tree.html | 13 +- docs/reference/javadoc/serialized-form.html | 4 +- docs/reference/resource_management/index.html | 9 +- .../resource_management/load_and_unload.html | 9 +- docs/reference/resource_management/lock.html | 9 +- .../memory_management.html | 25 +- .../resource_management/memory_management.rst | 14 +- .../resource_management/modularization.html | 14 +- .../resource_management/modularization.rst | 5 + .../resource_management/snapshot.html | 9 +- docs/reference/tips/best_practices.html | 9 +- docs/reference/tips/index.html | 9 +- docs/reference/todo_list.html | 9 +- .../troubleshooting/error_codes.html | 9 +- docs/reference/troubleshooting/index.html | 9 +- docs/reference/troubleshooting/logging.html | 9 +- .../troubleshooting/termination.html | 9 +- docs/reference/v8_values/index.html | 9 +- docs/reference/v8_values/v8_collection.html | 9 +- docs/reference/v8_values/v8_function.html | 9 +- docs/reference/v8_values/v8_promise.html | 9 +- docs/release_notes/index.html | 9 +- docs/release_notes/release_notes_0_7.html | 9 +- docs/release_notes/release_notes_0_8.html | 9 +- docs/release_notes/release_notes_0_9.html | 9 +- docs/release_notes/release_notes_1_0.html | 9 +- docs/release_notes/release_notes_1_1.html | 9 +- docs/release_notes/release_notes_2_0.html | 9 +- docs/release_notes/release_notes_2_1.html | 9 +- docs/release_notes/release_notes_2_2.html | 9 +- docs/release_notes/release_notes_3_0.html | 9 +- docs/release_notes/release_notes_3_1.html | 25 +- docs/release_notes/release_notes_3_1.rst | 14 +- docs/search.html | 9 +- docs/searchindex.js | 2 +- .../advanced/access_the_whole_jvm.html | 9 +- .../advanced/expose_json_node_in_v8.html | 9 +- docs/tutorial/advanced/index.html | 9 +- .../advanced/interact_with_node_js.html | 9 +- .../advanced/java_and_javascript_interop.html | 9 +- docs/tutorial/advanced/object_converter.html | 9 +- docs/tutorial/basic/engine_pool.html | 9 +- docs/tutorial/basic/hello_javet.html | 9 +- docs/tutorial/basic/index.html | 9 +- docs/tutorial/basic/installation.html | 43 +- docs/tutorial/basic/installation.rst | 34 +- docs/tutorial/basic/interception.html | 9 +- docs/tutorial/basic/javet_shell.html | 9 +- .../basic/node_js_mode_and_v8_mode.html | 9 +- docs/tutorial/basic/polyfill.html | 9 +- docs/tutorial/basic/spring_integration.html | 9 +- docs/tutorial/index.html | 9 +- docs/tutorial/migration_guides/index.html | 9 +- .../migration_guides/migrate_from_j2v8.html | 9 +- scripts/node/javet-rebuild/rebuild.cmd | 2 +- scripts/node/javet-rebuild/rebuild.sh | 2 +- scripts/python/change_javet_version.py | 2 +- scripts/python/change_node_v8_version.py | 4 +- .../caoccao/javet/enums/JSRuntimeType.java | 2 +- .../com/caoccao/javet/enums/JSScopeType.java | 5 + .../caoccao/javet/enums/RawPointerType.java | 77 ++++ .../javet/interfaces/IJavetRawPointer.java | 34 ++ .../caoccao/javet/interop/INodeNative.java | 3 + .../com/caoccao/javet/interop/IV8Native.java | 6 +- .../com/caoccao/javet/interop/NodeNative.java | 8 +- .../caoccao/javet/interop/NodeRuntime.java | 20 + .../com/caoccao/javet/interop/V8Host.java | 105 ++++- .../com/caoccao/javet/interop/V8Native.java | 8 +- .../com/caoccao/javet/interop/V8Runtime.java | 44 +- .../interop/engine/IJavetEnginePool.java | 8 +- .../interop/engine/JavetEngineConfig.java | 71 ++- .../javet/interop/engine/JavetEnginePool.java | 9 +- .../engine/observers/IV8RuntimeObserver.java | 4 +- ...meObserverAverageCallbackContextCount.java | 3 +- ...8RuntimeObserverAverageReferenceCount.java | 3 +- ...eObserverAverageV8HeapSpaceStatistics.java | 81 +++- ...untimeObserverAverageV8HeapStatistics.java | 116 +++-- ...V8RuntimeObserverAverageV8ModuleCount.java | 3 +- .../javet/interop/loader/JavetLibLoader.java | 2 +- .../monitoring/V8StatisticsFuture.java | 89 ++++ .../javet/interop/options/V8Flags.java | 35 -- .../java/com/caoccao/javet/BaseTestJavet.java | 1 - .../caoccao/javet/BaseTestJavetRuntime.java | 4 +- .../javet/interop/TestNodeRuntime.java | 29 +- .../caoccao/javet/interop/TestV8Runtime.java | 7 - .../interop/engine/TestJavetEnginePool.java | 11 +- .../monitoring/TestV8HeapSpaceStatistics.java | 10 +- .../monitoring/TestV8HeapStatistics.java | 9 +- .../monitoring/TestV8HeapStatisticsOOM.java | 47 +- .../javet/interop/options/TestV8Flags.java | 4 - 551 files changed, 4543 insertions(+), 2022 deletions(-) create mode 100644 docs/faq/troubleshooting/can_node_js_event_loop_be_skipped.html create mode 100644 docs/faq/troubleshooting/can_node_js_event_loop_be_skipped.rst create mode 100644 docs/reference/javadoc/com/caoccao/javet/enums/RawPointerType.html create mode 100644 docs/reference/javadoc/com/caoccao/javet/interfaces/IJavetRawPointer.html create mode 100644 docs/reference/javadoc/com/caoccao/javet/interop/monitoring/V8StatisticsFuture.html create mode 100644 src/main/java/com/caoccao/javet/enums/RawPointerType.java create mode 100644 src/main/java/com/caoccao/javet/interfaces/IJavetRawPointer.java create mode 100644 src/main/java/com/caoccao/javet/interop/monitoring/V8StatisticsFuture.java diff --git a/.github/workflows/android_node_build.yml b/.github/workflows/android_node_build.yml index 7fe353ab1..7a7cdefb5 100644 --- a/.github/workflows/android_node_build.yml +++ b/.github/workflows/android_node_build.yml @@ -8,8 +8,8 @@ on: workflow_dispatch: env: - JAVET_NODE_VERSION: 20.14.0 - JAVET_VERSION: 3.1.3 + JAVET_NODE_VERSION: 20.15.1 + JAVET_VERSION: 3.1.4 ROOT: /home/runner/work/Javet jobs: diff --git a/.github/workflows/android_v8_build.yml b/.github/workflows/android_v8_build.yml index 82ac87024..f6cfac5d0 100644 --- a/.github/workflows/android_v8_build.yml +++ b/.github/workflows/android_v8_build.yml @@ -8,8 +8,8 @@ on: workflow_dispatch: env: - JAVET_V8_VERSION: 12.6.228.13 - JAVET_VERSION: 3.1.3 + JAVET_V8_VERSION: 12.7.224.16 + JAVET_VERSION: 3.1.4 ROOT: /home/runner/work/Javet jobs: @@ -80,7 +80,6 @@ jobs: gclient sync -D cd v8 python3 tools/dev/v8gen.py ${{ matrix.v8_release }}.release -- 'target_os="android"' 'target_cpu="${{ matrix.v8_arch }}"' 'v8_target_cpu="${{ matrix.v8_arch }}"' v8_monolithic=true v8_use_external_startup_data=false is_component_build=false v8_enable_i18n_support=false v8_enable_pointer_compression=false v8_static_library=true symbol_level=0 use_custom_libcxx=false v8_enable_sandbox=false - sed -i '/CHECK(!IsFreeSpaceOrFillerMap(map));/d' src/heap/concurrent-marking.cc ninja -C out.gn/${{ matrix.v8_release }}.release v8_monolith || python3 ${{ env.ROOT }}/Javet/scripts/python/patch_v8_build.py -p ./ ninja -C out.gn/${{ matrix.v8_release }}.release v8_monolith diff --git a/.github/workflows/linux_build_artifact.yml b/.github/workflows/linux_build_artifact.yml index 17ec501a4..7e1494ee8 100644 --- a/.github/workflows/linux_build_artifact.yml +++ b/.github/workflows/linux_build_artifact.yml @@ -17,9 +17,9 @@ on: env: DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} DOCKERHUB_REPO_JAVET: ${{ secrets.DOCKERHUB_REPO_JAVET }} - JAVET_NODE_VERSION: 20.14.0 - JAVET_V8_VERSION: 12.6.228.13 - JAVET_VERSION: 3.1.3 + JAVET_NODE_VERSION: 20.15.1 + JAVET_V8_VERSION: 12.7.224.16 + JAVET_VERSION: 3.1.4 jobs: javet_linux_x86_64: diff --git a/.github/workflows/linux_build_node_v8_image.yml b/.github/workflows/linux_build_node_v8_image.yml index 75fff8a7f..27c7e74f9 100644 --- a/.github/workflows/linux_build_node_v8_image.yml +++ b/.github/workflows/linux_build_node_v8_image.yml @@ -21,9 +21,9 @@ on: env: DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} DOCKERHUB_REPO_JAVET: ${{ secrets.DOCKERHUB_REPO_JAVET }} - JAVET_NODE_VERSION: 20.14.0 - JAVET_V8_VERSION: 12.6.228.13 - JAVET_VERSION: 3.1.3 + JAVET_NODE_VERSION: 20.15.1 + JAVET_V8_VERSION: 12.7.224.16 + JAVET_VERSION: 3.1.4 # if we skip a job using a job level `if` condition, then any dependent jobs also don't run. # we can skip a step of the job, using a step level `if` condition. diff --git a/.github/workflows/linux_x86_64_build.yml b/.github/workflows/linux_x86_64_build.yml index f8f184a4a..67c433601 100644 --- a/.github/workflows/linux_x86_64_build.yml +++ b/.github/workflows/linux_x86_64_build.yml @@ -7,9 +7,9 @@ on: workflow_dispatch: env: - JAVET_NODE_VERSION: 20.14.0 - JAVET_V8_VERSION: 12.6.228.13 - JAVET_VERSION: 3.1.3 + JAVET_NODE_VERSION: 20.15.1 + JAVET_V8_VERSION: 12.7.224.16 + JAVET_VERSION: 3.1.4 ROOT: /home/runner/work/Javet jobs: @@ -52,7 +52,6 @@ jobs: gclient sync -D cd v8 python3 tools/dev/v8gen.py x64.release -- v8_monolithic=true v8_use_external_startup_data=false is_component_build=false v8_enable_i18n_support=false v8_enable_pointer_compression=false v8_static_library=true symbol_level=0 use_custom_libcxx=false v8_enable_sandbox=false - sed -i '/CHECK(!IsFreeSpaceOrFillerMap(map));/d' src/heap/concurrent-marking.cc sed -i '/#include "src\/libplatform\//a #include ' src/libplatform/default-thread-isolated-allocator.cc sed -i '/bool KernelHasPkruFix()/a const char* env = std::getenv("JAVET_DISABLE_PKU"); if (env && std::strlen(env) > 0) { return false; }' src/libplatform/default-thread-isolated-allocator.cc ninja -C out.gn/x64.release v8_monolith || python3 ${{ env.ROOT }}/Javet/scripts/python/patch_v8_build.py -p ./ diff --git a/.github/workflows/macos_arm64_build.yml b/.github/workflows/macos_arm64_build.yml index d62e47d78..c1314e810 100644 --- a/.github/workflows/macos_arm64_build.yml +++ b/.github/workflows/macos_arm64_build.yml @@ -7,9 +7,9 @@ on: workflow_dispatch: env: - JAVET_NODE_VERSION: 20.14.0 - JAVET_V8_VERSION: 12.6.228.13 - JAVET_VERSION: 3.1.3 + JAVET_NODE_VERSION: 20.15.1 + JAVET_V8_VERSION: 12.7.224.16 + JAVET_VERSION: 3.1.4 ROOT: /Users/runner/work/Javet jobs: @@ -52,7 +52,6 @@ jobs: gclient sync -D cd v8 python3 tools/dev/v8gen.py arm64.release -- v8_monolithic=true 'target_cpu="arm64"' v8_use_external_startup_data=false is_component_build=false v8_enable_i18n_support=false v8_enable_pointer_compression=false v8_static_library=true symbol_level=0 use_custom_libcxx=false v8_enable_sandbox=false - sed -i '' -e '/CHECK(!IsFreeSpaceOrFillerMap(map));/d' src/heap/concurrent-marking.cc gn gen out.gn/arm64.release ninja -C out.gn/arm64.release v8_monolith || python3 ${{ env.ROOT }}/Javet/scripts/python/patch_v8_build.py -p ./ ninja -C out.gn/arm64.release v8_monolith diff --git a/.github/workflows/macos_x86_64_build.yml b/.github/workflows/macos_x86_64_build.yml index 24d6a8e1f..1d3c2beec 100644 --- a/.github/workflows/macos_x86_64_build.yml +++ b/.github/workflows/macos_x86_64_build.yml @@ -7,9 +7,9 @@ on: workflow_dispatch: env: - JAVET_NODE_VERSION: 20.14.0 - JAVET_V8_VERSION: 12.6.228.13 - JAVET_VERSION: 3.1.3 + JAVET_NODE_VERSION: 20.15.1 + JAVET_V8_VERSION: 12.7.224.16 + JAVET_VERSION: 3.1.4 ROOT: /Users/runner/work/Javet jobs: @@ -52,7 +52,6 @@ jobs: gclient sync -D cd v8 python3 tools/dev/v8gen.py x64.release -- v8_monolithic=true v8_use_external_startup_data=false is_component_build=false v8_enable_i18n_support=false v8_enable_pointer_compression=false v8_static_library=true symbol_level=0 use_custom_libcxx=false v8_enable_sandbox=false - sed -i '' -e '/CHECK(!IsFreeSpaceOrFillerMap(map));/d' src/heap/concurrent-marking.cc gn gen out.gn/x64.release ninja -C out.gn/x64.release v8_monolith || python3 ${{ env.ROOT }}/Javet/scripts/python/patch_v8_build.py -p ./ ninja -C out.gn/x64.release v8_monolith diff --git a/README.rst b/README.rst index c5ba16906..db6518aa7 100644 --- a/README.rst +++ b/README.rst @@ -47,7 +47,7 @@ arm ✔️ ❌ ❌ ❌ arm64 ✔️ ✔️ ✔️ ❌ =========== ======= ======= ======= ======= -* Node.js ``v20.14.0`` + V8 ``v12.6.228.13`` +* Node.js ``v20.15.1`` + V8 ``v12.7.224.16`` * Dynamic switch between Node.js and V8 mode (`Which mode do you prefer? `_) * Polyfill V8 mode with `Javenode `_ * V8 API exposure in JVM @@ -75,21 +75,21 @@ Maven com.caoccao.javet javet - 3.1.3 + 3.1.4 com.caoccao.javet javet-linux-arm64 - 3.1.3 + 3.1.4 com.caoccao.javet javet-macos - 3.1.3 + 3.1.4 Gradle Kotlin DSL @@ -97,22 +97,22 @@ Gradle Kotlin DSL .. code-block:: kotlin - implementation("com.caoccao.javet:javet:3.1.3") // Linux and Windows (x86_64) - implementation("com.caoccao.javet:javet-linux-arm64:3.1.3") // Linux (arm64) - implementation("com.caoccao.javet:javet-macos:3.1.3") // Mac OS (x86_64 and arm64) - implementation("com.caoccao.javet:javet-android-node:3.1.3") // Android Node (arm, arm64, x86 and x86_64) - implementation("com.caoccao.javet:javet-android-v8:3.1.3") // Android V8 (arm, arm64, x86 and x86_64) + implementation("com.caoccao.javet:javet:3.1.4") // Linux and Windows (x86_64) + implementation("com.caoccao.javet:javet-linux-arm64:3.1.4") // Linux (arm64) + implementation("com.caoccao.javet:javet-macos:3.1.4") // Mac OS (x86_64 and arm64) + implementation("com.caoccao.javet:javet-android-node:3.1.4") // Android Node (arm, arm64, x86 and x86_64) + implementation("com.caoccao.javet:javet-android-v8:3.1.4") // Android V8 (arm, arm64, x86 and x86_64) Gradle Groovy DSL ^^^^^^^^^^^^^^^^^ .. code-block:: groovy - implementation 'com.caoccao.javet:javet:3.1.3' // Linux and Windows (x86_64) - implementation 'com.caoccao.javet:javet-linux-arm64:3.1.3' // Linux (arm64) - implementation 'com.caoccao.javet:javet-macos:3.1.3' // Mac OS (x86_64 and arm64) - implementation 'com.caoccao.javet:javet-android-node:3.1.3' // Android Node (arm, arm64, x86 and x86_64) - implementation 'com.caoccao.javet:javet-android-v8:3.1.3' // Android V8 (arm, arm64, x86 and x86_64) + implementation 'com.caoccao.javet:javet:3.1.4' // Linux and Windows (x86_64) + implementation 'com.caoccao.javet:javet-linux-arm64:3.1.4' // Linux (arm64) + implementation 'com.caoccao.javet:javet-macos:3.1.4' // Mac OS (x86_64 and arm64) + implementation 'com.caoccao.javet:javet-android-node:3.1.4' // Android Node (arm, arm64, x86 and x86_64) + implementation 'com.caoccao.javet:javet-android-v8:3.1.4' // Android V8 (arm, arm64, x86 and x86_64) Hello Javet ----------- @@ -132,7 +132,7 @@ Hello Javet Sponsors ======== -`HiveMQ `_ +`HiveMQ `_ | `SheetJS `_ License ======= diff --git a/android/javet-android/build.gradle.kts b/android/javet-android/build.gradle.kts index 7a03fb6ac..3d9eadaea 100644 --- a/android/javet-android/build.gradle.kts +++ b/android/javet-android/build.gradle.kts @@ -73,7 +73,7 @@ object Config { const val ANDROIDX_TEST = "1.1.5" const val APPCOMPAT = "1.3.1" const val DESUGAR_JDK_LIBS = "2.0.4" - const val JAVET = "3.1.3" + const val JAVET = "3.1.4" const val JUNIT = "5.10.1" } } diff --git a/android/javet-android/src/main/AndroidManifest.xml b/android/javet-android/src/main/AndroidManifest.xml index 34370ae0c..772b2b17d 100644 --- a/android/javet-android/src/main/AndroidManifest.xml +++ b/android/javet-android/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ \ No newline at end of file diff --git a/android/pom.xml b/android/pom.xml index 7b7378828..8ddc175f4 100644 --- a/android/pom.xml +++ b/android/pom.xml @@ -3,7 +3,7 @@ com.caoccao.javet javet-android - 3.1.3 + 3.1.4 javet aar Javet is Java + V8 (JAVa + V + EighT). It is an awesome way of embedding V8 in Java. @@ -29,7 +29,7 @@ scm:git:git://github.com/caoccao/Javet.git scm:git:git@github.com:caoccao/caoccao.git https://github.com/caoccao/Javet - 3.1.3 + 3.1.4 diff --git a/build.gradle.kts b/build.gradle.kts index 96c88a5e6..338488bbd 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -72,7 +72,7 @@ object Config { const val BYTE_BUDDY = "1.14.10" const val JACKSON_DATABIND = "2.16.0" const val JAVA_VERSION = "1.8" - const val JAVET = "3.1.3" + const val JAVET = "3.1.4" const val JETTY_WEBSOCKET = "9.4.53.v20231009" const val JUNIT = "5.10.1" } diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 18919f3ff..587b273ec 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -162,7 +162,8 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Windows") set(JAVET_LIB_ARCH x86_64) set(JAVET_LIB_ARCH x86_64) # Generate PDB file - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi /MP /O2 /Ob2 /GS-") + # https://learn.microsoft.com/en-us/cpp/build/reference/zc-cplusplus + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi /MP /O2 /Ob2 /GS- /Zc:__cplusplus") set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF") add_definitions(-D_ITERATOR_DEBUG_LEVEL=0 -D_WIN32) list(APPEND includeDirs $ENV{JAVA_HOME}/include/win32) diff --git a/cpp/build-android.sh b/cpp/build-android.sh index 1aa659259..7c6226501 100755 --- a/cpp/build-android.sh +++ b/cpp/build-android.sh @@ -2,7 +2,7 @@ # Usage for V8: sh build-android.sh -DV8_DIR=${HOME}/v8 -DCMAKE_ANDROID_NDK=${HOME}/android -DCMAKE_ANDROID_ARCH=arm64 # Usage for Node: sh build-android.sh -DNODE_DIR=${HOME}/node -DCMAKE_ANDROID_NDK=${HOME}/android -DCMAKE_ANDROID_ARCH=arm64 -JAVET_VERSION=3.1.3 +JAVET_VERSION=3.1.4 rm -rf build_android mkdir build_android cd build_android diff --git a/cpp/build-linux-arm64.sh b/cpp/build-linux-arm64.sh index ddcbd8332..616e6b7f0 100644 --- a/cpp/build-linux-arm64.sh +++ b/cpp/build-linux-arm64.sh @@ -2,7 +2,7 @@ # Usage for V8: sh build-linux-arm64.sh -DV8_DIR=${HOME}/v8 # Usage for Node: sh build-linux-arm64.sh -DNODE_DIR=${HOME}/node -JAVET_VERSION=3.1.3 +JAVET_VERSION=3.1.4 rm -rf build_linux_arm64 mkdir build_linux_arm64 cd build_linux_arm64 diff --git a/cpp/build-linux-x86_64.sh b/cpp/build-linux-x86_64.sh index 6b64c365f..31998f1be 100644 --- a/cpp/build-linux-x86_64.sh +++ b/cpp/build-linux-x86_64.sh @@ -2,7 +2,7 @@ # Usage for V8: sh build-linux-x86_64.sh -DV8_DIR=${HOME}/v8 # Usage for Node: sh build-linux-x86_64.sh -DNODE_DIR=${HOME}/node -JAVET_VERSION=3.1.3 +JAVET_VERSION=3.1.4 rm -rf build_linux_x86_64 mkdir build_linux_x86_64 cd build_linux_x86_64 diff --git a/cpp/build-macos.sh b/cpp/build-macos.sh index 7712e03cf..b0c713b00 100755 --- a/cpp/build-macos.sh +++ b/cpp/build-macos.sh @@ -2,7 +2,7 @@ # Usage for V8: sh build-macos.sh -DV8_DIR=${HOME}/v8 # Usage for Node: sh build-macos.sh -DNODE_DIR=${HOME}/node -JAVET_VERSION=3.1.3 +JAVET_VERSION=3.1.4 rm -rf build_macos mkdir build_macos cd build_macos diff --git a/cpp/build-windows.cmd b/cpp/build-windows.cmd index 77290dfda..10e3fb602 100644 --- a/cpp/build-windows.cmd +++ b/cpp/build-windows.cmd @@ -1,7 +1,7 @@ @echo off REM Usage for V8: build -DV8_DIR=C:\v8 REM Usage for Node: build -DNODE_DIR=C:\node -SET JAVET_VERSION=3.1.3 +SET JAVET_VERSION=3.1.4 rd /s/q build_windows mkdir build_windows cd build_windows diff --git a/cpp/jni/com_caoccao_javet_interop_NodeNative.h b/cpp/jni/com_caoccao_javet_interop_NodeNative.h index d54e5cd6d..7d6e3aa0a 100644 --- a/cpp/jni/com_caoccao_javet_interop_NodeNative.h +++ b/cpp/jni/com_caoccao_javet_interop_NodeNative.h @@ -15,6 +15,22 @@ extern "C" { JNIEXPORT jboolean JNICALL Java_com_caoccao_javet_interop_NodeNative_await (JNIEnv *, jobject, jlong, jint); +/* + * Class: com_caoccao_javet_interop_NodeNative + * Method: isStopping + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_com_caoccao_javet_interop_NodeNative_isStopping + (JNIEnv *, jobject, jlong); + +/* + * Class: com_caoccao_javet_interop_NodeNative + * Method: setStopping + * Signature: (JZ)V + */ +JNIEXPORT void JNICALL Java_com_caoccao_javet_interop_NodeNative_setStopping + (JNIEnv *, jobject, jlong, jboolean); + #ifdef __cplusplus } #endif diff --git a/cpp/jni/com_caoccao_javet_interop_V8Native.h b/cpp/jni/com_caoccao_javet_interop_V8Native.h index fd6ce4122..2670579a3 100644 --- a/cpp/jni/com_caoccao_javet_interop_V8Native.h +++ b/cpp/jni/com_caoccao_javet_interop_V8Native.h @@ -386,10 +386,10 @@ JNIEXPORT jlongArray JNICALL Java_com_caoccao_javet_interop_V8Native_getInternal /* * Class: com_caoccao_javet_interop_V8Native * Method: getV8HeapSpaceStatistics - * Signature: (JI)Ljava/lang/Object; + * Signature: (JLjava/lang/Object;)Ljava/lang/Object; */ JNIEXPORT jobject JNICALL Java_com_caoccao_javet_interop_V8Native_getV8HeapSpaceStatistics - (JNIEnv *, jobject, jlong, jint); + (JNIEnv *, jobject, jlong, jobject); /* * Class: com_caoccao_javet_interop_V8Native @@ -447,14 +447,6 @@ JNIEXPORT jboolean JNICALL Java_com_caoccao_javet_interop_V8Native_hasPendingMes JNIEXPORT jboolean JNICALL Java_com_caoccao_javet_interop_V8Native_hasScheduledException (JNIEnv *, jobject, jlong); -/* - * Class: com_caoccao_javet_interop_V8Native - * Method: idleNotificationDeadline - * Signature: (JJ)V - */ -JNIEXPORT void JNICALL Java_com_caoccao_javet_interop_V8Native_idleNotificationDeadline - (JNIEnv *, jobject, jlong, jlong); - /* * Class: com_caoccao_javet_interop_V8Native * Method: integerObjectCreate @@ -1231,6 +1223,14 @@ JNIEXPORT void JNICALL Java_com_caoccao_javet_interop_V8Native_registerV8Runtime JNIEXPORT void JNICALL Java_com_caoccao_javet_interop_V8Native_removeJNIGlobalRef (JNIEnv *, jobject, jlong); +/* + * Class: com_caoccao_javet_interop_V8Native + * Method: removeRawPointer + * Signature: (JI)V + */ +JNIEXPORT void JNICALL Java_com_caoccao_javet_interop_V8Native_removeRawPointer + (JNIEnv *, jobject, jlong, jint); + /* * Class: com_caoccao_javet_interop_V8Native * Method: removeReferenceHandle diff --git a/cpp/jni/javet_converter.cpp b/cpp/jni/javet_converter.cpp index 677fbdec3..c22b8edd7 100644 --- a/cpp/jni/javet_converter.cpp +++ b/cpp/jni/javet_converter.cpp @@ -1124,7 +1124,9 @@ namespace Javet { const jboolean mIsWASM, const jboolean mIsModule) noexcept { return std::make_unique( +#ifdef ENABLE_NODE v8Context->GetIsolate(), +#endif ToV8String(jniEnv, v8Context, mResourceName), (int)mResourceLineOffset, (int)mResourceColumnOffset, diff --git a/cpp/jni/javet_enums.h b/cpp/jni/javet_enums.h index c371a48c8..180ff962c 100644 --- a/cpp/jni/javet_enums.h +++ b/cpp/jni/javet_enums.h @@ -26,6 +26,14 @@ namespace Javet { }; }; + namespace RawPointerType { + enum RawPointerType { + HeapStatisticsContainer = 1, + HeapSpaceStatisticsContainer = 2, + Invalid = 0, + }; + } + namespace V8AwaitMode { enum V8AwaitMode { RunNoWait = 2, diff --git a/cpp/jni/javet_jni_core_node.cpp b/cpp/jni/javet_jni_core_node.cpp index 8d3dab988..d0013b05f 100644 --- a/cpp/jni/javet_jni_core_node.cpp +++ b/cpp/jni/javet_jni_core_node.cpp @@ -24,3 +24,16 @@ JNIEXPORT jboolean JNICALL Java_com_caoccao_javet_interop_NodeNative_await return (jboolean)v8Runtime->Await(umAwaitMode); } +#ifdef ENABLE_NODE +JNIEXPORT jboolean JNICALL Java_com_caoccao_javet_interop_NodeNative_isStopping +(JNIEnv* jniEnv, jobject caller, jlong v8RuntimeHandle) { + auto v8Runtime = Javet::V8Runtime::FromHandle(v8RuntimeHandle); + return v8Runtime->IsStopping(); +} + +JNIEXPORT void JNICALL Java_com_caoccao_javet_interop_NodeNative_setStopping +(JNIEnv* jniEnv, jobject caller, jlong v8RuntimeHandle, jboolean stopping) { + auto v8Runtime = Javet::V8Runtime::FromHandle(v8RuntimeHandle); + v8Runtime->SetStopping(stopping); +} +#endif diff --git a/cpp/jni/javet_jni_core_v8.cpp b/cpp/jni/javet_jni_core_v8.cpp index 77d7f0dc6..ea455d5d9 100644 --- a/cpp/jni/javet_jni_core_v8.cpp +++ b/cpp/jni/javet_jni_core_v8.cpp @@ -17,11 +17,11 @@ #include "javet_jni.h" -/* - * Development Guide: - * 1. Omitting namespace is not recommended in this project. - * 2. Methods are expected to be sorted alphabatically except JNI_OnLoad. - */ + /* + * Development Guide: + * 1. Omitting namespace is not recommended in this project. + * 2. Methods are expected to be sorted alphabatically except JNI_OnLoad. + */ JNIEXPORT void JNICALL Java_com_caoccao_javet_interop_V8Native_allowCodeGenerationFromStrings (JNIEnv* jniEnv, jobject caller, jlong v8RuntimeHandle, jboolean allow) { @@ -145,7 +145,7 @@ JNIEXPORT jlongArray JNICALL Java_com_caoccao_javet_interop_V8Native_getInternal } JNIEXPORT jobject JNICALL Java_com_caoccao_javet_interop_V8Native_getV8HeapSpaceStatistics -(JNIEnv* jniEnv, jobject caller, jlong v8RuntimeHandle, jint allocationSpace) { +(JNIEnv* jniEnv, jobject caller, jlong v8RuntimeHandle, jobject allocationSpace) { auto v8Runtime = Javet::V8Runtime::FromHandle(v8RuntimeHandle); return Javet::Monitor::GetHeapSpaceStatistics(jniEnv, v8Runtime->v8Isolate, allocationSpace); } @@ -232,14 +232,6 @@ JNIEXPORT jboolean JNICALL Java_com_caoccao_javet_interop_V8Native_hasInternalTy return false; } -JNIEXPORT void JNICALL Java_com_caoccao_javet_interop_V8Native_idleNotificationDeadline -(JNIEnv* jniEnv, jobject caller, jlong v8RuntimeHandle, jlong deadlineInMillis) { - if (deadlineInMillis > 0) { - RUNTIME_HANDLES_TO_OBJECTS_WITH_SCOPE(v8RuntimeHandle); - v8Context->GetIsolate()->IdleNotificationDeadline(((long)deadlineInMillis) / 1000.0); - } -} - JNIEXPORT jboolean JNICALL Java_com_caoccao_javet_interop_V8Native_isDead (JNIEnv* jniEnv, jobject caller, jlong v8RuntimeHandle) { auto v8Runtime = Javet::V8Runtime::FromHandle(v8RuntimeHandle); @@ -304,6 +296,21 @@ JNIEXPORT void JNICALL Java_com_caoccao_javet_interop_V8Native_removeJNIGlobalRe INCREASE_COUNTER(Javet::Monitor::CounterType::DeleteGlobalRef); } +JNIEXPORT void JNICALL Java_com_caoccao_javet_interop_V8Native_removeRawPointer +(JNIEnv* jniEnv, jobject caller, jlong handle, jint rawPointerTypeId) { + using namespace Javet::Enums::RawPointerType; + switch (rawPointerTypeId) { + case HeapStatisticsContainer: + Javet::Monitor::RemoveHeapStatisticsContainer(handle); + break; + case HeapSpaceStatisticsContainer: + Javet::Monitor::RemoveHeapSpaceStatisticsContainer(handle); + break; + default: + break; + } +} + JNIEXPORT void JNICALL Java_com_caoccao_javet_interop_V8Native_removeReferenceHandle (JNIEnv* jniEnv, jobject caller, jlong v8RuntimeHandle, jlong referenceHandle, jint referenceType) { auto v8Runtime = Javet::V8Runtime::FromHandle(v8RuntimeHandle); diff --git a/cpp/jni/javet_monitor.cpp b/cpp/jni/javet_monitor.cpp index b9920dd9d..b8902d15e 100644 --- a/cpp/jni/javet_monitor.cpp +++ b/cpp/jni/javet_monitor.cpp @@ -21,9 +21,58 @@ namespace Javet { namespace Monitor { + struct HeapSpaceStatisticsContainer { + jobject allocationSpace; + jobject completableFuture; + + HeapSpaceStatisticsContainer(JNIEnv* jniEnv, jobject completableFuture, jobject allocationSpace) noexcept { + this->allocationSpace = jniEnv->NewGlobalRef(allocationSpace); + INCREASE_COUNTER(Javet::Monitor::CounterType::NewGlobalRef); + this->completableFuture = jniEnv->NewGlobalRef(completableFuture); + INCREASE_COUNTER(Javet::Monitor::CounterType::NewGlobalRef); + } + + ~HeapSpaceStatisticsContainer() { + FETCH_JNI_ENV(GlobalJavaVM); + jniEnv->CallVoidMethod(completableFuture, jmethodIDV8StatisticsFutureSetHandle, 0); + jniEnv->DeleteGlobalRef(allocationSpace); + INCREASE_COUNTER(Javet::Monitor::CounterType::DeleteGlobalRef); + jniEnv->DeleteGlobalRef(completableFuture); + INCREASE_COUNTER(Javet::Monitor::CounterType::DeleteGlobalRef); + } + }; + + struct HeapStatisticsContainer { + jobject completableFuture; + + HeapStatisticsContainer(JNIEnv* jniEnv, jobject completableFuture) noexcept { + this->completableFuture = jniEnv->NewGlobalRef(completableFuture); + INCREASE_COUNTER(Javet::Monitor::CounterType::NewGlobalRef); + } + + ~HeapStatisticsContainer() { + FETCH_JNI_ENV(GlobalJavaVM); + jniEnv->CallVoidMethod(completableFuture, jmethodIDV8StatisticsFutureSetHandle, 0); + jniEnv->DeleteGlobalRef(completableFuture); + INCREASE_COUNTER(Javet::Monitor::CounterType::DeleteGlobalRef); + } + }; + void Initialize(JNIEnv* jniEnv) noexcept { + jclassV8AllocationSpace = FIND_CLASS(jniEnv, "com/caoccao/javet/enums/V8AllocationSpace"); + jmethodIDV8AllocationSpaceGetIndex = jniEnv->GetMethodID(jclassV8AllocationSpace, "getIndex", "()I"); + + jclassV8StatisticsFuture = FIND_CLASS(jniEnv, "com/caoccao/javet/interop/monitoring/V8StatisticsFuture"); + jmethodIDV8StatisticsFutureConstructor = jniEnv->GetMethodID(jclassV8StatisticsFuture, "", "(I)V"); + jmethodIDV8StatisticsFutureComplete = jniEnv->GetMethodID(jclassV8StatisticsFuture, "complete", "(Ljava/lang/Object;)Z"); + jmethodIDV8StatisticsFutureSetHandle = jniEnv->GetMethodID(jclassV8StatisticsFuture, "setHandle", "(J)V"); + jclassV8HeapSpaceStatistics = FIND_CLASS(jniEnv, "com/caoccao/javet/interop/monitoring/V8HeapSpaceStatistics"); jmethodIDV8HeapSpaceStatisticsConstructor = jniEnv->GetMethodID(jclassV8HeapSpaceStatistics, "", "(Ljava/lang/String;JJJJ)V"); + jmethodIDV8HeapSpaceStatisticsSetAllocationSpace = jniEnv->GetMethodID( + jclassV8HeapSpaceStatistics, + "setAllocationSpace", + "(Lcom/caoccao/javet/enums/V8AllocationSpace;)Lcom/caoccao/javet/interop/monitoring/V8HeapSpaceStatistics;"); jclassV8HeapStatistics = FIND_CLASS(jniEnv, "com/caoccao/javet/interop/monitoring/V8HeapStatistics"); jmethodIDV8HeapStatisticsConstructor = jniEnv->GetMethodID(jclassV8HeapStatistics, "", "(JJJJJJJJJJJJJJ)V"); @@ -35,23 +84,69 @@ namespace Javet { jobject GetHeapSpaceStatistics( JNIEnv* jniEnv, v8::Isolate* v8Isolate, - const jint allocationSpaceIndex) noexcept { + const jobject jAllocationSpace) noexcept { + jobject jFuture = jniEnv->NewObject( + jclassV8StatisticsFuture, + jmethodIDV8StatisticsFutureConstructor, + (jint)Javet::Enums::RawPointerType::HeapSpaceStatisticsContainer); + auto containerPointer = new HeapSpaceStatisticsContainer(jniEnv, jFuture, jAllocationSpace); + INCREASE_COUNTER(Javet::Monitor::CounterType::New); + jniEnv->CallVoidMethod(jFuture, jmethodIDV8StatisticsFutureSetHandle, TO_JAVA_LONG(containerPointer)); + if (v8Isolate->IsInUse()) { + v8Isolate->RequestInterrupt(GetHeapSpaceStatisticsCallback, containerPointer); + } + else { + auto v8Locker = v8::Locker(v8Isolate); + GetHeapSpaceStatisticsCallback(v8Isolate, containerPointer); + } + return jFuture; + } + + void GetHeapSpaceStatisticsCallback(v8::Isolate* v8Isolate, void* data) noexcept { + FETCH_JNI_ENV(GlobalJavaVM); v8::HeapSpaceStatistics heapSpaceStatistics; - v8Isolate->GetHeapSpaceStatistics(&heapSpaceStatistics, static_cast(allocationSpaceIndex)); - return jniEnv->NewObject(jclassV8HeapSpaceStatistics, jmethodIDV8HeapSpaceStatisticsConstructor, + auto containerPointer = static_cast(data); + auto index = jniEnv->CallIntMethod(containerPointer->allocationSpace, jmethodIDV8AllocationSpaceGetIndex); + v8Isolate->GetHeapSpaceStatistics(&heapSpaceStatistics, static_cast(index)); + auto jHeapSpaceStatistics = jniEnv->NewObject(jclassV8HeapSpaceStatistics, jmethodIDV8HeapSpaceStatisticsConstructor, Javet::Converter::ToJavaString(jniEnv, heapSpaceStatistics.space_name()), static_cast(heapSpaceStatistics.physical_space_size()), static_cast(heapSpaceStatistics.space_available_size()), static_cast(heapSpaceStatistics.space_size()), static_cast(heapSpaceStatistics.space_used_size())); + jniEnv->CallObjectMethod(jHeapSpaceStatistics, jmethodIDV8HeapSpaceStatisticsSetAllocationSpace, containerPointer->allocationSpace); + jniEnv->CallBooleanMethod(containerPointer->completableFuture, jmethodIDV8StatisticsFutureComplete, jHeapSpaceStatistics); + jniEnv->DeleteLocalRef(jHeapSpaceStatistics); + delete containerPointer; + INCREASE_COUNTER(Javet::Monitor::CounterType::Delete); } jobject GetHeapStatistics( JNIEnv* jniEnv, v8::Isolate* v8Isolate) noexcept { + jobject jFuture = jniEnv->NewObject( + jclassV8StatisticsFuture, + jmethodIDV8StatisticsFutureConstructor, + (jint)Javet::Enums::RawPointerType::HeapStatisticsContainer); + auto containerPointer = new HeapStatisticsContainer(jniEnv, jFuture); + INCREASE_COUNTER(Javet::Monitor::CounterType::New); + jniEnv->CallVoidMethod(jFuture, jmethodIDV8StatisticsFutureSetHandle, TO_JAVA_LONG(containerPointer)); + if (v8Isolate->IsInUse()) { + v8Isolate->RequestInterrupt(GetHeapStatisticsCallback, containerPointer); + } + else { + auto v8Locker = v8::Locker(v8Isolate); + GetHeapStatisticsCallback(v8Isolate, containerPointer); + } + return jFuture; + } + + void GetHeapStatisticsCallback(v8::Isolate* v8Isolate, void* data) noexcept { + FETCH_JNI_ENV(GlobalJavaVM); v8::HeapStatistics heapStatistics; + auto containerPointer = static_cast(data); v8Isolate->GetHeapStatistics(&heapStatistics); - return jniEnv->NewObject(jclassV8HeapStatistics, jmethodIDV8HeapStatisticsConstructor, + auto jHeapStatistics = jniEnv->NewObject(jclassV8HeapStatistics, jmethodIDV8HeapStatisticsConstructor, static_cast(heapStatistics.does_zap_garbage()), static_cast(heapStatistics.external_memory()), static_cast(heapStatistics.heap_size_limit()), @@ -66,6 +161,10 @@ namespace Javet { static_cast(heapStatistics.total_physical_size()), static_cast(heapStatistics.used_global_handles_size()), static_cast(heapStatistics.used_heap_size())); + jniEnv->CallBooleanMethod(containerPointer->completableFuture, jmethodIDV8StatisticsFutureComplete, jHeapStatistics); + jniEnv->DeleteLocalRef(jHeapStatistics); + delete containerPointer; + INCREASE_COUNTER(Javet::Monitor::CounterType::Delete); } jobject GetV8SharedMemoryStatistics(JNIEnv* jniEnv) noexcept { @@ -77,6 +176,18 @@ namespace Javet { static_cast(sharedMemoryStatistics.read_only_space_used_size())); } + void RemoveHeapSpaceStatisticsContainer(jlong handle) noexcept { + auto containerPointer = reinterpret_cast(handle); + delete containerPointer; + INCREASE_COUNTER(Javet::Monitor::CounterType::Delete); + } + + void RemoveHeapStatisticsContainer(jlong handle) noexcept { + auto containerPointer = reinterpret_cast(handle); + delete containerPointer; + INCREASE_COUNTER(Javet::Monitor::CounterType::Delete); + } + #ifdef ENABLE_MONITOR JavetNativeMonitor::JavetNativeMonitor() noexcept { Clear(); diff --git a/cpp/jni/javet_monitor.h b/cpp/jni/javet_monitor.h index f6d190382..dc716dc83 100644 --- a/cpp/jni/javet_monitor.h +++ b/cpp/jni/javet_monitor.h @@ -29,8 +29,17 @@ namespace Javet { namespace Monitor { + static jclass jclassV8AllocationSpace; + static jmethodID jmethodIDV8AllocationSpaceGetIndex; + + static jclass jclassV8StatisticsFuture; + static jmethodID jmethodIDV8StatisticsFutureConstructor; + static jmethodID jmethodIDV8StatisticsFutureComplete; + static jmethodID jmethodIDV8StatisticsFutureSetHandle; + static jclass jclassV8HeapSpaceStatistics; static jmethodID jmethodIDV8HeapSpaceStatisticsConstructor; + static jmethodID jmethodIDV8HeapSpaceStatisticsSetAllocationSpace; static jclass jclassV8HeapStatistics; static jmethodID jmethodIDV8HeapStatisticsConstructor; @@ -43,31 +52,38 @@ namespace Javet { jobject GetHeapSpaceStatistics( JNIEnv* jniEnv, v8::Isolate* v8Isolate, - const jint allocationSpaceIndex) noexcept; + const jobject allocationSpaceIndex) noexcept; + void GetHeapSpaceStatisticsCallback(v8::Isolate* v8Isolate, void* data) noexcept; jobject GetHeapStatistics( JNIEnv* jniEnv, v8::Isolate* v8Isolate) noexcept; + void GetHeapStatisticsCallback(v8::Isolate* v8Isolate, void* data) noexcept; jobject GetV8SharedMemoryStatistics(JNIEnv* jniEnv) noexcept; + void RemoveHeapSpaceStatisticsContainer(jlong handle) noexcept; + void RemoveHeapStatisticsContainer(jlong handle) noexcept; + #ifdef ENABLE_MONITOR namespace CounterType { enum CounterType { Reserved = 0, - NewGlobalRef = 1, - NewWeakCallbackReference = 2, - NewJavetCallbackContextReference = 3, - NewPersistentReference = 4, - NewPersistentCallbackContextReference = 5, - NewV8Runtime = 6, - DeleteGlobalRef = 7, - DeleteWeakCallbackReference = 8, - DeleteJavetCallbackContextReference = 9, - DeletePersistentReference = 10, - DeletePersistentCallbackContextReference = 11, - DeleteV8Runtime = 12, - Max = 13, + New = 1, + NewGlobalRef = 2, + NewWeakCallbackReference = 3, + NewJavetCallbackContextReference = 4, + NewPersistentReference = 5, + NewPersistentCallbackContextReference = 6, + NewV8Runtime = 7, + Delete = 8, + DeleteGlobalRef = 9, + DeleteWeakCallbackReference = 10, + DeleteJavetCallbackContextReference = 11, + DeletePersistentReference = 12, + DeletePersistentCallbackContextReference = 13, + DeleteV8Runtime = 14, + Max = 15, }; }; diff --git a/cpp/jni/javet_resource_node.rc b/cpp/jni/javet_resource_node.rc index 9943cb1ab..9d10ecef8 100644 --- a/cpp/jni/javet_resource_node.rc +++ b/cpp/jni/javet_resource_node.rc @@ -61,8 +61,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,1,3,0 - PRODUCTVERSION 3,1,3,0 + FILEVERSION 3,1,4,0 + PRODUCTVERSION 3,1,4,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -79,12 +79,12 @@ BEGIN BEGIN VALUE "CompanyName", "caoccao.com" VALUE "FileDescription", "caoccao.com" - VALUE "FileVersion", "3.1.3.0" - VALUE "InternalName", "libjavet-node-windows-x86_64.v.3.1.3.dll" + VALUE "FileVersion", "3.1.4.0" + VALUE "InternalName", "libjavet-node-windows-x86_64.v.3.1.4.dll" VALUE "LegalCopyright", "Copyright (c) 2021-2024." - VALUE "OriginalFilename", "libjavet-node-windows-x86_64.v.3.1.3.dll" + VALUE "OriginalFilename", "libjavet-node-windows-x86_64.v.3.1.4.dll" VALUE "ProductName", "Javet Windows" - VALUE "ProductVersion", "3.1.3.0" + VALUE "ProductVersion", "3.1.4.0" END END BLOCK "VarFileInfo" diff --git a/cpp/jni/javet_resource_v8.rc b/cpp/jni/javet_resource_v8.rc index 51cfe3069..531e66bb4 100644 --- a/cpp/jni/javet_resource_v8.rc +++ b/cpp/jni/javet_resource_v8.rc @@ -61,8 +61,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,1,3,0 - PRODUCTVERSION 3,1,3,0 + FILEVERSION 3,1,4,0 + PRODUCTVERSION 3,1,4,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -79,12 +79,12 @@ BEGIN BEGIN VALUE "CompanyName", "caoccao.com" VALUE "FileDescription", "caoccao.com" - VALUE "FileVersion", "3.1.3.0" - VALUE "InternalName", "libjavet-v8-windows-x86_64.v.3.1.3.dll" + VALUE "FileVersion", "3.1.4.0" + VALUE "InternalName", "libjavet-v8-windows-x86_64.v.3.1.4.dll" VALUE "LegalCopyright", "Copyright (c) 2021-2024." - VALUE "OriginalFilename", "libjavet-v8-windows-x86_64.v.3.1.3.dll" + VALUE "OriginalFilename", "libjavet-v8-windows-x86_64.v.3.1.4.dll" VALUE "ProductName", "Javet Windows" - VALUE "ProductVersion", "3.1.3.0" + VALUE "ProductVersion", "3.1.4.0" END END BLOCK "VarFileInfo" diff --git a/cpp/jni/javet_v8_internal.h b/cpp/jni/javet_v8_internal.h index bd57b261f..5a43f357f 100644 --- a/cpp/jni/javet_v8_internal.h +++ b/cpp/jni/javet_v8_internal.h @@ -23,6 +23,7 @@ * otherwise compilation errors will take place. */ +#pragma warning(disable: 4065) #pragma warning(disable: 4146) #pragma warning(disable: 4244) #pragma warning(disable: 4267) @@ -46,6 +47,8 @@ #include #include +#pragma warning(default: 4065) +#pragma warning(default: 4146) #pragma warning(default: 4244) #pragma warning(default: 4267) #pragma warning(default: 4291) diff --git a/cpp/jni/javet_v8_runtime.cpp b/cpp/jni/javet_v8_runtime.cpp index 3b5ee72ab..abedeff67 100644 --- a/cpp/jni/javet_v8_runtime.cpp +++ b/cpp/jni/javet_v8_runtime.cpp @@ -75,7 +75,7 @@ namespace Javet { V8Runtime::V8Runtime( node::MultiIsolatePlatform* v8PlatformPointer, std::shared_ptr nodeArrayBufferAllocator) noexcept - : nodeEnvironment(nullptr, node::FreeEnvironment), nodeIsolateData(nullptr, node::FreeIsolateData), uvLoop(), + : nodeEnvironment(nullptr, node::FreeEnvironment), nodeIsolateData(nullptr, node::FreeIsolateData), nodeStopping(false), uvLoop(), #else V8Runtime::V8Runtime( V8Platform* v8PlatformPointer, @@ -94,9 +94,9 @@ namespace Javet { this->v8PlatformPointer = v8PlatformPointer; } +#ifdef ENABLE_NODE bool V8Runtime::Await(const Javet::Enums::V8AwaitMode::V8AwaitMode awaitMode) noexcept { bool hasMoreTasks = false; -#ifdef ENABLE_NODE using namespace Javet::Enums::V8AwaitMode; uv_run_mode uvRunMode; switch (awaitMode) @@ -136,12 +136,15 @@ namespace Javet { hasMoreTasks = uv_loop_alive(&uvLoop); } } while (awaitMode == RunTillNoMoreTasks && hasMoreTasks); + return hasMoreTasks; + } #else + bool V8Runtime::Await(const Javet::Enums::V8AwaitMode::V8AwaitMode awaitMode) noexcept { // It has to be v8::platform::MessageLoopBehavior::kDoNotWait, otherwise it blockes; v8::platform::PumpMessageLoop(v8PlatformPointer, v8Isolate); -#endif - return hasMoreTasks; + return false; } +#endif void V8Runtime::CloseV8Context() noexcept { v8Locker.reset(); @@ -155,7 +158,7 @@ namespace Javet { } #ifdef ENABLE_NODE int errorCode = 0; - { + if (!IsStopping()) { auto internalV8Locker = GetUniqueV8Locker(); auto v8IsolateScope = GetV8IsolateScope(); V8HandleScope v8HandleScope(v8Isolate); diff --git a/cpp/jni/javet_v8_runtime.h b/cpp/jni/javet_v8_runtime.h index fcb65b411..b13df29af 100644 --- a/cpp/jni/javet_v8_runtime.h +++ b/cpp/jni/javet_v8_runtime.h @@ -135,6 +135,12 @@ namespace Javet { return (bool)v8Locker; } +#ifdef ENABLE_NODE + inline bool IsStopping() const noexcept { + return nodeStopping.load(); + } +#endif + inline void Lock() noexcept { v8Locker.reset(new v8::Locker(v8Isolate)); } @@ -157,6 +163,12 @@ namespace Javet { const V8LocalContext& v8Context, const V8LocalValue& v8Value) noexcept; +#ifdef ENABLE_NODE + inline void SetStopping(bool stopping) noexcept { + nodeStopping.store(stopping); + } +#endif + inline void Unlock() noexcept { v8Locker.reset(); } @@ -173,6 +185,7 @@ namespace Javet { std::shared_ptr nodeArrayBufferAllocator; std::unique_ptr nodeEnvironment; std::unique_ptr nodeIsolateData; + std::atomic_bool nodeStopping; uv_loop_t uvLoop; #else std::shared_ptr v8ArrayBufferAllocator; diff --git a/docker/android/base.Dockerfile b/docker/android/base.Dockerfile index e0790bb3b..e3b322e7a 100644 --- a/docker/android/base.Dockerfile +++ b/docker/android/base.Dockerfile @@ -13,9 +13,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -# Usage: docker build -t sjtucaocao/javet-android:3.1.3 -f docker/android/base.Dockerfile . +# Usage: docker build -t sjtucaocao/javet-android:3.1.4 -f docker/android/base.Dockerfile . -ARG JAVET_V8_VERSION=12.6.228.13 +ARG JAVET_V8_VERSION=12.7.224.16 FROM ubuntu:20.04 WORKDIR / diff --git a/docker/android/build.Dockerfile b/docker/android/build.Dockerfile index dfac945f4..a7e415a3c 100644 --- a/docker/android/build.Dockerfile +++ b/docker/android/build.Dockerfile @@ -15,7 +15,7 @@ # Usage: docker build -t javet-android:local -f docker/android/build.Dockerfile . -FROM sjtucaocao/javet-android:3.1.3 +FROM sjtucaocao/javet-android:3.1.4 WORKDIR / # Copy Javet diff --git a/docker/linux-arm64/base_all_in_one.Dockerfile b/docker/linux-arm64/base_all_in_one.Dockerfile index 381b5857f..dfca3ee42 100644 --- a/docker/linux-arm64/base_all_in_one.Dockerfile +++ b/docker/linux-arm64/base_all_in_one.Dockerfile @@ -13,10 +13,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -# Usage: docker build -t sjtucaocao/javet-arm64:3.1.3 -f docker/linux-arm64/base_all_in_one.Dockerfile . +# Usage: docker build -t sjtucaocao/javet-arm64:3.1.4 -f docker/linux-arm64/base_all_in_one.Dockerfile . ARG JAVET_NODE_VERSION=18.15.0 -ARG JAVET_V8_VERSION=12.6.228.13 +ARG JAVET_V8_VERSION=12.7.224.16 FROM ubuntu:20.04 WORKDIR / diff --git a/docker/linux-arm64/base_gradle.Dockerfile b/docker/linux-arm64/base_gradle.Dockerfile index cc7b253d5..460d6a648 100644 --- a/docker/linux-arm64/base_gradle.Dockerfile +++ b/docker/linux-arm64/base_gradle.Dockerfile @@ -14,7 +14,7 @@ # limitations under the License. # Usage: docker build \ -# -t sjtucaocao/javet:arm64-3.1.3 \ +# -t sjtucaocao/javet:arm64-3.1.4 \ # --build-arg JAVET_REPO=sjtucaocao/javet \ # -f docker/linux-arm64/base_gradle.Dockerfile . diff --git a/docker/linux-arm64/base_v8.Dockerfile b/docker/linux-arm64/base_v8.Dockerfile index 97eecc1e5..11dcd4a8d 100644 --- a/docker/linux-arm64/base_v8.Dockerfile +++ b/docker/linux-arm64/base_v8.Dockerfile @@ -14,13 +14,13 @@ # limitations under the License. # Usage: docker build \ -# -t sjtucaocao/javet:arm64-base-v8_12.6.228.13 \ +# -t sjtucaocao/javet:arm64-base-v8_12.7.224.16 \ # --build-arg JAVET_REPO=sjtucaocao/javet \ -# --build-arg JAVET_V8_VERSION=12.6.228.13 \ +# --build-arg JAVET_V8_VERSION=12.7.224.16 \ # -f docker/linux-arm64/base_v8.Dockerfile . ARG JAVET_REPO=sjtucaocao/javet -ARG JAVET_V8_VERSION=12.6.228.13 +ARG JAVET_V8_VERSION=12.7.224.16 FROM ${JAVET_REPO}:arm64-base-jvm diff --git a/docker/linux-arm64/build_artifact.Dockerfile b/docker/linux-arm64/build_artifact.Dockerfile index 9315820d9..3b16edbd1 100644 --- a/docker/linux-arm64/build_artifact.Dockerfile +++ b/docker/linux-arm64/build_artifact.Dockerfile @@ -18,13 +18,13 @@ # --build-arg JAVET_REPO=sjtucaocao/javet \ # --build-arg JAVET_NODE_VERSION=18.12.1 \ # --build-arg JAVET_V8_VERSION=10.8.168.20 \ -# --build-arg JAVET_VERSION=3.1.3 \ +# --build-arg JAVET_VERSION=3.1.4 \ # -f docker/linux-arm64/build_artifact.Dockerfile . ARG JAVET_REPO=sjtucaocao/javet ARG JAVET_NODE_VERSION=18.12.1 ARG JAVET_V8_VERSION=10.8.168.20 -ARG JAVET_VERSION=3.1.3 +ARG JAVET_VERSION=3.1.4 FROM ${JAVET_REPO}:arm64-base-node_${JAVET_NODE_VERSION} as base-node diff --git a/docker/linux-x86_64/base_all_in_one.Dockerfile b/docker/linux-x86_64/base_all_in_one.Dockerfile index 4a7ff17d2..a4efe69b9 100644 --- a/docker/linux-x86_64/base_all_in_one.Dockerfile +++ b/docker/linux-x86_64/base_all_in_one.Dockerfile @@ -13,13 +13,13 @@ # See the License for the specific language governing permissions and # limitations under the License. -# Usage: docker build -t sjtucaocao/javet:3.1.3 -f docker/linux-x86_64/base_all_in_one.Dockerfile . +# Usage: docker build -t sjtucaocao/javet:3.1.4 -f docker/linux-x86_64/base_all_in_one.Dockerfile . FROM ubuntu:20.04 WORKDIR / -ARG JAVET_NODE_VERSION=20.14.0 -ARG JAVET_V8_VERSION=12.6.228.13 +ARG JAVET_NODE_VERSION=20.15.1 +ARG JAVET_V8_VERSION=12.7.224.16 # Update Ubuntu ENV DEBIAN_FRONTEND=noninteractive diff --git a/docker/linux-x86_64/base_gradle.Dockerfile b/docker/linux-x86_64/base_gradle.Dockerfile index 64f6cdc33..37b0ce6fe 100644 --- a/docker/linux-x86_64/base_gradle.Dockerfile +++ b/docker/linux-x86_64/base_gradle.Dockerfile @@ -14,7 +14,7 @@ # limitations under the License. # Usage: docker build \ -# -t sjtucaocao/javet:x86_64-3.1.3 \ +# -t sjtucaocao/javet:x86_64-3.1.4 \ # --build-arg JAVET_REPO=sjtucaocao/javet \ # -f docker/linux-x86_64/base_gradle.Dockerfile . diff --git a/docker/linux-x86_64/base_node.Dockerfile b/docker/linux-x86_64/base_node.Dockerfile index dd94915d7..b4f0a2b4c 100644 --- a/docker/linux-x86_64/base_node.Dockerfile +++ b/docker/linux-x86_64/base_node.Dockerfile @@ -14,13 +14,13 @@ # limitations under the License. # Usage: docker build \ -# -t sjtucaocao/javet:x86_64-base-node_20.14.0 \ +# -t sjtucaocao/javet:x86_64-base-node_20.15.1 \ # --build-arg JAVET_REPO=sjtucaocao/javet \ -# --build-arg JAVET_NODE_VERSION=20.14.0 \ +# --build-arg JAVET_NODE_VERSION=20.15.1 \ # -f docker/linux-x86_64/base_node.Dockerfile . ARG JAVET_REPO=sjtucaocao/javet -ARG JAVET_NODE_VERSION=20.14.0 +ARG JAVET_NODE_VERSION=20.15.1 FROM ${JAVET_REPO}:x86_64-base-jvm diff --git a/docker/linux-x86_64/base_v8.Dockerfile b/docker/linux-x86_64/base_v8.Dockerfile index b1ff99b8e..b3dca7514 100644 --- a/docker/linux-x86_64/base_v8.Dockerfile +++ b/docker/linux-x86_64/base_v8.Dockerfile @@ -14,13 +14,13 @@ # limitations under the License. # Usage: docker build \ -# -t sjtucaocao/javet:x86_64-base-v8_12.6.228.13 \ +# -t sjtucaocao/javet:x86_64-base-v8_12.7.224.16 \ # --build-arg JAVET_REPO=sjtucaocao/javet \ -# --build-arg JAVET_V8_VERSION=12.6.228.13 \ +# --build-arg JAVET_V8_VERSION=12.7.224.16 \ # -f docker/linux-x86_64/base_v8.Dockerfile . ARG JAVET_REPO=sjtucaocao/javet -ARG JAVET_V8_VERSION=12.6.228.13 +ARG JAVET_V8_VERSION=12.7.224.16 FROM ${JAVET_REPO}:x86_64-base-jvm diff --git a/docker/linux-x86_64/build.env b/docker/linux-x86_64/build.env index a12061a2f..e69dc65bf 100644 --- a/docker/linux-x86_64/build.env +++ b/docker/linux-x86_64/build.env @@ -1,4 +1,4 @@ JAVET_REPO=sjtucaocao/javet -JAVET_VERSION=3.1.3 -JAVET_V8_VERSION=12.6.228.13 -JAVET_NODE_VERSION=20.14.0 +JAVET_VERSION=3.1.4 +JAVET_V8_VERSION=12.7.224.16 +JAVET_NODE_VERSION=20.15.1 diff --git a/docker/linux-x86_64/build_all_in_one.Dockerfile b/docker/linux-x86_64/build_all_in_one.Dockerfile index 0eb4c519f..934ea5980 100644 --- a/docker/linux-x86_64/build_all_in_one.Dockerfile +++ b/docker/linux-x86_64/build_all_in_one.Dockerfile @@ -15,7 +15,7 @@ # Usage: docker build -t javet:local -f docker/linux-x86_64/build_all_in_one.Dockerfile . -FROM sjtucaocao/javet:3.1.3 +FROM sjtucaocao/javet:3.1.4 WORKDIR / # Copy Javet diff --git a/docker/linux-x86_64/build_artifact.Dockerfile b/docker/linux-x86_64/build_artifact.Dockerfile index 1f38cb3a9..376899eef 100644 --- a/docker/linux-x86_64/build_artifact.Dockerfile +++ b/docker/linux-x86_64/build_artifact.Dockerfile @@ -18,13 +18,13 @@ # --build-arg JAVET_REPO=sjtucaocao/javet \ # --build-arg JAVET_NODE_VERSION=18.12.1 \ # --build-arg JAVET_V8_VERSION=10.8.168.20 \ -# --build-arg JAVET_VERSION=3.1.3 \ +# --build-arg JAVET_VERSION=3.1.4 \ # -f docker/linux-x86_64/build_artifact.Dockerfile . ARG JAVET_REPO=sjtucaocao/javet ARG JAVET_NODE_VERSION=18.12.1 ARG JAVET_V8_VERSION=10.8.168.20 -ARG JAVET_VERSION=3.1.3 +ARG JAVET_VERSION=3.1.4 FROM ${JAVET_REPO}:x86_64-base-node_${JAVET_NODE_VERSION} as base-v8 diff --git a/docker/windows-x86_64/base.Dockerfile b/docker/windows-x86_64/base.Dockerfile index 3900afaf2..a534fb51e 100644 --- a/docker/windows-x86_64/base.Dockerfile +++ b/docker/windows-x86_64/base.Dockerfile @@ -29,10 +29,10 @@ # The following dockerfile has been out of date because it still uses # Visual Studio 2019 Community. Please contact the maintainer if you want an upgrade. -# Usage: docker build -t sjtucaocao/javet-windows:3.1.3 -m 4G -f docker/windows-x86_64/base.Dockerfile . +# Usage: docker build -t sjtucaocao/javet-windows:3.1.4 -m 4G -f docker/windows-x86_64/base.Dockerfile . -ARG JAVET_NODE_VERSION=20.14.0 -ARG JAVET_V8_VERSION=12.6.228.13 +ARG JAVET_NODE_VERSION=20.15.1 +ARG JAVET_V8_VERSION=12.7.224.16 # https://hub.docker.com/_/microsoft-windows FROM mcr.microsoft.com/windows:20H2-amd64 diff --git a/docker/windows-x86_64/build.Dockerfile b/docker/windows-x86_64/build.Dockerfile index 86ef9d90f..59f3c502f 100644 --- a/docker/windows-x86_64/build.Dockerfile +++ b/docker/windows-x86_64/build.Dockerfile @@ -15,7 +15,7 @@ # Usage: docker build -t javet:local -f docker/windows-x86_64/build.Dockerfile . -FROM sjtucaocao/javet-windows:3.1.3 +FROM sjtucaocao/javet-windows:3.1.4 SHELL ["cmd", "/S", "/C"] WORKDIR / diff --git a/docs/_static/documentation_options.js b/docs/_static/documentation_options.js index e5280dd7f..5ba66bfc1 100644 --- a/docs/_static/documentation_options.js +++ b/docs/_static/documentation_options.js @@ -1,5 +1,5 @@ const DOCUMENTATION_OPTIONS = { - VERSION: '3.1.3', + VERSION: '3.1.4', LANGUAGE: 'en, zh-CN', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/conf.py b/docs/conf.py index e0f3f1777..c48402ef2 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -22,7 +22,7 @@ author = 'Sam Cao' # The full version, including alpha/beta/rc tags -release = '3.1.3' +release = '3.1.4' # -- General configuration --------------------------------------------------- diff --git a/docs/development/build.html b/docs/development/build.html index 515017541..cda2f985d 100644 --- a/docs/development/build.html +++ b/docs/development/build.html @@ -6,7 +6,7 @@ - Build Javet - Javet 3.1.3 documentation + Build Javet - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/development/build_javet_from_scratch.html b/docs/development/build_javet_from_scratch.html index b5d98042f..8c88e1b85 100644 --- a/docs/development/build_javet_from_scratch.html +++ b/docs/development/build_javet_from_scratch.html @@ -6,7 +6,7 @@ - Build Javet from Scratch - Javet 3.1.3 documentation + Build Javet from Scratch - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/development/build_javet_with_docker.html b/docs/development/build_javet_with_docker.html index d6c3913d1..b37b0b37d 100644 --- a/docs/development/build_javet_with_docker.html +++ b/docs/development/build_javet_with_docker.html @@ -6,7 +6,7 @@ - Build Javet with Docker - Javet 3.1.3 documentation + Build Javet with Docker - Javet 3.1.4 documentation @@ -125,7 +125,7 @@
@@ -151,7 +151,7 @@
- Javet 3.1.3 documentation + Javet 3.1.4 documentation @@ -250,6 +250,7 @@
  • A dynamic link library (DLL) initialization routine failed
  • Can i18n be Supported?
  • Can I Debug Javet in Chrome DevTools?
  • +
  • Can Node.js Event Loop be Skipped?
  • SIGSEGV at createV8Runtime() in V8 Mode on AWS
  • Why Node.js Crashes When being Closed?
  • @@ -499,7 +500,7 @@

    Linux arm64 Docker Files Deprecated +

    diff --git a/docs/development/debug_with_chrome_developer_tools.html b/docs/development/debug_with_chrome_developer_tools.html index a93c1916a..1b73e6e6d 100644 --- a/docs/development/debug_with_chrome_developer_tools.html +++ b/docs/development/debug_with_chrome_developer_tools.html @@ -6,7 +6,7 @@ - Debug with Chrome Developer Tools - Javet 3.1.3 documentation + Debug with Chrome Developer Tools - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/development/design.html b/docs/development/design.html index 563f88c14..76d0d9e51 100644 --- a/docs/development/design.html +++ b/docs/development/design.html @@ -6,7 +6,7 @@ - Javet Design - Javet 3.1.3 documentation + Javet Design - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/development/index.html b/docs/development/index.html index 0fa833277..88ace5fd1 100644 --- a/docs/development/index.html +++ b/docs/development/index.html @@ -6,7 +6,7 @@ - Development - Javet 3.1.3 documentation + Development - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/development/performance.html b/docs/development/performance.html index 4a7de3e71..c2f9b1929 100644 --- a/docs/development/performance.html +++ b/docs/development/performance.html @@ -6,7 +6,7 @@ - Javet Performance - Javet 3.1.3 documentation + Javet Performance - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/development/test.html b/docs/development/test.html index f75a26b72..dca838b8d 100644 --- a/docs/development/test.html +++ b/docs/development/test.html @@ -6,7 +6,7 @@ - Test Javet - Javet 3.1.3 documentation + Test Javet - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/development/tools.html b/docs/development/tools.html index dd03e6373..adce648f8 100644 --- a/docs/development/tools.html +++ b/docs/development/tools.html @@ -6,7 +6,7 @@ - Development Tools - Javet 3.1.3 documentation + Development Tools - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/faq/background/history_with_j2v8.html b/docs/faq/background/history_with_j2v8.html index f47090ada..8a97362be 100644 --- a/docs/faq/background/history_with_j2v8.html +++ b/docs/faq/background/history_with_j2v8.html @@ -6,7 +6,7 @@ - History with J2V8 - Javet 3.1.3 documentation + History with J2V8 - Javet 3.1.4 documentation @@ -125,7 +125,7 @@
    @@ -151,7 +151,7 @@
    - Javet 3.1.3 documentation + Javet 3.1.4 documentation @@ -250,6 +250,7 @@
  • A dynamic link library (DLL) initialization routine failed
  • Can i18n be Supported?
  • Can I Debug Javet in Chrome DevTools?
  • +
  • Can Node.js Event Loop be Skipped?
  • SIGSEGV at createV8Runtime() in V8 Mode on AWS
  • Why Node.js Crashes When being Closed?
  • @@ -453,7 +454,7 @@

    Why not Deploy J2V8 to Maven Repository? +

    diff --git a/docs/faq/background/index.html b/docs/faq/background/index.html index 522ced310..ebcf633f6 100644 --- a/docs/faq/background/index.html +++ b/docs/faq/background/index.html @@ -6,7 +6,7 @@ - Background - Javet 3.1.3 documentation + Background - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/faq/background/what_is_the_motivation.html b/docs/faq/background/what_is_the_motivation.html index 02f971307..8e2ecb9df 100644 --- a/docs/faq/background/what_is_the_motivation.html +++ b/docs/faq/background/what_is_the_motivation.html @@ -6,7 +6,7 @@ - What is the Motivation? - Javet 3.1.3 documentation + What is the Motivation? - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/faq/development/can_native_image_be_supported.html b/docs/faq/development/can_native_image_be_supported.html index 5bbb79d77..2aa90f7dd 100644 --- a/docs/faq/development/can_native_image_be_supported.html +++ b/docs/faq/development/can_native_image_be_supported.html @@ -6,7 +6,7 @@ - Can Native Image be Supported? - Javet 3.1.3 documentation + Can Native Image be Supported? - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/faq/development/how_to_think_in_javet.html b/docs/faq/development/how_to_think_in_javet.html index ea71a2b13..363f9eac5 100644 --- a/docs/faq/development/how_to_think_in_javet.html +++ b/docs/faq/development/how_to_think_in_javet.html @@ -6,7 +6,7 @@ - How to Think in Javet? - Javet 3.1.3 documentation + How to Think in Javet? - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/faq/development/index.html b/docs/faq/development/index.html index cbe375ab0..54a23b5e5 100644 --- a/docs/faq/development/index.html +++ b/docs/faq/development/index.html @@ -6,7 +6,7 @@ - Development - Javet 3.1.3 documentation + Development - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/faq/development/where_are_es6_api_in_v8_mode.html b/docs/faq/development/where_are_es6_api_in_v8_mode.html index a91a7a827..814404bd4 100644 --- a/docs/faq/development/where_are_es6_api_in_v8_mode.html +++ b/docs/faq/development/where_are_es6_api_in_v8_mode.html @@ -6,7 +6,7 @@ - Where are ES6 API in V8 Mode? - Javet 3.1.3 documentation + Where are ES6 API in V8 Mode? - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/faq/development/where_are_the_examples.html b/docs/faq/development/where_are_the_examples.html index bc09d14f4..8abf1af78 100644 --- a/docs/faq/development/where_are_the_examples.html +++ b/docs/faq/development/where_are_the_examples.html @@ -6,7 +6,7 @@ - Where are the Examples? - Javet 3.1.3 documentation + Where are the Examples? - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/faq/development/why_is_the_inspector_disabled_in_node_js_mode.html b/docs/faq/development/why_is_the_inspector_disabled_in_node_js_mode.html index 721491eee..ec37002c8 100644 --- a/docs/faq/development/why_is_the_inspector_disabled_in_node_js_mode.html +++ b/docs/faq/development/why_is_the_inspector_disabled_in_node_js_mode.html @@ -6,7 +6,7 @@ - Why is the Inspector Disabled in Node.js Mode? - Javet 3.1.3 documentation + Why is the Inspector Disabled in Node.js Mode? - Javet 3.1.4 documentation @@ -125,7 +125,7 @@
    @@ -151,7 +151,7 @@
    - Javet 3.1.3 documentation + Javet 3.1.4 documentation @@ -250,6 +250,7 @@
  • A dynamic link library (DLL) initialization routine failed
  • Can i18n be Supported?
  • Can I Debug Javet in Chrome DevTools?
  • +
  • Can Node.js Event Loop be Skipped?
  • SIGSEGV at createV8Runtime() in V8 Mode on AWS
  • Why Node.js Crashes When being Closed?
  • @@ -365,7 +366,7 @@

    Why is the Inspector Disabled in Node.js Mode? +

    diff --git a/docs/faq/environment/can_javet_support_legacy_linux.html b/docs/faq/environment/can_javet_support_legacy_linux.html index 497507bfa..4e51fac53 100644 --- a/docs/faq/environment/can_javet_support_legacy_linux.html +++ b/docs/faq/environment/can_javet_support_legacy_linux.html @@ -6,7 +6,7 @@ - Can Javet Support Legacy Linux? - Javet 3.1.3 documentation + Can Javet Support Legacy Linux? - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/faq/environment/index.html b/docs/faq/environment/index.html index 4c2d76175..311414186 100644 --- a/docs/faq/environment/index.html +++ b/docs/faq/environment/index.html @@ -6,7 +6,7 @@ - Environment - Javet 3.1.3 documentation + Environment - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/faq/index.html b/docs/faq/index.html index 8bf46c826..cf24e0d53 100644 --- a/docs/faq/index.html +++ b/docs/faq/index.html @@ -6,7 +6,7 @@ - FAQ - Javet 3.1.3 documentation + FAQ - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/faq/troubleshooting/a_dynamic_link_library_dll_initialization_routine_failed.html b/docs/faq/troubleshooting/a_dynamic_link_library_dll_initialization_routine_failed.html index cc59a86b6..ff4ad58bb 100644 --- a/docs/faq/troubleshooting/a_dynamic_link_library_dll_initialization_routine_failed.html +++ b/docs/faq/troubleshooting/a_dynamic_link_library_dll_initialization_routine_failed.html @@ -6,7 +6,7 @@ - A dynamic link library (DLL) initialization routine failed - Javet 3.1.3 documentation + A dynamic link library (DLL) initialization routine failed - Javet 3.1.4 documentation @@ -125,7 +125,7 @@
    @@ -151,7 +151,7 @@
    - Javet 3.1.3 documentation + Javet 3.1.4 documentation @@ -250,6 +250,7 @@
  • A dynamic link library (DLL) initialization routine failed
  • Can i18n be Supported?
  • Can I Debug Javet in Chrome DevTools?
  • +
  • Can Node.js Event Loop be Skipped?
  • SIGSEGV at createV8Runtime() in V8 Mode on AWS
  • Why Node.js Crashes When being Closed?
  • @@ -356,7 +357,7 @@

    A dynamic link library (DLL) initialization routine failed +

    diff --git a/docs/faq/troubleshooting/can_i18n_be_supported.html b/docs/faq/troubleshooting/can_i18n_be_supported.html index 7b51989b3..e8a82b952 100644 --- a/docs/faq/troubleshooting/can_i18n_be_supported.html +++ b/docs/faq/troubleshooting/can_i18n_be_supported.html @@ -6,7 +6,7 @@ - Can i18n be Supported? - Javet 3.1.3 documentation + Can i18n be Supported? - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/faq/troubleshooting/can_i_debug_javet_in_chrome_dev_tools.html b/docs/faq/troubleshooting/can_i_debug_javet_in_chrome_dev_tools.html index 03a1992c6..462ee0104 100644 --- a/docs/faq/troubleshooting/can_i_debug_javet_in_chrome_dev_tools.html +++ b/docs/faq/troubleshooting/can_i_debug_javet_in_chrome_dev_tools.html @@ -3,10 +3,10 @@ - + - Can I Debug Javet in Chrome DevTools? - Javet 3.1.3 documentation + Can I Debug Javet in Chrome DevTools? - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/faq/troubleshooting/can_node_js_event_loop_be_skipped.html b/docs/faq/troubleshooting/can_node_js_event_loop_be_skipped.html new file mode 100644 index 000000000..5c9f52050 --- /dev/null +++ b/docs/faq/troubleshooting/can_node_js_event_loop_be_skipped.html @@ -0,0 +1,375 @@ + + + + + + + + + Can Node.js Event Loop be Skipped? - Javet 3.1.4 documentation + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    +
    +
    +
    + +
    + +
    +
    + +
    +
    +
    + + + + + Back to top + +
    + +
    + +
    + +
    +
    +
    +

    Can Node.js Event Loop be Skipped?

    +

    By default, the Node.js event loop will to be drained before it is closed. Sometimes that causes the Node.js runtime hang forever if there are tasks staying in the queue forever. E.g. setInterval().

    +

    So, how to skip the event loop in this case? Just call nodeRuntime.setStopping(true).

    +

    In the following example, setInterval() will not block the Node.js runtime from being closed.

    +
    try (NodeRuntime nodeRuntime = V8Host.getNodeInstance().createV8Runtime()) {
    +    String codeString = "let count = 0; setInterval(()=> console.log(count++), 1000);";
    +    nodeRuntime.getExecutor(codeString).executeVoid();
    +    nodeRuntime.setStopping(true);
    +}
    +
    +
    +
    + +
    +
    + +
    + +
    +
    + + + + + + \ No newline at end of file diff --git a/docs/faq/troubleshooting/can_node_js_event_loop_be_skipped.rst b/docs/faq/troubleshooting/can_node_js_event_loop_be_skipped.rst new file mode 100644 index 000000000..5333156d3 --- /dev/null +++ b/docs/faq/troubleshooting/can_node_js_event_loop_be_skipped.rst @@ -0,0 +1,17 @@ +================================== +Can Node.js Event Loop be Skipped? +================================== + +By default, the Node.js event loop will to be drained before it is closed. Sometimes that causes the Node.js runtime hang forever if there are tasks staying in the queue forever. E.g. ``setInterval()``. + +So, how to skip the event loop in this case? Just call ``nodeRuntime.setStopping(true)``. + +In the following example, ``setInterval()`` will not block the Node.js runtime from being closed. + +.. code-block:: java + + try (NodeRuntime nodeRuntime = V8Host.getNodeInstance().createV8Runtime()) { + String codeString = "let count = 0; setInterval(()=> console.log(count++), 1000);"; + nodeRuntime.getExecutor(codeString).executeVoid(); + nodeRuntime.setStopping(true); + } diff --git a/docs/faq/troubleshooting/index.html b/docs/faq/troubleshooting/index.html index 87e8aabbe..91a992693 100644 --- a/docs/faq/troubleshooting/index.html +++ b/docs/faq/troubleshooting/index.html @@ -6,7 +6,7 @@ - Troubleshooting - Javet 3.1.3 documentation + Troubleshooting - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/faq/troubleshooting/sigsegv_at_createv8runtime_in_v8_mode_on_aws.html b/docs/faq/troubleshooting/sigsegv_at_createv8runtime_in_v8_mode_on_aws.html index 270aa82ed..6b3440f0c 100644 --- a/docs/faq/troubleshooting/sigsegv_at_createv8runtime_in_v8_mode_on_aws.html +++ b/docs/faq/troubleshooting/sigsegv_at_createv8runtime_in_v8_mode_on_aws.html @@ -3,10 +3,10 @@ - + - SIGSEGV at createV8Runtime() in V8 Mode on AWS - Javet 3.1.3 documentation + SIGSEGV at createV8Runtime() in V8 Mode on AWS - Javet 3.1.4 documentation @@ -125,7 +125,7 @@
    @@ -151,7 +151,7 @@
    - Javet 3.1.3 documentation + Javet 3.1.4 documentation @@ -250,6 +250,7 @@
  • A dynamic link library (DLL) initialization routine failed
  • Can i18n be Supported?
  • Can I Debug Javet in Chrome DevTools?
  • +
  • Can Node.js Event Loop be Skipped?
  • SIGSEGV at createV8Runtime() in V8 Mode on AWS
  • Why Node.js Crashes When being Closed?
  • @@ -397,14 +398,14 @@

    Solution 2: Set Environment Variable JAVET_DISABLE_PKU - +
    Previous
    -
    Can I Debug Javet in Chrome DevTools?
    +
    Can Node.js Event Loop be Skipped?
    @@ -456,7 +457,7 @@

    Solution 2: Set Environment Variable JAVET_DISABLE_PKU

    - + diff --git a/docs/faq/troubleshooting/why_node_js_crashes_when_being_closed.html b/docs/faq/troubleshooting/why_node_js_crashes_when_being_closed.html index f8d64129b..fb556b037 100644 --- a/docs/faq/troubleshooting/why_node_js_crashes_when_being_closed.html +++ b/docs/faq/troubleshooting/why_node_js_crashes_when_being_closed.html @@ -6,7 +6,7 @@ - Why Node.js Crashes When being Closed? - Javet 3.1.3 documentation + Why Node.js Crashes When being Closed? - Javet 3.1.4 documentation @@ -125,7 +125,7 @@
    @@ -151,7 +151,7 @@
    - Javet 3.1.3 documentation + Javet 3.1.4 documentation @@ -250,6 +250,7 @@
  • A dynamic link library (DLL) initialization routine failed
  • Can i18n be Supported?
  • Can I Debug Javet in Chrome DevTools?
  • +
  • Can Node.js Event Loop be Skipped?
  • SIGSEGV at createV8Runtime() in V8 Mode on AWS
  • Why Node.js Crashes When being Closed?
  • @@ -420,7 +421,7 @@

    NodeRuntime.lowMemoryNotification() +

    diff --git a/docs/genindex.html b/docs/genindex.html index 4b0c1a5d5..6926c293f 100644 --- a/docs/genindex.html +++ b/docs/genindex.html @@ -4,7 +4,7 @@ - Index - Javet 3.1.3 documentation + Index - Javet 3.1.4 documentation @@ -123,7 +123,7 @@ - + diff --git a/docs/index.html b/docs/index.html index 46003f702..3a5ba915c 100644 --- a/docs/index.html +++ b/docs/index.html @@ -6,7 +6,7 @@ - Javet 3.1.3 documentation + Javet 3.1.4 documentation @@ -125,7 +125,7 @@
    @@ -151,7 +151,7 @@
    - Javet 3.1.3 documentation + Javet 3.1.4 documentation @@ -250,6 +250,7 @@
  • A dynamic link library (DLL) initialization routine failed
  • Can i18n be Supported?
  • Can I Debug Javet in Chrome DevTools?
  • +
  • Can Node.js Event Loop be Skipped?
  • SIGSEGV at createV8Runtime() in V8 Mode on AWS
  • Why Node.js Crashes When being Closed?
  • @@ -352,7 +353,7 @@

    Major Features -
  • Node.js v20.14.0 + V8 v12.6.228.13

  • +
  • Node.js v20.15.1 + V8 v12.7.224.16

  • Dynamic switch between Node.js and V8 mode (Which mode do you prefer?)

  • Polyfill V8 mode with Javenode

  • V8 API exposure in JVM

  • @@ -376,42 +377,42 @@

    Maven <dependency> <groupId>com.caoccao.javet</groupId> <artifactId>javet</artifactId> - <version>3.1.3</version> + <version>3.1.4</version> </dependency> <!-- Linux (arm64) --> <dependency> <groupId>com.caoccao.javet</groupId> <artifactId>javet-linux-arm64</artifactId> - <version>3.1.3</version> + <version>3.1.4</version> </dependency> <!-- Mac OS (x86_64 and arm64) --> <dependency> <groupId>com.caoccao.javet</groupId> <artifactId>javet-macos</artifactId> - <version>3.1.3</version> + <version>3.1.4</version> </dependency>

    Gradle Kotlin DSL

    -
    implementation("com.caoccao.javet:javet:3.1.3") // Linux and Windows (x86_64)
    -implementation("com.caoccao.javet:javet-linux-arm64:3.1.3") // Linux (arm64)
    -implementation("com.caoccao.javet:javet-macos:3.1.3") // Mac OS (x86_64 and arm64)
    -implementation("com.caoccao.javet:javet-android-node:3.1.3") // Android Node (arm, arm64, x86 and x86_64)
    -implementation("com.caoccao.javet:javet-android-v8:3.1.3") // Android V8 (arm, arm64, x86 and x86_64)
    +
    implementation("com.caoccao.javet:javet:3.1.4") // Linux and Windows (x86_64)
    +implementation("com.caoccao.javet:javet-linux-arm64:3.1.4") // Linux (arm64)
    +implementation("com.caoccao.javet:javet-macos:3.1.4") // Mac OS (x86_64 and arm64)
    +implementation("com.caoccao.javet:javet-android-node:3.1.4") // Android Node (arm, arm64, x86 and x86_64)
    +implementation("com.caoccao.javet:javet-android-v8:3.1.4") // Android V8 (arm, arm64, x86 and x86_64)
     

    Gradle Groovy DSL

    -
    implementation 'com.caoccao.javet:javet:3.1.3' // Linux and Windows (x86_64)
    -implementation 'com.caoccao.javet:javet-linux-arm64:3.1.3' // Linux (arm64)
    -implementation 'com.caoccao.javet:javet-macos:3.1.3' // Mac OS (x86_64 and arm64)
    -implementation 'com.caoccao.javet:javet-android-node:3.1.3' // Android Node (arm, arm64, x86 and x86_64)
    -implementation 'com.caoccao.javet:javet-android-v8:3.1.3' // Android V8 (arm, arm64, x86 and x86_64)
    +
    implementation 'com.caoccao.javet:javet:3.1.4' // Linux and Windows (x86_64)
    +implementation 'com.caoccao.javet:javet-linux-arm64:3.1.4' // Linux (arm64)
    +implementation 'com.caoccao.javet:javet-macos:3.1.4' // Mac OS (x86_64 and arm64)
    +implementation 'com.caoccao.javet:javet-android-node:3.1.4' // Android Node (arm, arm64, x86 and x86_64)
    +implementation 'com.caoccao.javet:javet-android-v8:3.1.4' // Android V8 (arm, arm64, x86 and x86_64)
     
    @@ -433,7 +434,7 @@

    Hello Javet

    Sponsors

    -

    HiveMQ

    +

    HiveMQ | SheetJS

    License

    @@ -534,7 +535,7 @@

    Documents + diff --git a/docs/reference/converters/bridge_converter.html b/docs/reference/converters/bridge_converter.html index 701b91f2e..7853d14d4 100644 --- a/docs/reference/converters/bridge_converter.html +++ b/docs/reference/converters/bridge_converter.html @@ -6,7 +6,7 @@ - Bridge Converter - Javet 3.1.3 documentation + Bridge Converter - Javet 3.1.4 documentation @@ -125,7 +125,7 @@
    @@ -151,7 +151,7 @@
    - Javet 3.1.3 documentation + Javet 3.1.4 documentation @@ -250,6 +250,7 @@
  • A dynamic link library (DLL) initialization routine failed
  • Can i18n be Supported?
  • Can I Debug Javet in Chrome DevTools?
  • +
  • Can Node.js Event Loop be Skipped?
  • SIGSEGV at createV8Runtime() in V8 Mode on AWS
  • Why Node.js Crashes When being Closed?
  • @@ -494,7 +495,7 @@

    How to Cast Java Objects to JavaScript Objects? +

    diff --git a/docs/reference/converters/custom_converter.html b/docs/reference/converters/custom_converter.html index 77818fafe..431a9b7ec 100644 --- a/docs/reference/converters/custom_converter.html +++ b/docs/reference/converters/custom_converter.html @@ -6,7 +6,7 @@ - Custom Converter - Javet 3.1.3 documentation + Custom Converter - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/reference/converters/index.html b/docs/reference/converters/index.html index 6c2078b53..10b67e185 100644 --- a/docs/reference/converters/index.html +++ b/docs/reference/converters/index.html @@ -6,7 +6,7 @@ - Converters - Javet 3.1.3 documentation + Converters - Javet 3.1.4 documentation @@ -125,7 +125,7 @@
    @@ -151,7 +151,7 @@
    - Javet 3.1.3 documentation + Javet 3.1.4 documentation @@ -250,6 +250,7 @@
  • A dynamic link library (DLL) initialization routine failed
  • Can i18n be Supported?
  • Can I Debug Javet in Chrome DevTools?
  • +
  • Can Node.js Event Loop be Skipped?
  • SIGSEGV at createV8Runtime() in V8 Mode on AWS
  • Why Node.js Crashes When being Closed?
  • @@ -505,7 +506,7 @@

    Can Built-in Converter be Ignored? +

    diff --git a/docs/reference/converters/object_converter.html b/docs/reference/converters/object_converter.html index a8a6d4f8c..72c25c903 100644 --- a/docs/reference/converters/object_converter.html +++ b/docs/reference/converters/object_converter.html @@ -6,7 +6,7 @@ - Object Converter - Javet 3.1.3 documentation + Object Converter - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/reference/converters/primitive_converter.html b/docs/reference/converters/primitive_converter.html index 035646285..c9492b66a 100644 --- a/docs/reference/converters/primitive_converter.html +++ b/docs/reference/converters/primitive_converter.html @@ -6,7 +6,7 @@ - Primitive Converter - Javet 3.1.3 documentation + Primitive Converter - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/reference/converters/proxy_converter.html b/docs/reference/converters/proxy_converter.html index e09c5a353..30d4a8eb1 100644 --- a/docs/reference/converters/proxy_converter.html +++ b/docs/reference/converters/proxy_converter.html @@ -6,7 +6,7 @@ - Proxy Converter - Javet 3.1.3 documentation + Proxy Converter - Javet 3.1.4 documentation @@ -125,7 +125,7 @@
    @@ -151,7 +151,7 @@
    - Javet 3.1.3 documentation + Javet 3.1.4 documentation @@ -250,6 +250,7 @@
  • A dynamic link library (DLL) initialization routine failed
  • Can i18n be Supported?
  • Can I Debug Javet in Chrome DevTools?
  • +
  • Can Node.js Event Loop be Skipped?
  • SIGSEGV at createV8Runtime() in V8 Mode on AWS
  • Why Node.js Crashes When being Closed?
  • @@ -874,7 +875,7 @@

    How to Customize JavetProxyConverter? +

    diff --git a/docs/reference/converters/proxy_plugins.html b/docs/reference/converters/proxy_plugins.html index 4ce00ea46..c0753ed29 100644 --- a/docs/reference/converters/proxy_plugins.html +++ b/docs/reference/converters/proxy_plugins.html @@ -6,7 +6,7 @@ - Proxy Plugins - Javet 3.1.3 documentation + Proxy Plugins - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/reference/index.html b/docs/reference/index.html index 3ff231ed3..2d9dfbbb8 100644 --- a/docs/reference/index.html +++ b/docs/reference/index.html @@ -6,7 +6,7 @@ - Reference - Javet 3.1.3 documentation + Reference - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/reference/javadoc/allclasses-frame.html b/docs/reference/javadoc/allclasses-frame.html index 1b9cbf333..ce8c0e61e 100644 --- a/docs/reference/javadoc/allclasses-frame.html +++ b/docs/reference/javadoc/allclasses-frame.html @@ -3,7 +3,7 @@ -All Classes (javet 3.1.3 API) +All Classes (javet 3.1.4 API) @@ -72,6 +72,7 @@

    All Classes

  • IJavetPromiseRejectCallback
  • IJavetProxyHandler
  • IJavetProxySymbolConverter
  • +
  • IJavetRawPointer
  • IJavetReflectionObjectFactory
  • IJavetResettable
  • IJavetSupplier
  • @@ -182,6 +183,7 @@

    All Classes

  • NodeModuleProcess
  • NodeRuntime
  • NodeRuntimeOptions
  • +
  • RawPointerType
  • RuntimeOptions
  • SimpleFreeMarkerFormat
  • SimpleList
  • @@ -235,6 +237,7 @@

    All Classes

  • V8ScriptOrigin
  • V8Setter
  • V8SharedMemoryStatistics
  • +
  • V8StatisticsFuture
  • V8StringExecutor
  • V8Value
  • V8ValueArguments
  • diff --git a/docs/reference/javadoc/allclasses-noframe.html b/docs/reference/javadoc/allclasses-noframe.html index f16c15d97..ac858640d 100644 --- a/docs/reference/javadoc/allclasses-noframe.html +++ b/docs/reference/javadoc/allclasses-noframe.html @@ -3,7 +3,7 @@ -All Classes (javet 3.1.3 API) +All Classes (javet 3.1.4 API) @@ -72,6 +72,7 @@

    All Classes

  • IJavetPromiseRejectCallback
  • IJavetProxyHandler
  • IJavetProxySymbolConverter
  • +
  • IJavetRawPointer
  • IJavetReflectionObjectFactory
  • IJavetResettable
  • IJavetSupplier
  • @@ -182,6 +183,7 @@

    All Classes

  • NodeModuleProcess
  • NodeRuntime
  • NodeRuntimeOptions
  • +
  • RawPointerType
  • RuntimeOptions
  • SimpleFreeMarkerFormat
  • SimpleList
  • @@ -235,6 +237,7 @@

    All Classes

  • V8ScriptOrigin
  • V8Setter
  • V8SharedMemoryStatistics
  • +
  • V8StatisticsFuture
  • V8StringExecutor
  • V8Value
  • V8ValueArguments
  • diff --git a/docs/reference/javadoc/com/caoccao/javet/annotations/CheckReturnValue.html b/docs/reference/javadoc/com/caoccao/javet/annotations/CheckReturnValue.html index afabbf8f5..7ab58fd50 100644 --- a/docs/reference/javadoc/com/caoccao/javet/annotations/CheckReturnValue.html +++ b/docs/reference/javadoc/com/caoccao/javet/annotations/CheckReturnValue.html @@ -3,7 +3,7 @@ -CheckReturnValue (javet 3.1.3 API) +CheckReturnValue (javet 3.1.4 API) @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ diff --git a/docs/reference/javadoc/com/caoccao/javet/annotations/package-summary.html b/docs/reference/javadoc/com/caoccao/javet/annotations/package-summary.html index a885b243b..b5a0bbddd 100644 --- a/docs/reference/javadoc/com/caoccao/javet/annotations/package-summary.html +++ b/docs/reference/javadoc/com/caoccao/javet/annotations/package-summary.html @@ -3,7 +3,7 @@ -com.caoccao.javet.annotations (javet 3.1.3 API) +com.caoccao.javet.annotations (javet 3.1.4 API) @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ diff --git a/docs/reference/javadoc/com/caoccao/javet/entities/package-summary.html b/docs/reference/javadoc/com/caoccao/javet/entities/package-summary.html index dbb2689ee..be1a5fe87 100644 --- a/docs/reference/javadoc/com/caoccao/javet/entities/package-summary.html +++ b/docs/reference/javadoc/com/caoccao/javet/entities/package-summary.html @@ -3,7 +3,7 @@ -com.caoccao.javet.entities (javet 3.1.3 API) +com.caoccao.javet.entities (javet 3.1.4 API) @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ + + + + + + + + + +
    +
    com.caoccao.javet.enums
    +

    Enum RawPointerType

    +
    +
    +
      +
    • java.lang.Object
    • +
    • +
        +
      • java.lang.Enum<RawPointerType>
      • +
      • +
          +
        • com.caoccao.javet.enums.RawPointerType
        • +
        +
      • +
      +
    • +
    +
    +
      +
    • +
      +
      All Implemented Interfaces:
      +
      java.io.Serializable, java.lang.Comparable<RawPointerType>
      +
      +
      +
      +
      public enum RawPointerType
      +extends java.lang.Enum<RawPointerType>
      +
      The enum raw pointer type is for internal use only.
      +
      +
      Since:
      +
      3.1.4
      +
      +
    • +
    +
    +
    +
      +
    • + + + +
        +
      • + + +

        Method Summary

        + + + + + + + + + + + + + + + + + + + + + + +
        All Methods Static Methods Instance Methods Concrete Methods 
        Modifier and TypeMethod and Description
        intgetId() +
        Gets id.
        +
        static RawPointerTypeparse(int id) +
        Parse raw pointer type by id.
        +
        static RawPointerTypevalueOf(java.lang.String name) +
        Returns the enum constant of this type with the specified name.
        +
        static RawPointerType[]values() +
        Returns an array containing the constants of this enum type, in +the order they are declared.
        +
        +
          +
        • + + +

          Methods inherited from class java.lang.Enum

          +clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
        • +
        +
          +
        • + + +

          Methods inherited from class java.lang.Object

          +getClass, notify, notifyAll, wait, wait, wait
        • +
        +
      • +
      +
    • +
    +
    +
    +
      +
    • + +
        +
      • + + +

        Enum Constant Detail

        + + + +
          +
        • +

          HeapStatisticsContainer

          +
          public static final RawPointerType HeapStatisticsContainer
          +
          Heap statistics container javet raw pointer type.
          +
          +
          Since:
          +
          3.1.4
          +
          +
        • +
        + + + +
          +
        • +

          HeapSpaceStatisticsContainer

          +
          public static final RawPointerType HeapSpaceStatisticsContainer
          +
          Heap space statistics container javet raw pointer type.
          +
          +
          Since:
          +
          3.1.4
          +
          +
        • +
        + + + +
          +
        • +

          Invalid

          +
          public static final RawPointerType Invalid
          +
          Invalid raw pointer type.
          +
          +
          Since:
          +
          3.1.4
          +
          +
        • +
        +
      • +
      + +
        +
      • + + +

        Method Detail

        + + + +
          +
        • +

          values

          +
          public static RawPointerType[] values()
          +
          Returns an array containing the constants of this enum type, in +the order they are declared. This method may be used to iterate +over the constants as follows: +
          +for (RawPointerType c : RawPointerType.values())
          +    System.out.println(c);
          +
          +
          +
          Returns:
          +
          an array containing the constants of this enum type, in the order they are declared
          +
          +
        • +
        + + + +
          +
        • +

          valueOf

          +
          public static RawPointerType valueOf(java.lang.String name)
          +
          Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
          +
          +
          Parameters:
          +
          name - the name of the enum constant to be returned.
          +
          Returns:
          +
          the enum constant with the specified name
          +
          Throws:
          +
          java.lang.IllegalArgumentException - if this enum type has no constant with the specified name
          +
          java.lang.NullPointerException - if the argument is null
          +
          +
        • +
        + + + +
          +
        • +

          parse

          +
          public static RawPointerType parse(int id)
          +
          Parse raw pointer type by id.
          +
          +
          Parameters:
          +
          id - the id
          +
          Returns:
          +
          the raw pointer type
          +
          Since:
          +
          3.1.4
          +
          +
        • +
        + + + +
          +
        • +

          getId

          +
          public int getId()
          +
          Gets id.
          +
          +
          Returns:
          +
          the id
          +
          Since:
          +
          3.1.4
          +
          +
        • +
        +
      • +
      +
    • +
    +
    +
    + + + + + + + diff --git a/docs/reference/javadoc/com/caoccao/javet/enums/V8AllocationSpace.html b/docs/reference/javadoc/com/caoccao/javet/enums/V8AllocationSpace.html index 5da0e97c7..43371ed7e 100644 --- a/docs/reference/javadoc/com/caoccao/javet/enums/V8AllocationSpace.html +++ b/docs/reference/javadoc/com/caoccao/javet/enums/V8AllocationSpace.html @@ -3,7 +3,7 @@ -V8AllocationSpace (javet 3.1.3 API) +V8AllocationSpace (javet 3.1.4 API) @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -17,6 +17,7 @@

    Enums

  • JSFunctionType
  • JSRuntimeType
  • JSScopeType
  • +
  • RawPointerType
  • V8AllocationSpace
  • V8AwaitMode
  • V8ContextType
  • diff --git a/docs/reference/javadoc/com/caoccao/javet/enums/package-summary.html b/docs/reference/javadoc/com/caoccao/javet/enums/package-summary.html index e8c400b4e..b42f1144f 100644 --- a/docs/reference/javadoc/com/caoccao/javet/enums/package-summary.html +++ b/docs/reference/javadoc/com/caoccao/javet/enums/package-summary.html @@ -3,7 +3,7 @@ -com.caoccao.javet.enums (javet 3.1.3 API) +com.caoccao.javet.enums (javet 3.1.4 API) @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ diff --git a/docs/reference/javadoc/com/caoccao/javet/exceptions/package-summary.html b/docs/reference/javadoc/com/caoccao/javet/exceptions/package-summary.html index ac4e67f6e..ae04a3117 100644 --- a/docs/reference/javadoc/com/caoccao/javet/exceptions/package-summary.html +++ b/docs/reference/javadoc/com/caoccao/javet/exceptions/package-summary.html @@ -3,7 +3,7 @@ -com.caoccao.javet.exceptions (javet 3.1.3 API) +com.caoccao.javet.exceptions (javet 3.1.4 API) @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ diff --git a/docs/reference/javadoc/com/caoccao/javet/interception/jvm/package-summary.html b/docs/reference/javadoc/com/caoccao/javet/interception/jvm/package-summary.html index 8ebc4f174..fb6e742c0 100644 --- a/docs/reference/javadoc/com/caoccao/javet/interception/jvm/package-summary.html +++ b/docs/reference/javadoc/com/caoccao/javet/interception/jvm/package-summary.html @@ -3,7 +3,7 @@ -com.caoccao.javet.interception.jvm (javet 3.1.3 API) +com.caoccao.javet.interception.jvm (javet 3.1.4 API) @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ diff --git a/docs/reference/javadoc/com/caoccao/javet/interception/logging/package-summary.html b/docs/reference/javadoc/com/caoccao/javet/interception/logging/package-summary.html index 58d4d2f2a..5a5edaa32 100644 --- a/docs/reference/javadoc/com/caoccao/javet/interception/logging/package-summary.html +++ b/docs/reference/javadoc/com/caoccao/javet/interception/logging/package-summary.html @@ -3,7 +3,7 @@ -com.caoccao.javet.interception.logging (javet 3.1.3 API) +com.caoccao.javet.interception.logging (javet 3.1.4 API) @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ diff --git a/docs/reference/javadoc/com/caoccao/javet/interception/package-summary.html b/docs/reference/javadoc/com/caoccao/javet/interception/package-summary.html index e6b1d4a6f..db4d59901 100644 --- a/docs/reference/javadoc/com/caoccao/javet/interception/package-summary.html +++ b/docs/reference/javadoc/com/caoccao/javet/interception/package-summary.html @@ -3,7 +3,7 @@ -com.caoccao.javet.interception (javet 3.1.3 API) +com.caoccao.javet.interception (javet 3.1.4 API) @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ + + + + + + + + + +
    +
    com.caoccao.javet.interfaces
    +

    Interface IJavetRawPointer

    +
    +
    +
    +
      +
    • +
      +
      All Known Implementing Classes:
      +
      V8StatisticsFuture
      +
      +
      +
      +
      public interface IJavetRawPointer
      +
      The interface Javet raw pointer is for internal use only.
      +
      +
      Since:
      +
      3.1.4
      +
      +
    • +
    +
    +
    + +
    +
    +
      +
    • + +
        +
      • + + +

        Method Detail

        + + + +
          +
        • +

          getRawPointerType

          +
          RawPointerType getRawPointerType()
          +
          Gets raw pointer type.
          +
          +
          Returns:
          +
          the raw pointer type
          +
          Since:
          +
          3.1.4
          +
          +
        • +
        +
      • +
      +
    • +
    +
    +
    + + + + + + + diff --git a/docs/reference/javadoc/com/caoccao/javet/interfaces/IJavetResettable.html b/docs/reference/javadoc/com/caoccao/javet/interfaces/IJavetResettable.html index e92ed7c12..b157eb534 100644 --- a/docs/reference/javadoc/com/caoccao/javet/interfaces/IJavetResettable.html +++ b/docs/reference/javadoc/com/caoccao/javet/interfaces/IJavetResettable.html @@ -3,7 +3,7 @@ -IJavetResettable (javet 3.1.3 API) +IJavetResettable (javet 3.1.4 API) @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -29,6 +29,7 @@

    Interfaces

  • IJavetInterceptor
  • IJavetLogger
  • IJavetMappable
  • +
  • IJavetRawPointer
  • IJavetResettable
  • IJavetSupplier
  • IJavetUniConsumer
  • diff --git a/docs/reference/javadoc/com/caoccao/javet/interfaces/package-summary.html b/docs/reference/javadoc/com/caoccao/javet/interfaces/package-summary.html index 1c2af9cfc..2a84decf8 100644 --- a/docs/reference/javadoc/com/caoccao/javet/interfaces/package-summary.html +++ b/docs/reference/javadoc/com/caoccao/javet/interfaces/package-summary.html @@ -3,7 +3,7 @@ -com.caoccao.javet.interfaces (javet 3.1.3 API) +com.caoccao.javet.interfaces (javet 3.1.4 API) @@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@ @@ -11,12 +11,18 @@
    -
    -

    V8Runtime.idleNotificationDeadline(long deadlineInMillis)

    -

    This API explicitly tells Node.js or V8 runtime that the application expects a GC to happen in the given milliseconds. Be careful, Node.js or V8 runtime may disregard this instruction.

    -

    V8Runtime.lowMemoryNotification()

    This API explicitly tells Node.js or V8 runtime to perform a GC immediately. It is also used in automatic GC aforementioned.

    @@ -562,7 +559,6 @@

    V8 Options and V8Flagsv8Flags.setMaxHeapSize(768); v8Flags.setMaxOldSpaceSize(512); v8Flags.setUseStrict(true); -v8Flags.setTrackRetainingPath(true); v8Flags.setCustomFlags("--max-semi-space-size=384 --min-semi-space-size=256"); // V8 Mode @@ -573,7 +569,6 @@

    V8 Options and V8Flagsv8Flags.setMaxHeapSize(768); v8Flags.setMaxOldSpaceSize(512); v8Flags.setUseStrict(true); -v8Flags.setTrackRetainingPath(true); v8Flags.setCustomFlags("--max-semi-space-size=384 --min-semi-space-size=256"); @@ -586,8 +581,8 @@

    V8 Options and V8FlagsStatistics

    V8 exposes quite a few statistics for applications to analyze the memory usage, performance, etc. Javet selectively exposes some of those statistics via V8Runtime or V8Host.

    V8 Heap Space Statistics @@ -595,7 +590,10 @@

    Statistics

    @@ -680,7 +678,6 @@

    StatisticsManual GC @@ -700,7 +697,7 @@

    Statistics + diff --git a/docs/reference/resource_management/memory_management.rst b/docs/reference/resource_management/memory_management.rst index f4f359749..2cfbcb94c 100644 --- a/docs/reference/resource_management/memory_management.rst +++ b/docs/reference/resource_management/memory_management.rst @@ -183,11 +183,6 @@ V8Runtime.await() This API represents a light-weighted way of giving V8 a hint to perform GC. It actually tells Node.js or V8 runtime to drain the message or task queue. As a side effect of the drain, a GC may occur based on the decision of Node.js or V8 runtime. -V8Runtime.idleNotificationDeadline(long deadlineInMillis) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -This API explicitly tells Node.js or V8 runtime that the application expects a GC to happen in the given milliseconds. Be careful, Node.js or V8 runtime may disregard this instruction. - V8Runtime.lowMemoryNotification() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -218,7 +213,6 @@ Almost all `V8 options `_ -* `getV8HeapStatistics() <../javadoc/com/caoccao/javet/interop/V8Runtime.html#getV8HeapStatistics-->`_ +* `getV8HeapSpaceStatistics() <../javadoc/com/caoccao/javet/interop/V8Runtime.html#getV8HeapSpaceStatistics-com.caoccao.javet.interop.monitoring.V8HeapSpaceStatistics.AllocationSpace->`_ (Asynchronous) +* `getV8HeapStatistics() <../javadoc/com/caoccao/javet/interop/V8Runtime.html#getV8HeapStatistics-->`_ (Asynchronous) * `getV8SharedMemoryStatistics() <../javadoc/com/caoccao/javet/interop/V8Host.html#getV8SharedMemoryStatistics-->`_ .. image:: ../../resources/images/statistics_v8_heap_space_statistics.png @@ -256,4 +249,5 @@ V8 exposes quite a few statistics for applications to analyze the memory usage, .. note:: - More statistics will be exposed in new releases. Please file issues if you need more of them. + * If the ``V8Runtime`` is in use, calling ``getV8HeapSpaceStatistics()`` and ``getV8HeapStatistics()`` may take a slight chance (a race condition) to have tiny memory leak. Please refer to this `issue `_ for details. It's recommended to call them when the ``V8Runtime`` is idle. + * More statistics will be exposed in new releases. Please file issues if you need more of them. diff --git a/docs/reference/resource_management/modularization.html b/docs/reference/resource_management/modularization.html index 754f84656..9a0701781 100644 --- a/docs/reference/resource_management/modularization.html +++ b/docs/reference/resource_management/modularization.html @@ -6,7 +6,7 @@ - Modularization - Javet 3.1.3 documentation + Modularization - Javet 3.1.4 documentation @@ -125,7 +125,7 @@
    @@ -151,7 +151,7 @@
    - Javet 3.1.3 documentation + Javet 3.1.4 documentation @@ -250,6 +250,7 @@
  • A dynamic link library (DLL) initialization routine failed
  • Can i18n be Supported?
  • Can I Debug Javet in Chrome DevTools?
  • +
  • Can Node.js Event Loop be Skipped?
  • SIGSEGV at createV8Runtime() in V8 Mode on AWS
  • Why Node.js Crashes When being Closed?
  • @@ -481,6 +482,10 @@

    Dynamically Import Built-in Modules +

    Dynamic import()

    +

    If import() is called directly, an error ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING will be thrown. Please follow the Node.js official doc to set importModuleDynamically to either vm.constants.USE_MAIN_CONTEXT_DEFAULT_LOADER or a custom callback function.

    +

    V8 Mode

    @@ -657,6 +662,7 @@

    InternalsDynamically Import Built-in Modules +
  • Dynamic import()
  • V8 Mode
      @@ -677,7 +683,7 @@

      Internals +

  • diff --git a/docs/reference/resource_management/modularization.rst b/docs/reference/resource_management/modularization.rst index c1705f701..9fabdf06c 100644 --- a/docs/reference/resource_management/modularization.rst +++ b/docs/reference/resource_management/modularization.rst @@ -177,6 +177,11 @@ There is workaround: create a new module that calls `require` internally by regi The application may extend the capability of `JavetBuiltInModuleResolver` to gain granular control over the built-in modules. +Dynamic import() +---------------- + +If ``import()`` is called directly, an error `ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING `_ will be thrown. Please follow the Node.js official `doc `_ to set ``importModuleDynamically`` to either ``vm.constants.USE_MAIN_CONTEXT_DEFAULT_LOADER`` or a custom callback function. + V8 Mode ======= diff --git a/docs/reference/resource_management/snapshot.html b/docs/reference/resource_management/snapshot.html index 4d1e76c50..c9cb1a631 100644 --- a/docs/reference/resource_management/snapshot.html +++ b/docs/reference/resource_management/snapshot.html @@ -6,7 +6,7 @@ - Snapshot - Javet 3.1.3 documentation + Snapshot - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/reference/tips/best_practices.html b/docs/reference/tips/best_practices.html index 24223f552..5aadc13c6 100644 --- a/docs/reference/tips/best_practices.html +++ b/docs/reference/tips/best_practices.html @@ -6,7 +6,7 @@ - Best Practices - Javet 3.1.3 documentation + Best Practices - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/reference/tips/index.html b/docs/reference/tips/index.html index dffc9bf9a..0d02753e1 100644 --- a/docs/reference/tips/index.html +++ b/docs/reference/tips/index.html @@ -6,7 +6,7 @@ - Tips - Javet 3.1.3 documentation + Tips - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/reference/todo_list.html b/docs/reference/todo_list.html index 64b15eaad..278eda18d 100644 --- a/docs/reference/todo_list.html +++ b/docs/reference/todo_list.html @@ -6,7 +6,7 @@ - TODO List - Javet 3.1.3 documentation + TODO List - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/reference/troubleshooting/error_codes.html b/docs/reference/troubleshooting/error_codes.html index 51424e4f3..02c349752 100644 --- a/docs/reference/troubleshooting/error_codes.html +++ b/docs/reference/troubleshooting/error_codes.html @@ -6,7 +6,7 @@ - Error Codes - Javet 3.1.3 documentation + Error Codes - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/reference/troubleshooting/index.html b/docs/reference/troubleshooting/index.html index 833882cf9..45bc93e3a 100644 --- a/docs/reference/troubleshooting/index.html +++ b/docs/reference/troubleshooting/index.html @@ -6,7 +6,7 @@ - Troubleshooting - Javet 3.1.3 documentation + Troubleshooting - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/reference/troubleshooting/logging.html b/docs/reference/troubleshooting/logging.html index c54c51005..881502884 100644 --- a/docs/reference/troubleshooting/logging.html +++ b/docs/reference/troubleshooting/logging.html @@ -6,7 +6,7 @@ - Logging - Javet 3.1.3 documentation + Logging - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/reference/troubleshooting/termination.html b/docs/reference/troubleshooting/termination.html index 5d0d63698..3e92d9a1a 100644 --- a/docs/reference/troubleshooting/termination.html +++ b/docs/reference/troubleshooting/termination.html @@ -6,7 +6,7 @@ - Termination - Javet 3.1.3 documentation + Termination - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/reference/v8_values/index.html b/docs/reference/v8_values/index.html index 0ff1a7519..bcabbd23e 100644 --- a/docs/reference/v8_values/index.html +++ b/docs/reference/v8_values/index.html @@ -6,7 +6,7 @@ - V8 Values - Javet 3.1.3 documentation + V8 Values - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/reference/v8_values/v8_collection.html b/docs/reference/v8_values/v8_collection.html index 75339b16e..6862f0005 100644 --- a/docs/reference/v8_values/v8_collection.html +++ b/docs/reference/v8_values/v8_collection.html @@ -6,7 +6,7 @@ - V8 Collection - Javet 3.1.3 documentation + V8 Collection - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/reference/v8_values/v8_function.html b/docs/reference/v8_values/v8_function.html index 909105667..768771228 100644 --- a/docs/reference/v8_values/v8_function.html +++ b/docs/reference/v8_values/v8_function.html @@ -6,7 +6,7 @@ - V8 Function - Javet 3.1.3 documentation + V8 Function - Javet 3.1.4 documentation @@ -125,7 +125,7 @@
    @@ -151,7 +151,7 @@
    - Javet 3.1.3 documentation + Javet 3.1.4 documentation @@ -250,6 +250,7 @@
  • A dynamic link library (DLL) initialization routine failed
  • Can i18n be Supported?
  • Can I Debug Javet in Chrome DevTools?
  • +
  • Can Node.js Event Loop be Skipped?
  • SIGSEGV at createV8Runtime() in V8 Mode on AWS
  • Why Node.js Crashes When being Closed?
  • @@ -1068,7 +1069,7 @@

    How to Handle Argument Count Mismatches? +

    diff --git a/docs/reference/v8_values/v8_promise.html b/docs/reference/v8_values/v8_promise.html index 5bc02409f..3b8f8455c 100644 --- a/docs/reference/v8_values/v8_promise.html +++ b/docs/reference/v8_values/v8_promise.html @@ -6,7 +6,7 @@ - V8 Promise - Javet 3.1.3 documentation + V8 Promise - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/release_notes/index.html b/docs/release_notes/index.html index f301783b8..5ae8b8ed0 100644 --- a/docs/release_notes/index.html +++ b/docs/release_notes/index.html @@ -6,7 +6,7 @@ - Release Notes - Javet 3.1.3 documentation + Release Notes - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/release_notes/release_notes_0_7.html b/docs/release_notes/release_notes_0_7.html index 6ac14bd3d..a049a3467 100644 --- a/docs/release_notes/release_notes_0_7.html +++ b/docs/release_notes/release_notes_0_7.html @@ -6,7 +6,7 @@ - Release Notes 0.7.x - Javet 3.1.3 documentation + Release Notes 0.7.x - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/release_notes/release_notes_0_8.html b/docs/release_notes/release_notes_0_8.html index e58c0d8be..daca7eec2 100644 --- a/docs/release_notes/release_notes_0_8.html +++ b/docs/release_notes/release_notes_0_8.html @@ -6,7 +6,7 @@ - Release Notes 0.8.x - Javet 3.1.3 documentation + Release Notes 0.8.x - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/release_notes/release_notes_0_9.html b/docs/release_notes/release_notes_0_9.html index 35f5f49f6..2def160b7 100644 --- a/docs/release_notes/release_notes_0_9.html +++ b/docs/release_notes/release_notes_0_9.html @@ -6,7 +6,7 @@ - Release Notes 0.9.x - Javet 3.1.3 documentation + Release Notes 0.9.x - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/release_notes/release_notes_1_0.html b/docs/release_notes/release_notes_1_0.html index 6023d766a..bfaa666ca 100644 --- a/docs/release_notes/release_notes_1_0.html +++ b/docs/release_notes/release_notes_1_0.html @@ -6,7 +6,7 @@ - Release Notes 1.0.x - Javet 3.1.3 documentation + Release Notes 1.0.x - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/release_notes/release_notes_1_1.html b/docs/release_notes/release_notes_1_1.html index 5e576c853..b0dada92e 100644 --- a/docs/release_notes/release_notes_1_1.html +++ b/docs/release_notes/release_notes_1_1.html @@ -6,7 +6,7 @@ - Release Notes 1.1.x - Javet 3.1.3 documentation + Release Notes 1.1.x - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/release_notes/release_notes_2_0.html b/docs/release_notes/release_notes_2_0.html index 56a273e2f..cf850318e 100644 --- a/docs/release_notes/release_notes_2_0.html +++ b/docs/release_notes/release_notes_2_0.html @@ -6,7 +6,7 @@ - Release Notes 2.0.x - Javet 3.1.3 documentation + Release Notes 2.0.x - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/release_notes/release_notes_2_1.html b/docs/release_notes/release_notes_2_1.html index 40eafad7d..127c933c6 100644 --- a/docs/release_notes/release_notes_2_1.html +++ b/docs/release_notes/release_notes_2_1.html @@ -6,7 +6,7 @@ - Release Notes 2.1.x - Javet 3.1.3 documentation + Release Notes 2.1.x - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/release_notes/release_notes_2_2.html b/docs/release_notes/release_notes_2_2.html index 26e222692..157cad4fe 100644 --- a/docs/release_notes/release_notes_2_2.html +++ b/docs/release_notes/release_notes_2_2.html @@ -6,7 +6,7 @@ - Release Notes 2.2.x - Javet 3.1.3 documentation + Release Notes 2.2.x - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/release_notes/release_notes_3_0.html b/docs/release_notes/release_notes_3_0.html index 04ab41dfe..0552dfcb1 100644 --- a/docs/release_notes/release_notes_3_0.html +++ b/docs/release_notes/release_notes_3_0.html @@ -6,7 +6,7 @@ - Release Notes 3.0.x - Javet 3.1.3 documentation + Release Notes 3.0.x - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/release_notes/release_notes_3_1.html b/docs/release_notes/release_notes_3_1.html index 844b44bcb..d5dc37429 100644 --- a/docs/release_notes/release_notes_3_1.html +++ b/docs/release_notes/release_notes_3_1.html @@ -6,7 +6,7 @@ - Release Notes 3.1.x - Javet 3.1.3 documentation + Release Notes 3.1.x - Javet 3.1.4 documentation @@ -125,7 +125,7 @@
    @@ -151,7 +151,7 @@
    - Javet 3.1.3 documentation + Javet 3.1.4 documentation @@ -250,6 +250,7 @@
  • A dynamic link library (DLL) initialization routine failed
  • Can i18n be Supported?
  • Can I Debug Javet in Chrome DevTools?
  • +
  • Can Node.js Event Loop be Skipped?
  • SIGSEGV at createV8Runtime() in V8 Mode on AWS
  • Why Node.js Crashes When being Closed?
  • @@ -305,10 +306,23 @@

    Release Notes 3.1.x

    +
    +

    3.1.4 V8 v12.7

    +
      +
    • Upgraded Node.js to v20.15.1 (2024-07-08)

    • +
    • Upgraded V8 to v12.7.224.16 (2024-07-15)

    • +
    • Rewrote getV8HeapStatistics(), getV8HeapSpaceStatistics() for V8Runtime to remediate the race condition and fixed possible memory leak

    • +
    • Added observerTimeoutMillis to JavetEngineConfig

    • +
    • Added V8StatisticsFuture

    • +
    • Added isStopping(), setStopping() to NodeRuntime

    • +
    • Removed idleNotificationDeadline() from V8Runtime

    • +
    • Removed --track-retaining-path from V8Flags

    • +
    +

    3.1.3 V8 v12.6

    diff --git a/docs/release_notes/release_notes_3_1.rst b/docs/release_notes/release_notes_3_1.rst index c8b0eaf80..6273fc02d 100644 --- a/docs/release_notes/release_notes_3_1.rst +++ b/docs/release_notes/release_notes_3_1.rst @@ -2,10 +2,22 @@ Release Notes 3.1.x =================== +3.1.4 V8 v12.7 +-------------- + +* Upgraded Node.js to ``v20.15.1`` `(2024-07-08) `_ +* Upgraded V8 to ``v12.7.224.16`` (2024-07-15) +* Rewrote ``getV8HeapStatistics()``, ``getV8HeapSpaceStatistics()`` for ``V8Runtime`` to remediate the race condition and fixed possible memory leak +* Added ``observerTimeoutMillis`` to ``JavetEngineConfig`` +* Added ``V8StatisticsFuture`` +* Added ``isStopping()``, ``setStopping()`` to ``NodeRuntime`` +* Removed ``idleNotificationDeadline()`` from ``V8Runtime`` +* Removed ``--track-retaining-path`` from ``V8Flags`` + 3.1.3 V8 v12.6 -------------- -* Upgraded Node.js to ``v20.14.0`` `(2024-05-28) `_ +* Upgraded Node.js to ``v20.14.0`` `(2024-06-28) `_ * Upgraded V8 to ``v12.6.228.13`` (2024-06-06) * Upgraded Visual Studio 2022 to `v17.10.1 `_ * Rewrote ``toString()`` for ``V8ValueBigInteger``, ``V8ValueInteger``, ``V8ValueLong`` and ``V8ValueDouble`` diff --git a/docs/search.html b/docs/search.html index 21d12901a..726506399 100644 --- a/docs/search.html +++ b/docs/search.html @@ -4,7 +4,7 @@ - Search - Javet 3.1.3 documentation + Search - Javet 3.1.4 documentation @@ -122,7 +122,7 @@ - + diff --git a/docs/searchindex.js b/docs/searchindex.js index 966d1bfc2..ade6c7947 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"0.7.0 Birth with V8 v8.9": [[55, "birth-with-v8-v8-9"]], "0.7.1 Bug Fixes": [[55, "bug-fixes"]], "0.7.2 Engine Guard": [[55, "engine-guard"]], "0.7.3 Locker": [[55, "locker"]], "0.7.4 Live Debug": [[55, "live-debug"]], "0.8.0 First Time with Node.js": [[56, "first-time-with-node-js"]], "0.8.1 Declarative Function Interception": [[56, "declarative-function-interception"]], "0.8.10 Index in forEach": [[56, "index-in-foreach"]], "0.8.2 Conversion for Primitive": [[56, "conversion-for-primitive"]], "0.8.3 GC": [[56, "gc"]], "0.8.4 V8 v9.0": [[56, "v8-v9-0"]], "0.8.5 Error Codes": [[56, "error-codes"]], "0.8.6 Event Loop for Node.js": [[56, "event-loop-for-node-js"]], "0.8.7 Native Modules for Node.js": [[56, "native-modules-for-node-js"]], "0.8.8 Hotfix the Source Code": [[56, "hotfix-the-source-code"]], "0.8.9 Declarative Property Interception": [[56, "declarative-property-interception"]], "0.9.0 V8 v9.1": [[57, "v8-v9-1"]], "0.9.1 V8 in Classloader": [[57, "v8-in-classloader"]], "0.9.10 Polyfill Java Interfaces": [[57, "polyfill-java-interfaces"]], "0.9.11 V8 v9.3": [[57, "v8-v9-3"]], "0.9.12 Private Properties": [[57, "private-properties"]], "0.9.13 V8 v9.4": [[57, "v8-v9-4"]], "0.9.14 V8 Scope": [[57, "v8-scope"]], "0.9.2 Anonymous Functions in Converter": [[57, "anonymous-functions-in-converter"]], "0.9.3 Module Resolver": [[57, "module-resolver"]], "0.9.4 Multi-process Safe": [[57, "multi-process-safe"]], "0.9.5 V8 v9.2": [[57, "v8-v9-2"]], "0.9.6 Proxy Converter v1": [[57, "proxy-converter-v1"]], "0.9.7 Proxy Converter v2": [[57, "proxy-converter-v2"]], "0.9.8 Empower the Promise": [[57, "empower-the-promise"]], "0.9.9 Mac OS x86_64": [[57, "mac-os-x86-64"]], "1. Implicit Mode": [[39, "implicit-mode"]], "1. Run CDT Shell": [[3, "run-cdt-shell"]], "1.0.0 First Time with Node.js v16": [[58, "first-time-with-node-js-v16"]], "1.0.1 Custom Library Loading": [[58, "custom-library-loading"]], "1.0.2 First Time with Android": [[58, "first-time-with-android"]], "1.0.3 Android ABI 21": [[58, "android-abi-21"]], "1.0.4 V8 9.6": [[58, "v8-9-6"]], "1.0.5 Javet Core": [[58, "javet-core"]], "1.0.6 Mac OS (arm64)": [[58, "mac-os-arm64"]], "1.0.7 V8 v9.7": [[58, "v8-v9-7"]], "1.1.0 V8 v9.8": [[59, "v8-v9-8"]], "1.1.1 V8 v9.9": [[59, "v8-v9-9"]], "1.1.2 V8 v10.0": [[59, "v8-v10-0"]], "1.1.3 V8 v10.1": [[59, "v8-v10-1"]], "1.1.4 V8 v10.2": [[59, "v8-v10-2"]], "1.1.5 V8 v10.3": [[59, "v8-v10-3"]], "1.1.6 V8 v10.4": [[59, "v8-v10-4"]], "1.1.7 V8 v10.5": [[59, "v8-v10-5"]], "2 Approaches": [[66, "approaches"]], "2. Explicit Mode": [[39, "explicit-mode"]], "2. Run Script in CDT Shell": [[3, "run-script-in-cdt-shell"]], "2.0.0 Node.js v18.10": [[60, "node-js-v18-10"]], "2.0.1 V8 v10.7": [[60, "v8-v10-7"]], "2.0.2 V8 v10.8": [[60, "v8-v10-8"]], "2.0.3 V8 v10.9": [[60, "v8-v10-9"]], "2.0.4 V8 v11.0": [[60, "v8-v11-0"]], "2.1.0 V8 v11.1": [[61, "v8-v11-1"]], "2.1.1 V8 v11.2": [[61, "v8-v11-2"]], "2.1.2 V8 v11.3": [[61, "v8-v11-3"]], "2.2.0 V8 v11.4": [[62, "v8-v11-4"]], "2.2.1 V8 v11.5": [[62, "v8-v11-5"]], "2.2.2 V8 v11.6": [[62, "v8-v11-6"]], "2.2.3 V8 v11.7": [[62, "v8-v11-7"]], "3 Challenges in Memory Management": [[40, "challenges-in-memory-management"]], "3. Open CDT": [[3, "open-cdt"]], "3.0.0 V8 v11.8": [[63, "v8-v11-8"]], "3.0.1 V8 v11.9": [[63, "v8-v11-9"]], "3.0.2 V8 v12.0": [[63, "v8-v12-0"]], "3.0.3 V8 v12.1": [[63, "v8-v12-1"]], "3.0.4 V8 v12.2": [[63, "v8-v12-2"]], "3.1.0 V8 v12.3": [[64, "v8-v12-3"]], "3.1.1 V8 v12.4": [[64, "v8-v12-4"]], "3.1.2 V8 v12.5": [[64, "v8-v12-5"]], "3.1.3 V8 v12.6": [[64, "v8-v12-6"]], "4. Debug as Usual": [[3, "debug-as-usual"]], "@V8Convert::mode": [[33, "v8convert-mode"]], "@V8Function::name": [[33, "v8function-name"]], "@V8Property and @V8Function": [[75, "v8property-and-v8function"]], "@V8Property::name": [[33, "v8property-name"]], "A dynamic link library (DLL) initialization routine failed": [[21, "a-dynamic-link-library-dll-initialization-routine-failed"]], "API Reference": [[36, "api-reference"]], "Access the Whole JVM": [[65, "access-the-whole-jvm"]], "Add or Remove Proxy Plugins": [[34, "add-or-remove-proxy-plugins"]], "Advanced": [[67, "advanced"]], "Aggressive GC": [[40, "aggressive-gc"]], "Alternative Option: ArrayBuffer": [[40, "alternative-option-arraybuffer"]], "Analysis": [[25, "analysis"]], "Android": [[74, "android"]], "Android Environment": [[0, "android-environment"]], "Architecture": [[4, "architecture"]], "Array": [[70, "array"]], "Automatic GC": [[40, "automatic-gc"]], "Automatic Management with try-with-resource": [[40, "automatic-management-with-try-with-resource"]], "Automatic Registration": [[52, "automatic-registration"]], "Automatic Termination": [[49, "automatic-termination"]], "Automatic Type Conversion": [[52, "automatic-type-conversion"]], "Automatically Manage with Weak Reference": [[40, "automatically-manage-with-weak-reference"]], "Background": [[10, "background"], [26, "background"]], "Backward Compatibility": [[46, "backward-compatibility"]], "Basic": [[73, "basic"]], "Benefits": [[42, "benefits"]], "Best Practices": [[43, "best-practices"]], "Binding via Native": [[30, "binding-via-native"]], "Binding via Proxy": [[30, "binding-via-proxy"]], "Blessing": [[82, "blessing"]], "Blog": [[27, "blog"]], "Boolean": [[28, "boolean"]], "Bridge Converter": [[28, "bridge-converter"]], "Build Environment": [[0, "build-environment"], [2, "build-environment"]], "Build Javet": [[0, "build-javet"], [1, "build-javet"], [1, "id1"]], "Build Javet JNI Library for Android": [[1, "build-javet-jni-library-for-android"]], "Build Javet for Android": [[1, "build-javet-for-android"]], "Build Javet for Android on Linux or Windows": [[2, "build-javet-for-android-on-linux-or-windows"]], "Build Javet for Linux on Linux or Windows": [[2, "build-javet-for-linux-on-linux-or-windows"]], "Build Javet for Linux, Mac OS and Windows": [[1, "build-javet-for-linux-mac-os-and-windows"]], "Build Javet for Windows on Windows": [[2, "build-javet-for-windows-on-windows"]], "Build Javet from Scratch": [[1, "build-javet-from-scratch"]], "Build Javet with Docker": [[2, "build-javet-with-docker"]], "Build Node.js": [[1, "build-node-js"]], "Build Node.js on Linux": [[1, "build-node-js-on-linux"]], "Build Node.js on Mac OS": [[1, "build-node-js-on-mac-os"]], "Build Node.js on Windows": [[1, "build-node-js-on-windows"]], "Build V8": [[1, "build-v8"]], "Build V8 for Android": [[1, "build-v8-for-android"]], "Build V8 for Linux arm64": [[1, "build-v8-for-linux-arm64"]], "Build V8 for Linux x86_64": [[1, "build-v8-for-linux-x86-64"]], "Build V8 for Mac OS arm64": [[1, "build-v8-for-mac-os-arm64"]], "Build V8 for Mac OS x86_64": [[1, "build-v8-for-mac-os-x86-64"]], "Build V8 for Windows": [[1, "build-v8-for-windows"]], "Built-in Proxy Plugins": [[34, "built-in-proxy-plugins"]], "C++ Runtime": [[40, "c-runtime"]], "CDT Shell": [[3, "cdt-shell"]], "Call": [[52, "call"]], "Call vs. Invoke": [[52, "call-vs-invoke"]], "Can 2 Java Functions Map to One JavaScript Function and Property?": [[52, "can-2-java-functions-map-to-one-javascript-function-and-property"]], "Can Both JavaScript Function and Property Map to One Java Function?": [[52, "can-both-javascript-function-and-property-map-to-one-java-function"]], "Can Built-in Converter be Ignored?": [[30, "can-built-in-converter-be-ignored"]], "Can I Debug Javet in Chrome DevTools?": [[23, "can-i-debug-javet-in-chrome-devtools"]], "Can Javet Lib Loading Listener Take Environment Variables?": [[38, "can-javet-lib-loading-listener-take-environment-variables"]], "Can Javet Libraries be Removed from the Jar File?": [[38, "can-javet-libraries-be-removed-from-the-jar-file"]], "Can Javet Native Library Deployment be Skipped?": [[38, "can-javet-native-library-deployment-be-skipped"]], "Can Javet Native Library be Deployed to a Custom Location?": [[38, "can-javet-native-library-be-deployed-to-a-custom-location"]], "Can Javet Native Library be Loaded or Unloaded On-demand?": [[38, "can-javet-native-library-be-loaded-or-unloaded-on-demand"]], "Can Javet Support Legacy Linux?": [[18, "can-javet-support-legacy-linux"]], "Can Native Image be Supported?": [[12, "can-native-image-be-supported"]], "Can Symbol Properties be Intercepted?": [[52, "can-symbol-properties-be-intercepted"]], "Can already loaded in another classloader be Suppressed?": [[38, "can-already-loaded-in-another-classloader-be-suppressed"]], "Can i18n be Supported?": [[22, "can-i18n-be-supported"]], "Can this be Passed in?": [[52, "can-this-be-passed-in"]], "Change a User Defined JavaScript Function on the Fly": [[52, "change-a-user-defined-javascript-function-on-the-fly"]], "Chrome Developer Tools Internals": [[3, "chrome-developer-tools-internals"]], "Circular Structure": [[30, "circular-structure"]], "Cleanup": [[65, "cleanup"]], "Co-existence": [[77, "co-existence"]], "Collection in V8": [[51, "collection-in-v8"]], "Comparisons": [[30, "comparisons"], [39, "comparisons"], [52, "comparisons"]], "Conclusion": [[66, "conclusion"]], "Configuration": [[79, "configuration"]], "Context and Scope Info": [[52, "context-and-scope-info"]], "Converters": [[30, "converters"]], "Coroutines or Virtual Threads": [[39, "coroutines-or-virtual-threads"]], "Create PojoConverter": [[29, "create-pojoconverter"]], "Create a New Proxy Plugin": [[34, "create-a-new-proxy-plugin"]], "Create a Snapshot in Javet": [[42, "create-a-snapshot-in-javet"]], "Create a Snapshot via mksnapshot": [[42, "create-a-snapshot-via-mksnapshot"]], "Cross-platform": [[4, "cross-platform"]], "Custom Converter": [[29, "custom-converter"]], "Customization": [[3, "customization"]], "Deal with Native Modules": [[41, "deal-with-native-modules"]], "Debug with Chrome Developer Tools": [[3, "debug-with-chrome-developer-tools"]], "Declarative Function and Property Interception": [[13, "declarative-function-and-property-interception"]], "Define POJO Object": [[29, "define-pojo-object"]], "Dependency": [[27, "dependency"], [74, "dependency"]], "Design a POJO Converter": [[29, "design-a-pojo-converter"]], "Development": [[5, "development"], [14, "development"]], "Development Tools": [[8, "development-tools"]], "Docker Hub and Github": [[2, "docker-hub-and-github"]], "Documents": [[27, "documents"]], "Does it Support Node.js Mode?": [[3, "does-it-support-node-js-mode"]], "Dynamic: Anonymous Function": [[33, "dynamic-anonymous-function"]], "Dynamic: Anonymous Object for Class": [[33, "dynamic-anonymous-object-for-class"]], "Dynamic: Anonymous Object for Interface": [[33, "dynamic-anonymous-object-for-interface"]], "Dynamically Import Built-in Modules": [[41, "dynamically-import-built-in-modules"]], "ES6 Module": [[82, "es6-module"]], "Engine Pool": [[4, "engine-pool"]], "Enhance the Custom Object": [[31, "enhance-the-custom-object"]], "Environment": [[19, "environment"]], "Environment Variables": [[0, "environment-variables"]], "Error Codes": [[46, "error-codes"]], "Event unhandledRejection": [[26, "event-unhandledrejection"]], "Example": [[41, "example"]], "Example fs.readFileAsync()": [[53, "example-fs-readfileasync"]], "Executor and Execute": [[13, "executor-and-execute"]], "Expose JsonNode in V8": [[66, "expose-jsonnode-in-v8"]], "Express Build": [[2, "express-build"]], "FAQ": [[20, "faq"]], "FAQs": [[3, "faqs"]], "Features": [[33, "features"]], "From Java to JavaScript": [[31, "from-java-to-javascript"], [32, "from-java-to-javascript"]], "From JavaScript to Java": [[31, "from-javascript-to-java"], [32, "from-javascript-to-java"]], "Full Build - All-in-one": [[2, "full-build-all-in-one"]], "Full Build - Multi-staged": [[2, "full-build-multi-staged"]], "Function Interception": [[52, "function-interception"]], "Function Types": [[52, "function-types"]], "Functions and Objects": [[30, "functions-and-objects"]], "GC": [[40, "gc"]], "Gaps between Javet Node.js Mode and Native Node.js": [[41, "gaps-between-javet-node-js-mode-and-native-node-js"]], "Goals": [[71, "goals"]], "Gradle": [[8, "gradle"]], "Gradle Groovy DSL": [[27, "gradle-groovy-dsl"], [74, "gradle-groovy-dsl"]], "Gradle Kotlin DSL": [[27, "gradle-kotlin-dsl"], [74, "gradle-kotlin-dsl"]], "Handshake": [[3, "handshake"]], "Hello Javet": [[27, "hello-javet"], [72, "hello-javet"]], "Highlights": [[6, "highlights"], [31, "highlights"]], "History with J2V8": [[9, "history-with-j2v8"]], "How Snapshot Works": [[42, "how-snapshot-works"]], "How about Bind?": [[52, "how-about-bind"]], "How about Debug Mode?": [[49, "how-about-debug-mode"]], "How about Object Type Conversion?": [[52, "how-about-object-type-conversion"]], "How does It Work?": [[31, "how-does-it-work"]], "How does JavetProxyConverter Work?": [[33, "how-does-javetproxyconverter-work"]], "How to Avoid Argument Type Mismatches?": [[52, "how-to-avoid-argument-type-mismatches"]], "How to Cast Java Objects to JavaScript Objects?": [[28, "how-to-cast-java-objects-to-javascript-objects"]], "How to Change a User Defined JavaScript Function on the Fly?": [[52, "how-to-change-a-user-defined-javascript-function-on-the-fly"]], "How to Create a Snapshot": [[42, "how-to-create-a-snapshot"]], "How to Customize JavetProxyConverter?": [[33, "how-to-customize-javetproxyconverter"]], "How to Disable Properties or Functions?": [[52, "how-to-disable-properties-or-functions"]], "How to Escape from try-with-resource?": [[40, "how-to-escape-from-try-with-resource"]], "How to Handle Argument Count Mismatches?": [[52, "how-to-handle-argument-count-mismatches"]], "How to Think in Javet?": [[13, "how-to-think-in-javet"]], "How to Unregister Properties or Functions?": [[52, "how-to-unregister-properties-or-functions"]], "How?": [[68, "how"]], "Inject a Pattern": [[69, "inject-a-pattern"]], "Inject a Static Class": [[69, "inject-a-static-class"]], "Inject a StringBuilder": [[69, "inject-a-stringbuilder"]], "Inject an Enum": [[69, "inject-an-enum"]], "Injection": [[79, "injection"]], "Inside Converters": [[30, "inside-converters"]], "Installation": [[74, "installation"]], "Instance: File": [[33, "instance-file"]], "Instance: List": [[33, "instance-list"]], "Instance: Map": [[33, "instance-map"]], "Instance: Path": [[33, "instance-path"]], "Instance: Set": [[33, "instance-set"]], "Integer List": [[28, "integer-list"]], "IntelliJ": [[8, "intellij"]], "Interact with Node.js": [[68, "interact-with-node-js"]], "Interception": [[4, "interception"], [75, "interception"]], "Internals": [[41, "internals"]], "Invoke": [[52, "invoke"]], "Is That Possible?": [[68, "is-that-possible"]], "Is There a Live Demo?": [[3, "is-there-a-live-demo"]], "J2V8 Issues": [[9, "j2v8-issues"]], "J2V8 Latest Version": [[9, "j2v8-latest-version"]], "JDK": [[8, "jdk"]], "JS Flavor (Wrapped Exposure)": [[66, "js-flavor-wrapped-exposure"]], "JVM GC": [[40, "jvm-gc"]], "Java Flavor (Direct Exposure)": [[66, "java-flavor-direct-exposure"]], "Java VS Wasm Benchmarks": [[6, "java-vs-wasm-benchmarks"]], "Java and JavaScript Interop": [[69, "java-and-javascript-interop"]], "Javet": [[27, "javet"]], "Javet Design": [[4, "javet-design"]], "Javet Engine Pool": [[4, "javet-engine-pool"], [71, "javet-engine-pool"]], "Javet Performance": [[6, "javet-performance"]], "Javet Performance Improvements": [[6, "javet-performance-improvements"]], "Javet Shell": [[76, "javet-shell"]], "JavetProxyPluginArray": [[34, "javetproxypluginarray"]], "JavetProxyPluginDefault": [[34, "javetproxyplugindefault"]], "JavetProxyPluginList": [[34, "javetproxypluginlist"]], "JavetProxyPluginMap": [[34, "javetproxypluginmap"]], "JavetProxyPluginSet": [[34, "javetproxypluginset"]], "Know the Lock": [[39, "know-the-lock"]], "Learn from Unit Test": [[13, "learn-from-unit-test"]], "License": [[27, "license"]], "Lifecycle": [[53, "lifecycle"]], "Limitations": [[42, "limitations"]], "Linux": [[74, "linux"]], "Linux Environment": [[0, "linux-environment"], [2, "linux-environment"]], "Linux arm64 Docker Files Deprecated": [[2, "linux-arm64-docker-files-deprecated"]], "List": [[70, "list"]], "Load": [[38, "load"]], "Load and Unload": [[38, "load-and-unload"]], "Logging": [[48, "logging"]], "Long Unmodifiable List": [[28, "long-unmodifiable-list"]], "Mac OS": [[74, "mac-os"]], "MacOS Environment": [[0, "macos-environment"]], "Major Features": [[27, "major-features"]], "Manual GC": [[40, "manual-gc"]], "Manual Patch Native Modules on Windows": [[41, "manual-patch-native-modules-on-windows"]], "Manual Registration": [[52, "manual-registration"]], "Manual Termination": [[49, "manual-termination"]], "Map": [[70, "map"]], "Maven": [[27, "maven"], [74, "maven"]], "Maven (Optional)": [[8, "maven-optional"]], "Memory Leak Detection": [[4, "memory-leak-detection"]], "Memory Management": [[40, "memory-management"]], "Migrate from J2V8": [[82, "migrate-from-j2v8"]], "Migration Guides": [[81, "migration-guides"], [82, "migration-guides"]], "Modularization": [[41, "modularization"]], "Module": [[4, "module"]], "Module Virtualization": [[4, "module-virtualization"]], "Motivation": [[71, "motivation"]], "Multi-process Safety": [[4, "multi-process-safety"]], "Node.js": [[8, "node-js"], [43, "node-js"]], "Node.js Mode": [[41, "node-js-mode"], [78, "node-js-mode"]], "Node.js Mode and V8 Mode": [[77, "node-js-mode-and-v8-mode"]], "Node.js Mode vs. V8 Mode": [[4, "node-js-mode-vs-v8-mode"]], "Node.js and V8": [[82, "node-js-and-v8"]], "NodeRuntime.await()": [[26, "noderuntime-await"]], "NodeRuntime.lowMemoryNotification()": [[26, "noderuntime-lowmemorynotification"]], "Null Safety": [[30, "null-safety"]], "OS Compatibility": [[74, "os-compatibility"]], "Object Converter": [[31, "object-converter"], [70, "object-converter"]], "On-demand": [[41, "on-demand"]], "Passive GC": [[40, "passive-gc"]], "Patch ELF Native Modules on Linux": [[41, "patch-elf-native-modules-on-linux"]], "Performance": [[39, "performance"]], "Performance Comparisons of Node.js Mode and V8 Mode": [[6, "performance-comparisons-of-node-js-mode-and-v8-mode"]], "Play with Dynamic Interface": [[65, "play-with-dynamic-interface"]], "Play with Dynamic Object": [[65, "play-with-dynamic-object"]], "Play with StringBuilder": [[65, "play-with-stringbuilder"]], "Polyfill": [[78, "polyfill"]], "Pool": [[77, "pool"]], "Pre-load": [[41, "pre-load"]], "Preparation": [[28, "preparation"], [33, "preparation"], [69, "preparation"]], "Prepare Node.js": [[1, "prepare-node-js"]], "Prepare V8": [[1, "prepare-v8"]], "Primitive Converter": [[32, "primitive-converter"]], "Primitive Types": [[82, "primitive-types"]], "Primitive and Reference Types in Javet": [[4, "primitive-and-reference-types-in-javet"]], "Print 1 + 1 in Node.js Mode": [[72, "print-1-1-in-node-js-mode"]], "Print Hello Javet in V8 Mode": [[72, "print-hello-javet-in-v8-mode"]], "Promise and Resolver": [[53, "promise-and-resolver"]], "Proxy Converter": [[33, "proxy-converter"]], "Proxy Plugins": [[34, "proxy-plugins"]], "Python 3.8+ (Optional)": [[8, "python-3-8-optional"]], "Quick Start": [[27, "quick-start"]], "Ready! Go!": [[29, "ready-go"]], "Rebuild Native Modules on Windows": [[41, "rebuild-native-modules-on-windows"]], "Recommended Options": [[40, "recommended-options"]], "Reference": [[35, "reference"]], "Register Custom Objects": [[31, "register-custom-objects"]], "Register a Callback": [[53, "register-a-callback"]], "Register the Custom Object": [[31, "register-the-custom-object"]], "Release Notes": [[54, "release-notes"]], "Release Notes 0.7.x": [[55, "release-notes-0-7-x"]], "Release Notes 0.8.x": [[56, "release-notes-0-8-x"]], "Release Notes 0.9.x": [[57, "release-notes-0-9-x"]], "Release Notes 1.0.x": [[58, "release-notes-1-0-x"]], "Release Notes 1.1.x": [[59, "release-notes-1-1-x"]], "Release Notes 2.0.x": [[60, "release-notes-2-0-x"]], "Release Notes 2.1.x": [[61, "release-notes-2-1-x"]], "Release Notes 2.2.x": [[62, "release-notes-2-2-x"]], "Release Notes 3.0.x": [[63, "release-notes-3-0-x"]], "Release Notes 3.1.x": [[64, "release-notes-3-1-x"]], "Resource Management": [[37, "resource-management"], [43, "resource-management"], [52, "resource-management"]], "Root Cause": [[26, "root-cause"]], "SIGSEGV at createV8Runtime() in V8 Mode on AWS": [[25, "sigsegv-at-createv8runtime-in-v8-mode-on-aws"]], "Sample": [[75, "sample"]], "Security": [[43, "security"]], "Snapshot": [[42, "snapshot"]], "Solution": [[26, "solution"]], "Solution 1: Enforce the Initialization": [[25, "solution-1-enforce-the-initialization"]], "Solution 2: Set Environment Variable JAVET_DISABLE_PKU": [[25, "solution-2-set-environment-variable-javet-disable-pku"]], "Solutions": [[25, "solutions"]], "Sponsors": [[27, "sponsors"]], "Spring Integration": [[79, "spring-integration"]], "Static: Enum": [[33, "static-enum"]], "Static: Interface": [[33, "static-interface"]], "Static: Pattern": [[33, "static-pattern"]], "Static: StringBuilder": [[33, "static-stringbuilder"]], "Statistics": [[40, "statistics"]], "Step 1: Implement IJavetLogger": [[48, "step-1-implement-ijavetlogger"]], "Step 1: JavaScript Server": [[68, "step-1-javascript-server"]], "Step 2: Inject the Logger": [[48, "step-2-inject-the-logger"]], "Step 2: Worker Thread for the JavaScript Server": [[68, "step-2-worker-thread-for-the-javascript-server"]], "Step 3: Main Thread for the Interaction": [[68, "step-3-main-thread-for-the-interaction"]], "String Array": [[28, "string-array"]], "Summary": [[52, "summary"], [65, "summary"]], "Symptoms": [[25, "symptoms"]], "Synthetic Module": [[41, "synthetic-module"]], "System.gc() and System.runFinalization()": [[40, "system-gc-and-system-runfinalization"]], "TODO List": [[45, "todo-list"]], "Termination": [[49, "termination"]], "Test": [[66, "test"], [75, "test"]], "Test Javet": [[7, "test-javet"]], "Thread, Engine and Pool": [[43, "thread-engine-and-pool"]], "Thread-safety": [[39, "thread-safety"]], "Tips": [[44, "tips"], [52, "tips"]], "Troubleshooting": [[24, "troubleshooting"], [47, "troubleshooting"]], "Tutorial": [[80, "tutorial"]], "Type Conversion": [[82, "type-conversion"]], "Type Mismatch": [[52, "type-mismatch"]], "Unhandled Rejection": [[53, "unhandled-rejection"]], "Unload": [[38, "unload"]], "Usage": [[28, "usage"], [31, "usage"], [33, "usage"], [51, "usage"], [71, "usage"], [77, "usage"]], "Usage 1 without V8 Runtime": [[40, "usage-1-without-v8-runtime"]], "Usage 2 with V8 Runtime": [[40, "usage-2-with-v8-runtime"]], "V8 Collection": [[51, "v8-collection"]], "V8 Feature Flags": [[0, "v8-feature-flags"]], "V8 Function": [[52, "v8-function"]], "V8 GC": [[40, "v8-gc"]], "V8 Isolate and Context in Javet": [[4, "v8-isolate-and-context-in-javet"]], "V8 Mode": [[41, "v8-mode"], [78, "v8-mode"]], "V8 Options and V8Flags": [[40, "v8-options-and-v8flags"]], "V8 Promise": [[53, "v8-promise"]], "V8 Values": [[50, "v8-values"]], "V8 \u27f6 V8Runtime": [[82, "v8-v8runtime"]], "V8Host": [[77, "v8host"]], "V8Locker": [[82, "v8locker"]], "V8Runtime": [[13, "v8runtime"]], "V8Runtime and V8ValueGlobalObject": [[13, "v8runtime-and-v8valueglobalobject"]], "V8Runtime.await()": [[40, "v8runtime-await"]], "V8Runtime.idleNotificationDeadline(long deadlineInMillis)": [[40, "v8runtime-idlenotificationdeadline-long-deadlineinmillis"]], "V8Runtime.lowMemoryNotification()": [[40, "v8runtime-lowmemorynotification"]], "V8ValueArray": [[51, "v8valuearray"]], "V8ValueGlobalObject": [[13, "v8valueglobalobject"]], "V8ValueMap": [[51, "v8valuemap"]], "V8ValueSet": [[51, "v8valueset"]], "Visual Studio Community 2022 (Optional)": [[8, "visual-studio-community-2022-optional"]], "What If Node.js Hangs during Close()?": [[68, "what-if-node-js-hangs-during-close"]], "What does Lock Mean in Javet?": [[39, "what-does-lock-mean-in-javet"]], "What is the Motivation?": [[11, "what-is-the-motivation"]], "What is the Source Code of a Function in V8?": [[52, "what-is-the-source-code-of-a-function-in-v8"]], "When does the Config Take Effect?": [[30, "when-does-the-config-take-effect"]], "Where are ES6 API in V8 Mode?": [[15, "where-are-es6-api-in-v8-mode"]], "Where are the Examples?": [[16, "where-are-the-examples"]], "Why Error Codes?": [[46, "why-error-codes"]], "Why Migrate from J2V8 to Javet?": [[82, "why-migrate-from-j2v8-to-javet"]], "Why Node.js Crashes When being Closed?": [[26, "why-node-js-crashes-when-being-closed"]], "Why Patching Node.js?": [[1, "why-patching-node-js"]], "Why Patching V8?": [[1, "why-patching-v8"]], "Why Windows and Linux only?": [[9, "why-windows-and-linux-only"]], "Why is Changing a User Defined JavaScript Function Important?": [[52, "why-is-changing-a-user-defined-javascript-function-important"]], "Why is the Inspector Disabled in Node.js Mode?": [[17, "why-is-the-inspector-disabled-in-node-js-mode"]], "Why not Automate the J2V8 Build System?": [[9, "why-not-automate-the-j2v8-build-system"]], "Why not Deploy J2V8 to Maven Repository?": [[9, "why-not-deploy-j2v8-to-maven-repository"]], "Windows": [[74, "windows"]], "Windows Environment": [[0, "windows-environment"], [2, "windows-environment"]], "With Engine Pool": [[49, "with-engine-pool"]], "Without Engine Pool": [[49, "without-engine-pool"]], "bind()": [[52, "bind"]], "boolean bindFunction(String functionName, JavetCallbackContext javetCallbackContext)": [[52, "boolean-bindfunction-string-functionname-javetcallbackcontext-javetcallbackcontext"]], "boolean bindFunction(String functionName, String codeString)": [[52, "boolean-bindfunction-string-functionname-string-codestring"]], "boolean set(String key, V8Value value)": [[52, "boolean-set-string-key-v8value-value"]], "decimal.js": [[78, "decimal-js"]], "int": [[28, "int"]], "int Array": [[28, "int-array"]], "registerJavaMethod() \u27f6 @V8Function": [[82, "registerjavamethod-v8function"]], "require() vs. import()": [[4, "require-vs-import"]]}, "docnames": ["development/build", "development/build_javet_from_scratch", "development/build_javet_with_docker", "development/debug_with_chrome_developer_tools", "development/design", "development/index", "development/performance", "development/test", "development/tools", "faq/background/history_with_j2v8", "faq/background/index", "faq/background/what_is_the_motivation", "faq/development/can_native_image_be_supported", "faq/development/how_to_think_in_javet", "faq/development/index", "faq/development/where_are_es6_api_in_v8_mode", "faq/development/where_are_the_examples", "faq/development/why_is_the_inspector_disabled_in_node_js_mode", "faq/environment/can_javet_support_legacy_linux", "faq/environment/index", "faq/index", "faq/troubleshooting/a_dynamic_link_library_dll_initialization_routine_failed", "faq/troubleshooting/can_i18n_be_supported", "faq/troubleshooting/can_i_debug_javet_in_chrome_dev_tools", "faq/troubleshooting/index", "faq/troubleshooting/sigsegv_at_createv8runtime_in_v8_mode_on_aws", "faq/troubleshooting/why_node_js_crashes_when_being_closed", "index", "reference/converters/bridge_converter", "reference/converters/custom_converter", "reference/converters/index", "reference/converters/object_converter", "reference/converters/primitive_converter", "reference/converters/proxy_converter", "reference/converters/proxy_plugins", "reference/index", "reference/javadoc/index", "reference/resource_management/index", "reference/resource_management/load_and_unload", "reference/resource_management/lock", "reference/resource_management/memory_management", "reference/resource_management/modularization", "reference/resource_management/snapshot", "reference/tips/best_practices", "reference/tips/index", "reference/todo_list", "reference/troubleshooting/error_codes", "reference/troubleshooting/index", "reference/troubleshooting/logging", "reference/troubleshooting/termination", "reference/v8_values/index", "reference/v8_values/v8_collection", "reference/v8_values/v8_function", "reference/v8_values/v8_promise", "release_notes/index", "release_notes/release_notes_0_7", "release_notes/release_notes_0_8", "release_notes/release_notes_0_9", "release_notes/release_notes_1_0", "release_notes/release_notes_1_1", "release_notes/release_notes_2_0", "release_notes/release_notes_2_1", "release_notes/release_notes_2_2", "release_notes/release_notes_3_0", "release_notes/release_notes_3_1", "tutorial/advanced/access_the_whole_jvm", "tutorial/advanced/expose_json_node_in_v8", "tutorial/advanced/index", "tutorial/advanced/interact_with_node_js", "tutorial/advanced/java_and_javascript_interop", "tutorial/advanced/object_converter", "tutorial/basic/engine_pool", "tutorial/basic/hello_javet", "tutorial/basic/index", "tutorial/basic/installation", "tutorial/basic/interception", "tutorial/basic/javet_shell", "tutorial/basic/node_js_mode_and_v8_mode", "tutorial/basic/polyfill", "tutorial/basic/spring_integration", "tutorial/index", "tutorial/migration_guides/index", "tutorial/migration_guides/migrate_from_j2v8"], "envversion": {"sphinx": 61, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["development/build.rst", "development/build_javet_from_scratch.rst", "development/build_javet_with_docker.rst", "development/debug_with_chrome_developer_tools.rst", "development/design.rst", "development/index.rst", "development/performance.rst", "development/test.rst", "development/tools.rst", "faq/background/history_with_j2v8.rst", "faq/background/index.rst", "faq/background/what_is_the_motivation.rst", "faq/development/can_native_image_be_supported.rst", "faq/development/how_to_think_in_javet.rst", "faq/development/index.rst", "faq/development/where_are_es6_api_in_v8_mode.rst", "faq/development/where_are_the_examples.rst", "faq/development/why_is_the_inspector_disabled_in_node_js_mode.rst", "faq/environment/can_javet_support_legacy_linux.rst", "faq/environment/index.rst", "faq/index.rst", "faq/troubleshooting/a_dynamic_link_library_dll_initialization_routine_failed.rst", "faq/troubleshooting/can_i18n_be_supported.rst", "faq/troubleshooting/can_i_debug_javet_in_chrome_dev_tools.rst", "faq/troubleshooting/index.rst", "faq/troubleshooting/sigsegv_at_createv8runtime_in_v8_mode_on_aws.rst", "faq/troubleshooting/why_node_js_crashes_when_being_closed.rst", "index.rst", "reference/converters/bridge_converter.rst", "reference/converters/custom_converter.rst", "reference/converters/index.rst", "reference/converters/object_converter.rst", "reference/converters/primitive_converter.rst", "reference/converters/proxy_converter.rst", "reference/converters/proxy_plugins.rst", "reference/index.rst", "reference/javadoc/index.rst", "reference/resource_management/index.rst", "reference/resource_management/load_and_unload.rst", "reference/resource_management/lock.rst", "reference/resource_management/memory_management.rst", "reference/resource_management/modularization.rst", "reference/resource_management/snapshot.rst", "reference/tips/best_practices.rst", "reference/tips/index.rst", "reference/todo_list.rst", "reference/troubleshooting/error_codes.rst", "reference/troubleshooting/index.rst", "reference/troubleshooting/logging.rst", "reference/troubleshooting/termination.rst", "reference/v8_values/index.rst", "reference/v8_values/v8_collection.rst", "reference/v8_values/v8_function.rst", "reference/v8_values/v8_promise.rst", "release_notes/index.rst", "release_notes/release_notes_0_7.rst", "release_notes/release_notes_0_8.rst", "release_notes/release_notes_0_9.rst", "release_notes/release_notes_1_0.rst", "release_notes/release_notes_1_1.rst", "release_notes/release_notes_2_0.rst", "release_notes/release_notes_2_1.rst", "release_notes/release_notes_2_2.rst", "release_notes/release_notes_3_0.rst", "release_notes/release_notes_3_1.rst", "tutorial/advanced/access_the_whole_jvm.rst", "tutorial/advanced/expose_json_node_in_v8.rst", "tutorial/advanced/index.rst", "tutorial/advanced/interact_with_node_js.rst", "tutorial/advanced/java_and_javascript_interop.rst", "tutorial/advanced/object_converter.rst", "tutorial/basic/engine_pool.rst", "tutorial/basic/hello_javet.rst", "tutorial/basic/index.rst", "tutorial/basic/installation.rst", "tutorial/basic/interception.rst", "tutorial/basic/javet_shell.rst", "tutorial/basic/node_js_mode_and_v8_mode.rst", "tutorial/basic/polyfill.rst", "tutorial/basic/spring_integration.rst", "tutorial/index.rst", "tutorial/migration_guides/index.rst", "tutorial/migration_guides/migrate_from_j2v8.rst"], "indexentries": {}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"": [0, 2, 4, 6, 9, 11, 25, 26, 29, 33, 34, 39, 40, 41, 42, 43, 46, 52, 53, 65, 66, 68, 70, 77, 82], "0": [1, 3, 9, 18, 25, 27, 28, 29, 31, 33, 34, 40, 41, 42, 43, 49, 51, 52, 54, 65, 66, 68, 70, 74, 75, 78, 82], "00000000": 3, "0000000000000000": 41, "00000001": 41, "0000000180108724": 41, "0000000180108ab5": 41, "000000018014f248": 41, "000000018014fa68": 41, "0000000180154818": 41, "0000000180154a40": 41, "003": 9, "009": 9, "01": [57, 58, 59, 60, 63], "019": 9, "02": [55, 56, 59, 60, 63], "03": [59, 60, 61, 64], "032": 6, "04": [0, 2, 18, 55, 56, 59, 61, 63, 64, 74], "05": [57, 59, 62, 64], "06": [56, 57, 59, 62, 64], "07": [57, 59, 61, 62], "08": [57, 59, 62], "09": [57, 58, 60, 62, 63, 64], "0_282": 66, "1": [0, 4, 6, 9, 13, 18, 27, 28, 29, 31, 33, 34, 38, 41, 42, 43, 49, 51, 52, 54, 65, 66, 69, 70, 74, 75, 76, 77, 78, 82], "10": [0, 2, 6, 33, 40, 49, 58, 63, 64, 66, 74], "1000": 68, "10000": 49, "100000": 66, "100000000": 3, "100_000": 66, "101": 46, "102": 46, "103": 46, "10308": 40, "1038": 40, "104": 46, "105": [6, 46], "106": 58, "10700k": [6, 9], "1095": 6, "11": [0, 29, 58, 59, 60, 63, 64], "110": 9, "1134": 6, "115": 59, "11gb": 2, "12": [58, 60, 61, 62, 64], "120gb": 2, "123": [33, 52, 65, 69, 75, 78], "12345": 28, "12346": 28, "124": [59, 75], "127": [3, 40], "128": 40, "128gb": 66, "13": [6, 27, 58, 60, 61, 64], "132": 59, "139": 59, "14": [8, 9, 27, 33, 58, 59, 60, 61, 62, 63, 64, 74], "1411": 6, "143": 6, "146": [57, 58], "15": [57, 59, 60, 61, 63], "150": 62, "154": 59, "16": [0, 6, 18, 40, 56, 57, 59, 60, 61, 62, 63, 74], "1660": 6, "168": 60, "169": 63, "17": [8, 57, 59, 62, 63], "172": [58, 63], "174": 59, "175": 69, "177": 59, "18": [18, 58, 62, 74], "180": 58, "1801363d8": 41, "180166610": 41, "183": 62, "189": 62, "19": [57, 58], "193": 60, "194": 60, "19464m": 66, "1l": 28, "1m": 42, "1n": 34, "2": [6, 8, 9, 13, 18, 27, 28, 31, 33, 34, 38, 41, 42, 43, 49, 51, 54, 65, 69, 72, 74, 75, 76, 77, 78, 82], "20": [0, 2, 26, 56, 58, 59, 60, 61, 62, 63, 74], "200": 75, "201": 46, "2015": [9, 41], "2016": 9, "2017": 9, "2019": [9, 61], "2020": [9, 11], "2021": [55, 56, 57, 58, 82], "2022": [0, 5, 59, 60, 61, 64], "2023": [6, 25, 60, 61, 62, 63], "2024": [63, 64], "2048": 6, "21": [6, 39, 57, 63, 74], "213": 9, "214": 61, "2147483647": 40, "2147483648": 40, "218": 59, "219": 64, "22": [58, 63, 74], "221": 6, "226": 60, "227": 64, "228": [27, 64], "22h2": 66, "23": [41, 56, 59, 60, 62, 74, 78], "230": 57, "234567": 40, "23456789012345": 40, "24": [0, 56, 61, 63, 74], "244": 61, "25": [0, 58, 60, 63, 74], "253": 6, "254": 64, "255": [9, 40, 55, 69], "256": 40, "257": 56, "26": [25, 58, 59, 63, 64], "262": 52, "263": [6, 40], "264": 40, "267": 63, "269": 57, "274": 9, "2761": 6, "277": 61, "279": 6, "28": [42, 57, 60, 63, 64], "281": 63, "285": 63, "29": [57, 74], "298k": 42, "299": 9, "2l": 28, "2n": 34, "3": [0, 1, 5, 6, 9, 17, 18, 26, 27, 28, 33, 34, 38, 41, 42, 51, 52, 54, 65, 72, 74, 75, 76], "30": [0, 60], "301": 46, "302": 46, "305": 6, "31": 57, "32": [3, 40], "324": 40, "32767": 40, "32768": 40, "338": 9, "34": [41, 74, 78], "345": 57, "35": 9, "363": 6, "367": 6, "36893488147419103232": 34, "370": 66, "38": 40, "384": 40, "3rd": [48, 52], "4": [0, 6, 9, 33, 34, 38, 40, 41, 51, 52, 54, 65, 68, 74, 75, 76], "401": 46, "402": 46, "403": 46, "404": 46, "405": 46, "406": 46, "407": [46, 57], "408": [46, 62], "410": 6, "4128": 6, "4198": 6, "4243": 41, "424b": 41, "428": 9, "4294967295": 40, "439": 62, "45": 78, "458": 6, "4639": 6, "472": 6, "484": 6, "4975": 6, "4g": 2, "5": [0, 2, 3, 25, 26, 33, 40, 41, 42, 54, 65, 68, 74, 75, 76], "50": 39, "500": 68, "501": 46, "502": 46, "503": [46, 57], "508": 6, "51": 6, "512": [6, 40], "5214m": 66, "546": 6, "55": 6, "571": 9, "586": 6, "59": 6, "5950x": 66, "5gb": 2, "6": [3, 8, 9, 27, 41, 54, 60, 63, 65, 68, 74, 75, 76], "60": 2, "601": 46, "602": [46, 57], "603": [46, 57], "6072": 41, "6096": 41, "64": [40, 57], "647": 6, "65": 6, "65535": 40, "65n": 34, "660": 6, "672": 6, "688": 9, "694": 6, "7": [3, 6, 18, 40, 54, 65, 68, 74, 75, 76, 82], "70": 18, "701": 46, "702": 46, "703": 46, "72": 6, "745k": 42, "748": 6, "751": 6, "76": 75, "768": 40, "78": 6, "796": 6, "8": [0, 3, 5, 6, 9, 18, 29, 40, 54, 58, 61, 65, 66, 68, 74], "80": 18, "801": 46, "802": 46, "803": 46, "804": 46, "805": [46, 57], "806": [46, 58], "807": 46, "808": 46, "814": 6, "82": 26, "84": 6, "846": 6, "86": 6, "8991": 68, "9": [0, 9, 18, 54, 64, 65, 68], "90": 18, "901": [46, 59], "9229": 3, "968": 6, "98": 6, "A": [1, 4, 20, 24, 25, 29, 41, 42, 52], "And": [6, 9, 27, 68], "As": [2, 3, 4, 13, 25, 28, 31, 33, 38, 40, 48, 52, 65, 79], "At": [9, 11, 52], "Be": [3, 33, 40, 43, 53, 65], "But": [17, 38, 39, 40, 41, 52, 53, 79], "By": [22, 38, 40, 75], "For": [8, 13, 33, 41, 49, 52], "If": [1, 2, 13, 26, 27, 30, 31, 32, 33, 40, 41, 42, 43, 49, 52, 75, 76, 82], "In": [3, 4, 6, 13, 17, 26, 28, 30, 33, 38, 39, 40, 41, 43, 49, 52, 53, 66, 68, 82], "It": [0, 2, 4, 6, 9, 13, 17, 22, 27, 29, 30, 33, 34, 39, 40, 41, 42, 43, 49, 52, 71, 76, 77, 82], "Its": [9, 40, 42, 82], "NOT": [4, 39, 52], "No": [4, 9, 29, 30, 38, 41, 49, 51, 52, 68], "Not": [4, 52, 74], "Of": [2, 33, 40, 41, 52, 65, 82], "One": [4, 30], "Or": 2, "That": [2, 4, 6, 9, 25, 26, 30, 38, 40, 41, 48, 49, 52, 65, 82], "The": [0, 1, 2, 3, 4, 6, 7, 9, 13, 16, 17, 21, 25, 26, 28, 29, 30, 33, 34, 38, 39, 40, 41, 42, 46, 49, 52, 53, 65, 66, 68, 69, 74, 75, 76, 77, 82], "Then": 29, "There": [4, 9, 12, 13, 18, 28, 29, 30, 34, 38, 40, 41, 42, 46, 49, 52, 65, 66, 77], "To": [1, 3, 9, 22, 30, 38, 45, 69], "With": [9, 13, 41, 66], "__dirnam": [41, 64], "__filenam": [41, 64], "_zn4nodel23thread_local_modpending": 1, "a123": 33, "aar": 1, "aarch64": 74, "ab": 28, "abandon": 82, "abc": [33, 38, 52, 65, 69], "abc123": 65, "abi": [59, 61, 74], "abl": [11, 13, 22, 26, 30, 41, 42, 49, 52, 68, 82], "about": [29, 39], "abov": 52, "absent": [15, 39, 52], "accept": [3, 17, 30, 48, 52, 53, 57], "access": [1, 13, 33, 38, 40, 46, 52, 67, 80], "accid": 28, "accord": 6, "accordingli": 52, "achiev": [4, 9, 33, 39, 40, 52], "acquir": [43, 46, 82], "across": 40, "activ": [9, 26, 38, 41, 74], "activebydefault": 74, "actual": [2, 3, 4, 6, 9, 13, 30, 39, 40, 41, 46, 52, 65, 66, 68], "actualparameters": 46, "actualparametertyp": 46, "ad": [6, 9, 33, 39, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64], "add": [3, 18, 25, 28, 29, 31, 33, 40, 41, 42, 49, 51, 52, 53, 65, 70, 75, 78, 82], "addgcepiloguecallback": 58, "addgcprologuecallback": 58, "addit": [6, 12, 18, 31, 39, 52, 74, 82], "address": [3, 26, 40, 41, 43, 52, 63, 68], "adjust": 58, "admit": 9, "advanc": [18, 27, 53, 80], "advantag": 41, "affect": 40, "aforement": 40, "after": [1, 3, 9, 31, 33, 38, 41, 42, 43, 49, 52, 53, 66, 82], "afterward": [49, 53], "ag": 9, "again": [17, 33, 38], "against": [1, 52], "agent": 17, "agnost": 58, "aim": [15, 41, 78, 82], "air": 9, "aka": 3, "algorithm": [6, 58], "alia": 33, "alien": 31, "align": 4, "all": [0, 1, 3, 4, 9, 12, 26, 28, 29, 31, 33, 34, 38, 40, 41, 42, 49, 52, 56, 58, 65, 66, 68, 70, 82], "alloc": [4, 39, 52, 58], "allow": [4, 6, 9, 22, 28, 29, 30, 31, 33, 34, 38, 41, 48, 52, 53, 56, 57, 58, 62, 65, 68, 69, 70, 71, 75, 82], "allowev": 56, "allowonli": 33, "almost": [4, 9, 33, 40, 52, 68], "alreadi": [33, 46, 53], "also": [1, 2, 4, 6, 9, 11, 13, 30, 32, 33, 38, 39, 40, 41, 48, 52, 53, 68, 82], "alter": 33, "altern": [18, 31], "alwai": [4, 29, 43, 52], "am": [9, 33, 52], "amd": [41, 66], "among": [3, 6, 39, 52, 62, 82], "amount": [6, 22, 82], "an": [3, 4, 6, 9, 11, 13, 15, 25, 27, 28, 30, 33, 34, 38, 39, 40, 41, 42, 43, 48, 49, 52, 53, 65, 70, 75, 76, 77], "analysi": [27, 41], "analyz": [40, 41], "andoird": 59, "android": [9, 27, 38, 59, 60, 61, 64, 65], "android_ndk_hom": [0, 1], "android_sdk_hom": 0, "ani": [1, 9, 30, 31, 32, 33, 41, 42, 46, 48, 49, 52, 82], "annoi": 28, "annot": [33, 52, 57, 65], "annotationbasedcallbackreceiv": 52, "anonym": [52, 65], "anoth": [52, 65, 78], "anywher": 38, "apach": 27, "apart": 41, "api": [3, 4, 9, 11, 13, 14, 20, 27, 29, 30, 33, 35, 38, 39, 40, 41, 48, 52, 53, 55, 56, 58, 62, 65, 66, 68, 70, 78, 82], "app": 68, "appear": [3, 52], "append": [1, 33, 65, 69], "appli": [4, 25, 30, 33, 38, 41, 43, 49, 52, 59, 63, 68], "applic": [3, 4, 6, 13, 17, 25, 26, 29, 30, 31, 33, 38, 39, 40, 41, 42, 49, 52, 53, 65, 68, 69, 71, 75, 76, 82], "approach": [41, 52], "apt": [18, 41], "ar": [0, 1, 2, 3, 4, 6, 8, 9, 13, 14, 17, 18, 20, 26, 27, 28, 29, 30, 31, 32, 33, 34, 38, 39, 40, 41, 42, 43, 46, 49, 52, 53, 55, 56, 57, 65, 66, 68, 69, 70, 74, 75, 77, 82], "arbitrari": [3, 4, 13, 30, 31, 33, 65, 69, 82], "arbitrarymethod": 52, "arch": [1, 27, 42, 58, 74], "architectur": [5, 9], "area": 40, "arg": [1, 25, 29, 52, 68], "argument": [29, 31, 42, 82], "arm": [1, 27, 58, 74], "arm64": [27, 61, 63, 74], "armeabi": 1, "around": [9, 41], "arrai": [30, 31, 33, 34, 40, 51, 52, 55, 64], "arraylist": [25, 28, 31, 70], "arrayutil": 63, "articl": 4, "artifact": 2, "artifactid": [27, 33, 74], "asarrai": 63, "asboolean": 63, "asdoubl": 63, "asint": [63, 66], "ask": 82, "aslist": [28, 52], "aslong": 63, "assembli": 42, "assert": 70, "assertarrayequ": [28, 33], "assertequ": [28, 31, 33, 34, 41, 42, 49, 51, 52], "assertfals": [28, 33, 34, 41, 49, 51, 52], "assertinstanceof": 49, "assertnotnul": [31, 33, 42, 51], "assertsam": [33, 34], "assertthrow": 33, "asserttru": [28, 33, 34, 41, 42, 49, 51, 52, 53], "assign": [41, 52, 57, 69], "asstr": 63, "assum": [38, 41, 52], "ast": [13, 27], "async": [4, 6, 26, 53], "asynchron": 6, "atomic_bool": 17, "atomicboolean": 68, "atomicinteg": 51, "attack": [30, 49], "attempt": 22, "attent": 82, "aussi": 33, "authent": 3, "author": 3, "auto": [3, 18, 38, 56], "autoclos": 33, "autom": [29, 40], "automat": [4, 7, 30, 33, 38, 39, 41, 46, 61, 72, 75, 82], "autosendgcnotif": 56, "avail": [2, 3, 4, 21, 34, 38, 42, 46, 52, 65, 77], "avoid": [4, 13, 22, 30, 33, 38, 43, 63, 65], "aw": [20, 24, 40], "awai": 58, "await": [4, 6, 43, 52, 53, 56, 60, 68], "awaitmod": 68, "awar": [6, 40, 43], "awesom": [27, 77], "awt": 69, "b": [3, 28, 30, 33, 34, 41, 42, 52, 65, 66, 69, 70, 76, 78], "back": [13, 30, 33, 40, 41, 52, 54], "background": [20, 27, 53], "backup": 41, "bad": [4, 9], "base": [2, 6, 7, 25, 33, 40, 52, 57, 59, 60, 66, 82], "base_all_in_on": 2, "base_gradl": 2, "base_jvm": 2, "base_nod": 2, "base_v8": 2, "basejavetconsoleinterceptor": 63, "basejavetreflectionproxyhandl": 63, "bases": 2, "basic": [15, 27, 32, 34, 52, 71, 78, 80, 82], "bat": 1, "batchget": 62, "bean": 79, "beauti": [4, 30, 52], "becaus": [3, 4, 6, 8, 9, 17, 26, 27, 28, 29, 30, 31, 33, 38, 39, 40, 43, 46, 52, 53, 65, 66, 71, 77, 78, 82], "been": [2, 8, 9, 26, 38, 52, 82], "befor": [3, 13, 25, 26, 30, 38, 40, 41, 49, 65, 68], "begin": 4, "behav": 52, "behavior": [30, 33, 40, 43, 52, 64], "behind": [4, 6, 11, 13, 26, 65, 70], "being": [20, 24, 33, 40, 41, 49, 52], "belong": 52, "below": [31, 52], "benchmark": 5, "besid": [28, 52], "best": [4, 16, 44], "better": [3, 4, 6, 38, 39, 52, 63, 66], "between": [4, 6, 9, 27, 30, 31, 40, 43, 52, 56, 66, 69], "beyond": 4, "bfals": 28, "bi": [30, 70], "biconsum": 51, "bien": 52, "bigdecim": 78, "bigint": [27, 32, 34, 40, 55], "bigint32arrai": 31, "bigint64arrai": [31, 40], "biginteg": [32, 34], "biguint64arrai": 40, "bin": [1, 18], "binari": [40, 46, 61], "binarytre": 6, "bind": [6, 33, 41, 53, 56, 70, 75, 82], "bindfunct": [56, 62], "bindingcontextstor": 63, "bindproperti": [56, 62], "bit": [13, 31, 40, 41], "black": 6, "blank": 52, "blob": 42, "block": [30, 39, 40, 46, 49, 52, 72], "blockonli": 33, "blogspot": 27, "bodi": [52, 66, 68], "boolean": [30, 31, 32, 34, 38, 42], "borrow": [40, 52], "both": [4, 6, 30, 38, 40, 42, 46, 53, 57, 65, 77, 82], "bother": 41, "bound": 41, "boundari": 4, "box": [6, 41], "brand": 4, "break": [9, 30, 41, 52, 53, 66, 76], "breakpoint": 3, "brew": 0, "bridg": [30, 58], "bring": [4, 30, 38], "broadcast": 40, "broken": [1, 9, 25, 40, 52], "browser": [3, 43], "btrue": 28, "buddi": [33, 65], "buffer": [4, 40], "bug": [54, 56, 58, 59, 60, 61, 62, 82], "bui": 9, "build": [3, 4, 5, 8, 11, 12, 17, 18, 22, 25, 27, 41, 42, 52, 56, 57, 61, 63, 74], "build_all_in_on": 2, "build_artifact": 2, "builder": 13, "built": [0, 2, 3, 6, 7, 28, 31, 40, 42, 46, 49, 52, 53, 56, 57, 61, 64, 65, 66, 82], "bundl": 8, "busi": [6, 58, 82], "bypass": [38, 52], "byte": [4, 31, 32, 33, 34, 40, 42, 52, 65], "bytebuddi": [33, 60], "bytebuff": [40, 59], "c": [1, 33, 41, 52, 59, 60, 61, 66, 70], "cach": [41, 55, 59, 60], "cacheddata": 60, "calcul": [4, 52], "call": [4, 6, 9, 13, 17, 25, 26, 29, 30, 33, 38, 39, 40, 41, 43, 49, 53, 56, 65, 66, 68, 69, 75, 82], "callabl": 33, "callasconstructor": [52, 55, 78], "callback": [3, 26, 40, 41, 46, 52, 56, 57, 58, 59, 61, 62, 68], "callbackcontextcount": 46, "callbackinjectionfailur": 46, "callbackmethodfailur": 46, "callbackregistrationfailur": 46, "callbacksignatureparametersizemismatch": 46, "callbacksignatureparametertypemismatch": 46, "callbacktyp": 46, "callbacktypenotsupport": [46, 62], "callbackunknownfailur": 46, "callbackunregistrationfailur": 46, "caller": [52, 53], "callobject": 52, "callprimit": 52, "callvoid": [52, 68], "can": [1, 2, 3, 4, 6, 13, 14, 19, 20, 24, 26, 31, 33, 34, 40, 41, 42, 43, 53, 65, 68, 69, 77, 78, 79, 82], "canaccess": 29, "cancel": [], "candiscardcompil": 60, "canexecut": 33, "cannot": [21, 30, 39, 40, 41, 42], "canread": [33, 78], "canwrit": 33, "caoccao": [2, 6, 25, 27, 40, 41, 48, 74], "capabl": [34, 41, 52, 65, 66], "capac": 58, "captur": [42, 76], "care": [3, 32, 33, 39, 40, 41, 43, 53, 65], "carri": [31, 82], "case": [4, 6, 7, 9, 16, 30, 32, 38, 39, 40, 41, 52, 53, 55, 82], "cast": 58, "catalina": [0, 74], "catch": [25, 29, 49, 52, 53, 68, 76], "categor": 40, "caus": [9, 21, 22, 25, 38, 49, 52, 58, 82], "cd": [1, 2, 41], "cdt": [5, 76], "cdtshell": 63, "cent": 74, "cento": 59, "central": [2, 8], "ceo": 29, "certain": [1, 3, 4, 13, 42, 52, 53, 57], "cfo": 29, "chain": [18, 40], "challeng": [4, 9, 13, 30], "chanc": 9, "chang": [2, 17, 25, 30, 31, 39, 41, 46, 57, 58, 62, 63, 69, 75], "channel": 27, "chao": 39, "char": [31, 32, 34, 52], "charact": [32, 34], "characterist": 41, "charm": 52, "chart": 53, "cheap": 30, "cheaper": 4, "check": [13, 39, 41, 52, 57, 64, 82], "check_eq": 17, "checkout": 1, "checkreturnvalu": 56, "childjsonnod": 66, "choic": [18, 27], "choos": [6, 26, 52], "chrome": [4, 5, 17, 20, 24, 27, 42, 55], "chromedevtool": 3, "circular": [29, 46, 57], "clamp": 40, "class": [25, 29, 31, 41, 48, 49, 52, 65, 66, 68, 75, 79], "classdescriptorstor": 63, "classload": [4, 82], "classpath": 79, "clean": [58, 65], "clear": 63, "cli": 41, "click": 3, "clone": [1, 2, 60], "close": [4, 9, 13, 17, 20, 24, 33, 38, 40, 41, 43, 46, 49, 52, 56, 57, 61, 63, 65, 70, 71], "closur": 52, "cmake": [0, 1, 9], "cmakelist": 9, "cmd": [1, 41], "co": 4, "code": [1, 3, 4, 6, 9, 13, 17, 25, 29, 30, 31, 34, 39, 40, 41, 42, 43, 47, 49, 53, 57, 58, 62, 65, 66, 69, 70, 71, 72, 75, 76, 78, 82], "codefil": 68, "codestr": [33, 41, 55], "collect": [26, 28, 31, 38, 50, 55], "collectionutil": 63, "collector": [33, 40, 65], "color": 69, "com": [2, 6, 25, 27, 40, 41, 48, 74], "combin": 52, "come": [0, 4, 6, 39, 41], "command": [1, 42, 76], "commit": [18, 25, 74], "common": [13, 18], "commonj": 41, "commun": [0, 3, 5, 9, 17, 27], "compar": [4, 7, 39], "comparison": [4, 5, 9, 27], "compat": [41, 58, 63], "compel": 11, "compil": [1, 4, 6, 33, 41, 42, 46, 52, 63, 65, 69, 82], "compilationfailur": 46, "compilemodul": 41, "compilev8modul": [41, 82], "compilev8valuefunct": 60, "complement": 40, "complet": [3, 4, 7, 12, 31, 33, 40, 41, 43, 49, 52, 57, 58, 68, 69, 74, 82], "complic": [31, 41], "compress": 0, "compromis": 27, "con": 31, "concept": [4, 13, 53], "concern": 6, "concurr": 39, "condit": [4, 31, 39], "config": [18, 33, 48], "configur": 1, "configurationproperti": 79, "conflict": [39, 46], "conform": 52, "connect": [2, 3, 4, 71], "consid": [40, 52, 66], "consider": [6, 18, 30, 49, 74], "consist": 82, "consol": [3, 4, 29, 52, 53, 65, 66, 68, 71, 72, 75, 76], "const": [33, 41, 42, 51, 52, 66, 68, 69, 70, 78], "constantli": 3, "construct": [8, 52, 57], "constructor": [31, 33, 34, 58, 65, 78], "consum": [25, 51], "contact": [0, 1, 9, 17, 18, 22, 54, 74, 82], "contain": [29, 33, 34, 41, 43, 52], "containskei": [33, 34], "containsmodul": 41, "content": [40, 53, 63], "context": [3, 6, 13, 26, 39, 40, 41, 43, 46, 61], "continu": 46, "contribut": 9, "contributor": 2, "control": [4, 26, 30, 34, 41, 49, 52], "conveni": 30, "convent": 58, "convers": [13, 28, 30, 34, 60, 63, 70], "convert": [27, 34, 35, 46, 52, 56, 58, 59, 63, 64, 65, 66, 67, 69, 80, 82], "convertercircularstructur": 46, "converterfailur": 46, "convertersymbolnotbuiltin": 46, "cook": 42, "cooki": 68, "copi": [4, 33, 38, 40], "copycontextfrom": 60, "copyscopeinfofrom": [52, 60], "core": [4, 38, 39, 41, 43, 57], "coro": 6, "correspond": [1, 2, 4, 26, 34, 40, 41, 43, 52, 65], "corretto": 66, "corrupt": 26, "cost": 11, "could": [6, 9], "couldn": [9, 82], "count": [4, 46, 49, 51, 65, 68], "coupl": 65, "cours": [2, 33, 40, 41, 52, 65, 82], "cover": [13, 29, 31, 40, 82], "cpp": [1, 42], "cpu": [9, 25, 27, 66], "cpuarch": 74, "crash": [17, 20, 22, 24, 38, 39, 52, 58, 61, 63], "creat": [3, 17, 22, 25, 28, 31, 33, 39, 40, 41, 46, 48, 49, 52, 53, 57, 62, 64, 65, 66, 68, 69, 70, 71, 72, 75, 76, 79, 82], "createsnapshot": [42, 63], "createtargetobject": 63, "createv8modul": [41, 63], "createv8runtim": [20, 24, 27, 29, 41, 42, 49, 65, 66, 68, 72, 75, 76, 77], "createv8valuearrai": 52, "createv8valuearraybuff": 59, "createv8valueboolean": 66, "createv8valuedoubl": 56, "createv8valueerror": 63, "createv8valuefunct": [41, 52], "createv8valueinteg": [52, 66], "createv8valueobject": [29, 40, 41, 52, 75], "createv8valuepromis": 53, "createv8valueproxi": 57, "createv8valuestr": [52, 56], "createv8valuestringobject": 63, "createv8valuesymbol": 57, "createv8valueundefin": 53, "createv8valuezoneddatetim": 56, "creation": [6, 40, 42, 71], "critic": 54, "cross": [5, 82], "cruel": 9, "crypto": 64, "current": [3, 4, 9, 46, 52, 74], "currentthreadid": 46, "currenttimemilli": 66, "curv": 40, "custom": [0, 4, 5, 30, 41, 42, 43, 52, 56, 57, 59], "customfrommap": 31, "customobject": 31, "customtomap": 31, "cycl": [25, 40], "d": [33, 41, 69], "daemon": [2, 40, 49], "daemonthread": 49, "dai": [2, 43], "danger": 33, "dangl": [43, 61], "data": [0, 4, 30, 40, 41, 42, 52, 55, 60, 65], "databas": 71, "dataview": 40, "date": [27, 32, 34, 41, 55], "db": 4, "dcmake_android_arch": 1, "dcmake_android_ndk": 1, "dead": 49, "deal": [6, 29, 31, 40, 52], "debug": [0, 4, 5, 17, 20, 24, 27, 48, 52], "debugg": [3, 52], "debuggerid": 3, "decent": [3, 6, 9, 51, 53], "decim": 41, "decimaljsfil": 78, "decis": 40, "declar": [52, 79, 82], "decor": [13, 52, 57, 75, 82], "dedic": [4, 40, 43, 68, 82], "deepli": 9, "def": [33, 52, 68], "default": [3, 4, 22, 25, 30, 31, 33, 34, 38, 40, 41, 49, 52, 64, 69, 75, 77], "deficit": 52, "defin": [4, 30, 33], "definit": 4, "delai": 41, "delet": [4, 28, 33, 34, 51, 52, 65, 69, 75], "deleteglobalref": 40, "deliv": 82, "delta": 75, "demonstr": 3, "denable_i18n": 1, "deni": 46, "depend": [2, 4, 6, 9, 33, 41, 42, 48, 52, 79], "deploi": [4, 57, 65], "deploy": 42, "depot": 0, "depot_tools_hom": [0, 1], "depot_tools_win_toolchain": 1, "deprec": [55, 56], "depth": [29, 30, 46, 57], "deriv": 34, "describ": 52, "descript": [0, 33, 40], "design": [5, 7, 16, 17, 27, 31, 33, 38, 39, 41, 52, 68, 77, 82], "desper": 0, "despit": 52, "destroi": 40, "detail": [3, 4, 11, 17, 22, 23, 39, 49, 52, 53, 65, 66, 69, 70, 71, 72, 75, 76, 77, 78, 82], "detect": [5, 29, 30, 46, 52, 57, 58], "determin": [40, 52, 57], "dev": [1, 6], "develop": [0, 17, 20, 23, 27, 42, 46, 53, 55, 66, 82], "devic": [9, 27], "devtool": [3, 20, 24, 27], "diagnos": 3, "diagram": [4, 52], "didn": 9, "differ": [6, 9, 13, 31, 41, 43, 52, 53, 66], "differenti": 30, "difficulti": 42, "digit": 40, "direct": 42, "direction": [30, 70], "directli": [3, 27, 33, 38, 40, 52, 66, 69, 82], "directori": [0, 4, 41, 78], "directory_entry_delay_import": 41, "disabl": [1, 3, 13, 14, 20, 25, 33, 40, 42, 43, 46, 49, 53, 60], "disabledfunct": 52, "disabledfunctionset": 52, "disabledproperti": 52, "disablegcnotif": 56, "disableindebugmod": 56, "discard": 52, "discardcompil": 60, "discord": [27, 82], "dispos": 65, "disregard": 40, "distribut": [18, 25, 59, 63, 74], "djavet": 38, "dll": [1, 20, 24, 41], "dm": 2, "dnode_dir": 1, "do": [7, 9, 13, 23, 26, 27, 39, 40, 41, 43, 49, 52, 53, 70], "doc": [3, 6, 56, 58], "docker": [0, 3, 5, 9], "dockerfil": [2, 57, 61], "document": [38, 52, 57], "doe": [4, 17, 25, 26, 38, 40, 49, 52, 82], "doesn": [0, 3, 4, 9, 31, 33, 38, 39, 40, 41, 46, 48, 49, 52, 79, 82], "don": [4, 9, 17, 27, 33, 41, 42, 48, 77, 79, 82], "donat": [9, 27], "done": [3, 82], "door": [65, 68], "doubl": [31, 32, 34, 40, 52], "down": [6, 82], "downgrad": 63, "download": [12, 18, 41], "dr": 9, "drag": 41, "drain": [30, 40], "drain_the_task_queu": 68, "dramat": [6, 52], "drawback": [6, 41, 66], "drive": [18, 41], "drop": [8, 9, 41, 52], "dsl": [8, 33], "due": 53, "dump": [4, 39, 43, 57, 58], "dumpbin": 41, "duplic": 13, "dure": [4, 25, 26, 30, 38, 40, 41, 42, 52, 56, 82], "dv8_dir": 1, "dy": 11, "dylib": 1, "dynam": [20, 24, 27, 38, 42, 52, 56, 63], "dynamicclass": [33, 65], "e": [4, 6, 13, 15, 26, 28, 29, 30, 38, 40, 41, 49, 52, 53, 65, 66, 68, 75, 77, 78, 82], "each": [4, 40, 49, 52, 77, 82], "earli": [9, 43], "earlier": 41, "easi": [9, 13, 27, 29, 52, 55, 66, 71, 76], "easier": 31, "easili": [9, 30, 34, 40, 49, 79], "echo": 52, "eclips": 9, "ecma": 52, "ecmascript": [9, 41], "ecosystem": [4, 77], "edigit": 6, "edit": [3, 52], "effect": [13, 38, 40, 41, 68], "effici": [2, 16, 57], "effort": [18, 49, 74], "eg": 18, "eight": 27, "either": [3, 4, 6, 7, 52], "elaps": 66, "electron": 41, "elegantli": [27, 65, 66], "elimin": 82, "els": [25, 29, 41, 52, 53, 66, 68, 74, 78, 82], "emb": 6, "embed": [3, 4, 6, 9, 22, 27, 42, 43], "embedd": 41, "emit": 56, "empti": 46, "enabl": [1, 2, 3, 6, 13, 17, 22, 33, 40, 42, 52, 53, 56, 57, 64, 65, 69], "enablegcnotif": [40, 56], "enableindebugmod": 56, "end": [11, 33, 40, 43, 49, 52, 72], "endposit": 52, "enforc": [3, 65], "engin": [5, 25, 27, 28, 40, 41, 42, 46, 58, 73, 79, 80], "engineguardcheckintervalmilli": 64, "enginenotavail": [46, 59], "enginepool": 25, "enhanc": [33, 52, 56, 57, 58, 59, 62], "enjoi": 3, "enough": [4, 29, 33], "ensur": [25, 65], "entri": 34, "enum": 25, "environ": [3, 4, 5, 6, 18, 20, 27, 39, 41, 56, 58, 71], "equal": [41, 52, 55, 70, 76, 78], "equival": [40, 42, 52], "err": [25, 76], "error": [1, 9, 38, 41, 47, 48, 52, 53, 57, 58, 59, 62], "es6": [4, 9, 14, 20, 41], "esm": [41, 64], "especi": [52, 71, 82], "essenti": 18, "est": 52, "etc": [4, 11, 13, 15, 28, 30, 38, 40, 52, 65, 68, 78], "eval": [43, 52], "evalu": [3, 4, 41, 59, 82], "even": [0, 9, 82], "event": [3, 43, 53, 68, 82], "eventu": [6, 40, 65], "everi": [0, 4, 13, 30, 39, 40, 52], "everyth": [13, 65], "everywher": 82, "evolv": 9, "ex": [41, 42], "exampl": [4, 14, 20, 29, 69, 70], "exce": 40, "excel": [4, 9], "except": [25, 29, 33, 39, 40, 41, 43, 48, 49, 52, 56, 58, 59, 66, 82], "excess": 52, "exchang": 17, "excit": 41, "excluded_method": 29, "execut": [1, 3, 4, 6, 12, 25, 33, 41, 42, 43, 46, 49, 51, 52, 53, 65, 66, 71, 72, 76], "executebiginteg": 34, "executeboolean": [33, 34, 65], "executeinteg": [28, 31, 33, 34, 41, 42, 49, 52, 65, 72], "executeobject": [28, 33, 65, 69, 70], "executeprimit": 63, "executestr": [27, 28, 31, 33, 34, 41, 52, 65, 69, 70, 72, 78], "executevoid": [28, 29, 33, 41, 42, 49, 52, 65, 66, 68, 69, 70, 71, 75, 78], "executioncontextcr": 3, "executionfailur": 46, "executiontermin": [46, 49], "executor": 62, "executorservic": 64, "exist": [4, 11, 33, 34, 41, 42, 66, 78], "existingsourcecod": 52, "existssync": 41, "exit": [26, 76], "expect": [9, 25, 40, 46, 52], "expectedparameters": 46, "expectedparametertyp": 46, "experi": [13, 26, 33, 38, 41, 70, 71, 76], "experienc": 13, "explain": 4, "explicit": [4, 28, 82], "explicitli": [26, 33, 38, 40, 43, 71], "explor": 41, "export": [1, 25, 41], "expos": [3, 4, 27, 30, 31, 33, 40, 41, 45, 52, 53, 58, 65, 67, 80, 82], "exposur": [27, 55], "express": [13, 33, 68, 74], "extend": [29, 33, 34, 41, 52], "extens": [15, 52, 71], "extern": [0, 6, 40], "extra": [42, 82], "extract": 30, "extrem": [39, 52], "ey": 43, "f": [2, 4, 41], "face": [1, 4], "fact": [26, 53], "fail": [2, 20, 24, 41, 46, 49, 52, 59, 64], "failedtoreadpath": 46, "failur": [21, 58], "fall": 32, "fals": [1, 17, 28, 30, 33, 38, 40, 41, 52, 65, 68, 69], "famili": 74, "famou": 30, "fanci": 30, "fannkuch": 6, "faq": [5, 27], "far": 9, "fast": 52, "fasta": 6, "faster": [3, 42], "featur": [3, 4, 5, 8, 9, 13, 25, 31, 34, 38, 40, 41, 46, 51, 52, 53, 54, 69, 77, 78, 82], "fedora": 25, "feed": [4, 41], "feel": [3, 41, 42, 52], "fetch": [4, 6, 53], "few": [1, 2, 3, 8, 9, 11, 13, 25, 29, 30, 33, 40, 52, 55, 56, 63, 65, 69, 70, 76], "field": [33, 34], "file": [1, 3, 4, 6, 9, 22, 40, 41, 42, 53, 65, 68, 78], "filecont": 53, "filepath": 53, "fill": 52, "filter": 52, "final": [2, 25, 29, 30, 31, 33, 40, 41, 46, 49, 52, 53, 65, 66], "find": [11, 52, 65], "fine": [17, 27, 30, 34], "first": [1, 3, 38, 40, 41, 52, 55, 82], "firstli": 52, "fix": [9, 11, 21, 28, 40, 41, 49, 54, 56, 57, 58, 59, 60, 61, 62, 63, 64], "flag": [5, 25, 40, 57, 59], "flat": 63, "flavor": [3, 16, 52, 65, 76], "flexibl": [6, 41], "flip": 17, "float": [31, 32, 34, 40, 52], "float32arrai": [31, 40], "float64arrai": [31, 40], "fly": 3, "folder": [1, 43, 68], "folk": [13, 41], "follow": [1, 2, 3, 4, 12, 16, 18, 22, 25, 26, 27, 29, 31, 34, 40, 41, 42, 43, 46, 48, 49, 51, 52, 53, 65, 66, 68, 75, 77], "footprint": 4, "forc": [25, 26, 33, 43, 71], "foreach": [51, 55, 62], "forev": [2, 40], "form": [9, 52], "format": [40, 41, 46, 52], "forward": [9, 41], "found": [21, 41, 46, 78], "fpic": 1, "framework": [13, 79], "free": [3, 4, 13, 31, 39, 40, 41, 52, 56, 71, 82], "freed": 4, "freez": 63, "frequenc": 40, "frequent": 82, "friend": 53, "friendli": [52, 82], "from": [0, 2, 4, 5, 6, 9, 11, 12, 16, 17, 18, 25, 26, 30, 33, 34, 39, 41, 42, 43, 46, 49, 52, 53, 56, 57, 58, 59, 63, 64, 65, 66, 68, 69, 71, 72, 75, 76, 80, 81], "frommap": 31, "frustrat": [0, 9], "fulfil": 53, "full": [9, 25, 43, 52], "fulli": [9, 29], "func": 52, "function": [4, 15, 17, 31, 38, 40, 41, 42, 50, 55, 58, 59, 60, 64, 65, 66, 68, 69, 75, 82], "functioncallbackreceiv": 52, "functioncontext": 52, "functionnam": 55, "fundament": [17, 48, 79], "further": [3, 6, 40], "futur": 9, "g": [4, 6, 13, 15, 18, 26, 28, 30, 38, 40, 41, 52, 53, 65, 66, 68, 69, 75, 77, 78, 82], "gain": 41, "garbag": [26, 33, 38, 40, 65], "gather": 52, "gb": 2, "gc": [33, 38, 65, 66, 71, 75], "gcbeforeengineclos": 56, "gcc": [0, 18, 56, 63], "gcov": 18, "gen": 1, "gener": [6, 29, 33, 40, 42, 46, 52, 57, 66], "generatearraywithconvert": 52, "generatearraywithoutconvert": 52, "genuin": 26, "get": [4, 9, 13, 26, 28, 29, 31, 33, 38, 40, 41, 43, 48, 49, 51, 52, 53, 58, 59, 66, 68, 70, 71, 77, 78, 79, 82], "getabsolutepath": 78, "getandincr": 51, "getargu": 60, "getboolean": 41, "getcacheddata": 60, "getclass": 29, "getconfig": [25, 33, 34, 41, 65, 77], "getcontext": [52, 58], "getconvert": 31, "getdetailedmessag": [58, 63], "getengin": [25, 41, 49, 71, 77], "getentri": 51, "geterror": 49, "geterrortyp": 63, "getexecutor": [27, 28, 29, 31, 33, 34, 41, 42, 49, 51, 52, 53, 65, 66, 68, 69, 70, 71, 72, 75, 76, 78], "getfilecont": 53, "getfilepath": 53, "getglobalobject": [13, 28, 29, 31, 33, 34, 41, 49, 52, 53, 65, 66, 68, 69, 70, 71, 75, 78, 82], "getguard": [49, 64], "gethandl": 57, "getidentityhash": [55, 64], "getinst": [33, 34, 38, 65], "getinteg": [41, 49], "getisolateid": 3, "getjavetenginepoolnod": 79, "getjavetenginepoolv8": 79, "getjoin": 33, "getjsfunctiontyp": [52, 56], "getjsonnod": 66, "getjsscopetyp": 52, "getkei": 51, "getlength": 51, "getlibpath": 38, "getlogg": [41, 48, 78], "getmessag": [63, 76], "getmethod": [29, 52], "getmethodnamefromlambda": [52, 57], "getmethodnamesetfromlambda": [52, 57], "getnam": [29, 31, 75, 79], "getnamespac": 64, "getnodeinst": [27, 29, 40, 68, 72, 77], "getnodemodul": 41, "getobject": [31, 33, 34], "getownpropertydescriptor": 63, "getownpropertynam": [33, 34, 51], "getownpropertynamestr": 60, "getownpropertysymbol": 57, "getparametercount": 29, "getposit": 52, "getpromis": 53, "getproperti": 74, "getprototyp": 57, "getprototypeof": 64, "getproxyplugin": [34, 63], "getresourcenam": 64, "getscopeinfo": 60, "getscriptid": 64, "getscriptsourc": 60, "getsiz": 51, "getsnapshotblob": 63, "getsourcecod": [52, 56], "getstack": 58, "getstr": 78, "getstringvalu": 52, "gettarget": 57, "getter": [31, 33, 52, 57, 58, 75, 82], "getutil": 33, "getv8guarddaemon": 49, "getv8guardqueu": 49, "getv8heapspacestatist": [40, 58], "getv8heapstatist": [40, 58], "getv8inst": [25, 27, 40, 41, 49, 65, 66, 72, 75, 76, 77], "getv8lock": 39, "getv8runtim": [41, 49, 66, 71, 78], "getv8scop": 40, "getv8sharedmemorystatist": [40, 58], "getvalu": [29, 31, 51, 52, 66, 75], "getvers": 57, "git": 2, "github": [3, 6], "give": [28, 30, 40, 49, 52, 65], "given": [28, 40], "glibc": 74, "global": [4, 13, 25, 41, 52, 61, 65, 71, 82], "globalobject": [13, 52], "globalthi": [13, 41, 82], "gn": 1, "go": [33, 41, 54], "goal": 52, "goe": [13, 52], "gone": [9, 26], "good": [4, 27, 40, 75], "googl": [0, 3], "got": [9, 11], "graalj": [27, 33], "graalvm": 12, "gracefulli": 68, "gradl": [0, 1, 2, 5, 9, 33], "grain": [30, 34], "granular": [39, 41], "great": 27, "greater": 49, "groovi": 33, "groupid": [27, 33, 74], "gson": [3, 66], "guard": 49, "guess": 75, "guid": [1, 27, 80], "guido": 9, "gyp": 41, "ha": [0, 2, 4, 6, 8, 9, 13, 17, 29, 31, 33, 38, 40, 41, 48, 49, 51, 52, 53, 56, 66, 82], "hack": [9, 13, 26], "hacki": 17, "had": [9, 11], "hair": 9, "hand": 26, "handi": 53, "handl": [13, 26, 29, 33, 39, 41, 53, 57, 59, 71], "handler": [59, 68], "hang": 49, "happen": [21, 26, 30, 33, 40, 53], "happi": 52, "hard": [0, 9, 53, 82], "harder": 42, "harmoni": 52, "hascontextextensionslot": 52, "hashmap": [31, 70], "hashset": [29, 31, 52], "hasinternaltyp": 57, "hasn": [9, 26, 52], "hasownproperti": 78, "haspendingexcept": 58, "haspendingmessag": 58, "hasscheduledexcept": 58, "have": [2, 9, 17, 25, 27, 29, 31, 33, 34, 40, 41, 42, 52, 53, 78, 82], "haven": 9, "heap": [4, 40, 42], "heapstatist": 46, "heavi": 41, "heavili": [8, 29, 52, 82], "hei": 9, "held": 49, "hell": [48, 79], "hello": [33, 68, 69, 71, 73, 80], "helloworld": 6, "help": [3, 42, 43], "henc": 52, "here": [0, 3, 4, 6, 9, 11, 17, 29, 33, 38, 40, 41, 52, 53, 68, 69, 70], "hide": [4, 9], "hierarchi": 82, "high": [4, 30, 40], "higher": 6, "highlight": 77, "hijack": 68, "hint": [40, 52], "histori": [10, 11, 20, 82], "hit": [26, 49], "hivemq": 27, "hmodul": 41, "hoc": [6, 9, 39, 57], "hold": [33, 40, 53], "home": 0, "host": [3, 4, 22, 38, 41, 65, 66, 68, 72, 75, 76], "hotfix": [65, 82], "hour": [2, 9], "how": [3, 4, 7, 11, 14, 16, 20, 26, 27, 29, 34, 38, 39, 41, 57, 65, 66, 82], "howev": [4, 6, 9, 11, 13, 26, 30, 31, 38, 40, 52, 66, 82], "http": [2, 3, 4, 6, 27, 68], "huge": [6, 22], "hungri": 42, "i": [0, 1, 2, 4, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 38, 39, 40, 41, 42, 43, 46, 48, 49, 51, 53, 56, 57, 65, 66, 69, 70, 71, 72, 74, 75, 76, 77, 78, 79, 82], "i18n": [0, 1, 20, 24, 46, 59], "i7": [6, 9], "ia32": 1, "icallback": 53, "iclassproxyplugin": [34, 63], "id": [1, 3, 4, 46, 52, 74], "idea": [8, 9, 11, 40], "ident": [28, 41, 52, 75], "identifi": 33, "idl": 40, "idlenotificationdeadlin": 56, "ieee": 40, "ignor": [33, 40, 52, 56], "ijavetanonym": [33, 52, 57, 65], "ijavetanonymous1": 52, "ijavetanonymous2": 52, "ijavetbiindexedconsum": 56, "ijavetclos": [33, 57], "ijavetconsum": 56, "ijavetdirectcal": 62, "ijavetdirectproxyhandl": [62, 63, 64, 66], "ijavetengin": [25, 41, 49, 71, 77, 78], "ijavetengineguard": 55, "ijavetenginepool": [49, 71, 79], "ijavetentityfunct": [30, 31], "ijavetentitymap": [30, 31], "ijavetlibloadinglisten": [38, 58], "ijavetmapp": [31, 57], "ijavetpromiserejectcallback": 53, "ijavetuniconsum": 56, "ijavetuniindexedconsum": 56, "ilisten": 60, "imag": [2, 3, 9, 14, 20], "immedi": [4, 17, 22, 39, 40, 43], "impact": [43, 52], "imper": 82, "implement": [9, 27, 31, 33, 34, 38, 40, 41, 52, 53, 65, 66, 74], "impli": [6, 11, 17, 18, 26, 74, 82], "implicit": [28, 82], "implicitli": [28, 58], "import": [25, 26, 48, 49, 53, 74, 82], "improp": [59, 63], "improv": [5, 9, 39, 40, 42, 58, 62, 63], "includ": [2, 9, 28, 33, 38, 42, 52, 82], "incompat": 39, "inconsist": 82, "inconveni": [30, 38], "incorrect": 52, "increas": [4, 30, 46, 82], "increaseandget": 75, "increment": [29, 66], "inde": [11, 43], "independ": [1, 6], "index": 41, "indic": 52, "ineffici": 30, "inevit": 17, "infinit": [49, 76], "info": [48, 60], "inform": [12, 31], "inherit": 82, "initi": [4, 6, 20, 24, 40, 41, 42, 59, 63, 64, 68, 71, 75], "inject": [30, 33, 38, 40, 42, 46, 52, 53, 57, 64, 65, 66, 82], "inner": [52, 58], "input": [52, 66, 70, 76], "insid": [2, 3, 4, 25, 33, 40, 53], "insight": 4, "inspect": [3, 17, 52], "inspector": [3, 14, 20, 64], "instal": [8, 9, 12, 18, 38, 41, 68, 73, 78, 80], "instanc": [4, 6, 13, 17, 28, 40, 41, 43, 48, 49, 52, 69, 75], "instanceof": [33, 34, 52, 53, 64, 66], "instanti": 65, "instead": [17, 30, 39, 40, 41, 42, 56, 61, 64, 70, 82], "instruct": [2, 40], "int": [25, 29, 31, 32, 33, 34, 42, 49, 52, 66, 68, 75], "int16_t": 40, "int16arrai": [31, 40], "int32_t": 40, "int32arrai": [31, 40], "int64_t": 40, "int64arrai": 31, "int8_t": 40, "int8arrai": [31, 40], "intarrai": [28, 34], "integ": [25, 31, 32, 33, 34, 40, 51, 52, 68], "integerlist": 28, "integr": [3, 9, 27, 48, 55, 73, 80], "intellij": [5, 9], "intend": [9, 13], "interact": [3, 4, 27, 29, 56, 65, 67, 76, 80], "intercept": [3, 5, 33, 40, 41, 55, 57, 73, 80], "interceptor": [4, 26, 52, 53, 65, 71, 75], "interest": [2, 9], "interfac": [48, 53, 82], "interfer": 4, "intern": [5, 33, 38, 39, 40, 49, 52, 58, 59, 62, 74], "internet": 2, "interop": [25, 27, 67, 80], "interoper": 66, "interpret": [3, 4], "interrupt": 49, "interruptedexcept": [49, 68], "intl": 1, "intro": 27, "introduc": [30, 40, 41, 58, 82], "intrud": 52, "intrus": [31, 66], "intvalu": 52, "invis": 52, "invoc": 52, "invok": [13, 29, 56], "invokeinteg": 41, "invokeobject": [52, 69], "invokeprimit": 52, "invokevoid": [52, 66], "involv": 13, "io": [3, 17, 65], "is_component_build": 1, "is_debug": 1, "isarrai": 34, "isassignablefrom": 33, "isasyncfunct": 57, "iscal": 52, "isclass": 52, "isclos": 57, "iscompil": 60, "iscontinu": 49, "iscreatesnapshoten": 63, "isdead": 55, "isdebugen": 48, "isdeploi": 38, "isdirectori": 33, "isfil": 33, "isfreespaceorfillermap": 64, "isfrozen": 64, "isfunct": 52, "isgeneratorfunct": 57, "isgeneratorobject": 57, "isinfoen": 48, "isint": 66, "isinus": [49, 55], "islibinsystempath": 38, "islinux": 74, "ismacosx": 74, "isnullorundefin": 56, "isobject": 66, "isol": [6, 13, 39, 40, 41, 43, 82], "isproxyarrayen": 63, "isproxylisten": 63, "ispurgeeventloopbeforeclos": [59, 64], "isrevok": 57, "isseal": 64, "issourcetextmodul": [41, 63], "issu": [1, 3, 4, 11, 12, 25, 26, 39, 40, 41, 43, 56, 57, 58, 61, 63, 64], "issuppressingerror": [38, 58], "issyntheticmodul": [41, 63], "istringjoin": 33, "istringutil": 33, "isundefin": 29, "isv8bindingen": 52, "iswarnen": 48, "iswrap": 60, "iter": [28, 33, 62], "its": [0, 4, 9, 33, 34, 39, 40, 41, 52, 53], "itself": [49, 52], "iv8execut": 63, "iv8executor": [41, 60], "iv8inspectorlisten": 3, "iv8modul": 64, "iv8moduleresolv": 57, "iv8script": 64, "iv8valu": [55, 56, 60, 63], "iv8valuearrai": [62, 63], "iv8valuefunct": [56, 57, 60], "iv8valuemap": 62, "iv8valueobject": [52, 55, 56, 57, 60, 62], "iv8valuepromis": [53, 60], "iv8valueproxi": 57, "iv8valuerefer": 55, "j": [0, 2, 5, 7, 9, 14, 15, 20, 21, 22, 24, 27, 34, 38, 39, 40, 42, 45, 46, 52, 53, 54, 55, 57, 59, 61, 62, 63, 64, 65, 67, 71, 73, 80], "j2v8": [10, 11, 13, 20, 80, 81], "j2v8_win32_x86_64": 9, "j4": 1, "jackson": [3, 66], "jan": 82, "jar": [1, 3, 4, 9], "java": [3, 4, 5, 9, 15, 25, 27, 29, 30, 33, 34, 38, 39, 40, 41, 53, 58, 65, 67, 68, 70, 75, 78, 80, 82], "javadoc": 57, "javaobject": [40, 82], "javascript": [4, 6, 17, 26, 27, 30, 33, 39, 40, 41, 42, 53, 58, 65, 67, 70, 72, 75, 80, 82], "javax": 65, "javenod": [15, 16, 27, 53, 78, 82], "javet": [3, 5, 8, 9, 12, 14, 15, 16, 17, 19, 20, 21, 24, 25, 26, 28, 29, 30, 31, 33, 40, 43, 45, 46, 48, 49, 51, 52, 53, 55, 57, 62, 65, 68, 69, 70, 73, 74, 75, 77, 78, 79, 80], "javet_hom": [0, 1], "javetbridgeconvert": [28, 34, 40, 58, 63], "javetbuiltinmoduleresolv": [41, 63], "javetcallbackcontext": [56, 62], "javetcallbackexcept": 56, "javetcallbacktyp": 62, "javetcompilationexcept": 58, "javetconsoleinterceptor": 71, "javetconverterconfig": [30, 34, 57, 63, 64], "javetconverterexcept": 30, "javetdirectproxyobjecthandl": 64, "javetdynamicobjectfactori": 60, "javetdynamicproxi": [60, 62], "javetengin": [71, 77], "javetengineconfig": [40, 48, 56, 59, 64, 79], "javetengineconfignod": 79, "javetengineconfigv8": 79, "javetengineguard": [56, 64], "javetenginepoo": 77, "javetenginepool": [25, 41, 48, 56, 58, 71, 77, 79], "javetenginepoolnod": 79, "javetenginepoolv8": 79, "javetentityerror": 63, "javetentityfunct": [52, 57], "javetentityobject": 63, "javetentitypropertydescriptor": 63, "javetentitysymbol": 31, "javeterror": [49, 56, 59, 63], "javeterrortyp": 33, "javetexcept": [29, 49, 52, 53, 66, 68, 78], "javetexecutionexcept": [33, 41, 58], "javetjvminterceptor": [63, 65], "javetlibload": 38, "javetlibloadinglisten": [38, 58], "javetlogg": 48, "javetnativemonitor": 4, "javetobjectconvert": [29, 30, 31, 57, 63, 64, 82], "javetosutil": [41, 68, 78], "javetoutofmemoryexcept": 58, "javetperf": [6, 62], "javetprimitiveconvert": [32, 57, 59], "javetpromiserejectcallback": 56, "javetproxyconvert": [28, 30, 34, 40, 57, 58, 65, 66, 69, 82], "javetproxypluginarrai": 63, "javetproxypluginclass": 63, "javetproxyplugindefault": 63, "javetproxypluginlist": 63, "javetproxypluginmap": 63, "javetproxypluginset": 63, "javetproxyprototypestor": 64, "javetproxysymboliterableconvert": [62, 63], "javetproxysymboltoprimitiveconvert": 63, "javetreflectionobjectfactori": [33, 65], "javetreflectionproxi": 62, "javetreflectionutil": [52, 57], "javetsanit": [], "javetscriptingerror": [58, 63], "javetshel": [3, 27, 65], "javetstandardconsoleinterceptor": [40, 71, 75], "javetterminatedexcept": 49, "javetuniversalproxi": 60, "javetuniversalproxyhandl": 57, "javetvirtualobject": 57, "jdk": [0, 5, 29, 48, 66], "jerri": 29, "jetti": 3, "jit": 6, "jni": [4, 8, 38, 40, 52, 58, 59, 61], "jnilib": 1, "join": [25, 33, 65], "joiner": 33, "joke": 9, "jsfunction": 52, "jsfunctiontyp": 52, "json": [2, 3, 28, 33, 34, 41, 66, 70], "jsonnod": [27, 67, 80], "jsonnodewrapp": 66, "jsonstr": 66, "jsruntimetyp": [25, 38, 41, 77, 79], "jsx": 27, "jul": 6, "just": [2, 3, 6, 9, 12, 13, 29, 31, 38, 39, 40, 41, 52, 65, 69, 82], "jvm": [2, 4, 22, 27, 30, 33, 38, 39, 55, 67, 68, 70, 71, 77, 80, 82], "kb": 6, "keep": [4, 30, 33, 39, 40, 43, 66], "kei": [4, 25, 33, 41, 51, 66], "kernel": 25, "keyword": 52, "kind": [4, 9, 29, 39, 52, 82], "knodefaultsignalhandl": 63, "knostdioiniti": 63, "know": [4, 7, 9, 26, 37, 41, 52, 82], "known": [33, 40], "kotlin": [8, 33, 39], "kvm": 25, "l": [34, 77], "label": 42, "lack": [78, 82], "lambda": [33, 52], "land": 26, "lang": [30, 38, 65], "languag": [6, 40, 52], "larg": [2, 17], "last": 9, "later": [9, 11, 41], "latest": [0, 2, 12, 77], "launch": [41, 42, 43], "layer": [9, 82], "layout": 52, "lazi": 4, "ld": 1, "lead": [26, 42, 43], "leaf": 66, "leak": [5, 9, 11, 30, 33, 40, 43, 56, 58, 63, 65], "leakag": [13, 46], "learn": [11, 16, 34], "least": [4, 9], "leav": [4, 11, 31, 41, 65], "legaci": [4, 9, 19, 20, 59], "len": 52, "length": [25, 28, 29, 31, 33, 34, 40, 42], "less": [33, 38], "let": [3, 9, 26, 29, 33, 41, 42, 65, 66, 68, 76], "level": [13, 30, 39, 52], "leverag": 66, "lexic": 52, "lib": [1, 41, 58], "libcxx": 0, "libgcc": 59, "libjavet": [1, 38, 41], "libnod": 1, "librari": [0, 2, 3, 4, 7, 13, 20, 22, 24, 41, 46, 48, 52, 57, 65], "librarynotfound": 46, "librarynotload": 46, "libstdc": 59, "lifecycl": [13, 40, 43, 52], "light": 40, "like": [1, 3, 6, 9, 11, 13, 27, 33, 41, 42, 43, 46, 52, 59, 76], "limit": [4, 13], "line": [29, 39, 52, 76], "link": [1, 20, 24, 40, 41], "linux": [6, 11, 19, 20, 25, 27, 55, 56, 57, 59, 61, 63, 82], "linx": 25, "list": [3, 6, 25, 27, 30, 31, 34, 35, 52, 64], "listen": [3, 26, 40, 53, 68], "liter": 82, "littl": [13, 31], "live": [27, 39, 40, 52], "load": [4, 13, 21, 37, 42, 46, 78, 82], "loadabl": 4, "loadj": 78, "loadlibrari": [38, 57], "loadlibraryexw": 41, "local": [9, 29, 40, 52], "locat": [4, 41, 82], "lock": [4, 37, 40, 46, 49, 56, 63, 64, 82], "lockacquisitionfailur": 46, "lockconflictthreadidmismatch": 46, "lockedthreadid": 46, "locker": 39, "lockreleasefailur": 46, "log": [29, 40, 43, 47, 52, 53, 68, 71, 75], "logerror": 78, "loggerfactori": 48, "logic": [6, 9, 30, 52, 53, 68, 82], "loginfo": [41, 78], "long": [2, 31, 32, 33, 34, 39, 52, 66], "longer": [13, 30, 33, 40, 43, 82], "longlist": 28, "look": [1, 4, 9, 11, 41, 57], "lookup": 52, "loop": [26, 49, 53, 68, 76], "lot": [11, 71], "low": 4, "lower": [11, 42], "lowest": [9, 74], "lowmemorynotif": [33, 52, 53, 56, 65, 66, 71, 75, 82], "lt": 1, "luck": 9, "luckili": [30, 41], "m": [2, 6, 66], "mac": [2, 9, 27, 82], "macbook": 9, "machin": 9, "maco": [1, 9, 27, 38, 74], "made": [9, 11, 42], "mai": [1, 2, 3, 4, 6, 9, 13, 16, 25, 26, 27, 28, 30, 33, 38, 39, 40, 41, 42, 43, 48, 49, 52, 79], "mail": 27, "main": [1, 25, 29, 33, 69], "mainli": 6, "mainstream": 54, "maintain": [0, 17, 18, 22, 54, 74, 82], "mainten": [54, 57], "major": [6, 41, 55, 82], "make": [0, 1, 2, 17, 30, 31, 40, 41, 42, 53, 65, 68, 78, 82], "malform": 52, "malici": [42, 43, 49], "manag": [4, 9, 13, 16, 27, 35, 41, 49, 56], "mandelbrot": 6, "mani": [1, 9, 11, 40, 42, 52, 82], "manipul": [40, 51], "manner": [53, 82], "manual": [11, 18, 33], "map": [4, 28, 30, 31, 34, 41, 51, 64], "mapi": 70, "mapx": 70, "mark": 49, "master": [9, 53], "match": [31, 33, 41, 69], "matcher": [33, 69], "mathadd": 52, "maven": [2, 5, 33], "mavin": 38, "max": [40, 46], "max_valu": 68, "maxdepth": [3, 46], "maxim": [39, 43], "maximum": 30, "maxscriptscaches": 3, "me": [9, 27], "meal": 42, "mean": [6, 38, 41, 48, 52], "meanwhil": [9, 68], "measur": [6, 66], "mechan": [38, 39, 82], "meet": [25, 30, 41], "memor": 31, "memori": [5, 9, 11, 16, 25, 26, 30, 33, 37, 38, 42, 43, 46, 52, 56, 58, 63, 65, 66, 82], "mental": 82, "mere": 9, "merkletre": 6, "messag": [3, 40, 46, 48], "meta": 65, "method": [3, 13, 29, 31, 33, 34, 46, 52, 66], "method_prefix_get": 29, "method_prefix_i": 29, "methodhandl": 58, "methodnam": [29, 46, 52], "might": [11, 38], "migrat": [13, 27, 80], "millisecond": [40, 42, 49, 68], "min": 40, "mini": 9, "minim": [4, 31, 43, 71], "minut": [2, 4, 30], "mirror": 52, "mismatch": 46, "mistakenli": 58, "mitig": 42, "mix": 13, "mixtur": 4, "mockcallbackreceiv": 52, "mode": [1, 5, 7, 14, 18, 20, 21, 22, 24, 26, 27, 38, 40, 42, 43, 52, 53, 56, 57, 59, 62, 64, 65, 71, 73, 80, 82], "model": [4, 25, 39], "modif": 40, "modul": [5, 21, 26, 43, 45, 46, 52, 60, 61, 63, 64, 78], "modular": [21, 37, 43, 82], "modulenam": 46, "modulenameempti": 46, "modulenotfound": 46, "modulepermissiondeni": 46, "monitor": 49, "monolith": 0, "month": [9, 11], "more": [3, 4, 6, 9, 12, 17, 18, 31, 38, 40, 41, 42, 45, 46, 49, 52, 53, 57, 58, 71, 72, 75, 76, 77, 78, 82], "most": [13, 39, 41, 43, 52], "mostli": 26, "motiv": [10, 20, 82], "move": [9, 56, 57], "msvc": [1, 41], "much": [4, 6, 9, 33, 40, 43, 52, 66, 76, 78, 82], "multer": 68, "multi": [53, 71, 82], "multipl": [4, 17, 22, 25, 39, 41, 43, 57, 82], "must": [38, 40, 52, 78], "my": [9, 27], "myjavetengineconfig": 79, "myjavetlogg": [48, 79], "n": [33, 41, 52, 69], "name": [3, 4, 13, 29, 31, 34, 38, 41, 46, 48, 52, 58, 61, 63, 65, 66, 75, 78, 79], "napi": [21, 41], "napi_create_buffer_copi": 41, "napi_create_error": 41, "napi_create_funct": 41, "napi_get_undefin": 41, "napi_open_escapable_handle_scop": 41, "nashorn": 27, "nativ": [4, 14, 20, 21, 27, 28, 31, 34, 39, 40, 43, 52, 55, 68, 82], "nativecontext": 62, "natur": [52, 53], "navig": [1, 41], "nbodi": 6, "ndk": [0, 59], "nearli": 9, "neat": 66, "necessari": [65, 71], "need": [0, 3, 6, 9, 29, 30, 31, 33, 39, 40, 41, 52, 53, 66, 69, 82], "nest": 39, "net": [4, 33], "network": 2, "never": 82, "new": [4, 6, 7, 9, 11, 25, 28, 29, 31, 33, 38, 39, 40, 41, 42, 48, 49, 51, 52, 53, 54, 64, 65, 66, 68, 69, 70, 71, 75, 76, 77, 78, 79], "newer": 7, "newglobalref": 40, "newpath": 33, "newsourcecod": 52, "next": [0, 30, 52], "nextlin": 76, "ninja": 1, "nio": 40, "node": [0, 2, 5, 7, 9, 14, 15, 20, 21, 22, 24, 27, 38, 39, 40, 42, 45, 46, 52, 53, 54, 57, 59, 61, 62, 63, 64, 65, 66, 67, 71, 73, 74, 76, 79, 80], "node_bind": 1, "node_hom": [0, 1], "node_modul": [41, 43, 68, 78], "node_module_fil": 41, "node_sqlite3": 41, "nodemodulemodul": 41, "nodemoduleprocess": 57, "noderuntim": [17, 41, 56, 59, 64, 68, 72, 77], "noderuntimeopt": [40, 58], "non": [33, 43, 49, 52, 65], "none": [3, 52], "norm": 6, "normal": [3, 40, 49, 68], "note": [27, 33, 40, 41, 52], "noth": 13, "notif": [3, 40], "notifi": [40, 66, 75], "notsupport": 46, "now": [8, 9, 29, 33, 41, 48, 49, 52, 75], "nowadai": 9, "npm": [41, 68, 78], "nsiev": 6, "null": [29, 31, 33, 41, 52, 53, 68, 75, 76], "nullpointerexcept": 30, "number": [30, 32, 34, 40, 41], "o": [0, 2, 4, 27, 39, 42, 46, 52, 66, 82], "object": [1, 4, 13, 26, 34, 40, 42, 43, 51, 56, 57, 58, 59, 63, 64, 66, 67, 69, 71, 75, 80, 82], "objectclass": 29, "objectmapp": 66, "objectnod": 66, "observ": 58, "obtain": 43, "obvious": [9, 41, 52, 66], "occur": [25, 26, 30, 33, 40], "octet": 40, "off": [0, 1, 3, 4, 34, 40], "offer": [13, 15, 40], "offici": [0, 1, 9, 12, 16, 18, 27, 41], "often": 40, "old": [4, 9, 43, 53], "older": 6, "onc": [1, 29, 30, 34, 40, 41, 42, 46, 65, 68], "oncatch": 53, "one": [4, 7, 9, 11, 13, 17, 22, 28, 33, 38, 40, 41, 49, 52, 66, 69, 75, 76, 77, 82], "ones": 31, "onfulfil": 53, "onli": [4, 13, 15, 17, 22, 25, 30, 32, 33, 38, 41, 42, 43, 48, 49, 52, 54, 66, 82], "onreject": 53, "open": [31, 33, 43, 65], "oper": [4, 30], "operatingsystem": 74, "opportun": 30, "opt": 2, "optim": 6, "option": [0, 5, 17, 32, 41, 42, 43, 52, 57, 59, 63, 65, 66, 75, 77], "optionaldoubl": 32, "optionalint": 32, "optionallong": 32, "optionalstr": 52, "order": [41, 51], "org": [48, 74], "organ": 56, "origin": [3, 4, 52], "originalsourcecod": 52, "orphan": 33, "osgi": 38, "osnotsupport": 46, "other": [3, 4, 13, 30, 38, 39, 40, 42, 43, 48, 52, 53, 56, 68, 70, 74, 77, 82], "otherwis": [3, 31, 32, 38, 39, 52], "out": [1, 25, 27, 40, 41, 46, 49, 65, 66, 68, 69, 70, 72, 75, 76, 82], "outer": 9, "outofmemoryerror": 33, "outperform": 6, "output": [1, 29, 52, 65, 66, 68, 69, 70], "outsid": 40, "over": [4, 26, 30, 34, 41, 52, 82], "overflow": 30, "overhead": [4, 6, 13, 30, 31, 39, 40, 49, 71], "overload": 33, "overrid": [29, 33, 38, 48, 52, 53, 66], "overridden": [30, 38], "own": [0, 4, 9, 29, 31, 33, 34, 38, 40, 41, 52, 53], "ownership": 53, "ownkei": 57, "p": [1, 33, 34], "pace": 40, "packag": [4, 6, 8, 9, 65], "page": 3, "pai": [9, 82], "pain": 82, "pair": [29, 52], "parallel": 52, "param": 3, "paramet": [46, 52], "parent": [29, 43], "pars": [3, 6], "parseint": 25, "parser": 68, "parti": [48, 52], "partial": 4, "particular": [6, 9, 34, 38, 41, 42], "pass": [43, 57], "patch": [25, 54, 63, 64], "patch_node_build": 1, "patch_v8_build": 1, "patchelf": 41, "path": [1, 18, 38, 41, 46, 62, 68], "pattern": [3, 13, 16, 31, 49], "pause_the_event_loop": 68, "pe": 41, "peacefulli": 25, "pend": [59, 68], "peopl": [26, 82], "per": [4, 33, 38, 39, 40, 41], "perform": [2, 3, 4, 5, 9, 25, 26, 27, 28, 30, 31, 38, 40, 41, 43, 52, 55, 58, 62, 63, 66, 68, 71, 75, 82], "period": [33, 45], "permiss": 9, "persist": 40, "person": 8, "perspect": [13, 40], "phase": 1, "pid": 4, "pidigit": 6, "piec": 41, "pink": 69, "pitfal": 0, "place": [1, 4, 9, 26, 30, 40, 82], "plai": [9, 39, 41, 53, 66, 68], "plan": 9, "platform": [0, 5, 42], "pleas": [0, 1, 2, 3, 4, 6, 11, 12, 17, 18, 22, 23, 27, 30, 33, 38, 39, 40, 41, 43, 49, 52, 53, 54, 65, 66, 69, 70, 71, 72, 74, 75, 76, 78, 82], "plug": 38, "plugin": [30, 63], "point": [40, 41], "pointer": [0, 40, 52], "pojo": 31, "pojoarrai": 29, "polyfil": [27, 73, 80, 82], "pom": [9, 59], "pool": [5, 25, 27, 40, 48, 55, 58, 73, 79, 80], "pop": [33, 34], "popinteg": 51, "popular": 42, "port": [3, 54, 68], "posit": [1, 6, 52], "possibl": [4, 31, 39, 42, 43, 66], "potenti": [41, 57, 58], "power": [29, 42], "ppa": 18, "ppee": 41, "practic": [3, 4, 13, 44], "pre": 42, "preciou": 9, "precis": [9, 30, 52], "prefer": 27, "prefix": 79, "prepar": [18, 38, 41, 42, 52, 71], "presenc": 52, "preserv": 51, "pressur": [40, 82], "pretti": 41, "prevent": [26, 38, 40, 43], "previou": [42, 52], "primari": 42, "prime": 6, "primit": [28, 29, 30, 31, 33, 34, 43, 52, 55, 58, 59], "print": [53, 70, 76], "println": [25, 27, 41, 65, 66, 68, 69, 70, 72, 75, 76], "printstacktrac": [25, 29, 49, 68], "prior": 38, "prioriti": [18, 49, 58], "privat": [0, 17, 18, 22, 29, 31, 33, 52, 66, 74, 75], "pro": 31, "problem": [3, 6, 9, 29, 52], "problemat": 9, "process": [2, 3, 26, 29, 49, 53, 64], "profession": 41, "profil": [3, 74], "program": 6, "prohibit": 43, "project": [4, 9, 11, 13, 15, 16, 27, 33, 41, 53, 65, 78, 82], "promis": [6, 26, 43, 50, 68], "promotescheduledexcept": 58, "proper": 1, "properli": [4, 25, 65], "properti": [18, 30, 31, 33, 66, 74, 75, 79], "propertykei": 66, "propertynam": 29, "propertysourc": 79, "propertyvalu": 66, "propos": 41, "protect": [25, 29, 39, 48, 49, 79], "protocol": 3, "prototyp": 52, "provid": [3, 4, 6, 18, 26, 28, 29, 30, 31, 33, 34, 41, 42, 51, 52, 65, 71, 75, 82], "proxi": [28, 31, 58, 59, 63, 64, 65, 66], "proxydeleteproperti": 63, "proxyget": 66, "proxygetownpropertydescriptor": 63, "proxyset": 66, "pseudo": [52, 53, 68], "public": [25, 29, 31, 33, 34, 38, 48, 52, 53, 59, 65, 66, 68, 75, 78, 79], "publish": 82, "pull": 2, "puppi": 41, "pure": 66, "purg": [4, 68], "purpos": 52, "push": [2, 33, 34, 51, 52, 53, 62], "put": [31, 33, 43, 66, 70], "py": 1, "python": [0, 1, 5], "python2": 9, "python3": [1, 9], "queri": [3, 65], "question": 82, "queue": [40, 49, 53], "quickli": 3, "quit": [0, 4, 6, 11, 13, 25, 30, 33, 40, 48, 49, 52, 66, 68, 71, 82], "quot": 52, "r": [2, 18, 69], "r23b": 59, "r25b": 0, "r_x86_64_tpoff32": 1, "race": [4, 39], "radic": 52, "rais": 53, "rang": [32, 40], "rapidli": 9, "rather": 52, "ratio": 40, "ration": 40, "raw": 40, "re": [42, 56, 65, 68], "reach": [25, 30, 46], "reachabl": 41, "read": [30, 40, 42, 46, 53], "readi": 1, "readtre": 66, "realiti": 9, "realli": [9, 53], "reason": [0, 4, 9, 22, 26, 46, 53, 68, 82], "rebuilt": [41, 56], "receiv": [52, 53, 57, 66], "receivecallback": 62, "recogn": [52, 66], "recommend": [4, 6, 8, 33, 34, 43, 52, 53, 66, 71], "recompil": 1, "record": 41, "recurs": [29, 30, 57], "recycl": [4, 6, 26, 30, 33, 40, 43, 72], "redesign": 62, "redirect": [66, 71], "reduc": [22, 42], "redund": 52, "redux": 6, "refactor": [52, 56, 57, 58, 59], "refer": [3, 6, 11, 12, 26, 27, 33, 38, 39, 41, 43, 46, 49, 52, 53, 61, 63, 65, 66, 69, 70, 71, 72, 75, 76, 78, 82], "referenc": [33, 40, 41], "referencecopi": 60, "referencecount": 46, "reflect": [29, 31, 33, 43, 52, 62], "refus": 3, "regard": [2, 3], "regardless": [38, 39, 43], "regist": [13, 26, 41, 43, 46, 52, 60, 62, 65, 71, 75, 82], "registercustomobject": [31, 57], "registr": [31, 46, 82], "regular": [31, 39], "reject": [26, 43, 57], "rel": 9, "relai": [41, 58], "relat": [22, 52], "relationship": 31, "releas": [0, 1, 4, 6, 9, 27, 40, 46, 82], "reli": [18, 40, 48, 65, 66, 79], "reload": 38, "reloc": 1, "remain": 52, "remot": 3, "remov": [9, 56, 57, 58, 59, 63, 64], "removegcepiloguecallback": 58, "removegcprologuecallback": 58, "removeif": 34, "renam": [56, 57, 60, 62], "repeat": 82, "repeatedli": 38, "repl": 65, "replac": [41, 64, 65, 66], "report": 39, "reportpendingmessag": 58, "repositori": [2, 18], "repres": [4, 13, 30, 40, 52, 82], "represent": 70, "req": 68, "request": 3, "requir": [1, 6, 8, 13, 38, 41, 43, 49, 52, 53, 64, 68], "requirenonnul": 66, "reset": [6, 43], "resetcontext": [4, 39, 43, 56], "resetisol": [4, 39, 56], "resolut": [41, 62], "resolv": [26, 33, 41, 42, 68, 82], "resourc": [1, 4, 13, 16, 27, 30, 35, 39, 41, 46, 49, 53, 65, 66, 72, 75, 76, 79], "resourcenam": 41, "respons": [3, 38, 41, 42, 52], "rest": [3, 41], "restart": [2, 82], "restor": [38, 52, 63], "result": [2, 3, 4, 6, 30, 39, 43, 53, 72, 76], "resume_the_event_loop": 68, "retir": 27, "return": [29, 30, 31, 33, 38, 40, 41, 43, 49, 52, 53, 56, 66, 68, 69, 70, 75, 79], "reus": [7, 13], "review": [34, 52, 53], "revis": [60, 64], "revisit": 9, "reviv": 9, "revok": 57, "rewrot": 64, "rich": 82, "richer": 82, "rid": 82, "right": [3, 38], "risk": [38, 43], "roi": 9, "role": 82, "root": [21, 25, 29, 40, 41, 42, 64], "rossum": 9, "rough": 52, "roughli": 2, "round": 66, "routin": [20, 24, 41], "rule": [40, 52], "run": [2, 4, 6, 27, 29, 33, 39, 40, 41, 49, 78], "runfin": [33, 65], "runifwaitingfordebugg": 3, "runnabl": 65, "runnowait": 64, "runonc": [64, 68], "runtim": [3, 4, 18, 22, 33, 38, 39, 41, 42, 43, 46, 49, 52, 57, 58, 59, 61, 63, 65, 66, 68, 71, 72, 75, 76, 77, 82], "runtimealreadyclos": 46, "runtimealreadyregist": 46, "runtimeclosefailur": 46, "runtimecreatesnapshotblock": [46, 63], "runtimecreatesnapshotdis": [46, 63], "runtimeleakagedetect": 46, "runtimenotregist": 46, "runtimeopt": 63, "runtimeoutofmemori": 46, "rust": 6, "safe": [4, 26, 30, 39, 52], "safeti": 52, "sai": [9, 29], "same": [0, 4, 17, 39, 40, 41, 43, 52, 53, 63, 66, 82], "samevalu": 55, "sampl": [4, 29, 33, 38, 40, 41, 52, 65, 68], "samplewithoutthi": 52, "samplewiththi": 52, "sandbox": 0, "satisfi": 9, "save": [41, 68], "sb": 65, "scan": 52, "scanner": 76, "scenario": [39, 40, 43, 55, 82], "scene": [4, 13, 26, 65, 70], "schedul": [40, 58], "school": 4, "scope": [13, 17, 40, 60], "scope_info": 52, "scopeinfo": [52, 60], "scratch": [0, 5, 11, 34, 42], "screenshot": 3, "script": [1, 4, 9, 13, 27, 41, 43, 49, 52, 56, 60, 65, 71, 76, 78], "scriptcontext": 52, "scriptcontextt": 52, "scriptfil": 41, "scriptpath": 41, "scriptstr": 41, "sdk": [0, 48, 79], "seal": [40, 64], "sealeden": 64, "seamlessli": 68, "search": 52, "second": [1, 3, 16, 22, 41, 42, 49, 52], "secondli": 52, "section": [0, 41, 42, 52], "secur": [4, 6, 13, 41, 42, 78, 82], "see": [26, 39, 41, 65, 66, 77], "seem": 25, "segfault": [26, 82], "select": [18, 40, 52], "semi": [40, 52], "send": [3, 30, 40, 68], "sensit": [39, 40, 43, 55, 82], "sentenc": [52, 82], "separ": [4, 6, 13, 33], "sequenc": 39, "serializ": 52, "seriou": [9, 11], "serious": [6, 9], "serv": 17, "server": [3, 6, 30, 74], "serverup": 68, "session": 9, "set": [1, 3, 4, 7, 9, 13, 28, 29, 30, 31, 34, 38, 40, 41, 42, 48, 51, 53, 56, 62, 65, 66, 68, 69, 70, 75], "setallowev": 79, "setallownativessyntax": 40, "setasynccallstackdepth": 3, "setautosendgcnotif": [40, 79], "setblackboxpattern": 3, "setcontext": 52, "setconvert": [28, 29, 33, 65, 66, 69], "setcreatesnapshoten": [42, 63], "setcustomflag": 40, "setdebugmodeen": 49, "setdefaultengineguardtimeoutmilli": 79, "setengineguardcheckintervalmilli": [], "setescap": 40, "setexposegc": 40, "setexposeinspectorscript": 40, "setextractfunctionsourcecod": 30, "setfunct": [55, 56], "setinterv": [15, 68, 78], "setjavetlogg": [48, 79], "setjoin": 33, "setjsruntimetyp": [25, 41, 77, 79], "setlibloadinglisten": 38, "setlibraryreload": 38, "setmaxheaps": 40, "setmaxoldspaces": 40, "setmemoryusagethresholdratio": [40, 56], "setmodul": 41, "setnam": [29, 31, 75], "setpauseonexcept": 3, "setpooldaemoncheckintervalmilli": 79, "setpoolidletimeoutsecond": 79, "setpoolmaxs": 79, "setpoolmins": 79, "setpoolshutdowntimeoutsecond": 79, "setposit": 52, "setpromiserejectcallback": 53, "setprototyp": 57, "setprototypeof": 64, "setproxyarrayen": 63, "setproxylisten": [33, 63], "setproxymapen": [30, 33], "setproxyseten": 33, "setpurgeeventloopbeforeclos": [59, 64, 68], "setreflectionobjectfactori": [33, 65], "setrequirerootdirectori": 41, "setresetenginetimeoutsecond": 79, "setresourcenam": [41, 64], "setscriptsourc": [52, 60], "setskipfunctioninobject": 30, "setsnapshotblob": [42, 63], "setsourcecod": [52, 56], "setsourcecodeopt": 60, "setstringvalu": 52, "setter": [31, 33, 52, 57, 75, 82], "settimeout": [15, 68, 78, 82], "settrackretainingpath": 40, "setusestrict": 40, "setutil": 33, "setv8moduleresolv": 41, "setv8runtim": 52, "setvalu": [29, 31, 52, 75], "setweak": [40, 43], "sh": [1, 41], "share": [0, 1, 4, 39, 41, 52, 53, 68, 82], "shell": [5, 73, 80], "shift": [33, 63], "ship": 3, "short": [31, 32, 34, 40, 52], "should": [33, 49], "show": [3, 4, 33, 40, 41, 52, 53, 65], "showcas": 3, "shut": 82, "side": [4, 6, 17, 40], "siev": 6, "sign": 40, "signatur": [31, 46, 52], "signific": [6, 40], "significantli": [2, 42, 46], "sigsegv": [20, 24], "similar": [33, 43, 71], "simpl": [29, 33, 38, 40, 41, 42, 48, 52, 66, 68, 77], "simplelist": [33, 34], "simplemap": [33, 34], "simpler": 41, "simpleset": [33, 34], "simpli": [52, 66], "simplifi": [4, 52], "simul": [15, 34, 41, 52, 78, 82], "sinc": [2, 9, 74], "singl": [4, 6, 9, 39, 52, 68], "singleton": 17, "sit": 9, "site": 12, "situat": 52, "size": [2, 4, 6, 22, 28, 31, 33, 34, 38, 40, 46, 49], "sjtucaocao": [1, 2, 27], "skip": [28, 30, 33, 57], "slave": 18, "sleep": [49, 68], "sleep_a_whil": 68, "slf4j": 48, "slight": [39, 63], "slightli": 6, "sloppi": 52, "slot": 52, "slow": [6, 31], "slowli": 11, "small": 25, "smaller": 42, "smart": [33, 40], "smartli": 33, "smooth": 82, "smoother": 40, "smoothli": [13, 30], "snapshot": [0, 18, 37, 46, 60], "snapshotblob1": 42, "snapshotblob2": 42, "snippet": [31, 40, 41, 65], "so": [1, 2, 4, 6, 7, 9, 13, 15, 18, 25, 26, 28, 29, 30, 31, 33, 38, 39, 40, 41, 42, 43, 48, 49, 52, 53, 60, 66, 68, 70, 74, 78, 79, 82], "softwar": 18, "solut": [1, 11, 31, 52, 65], "solvabl": 9, "some": [3, 4, 6, 9, 13, 15, 18, 21, 25, 26, 30, 38, 40, 42, 52, 53, 58, 62, 65, 66, 71, 78, 82], "someon": [9, 41], "someth": [9, 52], "sometim": [11, 25, 28, 29, 30, 33, 40, 42, 52, 53, 65], "somewher": 41, "sort": 34, "sourc": [1, 3, 17, 25, 30, 34, 39, 41, 46, 49, 65, 66, 69, 70, 71, 72, 75, 76, 78, 82], "sourcecod": 52, "space": 40, "spawn": 71, "speak": 52, "special": [33, 41, 52], "specif": [25, 40, 53], "specifi": [52, 82], "spectral": 6, "speed": 42, "spend": 9, "spent": 66, "split": 33, "spring": [13, 27, 55, 73, 80], "sqlite3": 41, "src": [1, 42], "stabl": 2, "stack": [30, 52], "stackoverflowerror": 30, "stage": 43, "stai": [33, 38, 68, 82], "stamp": 41, "standard": [26, 41, 61], "star": 27, "start": [4, 11, 17, 25, 30, 42, 49, 52, 58, 65, 68, 82], "start_io_thread_async_initi": 17, "startposit": 52, "startswith": 29, "starttim": 66, "startup": [0, 42], "state": [3, 42, 52], "static": [0, 1, 17, 25, 29, 42, 52, 57, 59, 68], "staticclassen": 57, "staticecho": 52, "statist": [45, 58], "statu": [18, 49, 54], "std": 17, "step": [9, 12, 13, 26, 28, 31, 33, 38, 40, 41, 52, 65, 69, 72, 75, 76], "stick": 9, "still": [9, 42, 49, 52, 65, 82], "stop": [1, 9, 61], "stoptim": 66, "storag": [2, 6, 25], "store": [4, 25, 34, 40, 41, 42, 52, 61], "stori": 52, "str": [33, 52], "stream": [31, 52, 57, 59], "strictequ": 55, "string": [4, 25, 29, 31, 32, 33, 34, 41, 48, 53, 55, 66, 68, 70, 72, 75, 76, 78], "stringarrai": 70, "stringifi": [28, 33, 34, 70], "stringjoin": 33, "stringlist": 70, "stringutil": 33, "stringvalu": 52, "strongli": [52, 66], "structur": [29, 46, 57, 66], "studio": [0, 5, 60, 61, 64], "style": 45, "subclass": [31, 33, 34, 43, 53], "substanti": 30, "substr": 29, "subtract": 42, "success": 82, "successfulli": [0, 2, 3, 25], "sudo": [18, 41], "suffer": 9, "suit": 7, "suitabl": 75, "summari": [4, 6], "super": [29, 66], "supplier": 52, "support": [0, 1, 2, 4, 8, 9, 14, 17, 19, 20, 24, 27, 31, 32, 33, 34, 38, 40, 41, 42, 46, 49, 51, 52, 56, 57, 58, 59, 60, 62, 63, 64, 74, 77, 82], "suppos": [9, 32, 38, 53], "suppresswarn": 29, "sure": [1, 2, 9, 17, 30, 40, 41, 68, 78], "surpris": 9, "surround": 39, "swap": 63, "swc": 41, "swc4j": 27, "switch": [3, 27, 38, 39, 43, 56], "symbol": [21, 28, 31, 33, 41, 46, 57, 59, 62], "symbol_level": 1, "symboltyp": 52, "sync": 4, "synchron": [6, 39, 82], "system": [4, 8, 11, 25, 27, 33, 38, 41, 46, 48, 63, 65, 66, 68, 69, 70, 72, 74, 75, 76], "system_temporary_directori": 4, "t": [0, 3, 4, 9, 17, 25, 26, 27, 29, 30, 31, 33, 38, 39, 40, 41, 42, 46, 48, 49, 52, 76, 77, 79, 82], "tabl": [41, 61], "take": [2, 4, 6, 9, 11, 26, 32, 33, 40, 41, 42, 52, 56, 58, 65, 66, 68, 71, 76, 82], "target": [3, 7, 30, 31, 42, 66, 82], "target_cpu": 1, "target_o": 1, "task": [40, 53, 56], "team": 9, "teardown": 64, "technic": [42, 52, 77], "technologi": 6, "tediou": [4, 13, 82], "tell": [3, 26, 33, 38, 40, 41, 68, 75], "temp": 38, "temporari": 63, "temporarili": 9, "term": [4, 49, 52, 66], "termin": [46, 47], "terminateexecut": [49, 55, 82], "test": [1, 2, 4, 5, 6, 9, 16, 17, 18, 27, 33, 39, 41, 42, 52, 53, 55, 65, 68, 74, 78], "testcrash": 25, "testexpress": 68, "testfrommodul": 41, "testfunct": 52, "testintercept": 75, "testinterceptor": 75, "testjavaflavor": 66, "testjsflavor": 66, "testlogg": 48, "testnam": 66, "testopt": 52, "testpojo": 29, "testproperti": 52, "testscriptjavaflavor": 66, "testscriptjsflavor": 66, "teststream": 52, "testv8valuedataview": 40, "testv8valuetypedarrai": 40, "than": [6, 11, 30, 42, 49, 52, 78, 82], "thank": 27, "thei": [4, 9, 31, 34, 38, 40, 41, 43, 46, 53, 66, 77], "them": [0, 3, 33, 40, 41, 52, 66], "there_are_more_tasks_in_task_queu": 68, "there_are_no_more_task": 68, "thi": [0, 3, 4, 9, 11, 12, 13, 18, 21, 25, 26, 27, 29, 30, 31, 33, 38, 39, 40, 41, 42, 53, 59, 66, 68, 69, 75, 77, 82], "thin": 1, "thing": [13, 30, 31, 40, 41], "think": [9, 11, 14, 16, 17, 20, 42], "thisobject": 52, "thisobjectrequir": [52, 57], "those": [1, 3, 4, 13, 26, 40, 41, 52, 65], "though": [3, 8, 46, 52, 71, 82], "thought": [9, 11], "thread": [4, 6, 9, 17, 25, 40, 46, 49, 53, 56, 57, 65, 71, 82], "threadcount": 25, "threadisol": 25, "threadlist": 25, "threshold": 40, "through": [41, 52], "throughout": 52, "throw": [25, 29, 30, 33, 41, 49, 52, 53, 66, 68, 78], "throwabl": [25, 48, 76], "throwerror": 63, "thrown": [39, 40, 43, 49, 52], "till": 49, "time": [6, 9, 17, 31, 33, 38, 41, 42, 49, 66, 71], "timeout": [49, 53], "timer": 68, "timestamp": 7, "timeunit": [49, 68], "tini": 30, "tip": [3, 27, 35], "tl": 9, "tmp": 33, "toarrai": [33, 70], "toclon": [52, 60], "todo": [27, 35], "tofil": 68, "togeth": [3, 42, 68], "tojson": [33, 63], "tojsonstr": 52, "toler": 52, "tolowercas": 29, "tom": 29, "tomap": 31, "too": [9, 17, 41], "toobject": 33, "took": 82, "tool": [0, 1, 2, 5, 17, 18, 23, 27, 42, 55], "toolchain": 18, "toolkit": 42, "top": [13, 41, 52, 82], "topath": 33, "topic": [30, 53], "toprimit": 28, "tostr": [33, 41, 51, 52, 64, 65, 66, 69, 76, 78], "touch": [33, 39], "touchabl": 31, "tov8valu": [28, 29, 66], "tp": [6, 9], "track": [4, 40, 62], "trade": 4, "tradit": 41, "transform": 27, "transpar": [29, 33, 52, 82], "transpil": 27, "treat": [33, 38, 40], "tri": [4, 9, 21], "trick": [25, 68], "tricki": 52, "trigger": [17, 39, 40, 52], "troubleshoot": [20, 27, 35], "true": [1, 11, 17, 28, 30, 33, 38, 40, 41, 42, 49, 52, 65, 66, 68, 69, 70, 74, 76], "try": [4, 9, 11, 25, 27, 29, 33, 39, 41, 42, 43, 49, 51, 52, 53, 65, 66, 68, 71, 72, 75, 76, 77, 78], "tr\u00e8": 52, "tsx": 27, "turn": [1, 3, 4, 34, 40, 56, 63], "tutori": [27, 65], "tweak": 29, "two": [33, 34, 40], "txt": 9, "type": [6, 13, 28, 29, 30, 31, 33, 34, 38, 39, 40, 41, 46, 55, 56, 58, 59, 66], "typescript": 27, "typic": [4, 34, 41, 49, 52], "ubuntu": [0, 2, 18, 41, 56, 59, 63, 74], "uint16_t": 40, "uint16arrai": [31, 40], "uint32_t": 40, "uint32arrai": [31, 40], "uint64_t": 40, "uint8_t": 40, "uint8arrai": [31, 40], "uint8clampedarrai": [31, 40], "ultim": 3, "unbind": [52, 57, 82], "unbindfunct": [52, 57, 62], "unbindproperti": [52, 57, 62], "uncertain": 43, "uncertainti": 9, "uncheck": 29, "undefin": [3, 30, 33, 41, 52, 65, 66, 76], "under": [9, 40, 43, 52, 65], "underli": 66, "understand": 9, "unexpect": [9, 30, 52, 64], "unfortun": [4, 9], "unhandl": 43, "unhandledreject": 53, "uniqueid": 3, "unit": [4, 16], "univers": 56, "unix": 74, "unknown": 46, "unless": [6, 40, 43, 82], "unload": [4, 37, 41, 82], "unloadlibrari": [38, 57], "unlock": [39, 66], "unmanag": [4, 40], "unmodifiablelist": 28, "unoffici": 9, "unpack": 4, "unrealist": 30, "unregist": [65, 71, 75], "unregistercustomobject": 57, "unregistr": 46, "unrel": [4, 6], "unrestrict": 40, "unsatisfiedlinkerror": 38, "unshift": [33, 63], "unsign": 40, "unstabl": 38, "until": 40, "untouch": 52, "unzip": 41, "up": [2, 3, 4, 6, 13, 33, 39, 40, 41, 42, 57, 58, 65, 68], "updat": [2, 18, 38, 42, 52, 56, 57, 58, 59, 61, 64], "upgrad": [3, 8, 9, 11, 18, 45, 56, 57, 58, 59, 60, 61, 62, 63, 64], "upon": 31, "url": 4, "us": [1, 3, 4, 6, 8, 11, 17, 25, 26, 30, 32, 38, 40, 41, 42, 43, 48, 52, 65, 71, 82], "usabl": 42, "usag": [42, 82], "use_custom_libcxx": 1, "user": [26, 30, 33, 41, 48, 71, 76, 79], "userdefin": 52, "usr": [1, 18], "usual": [0, 29, 33, 41, 49, 52, 53, 65, 68], "util": [25, 33], "v": [1, 5, 9, 27, 41], "v0": [54, 55, 56, 57, 74, 82], "v1": [3, 54, 58, 74], "v10": [54, 63], "v11": [54, 74], "v12": [2, 27], "v14": [54, 56, 57], "v16": [54, 59], "v17": [0, 64], "v18": [54, 61, 62], "v2": [9, 54, 74], "v20": [27, 54, 63, 64], "v3": [8, 25, 41, 54, 74], "v4": 9, "v6": 9, "v7": 8, "v7a": 1, "v8": [2, 3, 5, 7, 9, 11, 13, 14, 17, 20, 22, 24, 26, 27, 30, 31, 33, 35, 38, 39, 42, 43, 45, 46, 49, 54, 65, 67, 68, 69, 70, 71, 73, 74, 75, 76, 79, 80], "v8_enable_i18n_support": 1, "v8_enable_pointer_compress": 1, "v8_enable_sandbox": 1, "v8_flag": 40, "v8_home": [0, 1], "v8_monolith": 1, "v8_static_librari": 1, "v8_target_cpu": 1, "v8_use_external_startup_data": 1, "v8a": 1, "v8allow": [33, 58], "v8awaitmod": [60, 64], "v8bindenabl": 57, "v8bindingenabl": [52, 57], "v8block": [33, 58], "v8convert": 58, "v8customobject": 31, "v8data": 82, "v8errortempl": 63, "v8flag": 57, "v8function": [13, 52, 53, 57, 58, 65], "v8functioncallback": [56, 62], "v8gen": 1, "v8getter": [33, 58], "v8guard": [49, 64], "v8host": [25, 27, 29, 38, 40, 41, 42, 49, 56, 57, 58, 65, 66, 68, 72, 75, 76], "v8intern": 58, "v8locker": [39, 43, 55], "v8modul": [41, 56, 60, 63], "v8modulecount": 46, "v8modulereferr": 41, "v8notifi": 40, "v8properti": [13, 52, 56, 57, 58, 82], "v8runtim": [4, 6, 25, 27, 28, 29, 31, 33, 34, 39, 41, 42, 43, 49, 51, 52, 53, 55, 56, 57, 58, 60, 63, 64, 65, 66, 69, 70, 71, 72, 75, 76, 77, 78], "v8runtimeobserveraveragecallbackcontextcount": 58, "v8runtimeobserveraveragereferencecount": 58, "v8runtimeobserveraveragev8modulecount": 58, "v8runtimeopt": [42, 58], "v8runtimesett": 52, "v8scope": [40, 43, 57], "v8script": [56, 60], "v8setter": [33, 58], "v8stringexecutor": 60, "v8valu": [29, 30, 53, 56, 57, 59, 66, 70, 76, 82], "v8valuearrai": 52, "v8valuebiginteg": [59, 64], "v8valueboolean": 66, "v8valuebooleanobject": 63, "v8valuebuiltinobject": [57, 63, 64], "v8valuebuiltinreflect": 63, "v8valuebuiltinsymbol": 57, "v8valuedoubl": 64, "v8valuedoubleobject": 63, "v8valueerror": [53, 63], "v8valueerrortyp": 63, "v8valuefunct": [33, 41, 52, 56, 57, 68, 78], "v8valuefunctiondecim": 78, "v8valueinteg": [51, 52, 64, 66], "v8valueintegerobject": 63, "v8valuelong": 64, "v8valuelongobject": 63, "v8valuemap": 63, "v8valueobject": [29, 33, 40, 41, 52, 57, 59, 64, 75, 78, 82], "v8valueobjectdecim": 78, "v8valueprimit": 82, "v8valuepromis": [53, 56, 57], "v8valuepromiseresolv": 53, "v8valueproxi": 57, "v8valueset": 63, "v8valuesharedarraybuff": 57, "v8valuestr": [51, 66], "v8valuestringobject": 63, "v8valuesymboltyp": 52, "v8valuetemp": 29, "v8valueweakmap": 55, "v8valueweakset": 55, "v8virtualescapablevalu": 57, "v8virtualiter": 62, "v9": [54, 74], "vagu": 4, "val": 74, "valid": [4, 40, 52, 65], "valu": [4, 27, 29, 30, 31, 32, 35, 38, 40, 41, 46, 51, 55, 56, 57, 58, 66, 75], "valueof": 52, "van": 9, "var": [49, 52, 68], "vararg": [33, 52, 56, 59], "variabl": [28, 39, 41, 52, 58, 69, 70, 75], "variant": 42, "variou": [0, 62, 82], "vcbuild": 1, "ve": [9, 11, 42], "verbos": [66, 82], "veri": [4, 25, 33, 41, 43, 52, 76, 77], "verifi": [4, 41, 52], "verifynostrongbaseobject": 60, "versa": 30, "version": [1, 3, 4, 8, 11, 27, 33, 41, 42, 54, 74, 77], "via": [3, 4, 33, 40, 41, 43, 49, 52, 53, 65, 68, 75], "vice": 30, "view": 55, "violat": 4, "virtual": [33, 41, 59], "visibl": [4, 52], "visit": [3, 17, 23, 27, 78], "visual": [0, 5, 60, 61, 64], "vm": [4, 25, 43, 63], "void": [25, 29, 31, 33, 48, 52, 53, 65, 66, 68, 75, 78], "voil\u00e0": [3, 33, 68], "voluntarili": 41, "vs2022": 1, "vulner": [6, 42, 43], "w": 3, "wa": [9, 41, 82], "wai": [0, 4, 13, 26, 27, 28, 29, 33, 34, 38, 40, 41, 42, 43, 49, 52, 53, 57, 66, 68, 71, 75, 79], "wait": [2, 3, 58, 68], "waitforenginemaxretrycount": 59, "want": [4, 8, 9, 13, 26, 30, 38, 39, 40, 42, 46, 52, 53, 54, 65], "warm": 6, "warn": [1, 48, 56], "wasm": 5, "watch": 9, "weak": 4, "weakmap": 51, "weakset": 51, "web": [3, 40, 43], "webassembli": 6, "websit": 3, "websocket": 3, "week": 82, "weight": 40, "welcom": [2, 76], "well": [3, 9, 12, 26, 33, 34, 40, 82], "were": [9, 25], "what": [3, 9, 10, 16, 20, 30, 40, 41, 66, 82], "whatev": [4, 26, 39, 40, 52, 53, 65], "when": [1, 4, 6, 9, 20, 21, 24, 33, 40, 41, 42, 43, 49, 52, 53, 59, 61, 82], "where": [13, 14, 20, 38, 41, 42, 66, 82], "wherea": [30, 40], "whether": [52, 57], "which": [0, 3, 4, 6, 7, 9, 13, 16, 18, 26, 27, 30, 31, 33, 38, 40, 41, 42, 49, 52, 65, 66, 69, 75, 77, 78, 82], "while": [1, 2, 33, 49, 68, 76], "who": [9, 41], "whole": [6, 33, 67, 80], "whose": 43, "why": [3, 13, 14, 20, 24, 25, 38, 40, 78], "win32": 41, "windbg": 0, "window": [6, 11, 13, 21, 27, 55, 66, 82], "wise": [2, 18, 52, 66, 74], "wish": [9, 82], "within": 40, "without": [1, 2, 3, 4, 26, 31, 33, 38, 39, 42, 52, 58, 62, 65, 66, 82], "won": [26, 30, 38], "word": [4, 40, 68], "work": [3, 4, 9, 12, 13, 25, 26, 27, 38, 39, 40, 41, 49, 52, 53, 66, 68, 82], "workaround": [17, 41], "worker": 40, "workflow": 2, "working_directori": [41, 68, 78], "workingdirectori": 41, "worri": [30, 38, 41, 49, 68], "wors": 30, "would": [9, 11, 17], "wrap": 40, "wrapper": 66, "writabl": 33, "write": [11, 29, 30, 40, 82], "written": [6, 30, 42], "wsl2": [0, 2], "x": [9, 27, 28, 31, 33, 34, 41, 52, 54, 70], "x64": [1, 41], "x86": [1, 27, 57, 58, 74], "x86_64": [2, 25, 27, 41, 58, 74], "xcode": 0, "xml": [9, 59], "xms64m": 40, "xmx64m": 40, "y": [18, 28, 31, 33, 34, 70], "ye": [3, 4, 12, 18, 23, 26, 30, 31, 33, 38, 39, 41, 51, 52, 74, 78], "year": [9, 82], "yet": 26, "you": [1, 2, 3, 8, 9, 13, 16, 23, 26, 27, 29, 33, 39, 40, 42, 48, 52, 53, 54, 65, 78, 79, 82], "your": [3, 9, 18, 33, 34, 38, 42, 43, 48, 79, 82], "z": [33, 34], "zero": [4, 40], "zombi": 40, "zoneddatetim": [32, 34, 59, 60]}, "titles": ["Build Javet", "Build Javet from Scratch", "Build Javet with Docker", "Debug with Chrome Developer Tools", "Javet Design", "Development", "Javet Performance", "Test Javet", "Development Tools", "History with J2V8", "Background", "What is the Motivation?", "Can Native Image be Supported?", "How to Think in Javet?", "Development", "Where are ES6 API in V8 Mode?", "Where are the Examples?", "Why is the Inspector Disabled in Node.js Mode?", "Can Javet Support Legacy Linux?", "Environment", "FAQ", "A dynamic link library (DLL) initialization routine failed", "Can i18n be Supported?", "Can I Debug Javet in Chrome DevTools?", "Troubleshooting", "SIGSEGV at createV8Runtime() in V8 Mode on AWS", "Why Node.js Crashes When being Closed?", "Javet", "Bridge Converter", "Custom Converter", "Converters", "Object Converter", "Primitive Converter", "Proxy Converter", "Proxy Plugins", "Reference", "API Reference", "Resource Management", "Load and Unload", "Know the Lock", "Memory Management", "Modularization", "Snapshot", "Best Practices", "Tips", "TODO List", "Error Codes", "Troubleshooting", "Logging", "Termination", "V8 Values", "V8 Collection", "V8 Function", "V8 Promise", "Release Notes", "Release Notes 0.7.x", "Release Notes 0.8.x", "Release Notes 0.9.x", "Release Notes 1.0.x", "Release Notes 1.1.x", "Release Notes 2.0.x", "Release Notes 2.1.x", "Release Notes 2.2.x", "Release Notes 3.0.x", "Release Notes 3.1.x", "Access the Whole JVM", "Expose JsonNode in V8", "Advanced", "Interact with Node.js", "Java and JavaScript Interop", "Object Converter", "Javet Engine Pool", "Hello Javet", "Basic", "Installation", "Interception", "Javet Shell", "Node.js Mode and V8 Mode", "Polyfill", "Spring Integration", "Tutorial", "Migration Guides", "Migrate from J2V8"], "titleterms": {"0": [55, 56, 57, 58, 59, 60, 61, 62, 63, 64], "1": [3, 25, 39, 40, 48, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 68, 72], "10": [56, 57, 60], "11": 57, "12": 57, "13": 57, "14": 57, "2": [3, 25, 39, 40, 48, 52, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 68], "2022": 8, "21": 58, "3": [3, 8, 40, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 68], "4": [3, 55, 56, 57, 58, 59, 60, 62, 63, 64], "5": [56, 57, 58, 59, 62, 64], "6": [56, 57, 58, 59, 62, 64], "7": [55, 56, 57, 58, 59, 60, 62], "8": [8, 56, 57, 59, 60, 63], "9": [55, 56, 57, 58, 59, 60, 63], "A": 21, "If": 68, "It": 31, "On": [38, 41], "One": 52, "That": 68, "There": 3, "With": 49, "abi": 58, "about": [49, 52], "access": 65, "add": 34, "advanc": 67, "aggress": 40, "all": 2, "alreadi": 38, "altern": 40, "an": 69, "analysi": 25, "android": [0, 1, 2, 58, 74], "anonym": [33, 57], "anoth": 38, "api": [15, 36], "approach": 66, "ar": [15, 16], "architectur": 4, "argument": 52, "arm64": [1, 2, 58], "arrai": [28, 70], "arraybuff": 40, "autom": 9, "automat": [40, 49, 52], "avoid": 52, "aw": 25, "await": [26, 40], "background": [10, 26], "backward": 46, "basic": 73, "being": 26, "benchmark": 6, "benefit": 42, "best": 43, "between": 41, "bind": [30, 52], "bindfunct": 52, "birth": 55, "bless": 82, "blog": 27, "boolean": [28, 52], "both": 52, "bridg": 28, "bug": 55, "build": [0, 1, 2, 9], "built": [30, 34, 41], "c": 40, "call": 52, "callback": 53, "can": [12, 18, 22, 23, 30, 38, 52], "cast": 28, "caus": 26, "cdt": 3, "challeng": 40, "chang": 52, "chrome": [3, 23], "circular": 30, "class": [33, 69], "classload": [38, 57], "cleanup": 65, "close": [26, 68], "co": 77, "code": [46, 52, 56], "codestr": 52, "collect": 51, "commun": 8, "comparison": [6, 30, 39, 52], "compat": [46, 74], "conclus": 66, "config": 30, "configur": 79, "context": [4, 52], "convers": [52, 56, 82], "convert": [28, 29, 30, 31, 32, 33, 57, 70], "core": 58, "coroutin": 39, "count": 52, "crash": 26, "creat": [29, 34, 42], "createv8runtim": 25, "cross": 4, "custom": [3, 29, 31, 33, 38, 58], "deadlineinmilli": 40, "deal": 41, "debug": [3, 23, 49, 55], "decim": 78, "declar": [13, 56], "defin": [29, 52], "demand": [38, 41], "demo": 3, "depend": [27, 74], "deploi": [9, 38], "deploy": 38, "deprec": 2, "design": [4, 29], "detect": 4, "develop": [3, 5, 8, 14], "devtool": 23, "direct": 66, "disabl": [17, 52], "dll": 21, "docker": 2, "document": 27, "doe": [3, 30, 31, 33, 39], "dsl": [27, 74], "dure": 68, "dynam": [21, 33, 41, 65], "effect": 30, "elf": 41, "empow": 57, "enforc": 25, "engin": [4, 43, 49, 55, 71], "enhanc": 31, "enum": [33, 69], "environ": [0, 2, 19, 25, 38], "error": [46, 56], "es6": [15, 82], "escap": 40, "event": [26, 56], "exampl": [16, 41, 53], "execut": 13, "executor": 13, "exist": 77, "explicit": 39, "expos": 66, "exposur": 66, "express": 2, "f": 53, "fail": 21, "faq": [3, 20], "featur": [0, 27, 33], "file": [2, 33, 38], "first": [56, 58], "fix": 55, "flag": 0, "flavor": 66, "fly": 52, "foreach": 56, "from": [1, 13, 31, 32, 38, 40, 82], "full": 2, "function": [13, 30, 33, 52, 56, 57], "functionnam": 52, "gap": 41, "gc": [40, 56], "github": 2, "go": 29, "goal": 71, "gradl": [8, 27, 74], "groovi": [27, 74], "guard": 55, "guid": [81, 82], "handl": 52, "handshak": 3, "hang": 68, "hello": [27, 72], "highlight": [6, 31], "histori": 9, "hotfix": 56, "how": [13, 28, 31, 33, 40, 42, 49, 52, 68], "hub": 2, "i": [3, 11, 17, 23, 52, 68], "i18n": 22, "idlenotificationdeadlin": 40, "ignor": 30, "ijavetlogg": 48, "imag": 12, "implement": 48, "implicit": 39, "import": [4, 41, 52], "improv": 6, "index": 56, "info": 52, "initi": [21, 25], "inject": [48, 69, 79], "insid": 30, "inspector": 17, "instal": 74, "instanc": 33, "int": 28, "integ": 28, "integr": 79, "intellij": 8, "interact": 68, "intercept": [4, 13, 52, 56, 75], "interfac": [33, 57, 65], "intern": [3, 41], "interop": 69, "invok": 52, "isol": 4, "issu": 9, "j": [1, 3, 4, 6, 8, 17, 26, 41, 43, 56, 58, 60, 66, 68, 72, 77, 78, 82], "j2v8": [9, 82], "jar": 38, "java": [6, 28, 31, 32, 52, 57, 66, 69], "javascript": [28, 31, 32, 52, 68, 69], "javet": [0, 1, 2, 4, 6, 7, 13, 18, 23, 27, 38, 39, 41, 42, 58, 71, 72, 76, 82], "javet_disable_pku": 25, "javetcallbackcontext": 52, "javetproxyconvert": 33, "javetproxypluginarrai": 34, "javetproxyplugindefault": 34, "javetproxypluginlist": 34, "javetproxypluginmap": 34, "javetproxypluginset": 34, "jdk": 8, "jni": 1, "jsonnod": 66, "jvm": [40, 65], "kei": 52, "know": 39, "kotlin": [27, 74], "latest": 9, "leak": 4, "learn": 13, "legaci": 18, "lib": 38, "librari": [1, 21, 38, 58], "licens": 27, "lifecycl": 53, "limit": 42, "link": 21, "linux": [0, 1, 2, 9, 18, 41, 74], "list": [28, 33, 45, 70], "listen": 38, "live": [3, 55], "load": [38, 41, 58], "locat": 38, "lock": 39, "locker": 55, "log": 48, "logger": 48, "long": [28, 40], "loop": 56, "lowmemorynotif": [26, 40], "mac": [1, 57, 58, 74], "maco": 0, "main": 68, "major": 27, "manag": [37, 40, 43, 52], "manual": [40, 41, 49, 52], "map": [33, 52, 70], "maven": [8, 9, 27, 74], "mean": 39, "memori": [4, 40], "migrat": [81, 82], "mismatch": 52, "mksnapshot": 42, "mode": [3, 4, 6, 15, 17, 25, 33, 39, 41, 49, 72, 77, 78], "modul": [4, 41, 56, 57, 82], "modular": 41, "motiv": [11, 71], "multi": [2, 4, 57], "name": 33, "nativ": [12, 30, 38, 41, 56], "new": 34, "node": [1, 3, 4, 6, 8, 17, 26, 41, 43, 56, 58, 60, 68, 72, 77, 78, 82], "noderuntim": 26, "note": [54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64], "null": 30, "o": [1, 57, 58, 74], "object": [28, 29, 30, 31, 33, 52, 65, 70], "one": 2, "onli": 9, "open": 3, "option": [8, 40], "pass": 52, "passiv": 40, "patch": [1, 41], "path": 33, "pattern": [33, 69], "perform": [6, 39], "plai": 65, "platform": 4, "plugin": 34, "pojo": 29, "pojoconvert": 29, "polyfil": [57, 78], "pool": [4, 43, 49, 71, 77], "possibl": 68, "practic": 43, "pre": 41, "prepar": [1, 28, 33, 69], "primit": [4, 32, 56, 82], "print": 72, "privat": 57, "process": [4, 57], "promis": [53, 57], "properti": [13, 52, 56, 57], "proxi": [30, 33, 34, 57], "python": 8, "quick": 27, "readfileasync": 53, "readi": 29, "rebuild": 41, "recommend": 40, "refer": [4, 35, 36, 40], "regist": [31, 53], "registerjavamethod": 82, "registr": 52, "reject": 53, "releas": [54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64], "remov": [34, 38], "repositori": 9, "requir": 4, "resolv": [53, 57], "resourc": [37, 40, 43, 52], "root": 26, "routin": 21, "run": 3, "runfin": 40, "runtim": 40, "safe": 57, "safeti": [4, 30, 39], "sampl": 75, "scope": [52, 57], "scratch": 1, "script": 3, "secur": 43, "server": 68, "set": [25, 33, 52], "shell": [3, 76], "sigsegv": 25, "skip": 38, "snapshot": 42, "solut": [25, 26], "sourc": [52, 56], "sponsor": 27, "spring": 79, "stage": 2, "start": 27, "static": [33, 69], "statist": 40, "step": [48, 68], "string": [28, 52], "stringbuild": [33, 65, 69], "structur": 30, "studio": 8, "summari": [52, 65], "support": [3, 12, 18, 22], "suppress": 38, "symbol": 52, "symptom": 25, "synthet": 41, "system": [9, 40], "take": [30, 38], "termin": 49, "test": [7, 13, 66, 75], "thi": 52, "think": 13, "thread": [39, 43, 68], "time": [56, 58], "tip": [44, 52], "todo": 45, "tool": [3, 8], "troubleshoot": [24, 47], "try": 40, "tutori": 80, "type": [4, 52, 82], "unhandl": 53, "unhandledreject": 26, "unit": 13, "unload": 38, "unmodifi": 28, "unregist": 52, "usag": [28, 31, 33, 40, 51, 71, 77], "user": 52, "usual": 3, "v": [4, 6, 52], "v1": 57, "v10": [59, 60], "v11": [60, 61, 62, 63], "v12": [63, 64], "v16": 58, "v18": 60, "v2": 57, "v8": [0, 1, 4, 6, 15, 25, 40, 41, 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 72, 77, 78, 82], "v8convert": 33, "v8flag": 40, "v8function": [33, 75, 82], "v8host": 77, "v8locker": 82, "v8properti": [33, 75], "v8runtim": [13, 40, 82], "v8valu": 52, "v8valuearrai": 51, "v8valueglobalobject": 13, "v8valuemap": 51, "v8valueset": 51, "v9": [56, 57, 58, 59], "valu": [50, 52], "variabl": [0, 25, 38], "version": 9, "via": [30, 42], "virtual": [4, 39], "visual": 8, "wasm": 6, "weak": 40, "what": [11, 39, 52, 68], "when": [26, 30], "where": [15, 16], "whole": 65, "why": [1, 9, 17, 26, 46, 52, 82], "window": [0, 1, 2, 9, 41, 74], "without": [40, 49], "work": [31, 33, 42], "worker": 68, "wrap": 66, "x": [55, 56, 57, 58, 59, 60, 61, 62, 63, 64], "x86_64": [1, 57]}}) \ No newline at end of file +Search.setIndex({"alltitles": {"0.7.0 Birth with V8 v8.9": [[56, "birth-with-v8-v8-9"]], "0.7.1 Bug Fixes": [[56, "bug-fixes"]], "0.7.2 Engine Guard": [[56, "engine-guard"]], "0.7.3 Locker": [[56, "locker"]], "0.7.4 Live Debug": [[56, "live-debug"]], "0.8.0 First Time with Node.js": [[57, "first-time-with-node-js"]], "0.8.1 Declarative Function Interception": [[57, "declarative-function-interception"]], "0.8.10 Index in forEach": [[57, "index-in-foreach"]], "0.8.2 Conversion for Primitive": [[57, "conversion-for-primitive"]], "0.8.3 GC": [[57, "gc"]], "0.8.4 V8 v9.0": [[57, "v8-v9-0"]], "0.8.5 Error Codes": [[57, "error-codes"]], "0.8.6 Event Loop for Node.js": [[57, "event-loop-for-node-js"]], "0.8.7 Native Modules for Node.js": [[57, "native-modules-for-node-js"]], "0.8.8 Hotfix the Source Code": [[57, "hotfix-the-source-code"]], "0.8.9 Declarative Property Interception": [[57, "declarative-property-interception"]], "0.9.0 V8 v9.1": [[58, "v8-v9-1"]], "0.9.1 V8 in Classloader": [[58, "v8-in-classloader"]], "0.9.10 Polyfill Java Interfaces": [[58, "polyfill-java-interfaces"]], "0.9.11 V8 v9.3": [[58, "v8-v9-3"]], "0.9.12 Private Properties": [[58, "private-properties"]], "0.9.13 V8 v9.4": [[58, "v8-v9-4"]], "0.9.14 V8 Scope": [[58, "v8-scope"]], "0.9.2 Anonymous Functions in Converter": [[58, "anonymous-functions-in-converter"]], "0.9.3 Module Resolver": [[58, "module-resolver"]], "0.9.4 Multi-process Safe": [[58, "multi-process-safe"]], "0.9.5 V8 v9.2": [[58, "v8-v9-2"]], "0.9.6 Proxy Converter v1": [[58, "proxy-converter-v1"]], "0.9.7 Proxy Converter v2": [[58, "proxy-converter-v2"]], "0.9.8 Empower the Promise": [[58, "empower-the-promise"]], "0.9.9 Mac OS x86_64": [[58, "mac-os-x86-64"]], "1. Implicit Mode": [[40, "implicit-mode"]], "1. Run CDT Shell": [[3, "run-cdt-shell"]], "1.0.0 First Time with Node.js v16": [[59, "first-time-with-node-js-v16"]], "1.0.1 Custom Library Loading": [[59, "custom-library-loading"]], "1.0.2 First Time with Android": [[59, "first-time-with-android"]], "1.0.3 Android ABI 21": [[59, "android-abi-21"]], "1.0.4 V8 9.6": [[59, "v8-9-6"]], "1.0.5 Javet Core": [[59, "javet-core"]], "1.0.6 Mac OS (arm64)": [[59, "mac-os-arm64"]], "1.0.7 V8 v9.7": [[59, "v8-v9-7"]], "1.1.0 V8 v9.8": [[60, "v8-v9-8"]], "1.1.1 V8 v9.9": [[60, "v8-v9-9"]], "1.1.2 V8 v10.0": [[60, "v8-v10-0"]], "1.1.3 V8 v10.1": [[60, "v8-v10-1"]], "1.1.4 V8 v10.2": [[60, "v8-v10-2"]], "1.1.5 V8 v10.3": [[60, "v8-v10-3"]], "1.1.6 V8 v10.4": [[60, "v8-v10-4"]], "1.1.7 V8 v10.5": [[60, "v8-v10-5"]], "2 Approaches": [[67, "approaches"]], "2. Explicit Mode": [[40, "explicit-mode"]], "2. Run Script in CDT Shell": [[3, "run-script-in-cdt-shell"]], "2.0.0 Node.js v18.10": [[61, "node-js-v18-10"]], "2.0.1 V8 v10.7": [[61, "v8-v10-7"]], "2.0.2 V8 v10.8": [[61, "v8-v10-8"]], "2.0.3 V8 v10.9": [[61, "v8-v10-9"]], "2.0.4 V8 v11.0": [[61, "v8-v11-0"]], "2.1.0 V8 v11.1": [[62, "v8-v11-1"]], "2.1.1 V8 v11.2": [[62, "v8-v11-2"]], "2.1.2 V8 v11.3": [[62, "v8-v11-3"]], "2.2.0 V8 v11.4": [[63, "v8-v11-4"]], "2.2.1 V8 v11.5": [[63, "v8-v11-5"]], "2.2.2 V8 v11.6": [[63, "v8-v11-6"]], "2.2.3 V8 v11.7": [[63, "v8-v11-7"]], "3 Challenges in Memory Management": [[41, "challenges-in-memory-management"]], "3. Open CDT": [[3, "open-cdt"]], "3.0.0 V8 v11.8": [[64, "v8-v11-8"]], "3.0.1 V8 v11.9": [[64, "v8-v11-9"]], "3.0.2 V8 v12.0": [[64, "v8-v12-0"]], "3.0.3 V8 v12.1": [[64, "v8-v12-1"]], "3.0.4 V8 v12.2": [[64, "v8-v12-2"]], "3.1.0 V8 v12.3": [[65, "v8-v12-3"]], "3.1.1 V8 v12.4": [[65, "v8-v12-4"]], "3.1.2 V8 v12.5": [[65, "v8-v12-5"]], "3.1.3 V8 v12.6": [[65, "v8-v12-6"]], "3.1.4 V8 v12.7": [[65, "v8-v12-7"]], "4. Debug as Usual": [[3, "debug-as-usual"]], "@V8Convert::mode": [[34, "v8convert-mode"]], "@V8Function::name": [[34, "v8function-name"]], "@V8Property and @V8Function": [[76, "v8property-and-v8function"]], "@V8Property::name": [[34, "v8property-name"]], "A dynamic link library (DLL) initialization routine failed": [[21, "a-dynamic-link-library-dll-initialization-routine-failed"]], "API Reference": [[37, "api-reference"]], "Access the Whole JVM": [[66, "access-the-whole-jvm"]], "Add or Remove Proxy Plugins": [[35, "add-or-remove-proxy-plugins"]], "Advanced": [[68, "advanced"]], "Aggressive GC": [[41, "aggressive-gc"]], "Alternative Option: ArrayBuffer": [[41, "alternative-option-arraybuffer"]], "Analysis": [[26, "analysis"]], "Android": [[75, "android"]], "Android Environment": [[0, "android-environment"]], "Architecture": [[4, "architecture"]], "Array": [[71, "array"]], "Automatic GC": [[41, "automatic-gc"]], "Automatic Management with try-with-resource": [[41, "automatic-management-with-try-with-resource"]], "Automatic Registration": [[53, "automatic-registration"]], "Automatic Termination": [[50, "automatic-termination"]], "Automatic Type Conversion": [[53, "automatic-type-conversion"]], "Automatically Manage with Weak Reference": [[41, "automatically-manage-with-weak-reference"]], "Background": [[10, "background"], [27, "background"]], "Backward Compatibility": [[47, "backward-compatibility"]], "Basic": [[74, "basic"]], "Benefits": [[43, "benefits"]], "Best Practices": [[44, "best-practices"]], "Binding via Native": [[31, "binding-via-native"]], "Binding via Proxy": [[31, "binding-via-proxy"]], "Blessing": [[83, "blessing"]], "Blog": [[28, "blog"]], "Boolean": [[29, "boolean"]], "Bridge Converter": [[29, "bridge-converter"]], "Build Environment": [[0, "build-environment"], [2, "build-environment"]], "Build Javet": [[0, "build-javet"], [1, "build-javet"], [1, "id1"]], "Build Javet JNI Library for Android": [[1, "build-javet-jni-library-for-android"]], "Build Javet for Android": [[1, "build-javet-for-android"]], "Build Javet for Android on Linux or Windows": [[2, "build-javet-for-android-on-linux-or-windows"]], "Build Javet for Linux on Linux or Windows": [[2, "build-javet-for-linux-on-linux-or-windows"]], "Build Javet for Linux, Mac OS and Windows": [[1, "build-javet-for-linux-mac-os-and-windows"]], "Build Javet for Windows on Windows": [[2, "build-javet-for-windows-on-windows"]], "Build Javet from Scratch": [[1, "build-javet-from-scratch"]], "Build Javet with Docker": [[2, "build-javet-with-docker"]], "Build Node.js": [[1, "build-node-js"]], "Build Node.js on Linux": [[1, "build-node-js-on-linux"]], "Build Node.js on Mac OS": [[1, "build-node-js-on-mac-os"]], "Build Node.js on Windows": [[1, "build-node-js-on-windows"]], "Build V8": [[1, "build-v8"]], "Build V8 for Android": [[1, "build-v8-for-android"]], "Build V8 for Linux arm64": [[1, "build-v8-for-linux-arm64"]], "Build V8 for Linux x86_64": [[1, "build-v8-for-linux-x86-64"]], "Build V8 for Mac OS arm64": [[1, "build-v8-for-mac-os-arm64"]], "Build V8 for Mac OS x86_64": [[1, "build-v8-for-mac-os-x86-64"]], "Build V8 for Windows": [[1, "build-v8-for-windows"]], "Built-in Proxy Plugins": [[35, "built-in-proxy-plugins"]], "C++ Runtime": [[41, "c-runtime"]], "CDT Shell": [[3, "cdt-shell"]], "Call": [[53, "call"]], "Call vs. Invoke": [[53, "call-vs-invoke"]], "Can 2 Java Functions Map to One JavaScript Function and Property?": [[53, "can-2-java-functions-map-to-one-javascript-function-and-property"]], "Can Both JavaScript Function and Property Map to One Java Function?": [[53, "can-both-javascript-function-and-property-map-to-one-java-function"]], "Can Built-in Converter be Ignored?": [[31, "can-built-in-converter-be-ignored"]], "Can I Debug Javet in Chrome DevTools?": [[23, "can-i-debug-javet-in-chrome-devtools"]], "Can Javet Lib Loading Listener Take Environment Variables?": [[39, "can-javet-lib-loading-listener-take-environment-variables"]], "Can Javet Libraries be Removed from the Jar File?": [[39, "can-javet-libraries-be-removed-from-the-jar-file"]], "Can Javet Native Library Deployment be Skipped?": [[39, "can-javet-native-library-deployment-be-skipped"]], "Can Javet Native Library be Deployed to a Custom Location?": [[39, "can-javet-native-library-be-deployed-to-a-custom-location"]], "Can Javet Native Library be Loaded or Unloaded On-demand?": [[39, "can-javet-native-library-be-loaded-or-unloaded-on-demand"]], "Can Javet Support Legacy Linux?": [[18, "can-javet-support-legacy-linux"]], "Can Native Image be Supported?": [[12, "can-native-image-be-supported"]], "Can Node.js Event Loop be Skipped?": [[24, "can-node-js-event-loop-be-skipped"]], "Can Symbol Properties be Intercepted?": [[53, "can-symbol-properties-be-intercepted"]], "Can already loaded in another classloader be Suppressed?": [[39, "can-already-loaded-in-another-classloader-be-suppressed"]], "Can i18n be Supported?": [[22, "can-i18n-be-supported"]], "Can this be Passed in?": [[53, "can-this-be-passed-in"]], "Change a User Defined JavaScript Function on the Fly": [[53, "change-a-user-defined-javascript-function-on-the-fly"]], "Chrome Developer Tools Internals": [[3, "chrome-developer-tools-internals"]], "Circular Structure": [[31, "circular-structure"]], "Cleanup": [[66, "cleanup"]], "Co-existence": [[78, "co-existence"]], "Collection in V8": [[52, "collection-in-v8"]], "Comparisons": [[31, "comparisons"], [40, "comparisons"], [53, "comparisons"]], "Conclusion": [[67, "conclusion"]], "Configuration": [[80, "configuration"]], "Context and Scope Info": [[53, "context-and-scope-info"]], "Converters": [[31, "converters"]], "Coroutines or Virtual Threads": [[40, "coroutines-or-virtual-threads"]], "Create PojoConverter": [[30, "create-pojoconverter"]], "Create a New Proxy Plugin": [[35, "create-a-new-proxy-plugin"]], "Create a Snapshot in Javet": [[43, "create-a-snapshot-in-javet"]], "Create a Snapshot via mksnapshot": [[43, "create-a-snapshot-via-mksnapshot"]], "Cross-platform": [[4, "cross-platform"]], "Custom Converter": [[30, "custom-converter"]], "Customization": [[3, "customization"]], "Deal with Native Modules": [[42, "deal-with-native-modules"]], "Debug with Chrome Developer Tools": [[3, "debug-with-chrome-developer-tools"]], "Declarative Function and Property Interception": [[13, "declarative-function-and-property-interception"]], "Define POJO Object": [[30, "define-pojo-object"]], "Dependency": [[28, "dependency"], [75, "dependency"]], "Design a POJO Converter": [[30, "design-a-pojo-converter"]], "Development": [[5, "development"], [14, "development"]], "Development Tools": [[8, "development-tools"]], "Docker Hub and Github": [[2, "docker-hub-and-github"]], "Documents": [[28, "documents"]], "Does it Support Node.js Mode?": [[3, "does-it-support-node-js-mode"]], "Dynamic import()": [[42, "dynamic-import"]], "Dynamic: Anonymous Function": [[34, "dynamic-anonymous-function"]], "Dynamic: Anonymous Object for Class": [[34, "dynamic-anonymous-object-for-class"]], "Dynamic: Anonymous Object for Interface": [[34, "dynamic-anonymous-object-for-interface"]], "Dynamically Import Built-in Modules": [[42, "dynamically-import-built-in-modules"]], "ES6 Module": [[83, "es6-module"]], "Engine Pool": [[4, "engine-pool"]], "Enhance the Custom Object": [[32, "enhance-the-custom-object"]], "Environment": [[19, "environment"]], "Environment Variables": [[0, "environment-variables"]], "Error Codes": [[47, "error-codes"]], "Event unhandledRejection": [[27, "event-unhandledrejection"]], "Example": [[42, "example"]], "Example fs.readFileAsync()": [[54, "example-fs-readfileasync"]], "Executor and Execute": [[13, "executor-and-execute"]], "Expose JsonNode in V8": [[67, "expose-jsonnode-in-v8"]], "Express Build": [[2, "express-build"]], "FAQ": [[20, "faq"]], "FAQs": [[3, "faqs"]], "Features": [[34, "features"]], "From Java to JavaScript": [[32, "from-java-to-javascript"], [33, "from-java-to-javascript"]], "From JavaScript to Java": [[32, "from-javascript-to-java"], [33, "from-javascript-to-java"]], "Full Build - All-in-one": [[2, "full-build-all-in-one"]], "Full Build - Multi-staged": [[2, "full-build-multi-staged"]], "Function Interception": [[53, "function-interception"]], "Function Types": [[53, "function-types"]], "Functions and Objects": [[31, "functions-and-objects"]], "GC": [[41, "gc"]], "Gaps between Javet Node.js Mode and Native Node.js": [[42, "gaps-between-javet-node-js-mode-and-native-node-js"]], "Goals": [[72, "goals"]], "Gradle": [[8, "gradle"]], "Gradle Groovy DSL": [[28, "gradle-groovy-dsl"], [75, "gradle-groovy-dsl"]], "Gradle Kotlin DSL": [[28, "gradle-kotlin-dsl"], [75, "gradle-kotlin-dsl"]], "Handshake": [[3, "handshake"]], "Hello Javet": [[28, "hello-javet"], [73, "hello-javet"]], "Highlights": [[6, "highlights"], [32, "highlights"]], "History with J2V8": [[9, "history-with-j2v8"]], "How Snapshot Works": [[43, "how-snapshot-works"]], "How about Bind?": [[53, "how-about-bind"]], "How about Debug Mode?": [[50, "how-about-debug-mode"]], "How about Object Type Conversion?": [[53, "how-about-object-type-conversion"]], "How does It Work?": [[32, "how-does-it-work"]], "How does JavetProxyConverter Work?": [[34, "how-does-javetproxyconverter-work"]], "How to Avoid Argument Type Mismatches?": [[53, "how-to-avoid-argument-type-mismatches"]], "How to Cast Java Objects to JavaScript Objects?": [[29, "how-to-cast-java-objects-to-javascript-objects"]], "How to Change a User Defined JavaScript Function on the Fly?": [[53, "how-to-change-a-user-defined-javascript-function-on-the-fly"]], "How to Create a Snapshot": [[43, "how-to-create-a-snapshot"]], "How to Customize JavetProxyConverter?": [[34, "how-to-customize-javetproxyconverter"]], "How to Disable Properties or Functions?": [[53, "how-to-disable-properties-or-functions"]], "How to Escape from try-with-resource?": [[41, "how-to-escape-from-try-with-resource"]], "How to Handle Argument Count Mismatches?": [[53, "how-to-handle-argument-count-mismatches"]], "How to Think in Javet?": [[13, "how-to-think-in-javet"]], "How to Unregister Properties or Functions?": [[53, "how-to-unregister-properties-or-functions"]], "How?": [[69, "how"]], "Inject a Pattern": [[70, "inject-a-pattern"]], "Inject a Static Class": [[70, "inject-a-static-class"]], "Inject a StringBuilder": [[70, "inject-a-stringbuilder"]], "Inject an Enum": [[70, "inject-an-enum"]], "Injection": [[80, "injection"]], "Inside Converters": [[31, "inside-converters"]], "Installation": [[75, "installation"]], "Instance: File": [[34, "instance-file"]], "Instance: List": [[34, "instance-list"]], "Instance: Map": [[34, "instance-map"]], "Instance: Path": [[34, "instance-path"]], "Instance: Set": [[34, "instance-set"]], "Integer List": [[29, "integer-list"]], "IntelliJ": [[8, "intellij"]], "Interact with Node.js": [[69, "interact-with-node-js"]], "Interception": [[4, "interception"], [76, "interception"]], "Internals": [[42, "internals"]], "Invoke": [[53, "invoke"]], "Is That Possible?": [[69, "is-that-possible"]], "Is There a Live Demo?": [[3, "is-there-a-live-demo"]], "J2V8 Issues": [[9, "j2v8-issues"]], "J2V8 Latest Version": [[9, "j2v8-latest-version"]], "JDK": [[8, "jdk"]], "JS Flavor (Wrapped Exposure)": [[67, "js-flavor-wrapped-exposure"]], "JVM GC": [[41, "jvm-gc"]], "Java Flavor (Direct Exposure)": [[67, "java-flavor-direct-exposure"]], "Java VS Wasm Benchmarks": [[6, "java-vs-wasm-benchmarks"]], "Java and JavaScript Interop": [[70, "java-and-javascript-interop"]], "Javet": [[28, "javet"]], "Javet Design": [[4, "javet-design"]], "Javet Engine Pool": [[4, "javet-engine-pool"], [72, "javet-engine-pool"]], "Javet Performance": [[6, "javet-performance"]], "Javet Performance Improvements": [[6, "javet-performance-improvements"]], "Javet Shell": [[77, "javet-shell"]], "JavetProxyPluginArray": [[35, "javetproxypluginarray"]], "JavetProxyPluginDefault": [[35, "javetproxyplugindefault"]], "JavetProxyPluginList": [[35, "javetproxypluginlist"]], "JavetProxyPluginMap": [[35, "javetproxypluginmap"]], "JavetProxyPluginSet": [[35, "javetproxypluginset"]], "Know the Lock": [[40, "know-the-lock"]], "Learn from Unit Test": [[13, "learn-from-unit-test"]], "License": [[28, "license"]], "Lifecycle": [[54, "lifecycle"]], "Limitations": [[43, "limitations"]], "Linux": [[75, "linux"]], "Linux Environment": [[0, "linux-environment"], [2, "linux-environment"]], "Linux arm64 Docker Files Deprecated": [[2, "linux-arm64-docker-files-deprecated"]], "List": [[71, "list"]], "Load": [[39, "load"]], "Load and Unload": [[39, "load-and-unload"]], "Logging": [[49, "logging"]], "Long Unmodifiable List": [[29, "long-unmodifiable-list"]], "Mac OS": [[75, "mac-os"]], "MacOS Environment": [[0, "macos-environment"]], "Major Features": [[28, "major-features"]], "Manual GC": [[41, "manual-gc"]], "Manual Patch Native Modules on Windows": [[42, "manual-patch-native-modules-on-windows"]], "Manual Registration": [[53, "manual-registration"]], "Manual Termination": [[50, "manual-termination"]], "Map": [[71, "map"]], "Maven": [[28, "maven"], [75, "maven"]], "Maven (Optional)": [[8, "maven-optional"]], "Memory Leak Detection": [[4, "memory-leak-detection"]], "Memory Management": [[41, "memory-management"]], "Migrate from J2V8": [[83, "migrate-from-j2v8"]], "Migration Guides": [[82, "migration-guides"], [83, "migration-guides"]], "Modularization": [[42, "modularization"]], "Module": [[4, "module"]], "Module Virtualization": [[4, "module-virtualization"]], "Motivation": [[72, "motivation"]], "Multi-process Safety": [[4, "multi-process-safety"]], "Node.js": [[8, "node-js"], [44, "node-js"]], "Node.js Mode": [[42, "node-js-mode"], [79, "node-js-mode"]], "Node.js Mode and V8 Mode": [[78, "node-js-mode-and-v8-mode"]], "Node.js Mode vs. V8 Mode": [[4, "node-js-mode-vs-v8-mode"]], "Node.js and V8": [[83, "node-js-and-v8"]], "NodeRuntime.await()": [[27, "noderuntime-await"]], "NodeRuntime.lowMemoryNotification()": [[27, "noderuntime-lowmemorynotification"]], "Null Safety": [[31, "null-safety"]], "OS Compatibility": [[75, "os-compatibility"]], "Object Converter": [[32, "object-converter"], [71, "object-converter"]], "On-demand": [[42, "on-demand"]], "Passive GC": [[41, "passive-gc"]], "Patch ELF Native Modules on Linux": [[42, "patch-elf-native-modules-on-linux"]], "Performance": [[40, "performance"]], "Performance Comparisons of Node.js Mode and V8 Mode": [[6, "performance-comparisons-of-node-js-mode-and-v8-mode"]], "Play with Dynamic Interface": [[66, "play-with-dynamic-interface"]], "Play with Dynamic Object": [[66, "play-with-dynamic-object"]], "Play with StringBuilder": [[66, "play-with-stringbuilder"]], "Polyfill": [[79, "polyfill"]], "Pool": [[78, "pool"]], "Pre-load": [[42, "pre-load"]], "Preparation": [[29, "preparation"], [34, "preparation"], [70, "preparation"]], "Prepare Node.js": [[1, "prepare-node-js"]], "Prepare V8": [[1, "prepare-v8"]], "Primitive Converter": [[33, "primitive-converter"]], "Primitive Types": [[83, "primitive-types"]], "Primitive and Reference Types in Javet": [[4, "primitive-and-reference-types-in-javet"]], "Print 1 + 1 in Node.js Mode": [[73, "print-1-1-in-node-js-mode"]], "Print Hello Javet in V8 Mode": [[73, "print-hello-javet-in-v8-mode"]], "Promise and Resolver": [[54, "promise-and-resolver"]], "Proxy Converter": [[34, "proxy-converter"]], "Proxy Plugins": [[35, "proxy-plugins"]], "Python 3.8+ (Optional)": [[8, "python-3-8-optional"]], "Quick Start": [[28, "quick-start"]], "Ready! Go!": [[30, "ready-go"]], "Rebuild Native Modules on Windows": [[42, "rebuild-native-modules-on-windows"]], "Recommended Options": [[41, "recommended-options"]], "Reference": [[36, "reference"]], "Register Custom Objects": [[32, "register-custom-objects"]], "Register a Callback": [[54, "register-a-callback"]], "Register the Custom Object": [[32, "register-the-custom-object"]], "Release Notes": [[55, "release-notes"]], "Release Notes 0.7.x": [[56, "release-notes-0-7-x"]], "Release Notes 0.8.x": [[57, "release-notes-0-8-x"]], "Release Notes 0.9.x": [[58, "release-notes-0-9-x"]], "Release Notes 1.0.x": [[59, "release-notes-1-0-x"]], "Release Notes 1.1.x": [[60, "release-notes-1-1-x"]], "Release Notes 2.0.x": [[61, "release-notes-2-0-x"]], "Release Notes 2.1.x": [[62, "release-notes-2-1-x"]], "Release Notes 2.2.x": [[63, "release-notes-2-2-x"]], "Release Notes 3.0.x": [[64, "release-notes-3-0-x"]], "Release Notes 3.1.x": [[65, "release-notes-3-1-x"]], "Resource Management": [[38, "resource-management"], [44, "resource-management"], [53, "resource-management"]], "Root Cause": [[27, "root-cause"]], "SIGSEGV at createV8Runtime() in V8 Mode on AWS": [[26, "sigsegv-at-createv8runtime-in-v8-mode-on-aws"]], "Sample": [[76, "sample"]], "Security": [[44, "security"]], "Snapshot": [[43, "snapshot"]], "Solution": [[27, "solution"]], "Solution 1: Enforce the Initialization": [[26, "solution-1-enforce-the-initialization"]], "Solution 2: Set Environment Variable JAVET_DISABLE_PKU": [[26, "solution-2-set-environment-variable-javet-disable-pku"]], "Solutions": [[26, "solutions"]], "Sponsors": [[28, "sponsors"]], "Spring Integration": [[80, "spring-integration"]], "Static: Enum": [[34, "static-enum"]], "Static: Interface": [[34, "static-interface"]], "Static: Pattern": [[34, "static-pattern"]], "Static: StringBuilder": [[34, "static-stringbuilder"]], "Statistics": [[41, "statistics"]], "Step 1: Implement IJavetLogger": [[49, "step-1-implement-ijavetlogger"]], "Step 1: JavaScript Server": [[69, "step-1-javascript-server"]], "Step 2: Inject the Logger": [[49, "step-2-inject-the-logger"]], "Step 2: Worker Thread for the JavaScript Server": [[69, "step-2-worker-thread-for-the-javascript-server"]], "Step 3: Main Thread for the Interaction": [[69, "step-3-main-thread-for-the-interaction"]], "String Array": [[29, "string-array"]], "Summary": [[53, "summary"], [66, "summary"]], "Symptoms": [[26, "symptoms"]], "Synthetic Module": [[42, "synthetic-module"]], "System.gc() and System.runFinalization()": [[41, "system-gc-and-system-runfinalization"]], "TODO List": [[46, "todo-list"]], "Termination": [[50, "termination"]], "Test": [[67, "test"], [76, "test"]], "Test Javet": [[7, "test-javet"]], "Thread, Engine and Pool": [[44, "thread-engine-and-pool"]], "Thread-safety": [[40, "thread-safety"]], "Tips": [[45, "tips"], [53, "tips"]], "Troubleshooting": [[25, "troubleshooting"], [48, "troubleshooting"]], "Tutorial": [[81, "tutorial"]], "Type Conversion": [[83, "type-conversion"]], "Type Mismatch": [[53, "type-mismatch"]], "Unhandled Rejection": [[54, "unhandled-rejection"]], "Unload": [[39, "unload"]], "Usage": [[29, "usage"], [32, "usage"], [34, "usage"], [52, "usage"], [72, "usage"], [78, "usage"]], "Usage 1 without V8 Runtime": [[41, "usage-1-without-v8-runtime"]], "Usage 2 with V8 Runtime": [[41, "usage-2-with-v8-runtime"]], "V8 Collection": [[52, "v8-collection"]], "V8 Feature Flags": [[0, "v8-feature-flags"]], "V8 Function": [[53, "v8-function"]], "V8 GC": [[41, "v8-gc"]], "V8 Isolate and Context in Javet": [[4, "v8-isolate-and-context-in-javet"]], "V8 Mode": [[42, "v8-mode"], [79, "v8-mode"]], "V8 Options and V8Flags": [[41, "v8-options-and-v8flags"]], "V8 Promise": [[54, "v8-promise"]], "V8 Values": [[51, "v8-values"]], "V8 \u27f6 V8Runtime": [[83, "v8-v8runtime"]], "V8Host": [[78, "v8host"]], "V8Locker": [[83, "v8locker"]], "V8Runtime": [[13, "v8runtime"]], "V8Runtime and V8ValueGlobalObject": [[13, "v8runtime-and-v8valueglobalobject"]], "V8Runtime.await()": [[41, "v8runtime-await"]], "V8Runtime.lowMemoryNotification()": [[41, "v8runtime-lowmemorynotification"]], "V8ValueArray": [[52, "v8valuearray"]], "V8ValueGlobalObject": [[13, "v8valueglobalobject"]], "V8ValueMap": [[52, "v8valuemap"]], "V8ValueSet": [[52, "v8valueset"]], "Visual Studio Community 2022 (Optional)": [[8, "visual-studio-community-2022-optional"]], "What If Node.js Hangs during Close()?": [[69, "what-if-node-js-hangs-during-close"]], "What does Lock Mean in Javet?": [[40, "what-does-lock-mean-in-javet"]], "What is the Motivation?": [[11, "what-is-the-motivation"]], "What is the Source Code of a Function in V8?": [[53, "what-is-the-source-code-of-a-function-in-v8"]], "When does the Config Take Effect?": [[31, "when-does-the-config-take-effect"]], "Where are ES6 API in V8 Mode?": [[15, "where-are-es6-api-in-v8-mode"]], "Where are the Examples?": [[16, "where-are-the-examples"]], "Why Error Codes?": [[47, "why-error-codes"]], "Why Migrate from J2V8 to Javet?": [[83, "why-migrate-from-j2v8-to-javet"]], "Why Node.js Crashes When being Closed?": [[27, "why-node-js-crashes-when-being-closed"]], "Why Patching Node.js?": [[1, "why-patching-node-js"]], "Why Patching V8?": [[1, "why-patching-v8"]], "Why Windows and Linux only?": [[9, "why-windows-and-linux-only"]], "Why is Changing a User Defined JavaScript Function Important?": [[53, "why-is-changing-a-user-defined-javascript-function-important"]], "Why is the Inspector Disabled in Node.js Mode?": [[17, "why-is-the-inspector-disabled-in-node-js-mode"]], "Why not Automate the J2V8 Build System?": [[9, "why-not-automate-the-j2v8-build-system"]], "Why not Deploy J2V8 to Maven Repository?": [[9, "why-not-deploy-j2v8-to-maven-repository"]], "Windows": [[75, "windows"]], "Windows Environment": [[0, "windows-environment"], [2, "windows-environment"]], "With Engine Pool": [[50, "with-engine-pool"]], "Without Engine Pool": [[50, "without-engine-pool"]], "bind()": [[53, "bind"]], "boolean bindFunction(String functionName, JavetCallbackContext javetCallbackContext)": [[53, "boolean-bindfunction-string-functionname-javetcallbackcontext-javetcallbackcontext"]], "boolean bindFunction(String functionName, String codeString)": [[53, "boolean-bindfunction-string-functionname-string-codestring"]], "boolean set(String key, V8Value value)": [[53, "boolean-set-string-key-v8value-value"]], "decimal.js": [[79, "decimal-js"]], "int": [[29, "int"]], "int Array": [[29, "int-array"]], "registerJavaMethod() \u27f6 @V8Function": [[83, "registerjavamethod-v8function"]], "require() vs. import()": [[4, "require-vs-import"]]}, "docnames": ["development/build", "development/build_javet_from_scratch", "development/build_javet_with_docker", "development/debug_with_chrome_developer_tools", "development/design", "development/index", "development/performance", "development/test", "development/tools", "faq/background/history_with_j2v8", "faq/background/index", "faq/background/what_is_the_motivation", "faq/development/can_native_image_be_supported", "faq/development/how_to_think_in_javet", "faq/development/index", "faq/development/where_are_es6_api_in_v8_mode", "faq/development/where_are_the_examples", "faq/development/why_is_the_inspector_disabled_in_node_js_mode", "faq/environment/can_javet_support_legacy_linux", "faq/environment/index", "faq/index", "faq/troubleshooting/a_dynamic_link_library_dll_initialization_routine_failed", "faq/troubleshooting/can_i18n_be_supported", "faq/troubleshooting/can_i_debug_javet_in_chrome_dev_tools", "faq/troubleshooting/can_node_js_event_loop_be_skipped", "faq/troubleshooting/index", "faq/troubleshooting/sigsegv_at_createv8runtime_in_v8_mode_on_aws", "faq/troubleshooting/why_node_js_crashes_when_being_closed", "index", "reference/converters/bridge_converter", "reference/converters/custom_converter", "reference/converters/index", "reference/converters/object_converter", "reference/converters/primitive_converter", "reference/converters/proxy_converter", "reference/converters/proxy_plugins", "reference/index", "reference/javadoc/index", "reference/resource_management/index", "reference/resource_management/load_and_unload", "reference/resource_management/lock", "reference/resource_management/memory_management", "reference/resource_management/modularization", "reference/resource_management/snapshot", "reference/tips/best_practices", "reference/tips/index", "reference/todo_list", "reference/troubleshooting/error_codes", "reference/troubleshooting/index", "reference/troubleshooting/logging", "reference/troubleshooting/termination", "reference/v8_values/index", "reference/v8_values/v8_collection", "reference/v8_values/v8_function", "reference/v8_values/v8_promise", "release_notes/index", "release_notes/release_notes_0_7", "release_notes/release_notes_0_8", "release_notes/release_notes_0_9", "release_notes/release_notes_1_0", "release_notes/release_notes_1_1", "release_notes/release_notes_2_0", "release_notes/release_notes_2_1", "release_notes/release_notes_2_2", "release_notes/release_notes_3_0", "release_notes/release_notes_3_1", "tutorial/advanced/access_the_whole_jvm", "tutorial/advanced/expose_json_node_in_v8", "tutorial/advanced/index", "tutorial/advanced/interact_with_node_js", "tutorial/advanced/java_and_javascript_interop", "tutorial/advanced/object_converter", "tutorial/basic/engine_pool", "tutorial/basic/hello_javet", "tutorial/basic/index", "tutorial/basic/installation", "tutorial/basic/interception", "tutorial/basic/javet_shell", "tutorial/basic/node_js_mode_and_v8_mode", "tutorial/basic/polyfill", "tutorial/basic/spring_integration", "tutorial/index", "tutorial/migration_guides/index", "tutorial/migration_guides/migrate_from_j2v8"], "envversion": {"sphinx": 61, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["development/build.rst", "development/build_javet_from_scratch.rst", "development/build_javet_with_docker.rst", "development/debug_with_chrome_developer_tools.rst", "development/design.rst", "development/index.rst", "development/performance.rst", "development/test.rst", "development/tools.rst", "faq/background/history_with_j2v8.rst", "faq/background/index.rst", "faq/background/what_is_the_motivation.rst", "faq/development/can_native_image_be_supported.rst", "faq/development/how_to_think_in_javet.rst", "faq/development/index.rst", "faq/development/where_are_es6_api_in_v8_mode.rst", "faq/development/where_are_the_examples.rst", "faq/development/why_is_the_inspector_disabled_in_node_js_mode.rst", "faq/environment/can_javet_support_legacy_linux.rst", "faq/environment/index.rst", "faq/index.rst", "faq/troubleshooting/a_dynamic_link_library_dll_initialization_routine_failed.rst", "faq/troubleshooting/can_i18n_be_supported.rst", "faq/troubleshooting/can_i_debug_javet_in_chrome_dev_tools.rst", "faq/troubleshooting/can_node_js_event_loop_be_skipped.rst", "faq/troubleshooting/index.rst", "faq/troubleshooting/sigsegv_at_createv8runtime_in_v8_mode_on_aws.rst", "faq/troubleshooting/why_node_js_crashes_when_being_closed.rst", "index.rst", "reference/converters/bridge_converter.rst", "reference/converters/custom_converter.rst", "reference/converters/index.rst", "reference/converters/object_converter.rst", "reference/converters/primitive_converter.rst", "reference/converters/proxy_converter.rst", "reference/converters/proxy_plugins.rst", "reference/index.rst", "reference/javadoc/index.rst", "reference/resource_management/index.rst", "reference/resource_management/load_and_unload.rst", "reference/resource_management/lock.rst", "reference/resource_management/memory_management.rst", "reference/resource_management/modularization.rst", "reference/resource_management/snapshot.rst", "reference/tips/best_practices.rst", "reference/tips/index.rst", "reference/todo_list.rst", "reference/troubleshooting/error_codes.rst", "reference/troubleshooting/index.rst", "reference/troubleshooting/logging.rst", "reference/troubleshooting/termination.rst", "reference/v8_values/index.rst", "reference/v8_values/v8_collection.rst", "reference/v8_values/v8_function.rst", "reference/v8_values/v8_promise.rst", "release_notes/index.rst", "release_notes/release_notes_0_7.rst", "release_notes/release_notes_0_8.rst", "release_notes/release_notes_0_9.rst", "release_notes/release_notes_1_0.rst", "release_notes/release_notes_1_1.rst", "release_notes/release_notes_2_0.rst", "release_notes/release_notes_2_1.rst", "release_notes/release_notes_2_2.rst", "release_notes/release_notes_3_0.rst", "release_notes/release_notes_3_1.rst", "tutorial/advanced/access_the_whole_jvm.rst", "tutorial/advanced/expose_json_node_in_v8.rst", "tutorial/advanced/index.rst", "tutorial/advanced/interact_with_node_js.rst", "tutorial/advanced/java_and_javascript_interop.rst", "tutorial/advanced/object_converter.rst", "tutorial/basic/engine_pool.rst", "tutorial/basic/hello_javet.rst", "tutorial/basic/index.rst", "tutorial/basic/installation.rst", "tutorial/basic/interception.rst", "tutorial/basic/javet_shell.rst", "tutorial/basic/node_js_mode_and_v8_mode.rst", "tutorial/basic/polyfill.rst", "tutorial/basic/spring_integration.rst", "tutorial/index.rst", "tutorial/migration_guides/index.rst", "tutorial/migration_guides/migrate_from_j2v8.rst"], "indexentries": {}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"": [0, 2, 4, 6, 9, 11, 26, 27, 30, 34, 35, 40, 41, 42, 43, 44, 47, 53, 54, 66, 67, 69, 71, 78, 83], "0": [1, 3, 9, 18, 24, 26, 28, 29, 30, 32, 34, 35, 41, 42, 43, 44, 50, 52, 53, 55, 66, 67, 69, 71, 75, 76, 79, 83], "00000000": 3, "0000000000000000": 42, "00000001": 42, "0000000180108724": 42, "0000000180108ab5": 42, "000000018014f248": 42, "000000018014fa68": 42, "0000000180154818": 42, "0000000180154a40": 42, "003": 9, "009": 9, "01": [58, 59, 60, 61, 64], "019": 9, "02": [56, 57, 60, 61, 64], "03": [60, 61, 62, 65], "032": 6, "04": [0, 2, 18, 56, 57, 60, 62, 64, 65, 75], "05": [58, 60, 63, 65], "06": [57, 58, 60, 63, 65], "07": [58, 60, 62, 63, 65], "08": [58, 60, 63, 65], "09": [58, 59, 61, 63, 64, 65], "0_282": 67, "1": [0, 4, 6, 9, 13, 18, 28, 29, 30, 32, 34, 35, 39, 42, 43, 44, 50, 52, 53, 55, 66, 67, 70, 71, 75, 76, 77, 78, 79, 83], "10": [0, 2, 6, 34, 41, 50, 59, 64, 65, 67, 75], "1000": [24, 69], "10000": 50, "100000": 67, "100000000": 3, "100_000": 67, "101": 47, "102": 47, "103": 47, "10308": 41, "1038": 41, "104": 47, "105": [6, 47], "106": 59, "10700k": [6, 9], "1095": 6, "11": [0, 30, 59, 60, 61, 64, 65], "110": 9, "1134": 6, "115": 60, "11gb": 2, "12": [59, 61, 62, 63, 65], "120gb": 2, "123": [34, 53, 66, 70, 76, 79], "12345": 29, "12346": 29, "124": [60, 76], "127": [3, 41], "128": 41, "128gb": 67, "13": [6, 59, 61, 62, 65], "132": 60, "139": 60, "14": [8, 9, 34, 59, 60, 61, 62, 63, 64, 65, 75], "1411": 6, "143": 6, "146": [58, 59], "15": [28, 58, 60, 61, 62, 64, 65], "150": 63, "154": 60, "16": [0, 6, 18, 28, 41, 57, 58, 60, 61, 62, 63, 64, 65, 75], "1660": 6, "168": 61, "169": 64, "17": [8, 58, 60, 63, 64], "172": [59, 64], "174": 60, "175": 70, "177": 60, "18": [18, 59, 63, 75], "180": 59, "1801363d8": 42, "180166610": 42, "183": 63, "189": 63, "19": [58, 59], "193": 61, "194": 61, "19464m": 67, "1l": 29, "1m": 43, "1n": 35, "2": [6, 8, 9, 13, 18, 28, 29, 32, 34, 35, 39, 42, 43, 44, 50, 52, 55, 66, 70, 73, 75, 76, 77, 78, 79, 83], "20": [0, 2, 27, 57, 59, 60, 61, 62, 63, 64, 75], "200": 76, "201": 47, "2015": [9, 42], "2016": 9, "2017": 9, "2019": [9, 62], "2020": [9, 11], "2021": [56, 57, 58, 59, 83], "2022": [0, 5, 60, 61, 62, 65], "2023": [6, 26, 61, 62, 63, 64], "2024": [64, 65], "2048": 6, "21": [6, 40, 58, 64, 75], "213": 9, "214": 62, "2147483647": 41, "2147483648": 41, "218": 60, "219": 65, "22": [59, 64, 75], "221": 6, "224": [28, 65], "226": 61, "227": 65, "228": 65, "22h2": 67, "23": [42, 57, 60, 61, 63, 75, 79], "230": 58, "234567": 41, "23456789012345": 41, "24": [0, 57, 62, 64, 75], "244": 62, "25": [0, 59, 61, 64, 75], "253": 6, "254": 65, "255": [9, 41, 56, 70], "256": 41, "257": 57, "26": [26, 59, 60, 64, 65], "262": 53, "263": [6, 41], "264": 41, "267": 64, "269": 58, "274": 9, "2761": 6, "277": 62, "279": 6, "28": [43, 58, 61, 64, 65], "281": 64, "285": 64, "29": [58, 75], "298k": 43, "299": 9, "2l": 29, "2n": 35, "3": [0, 1, 5, 6, 9, 17, 18, 27, 28, 29, 34, 35, 39, 42, 43, 52, 53, 55, 66, 73, 75, 76, 77], "30": [0, 61], "301": 47, "302": 47, "305": 6, "31": 58, "32": [3, 41], "324": 41, "32767": 41, "32768": 41, "338": 9, "34": [42, 75, 79], "345": 58, "35": 9, "363": 6, "367": 6, "36893488147419103232": 35, "370": 67, "38": 41, "384": 41, "3rd": [49, 53], "4": [0, 6, 9, 28, 34, 35, 39, 41, 42, 52, 53, 55, 66, 69, 75, 76, 77], "401": 47, "402": 47, "403": 47, "404": 47, "405": 47, "406": 47, "407": [47, 58], "408": [47, 63], "410": 6, "4128": 6, "4198": 6, "4243": 42, "424b": 42, "428": 9, "4294967295": 41, "439": 63, "45": 79, "458": 6, "4639": 6, "472": 6, "484": 6, "4975": 6, "4g": 2, "5": [0, 2, 3, 26, 27, 34, 41, 42, 43, 55, 66, 69, 75, 76, 77], "50": 40, "500": 69, "501": 47, "502": 47, "503": [47, 58], "508": 6, "51": 6, "512": [6, 41], "5214m": 67, "546": 6, "55": 6, "571": 9, "586": 6, "59": 6, "5950x": 67, "5gb": 2, "6": [3, 8, 9, 42, 55, 61, 64, 66, 69, 75, 76, 77], "60": 2, "601": 47, "602": [47, 58], "603": [47, 58], "6072": 42, "6096": 42, "64": [41, 58], "647": 6, "65": 6, "65535": 41, "65n": 35, "660": 6, "672": 6, "688": 9, "694": 6, "7": [3, 6, 18, 28, 41, 55, 66, 69, 75, 76, 77, 83], "70": 18, "701": 47, "702": 47, "703": 47, "72": 6, "745k": 43, "748": 6, "751": 6, "76": 76, "768": 41, "78": 6, "796": 6, "8": [0, 3, 5, 6, 9, 18, 30, 41, 55, 59, 62, 66, 67, 69, 75], "80": 18, "801": 47, "802": 47, "803": 47, "804": 47, "805": [47, 58], "806": [47, 59], "807": 47, "808": 47, "814": 6, "82": 27, "84": 6, "846": 6, "86": 6, "8991": 69, "9": [0, 9, 18, 55, 65, 66, 69], "90": 18, "901": [47, 60], "9229": 3, "968": 6, "98": 6, "A": [1, 4, 20, 25, 26, 30, 42, 43, 53], "And": [6, 9, 28, 69], "As": [2, 3, 4, 13, 26, 29, 32, 34, 39, 41, 49, 53, 66, 80], "At": [9, 11, 53], "Be": [3, 34, 44, 54, 66], "But": [17, 39, 40, 41, 42, 53, 54, 80], "By": [22, 24, 39, 41, 76], "For": [8, 13, 34, 42, 50, 53], "If": [1, 2, 13, 27, 28, 31, 32, 33, 34, 41, 42, 43, 44, 50, 53, 76, 77, 83], "In": [3, 4, 6, 13, 17, 24, 27, 29, 31, 34, 39, 40, 41, 42, 44, 50, 53, 54, 67, 69, 83], "It": [0, 2, 4, 6, 9, 13, 17, 22, 28, 30, 31, 34, 35, 40, 41, 42, 43, 44, 50, 53, 72, 77, 78, 83], "Its": [9, 41, 43, 83], "NOT": [4, 40, 53], "No": [4, 9, 30, 31, 39, 42, 50, 52, 53, 69], "Not": [4, 53, 75], "Of": [2, 34, 41, 42, 53, 66, 83], "One": [4, 31], "Or": 2, "That": [2, 4, 6, 9, 26, 27, 31, 39, 41, 42, 49, 50, 53, 66, 83], "The": [0, 1, 2, 3, 4, 6, 7, 9, 13, 16, 17, 21, 26, 27, 29, 30, 31, 34, 35, 39, 40, 41, 42, 43, 47, 50, 53, 54, 66, 67, 69, 70, 75, 76, 77, 78, 83], "Then": 30, "There": [4, 9, 12, 13, 18, 29, 30, 31, 35, 39, 41, 42, 43, 47, 50, 53, 66, 67, 78], "To": [1, 3, 9, 22, 31, 39, 46, 70], "With": [9, 13, 42, 67], "__dirnam": [42, 65], "__filenam": [42, 65], "_zn4nodel23thread_local_modpending": 1, "a123": 34, "aar": 1, "aarch64": 75, "ab": 29, "abandon": 83, "abc": [34, 39, 53, 66, 70], "abc123": 66, "abi": [60, 62, 75], "abl": [11, 13, 22, 27, 31, 42, 43, 50, 53, 69, 83], "about": [30, 40], "abov": 53, "absent": [15, 40, 53], "accept": [3, 17, 31, 49, 53, 54, 58], "access": [1, 13, 34, 39, 41, 47, 53, 68, 81], "accid": 29, "accord": 6, "accordingli": 53, "achiev": [4, 9, 34, 40, 41, 53], "acquir": [44, 47, 83], "across": 41, "activ": [9, 27, 39, 42, 75], "activebydefault": 75, "actual": [2, 3, 4, 6, 9, 13, 31, 40, 41, 42, 47, 53, 66, 67, 69], "actualparameters": 47, "actualparametertyp": 47, "ad": [6, 9, 34, 40, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65], "add": [3, 18, 26, 29, 30, 32, 34, 41, 42, 43, 50, 52, 53, 54, 66, 71, 76, 79, 83], "addgcepiloguecallback": 59, "addgcprologuecallback": 59, "addit": [6, 12, 18, 32, 40, 53, 75, 83], "address": [3, 27, 41, 42, 44, 53, 64, 69], "adjust": 59, "admit": 9, "advanc": [18, 28, 54, 81], "advantag": 42, "affect": 41, "aforement": 41, "after": [1, 3, 9, 32, 34, 39, 42, 43, 44, 50, 53, 54, 67, 83], "afterward": [50, 54], "ag": 9, "again": [17, 34, 39], "against": [1, 53], "agent": 17, "agnost": 59, "aim": [15, 42, 79, 83], "air": 9, "aka": 3, "algorithm": [6, 59], "alia": 34, "alien": 32, "align": 4, "all": [0, 1, 3, 4, 9, 12, 27, 29, 30, 32, 34, 35, 39, 41, 42, 43, 50, 53, 57, 59, 66, 67, 69, 71, 83], "alloc": [4, 40, 53, 59], "allow": [4, 6, 9, 22, 29, 30, 31, 32, 34, 35, 39, 42, 49, 53, 54, 57, 58, 59, 63, 66, 69, 70, 71, 72, 76, 83], "allowev": 57, "allowonli": 34, "almost": [4, 9, 34, 41, 53, 69], "alreadi": [34, 47, 54], "also": [1, 2, 4, 6, 9, 11, 13, 31, 33, 34, 39, 40, 41, 42, 49, 53, 54, 69, 83], "alter": 34, "altern": [18, 32], "alwai": [4, 30, 44, 53], "am": [9, 34, 53], "amd": [42, 67], "among": [3, 6, 40, 53, 63, 83], "amount": [6, 22, 83], "an": [3, 4, 6, 9, 11, 13, 15, 26, 28, 29, 31, 34, 35, 39, 40, 41, 42, 43, 44, 49, 50, 53, 54, 66, 71, 76, 77, 78], "analysi": [28, 42], "analyz": [41, 42], "andoird": 60, "android": [9, 28, 39, 60, 61, 62, 65, 66], "android_ndk_hom": [0, 1], "android_sdk_hom": 0, "ani": [1, 9, 31, 32, 33, 34, 42, 43, 47, 49, 50, 53, 83], "annoi": 29, "annot": [34, 53, 58, 66], "annotationbasedcallbackreceiv": 53, "anonym": [53, 66], "anoth": [53, 66, 79], "anywher": 39, "apach": 28, "apart": 42, "api": [3, 4, 9, 11, 13, 14, 20, 28, 30, 31, 34, 36, 39, 40, 41, 42, 49, 53, 54, 56, 57, 59, 63, 66, 67, 69, 71, 79, 83], "app": 69, "appear": [3, 53], "append": [1, 34, 66, 70], "appli": [4, 26, 31, 34, 39, 42, 44, 50, 53, 60, 64, 69], "applic": [3, 4, 6, 13, 17, 26, 27, 30, 31, 32, 34, 39, 40, 41, 42, 43, 50, 53, 54, 66, 69, 70, 72, 76, 77, 83], "approach": [42, 53], "apt": [18, 42], "ar": [0, 1, 2, 3, 4, 6, 8, 9, 13, 14, 17, 18, 20, 24, 27, 28, 29, 30, 31, 32, 33, 34, 35, 39, 40, 41, 42, 43, 44, 47, 50, 53, 54, 56, 57, 58, 66, 67, 69, 70, 71, 75, 76, 78, 83], "arbitrari": [3, 4, 13, 31, 32, 34, 66, 70, 83], "arbitrarymethod": 53, "arch": [1, 28, 43, 59, 75], "architectur": [5, 9], "area": 41, "arg": [1, 26, 30, 53, 69], "argument": [30, 32, 43, 83], "arm": [1, 28, 59, 75], "arm64": [28, 62, 64, 75], "armeabi": 1, "around": [9, 42], "arrai": [31, 32, 34, 35, 41, 52, 53, 56, 65], "arraylist": [26, 29, 32, 71], "arrayutil": 64, "articl": 4, "artifact": 2, "artifactid": [28, 34, 75], "asarrai": 64, "asboolean": 64, "asdoubl": 64, "asint": [64, 67], "ask": 83, "aslist": [29, 53], "aslong": 64, "assembli": 43, "assert": 71, "assertarrayequ": [29, 34], "assertequ": [29, 32, 34, 35, 42, 43, 50, 52, 53], "assertfals": [29, 34, 35, 42, 50, 52, 53], "assertinstanceof": 50, "assertnotnul": [32, 34, 43, 52], "assertsam": [34, 35], "assertthrow": 34, "asserttru": [29, 34, 35, 42, 43, 50, 52, 53, 54], "assign": [42, 53, 58, 70], "asstr": 64, "assum": [39, 42, 53], "ast": [13, 28], "async": [4, 6, 27, 54], "asynchron": [6, 41], "atomic_bool": 17, "atomicboolean": 69, "atomicinteg": 52, "attack": [31, 50], "attempt": 22, "attent": 83, "aussi": 34, "authent": 3, "author": 3, "auto": [3, 18, 39, 57], "autoclos": 34, "autom": [30, 41], "automat": [4, 7, 31, 34, 39, 40, 42, 47, 62, 73, 76, 83], "autosendgcnotif": 57, "avail": [2, 3, 4, 21, 35, 39, 43, 47, 53, 66, 78], "avoid": [4, 13, 22, 31, 34, 39, 44, 64, 66], "aw": [20, 25, 41], "awai": 59, "await": [4, 6, 44, 53, 54, 57, 61, 69], "awaitmod": 69, "awar": [6, 41, 44], "awesom": [28, 78], "awt": 70, "b": [3, 29, 31, 34, 35, 42, 43, 53, 66, 67, 70, 71, 77, 79], "back": [13, 31, 34, 41, 42, 53, 55], "background": [20, 28, 54], "backup": 42, "bad": [4, 9], "base": [2, 6, 7, 26, 34, 41, 53, 58, 60, 61, 67, 83], "base_all_in_on": 2, "base_gradl": 2, "base_jvm": 2, "base_nod": 2, "base_v8": 2, "basejavetconsoleinterceptor": 64, "basejavetreflectionproxyhandl": 64, "bases": 2, "basic": [15, 28, 33, 35, 53, 72, 79, 81, 83], "bat": 1, "batchget": 63, "bean": 80, "beauti": [4, 31, 53], "becaus": [3, 4, 6, 8, 9, 17, 27, 28, 29, 30, 31, 32, 34, 39, 40, 41, 44, 47, 53, 54, 66, 67, 72, 78, 79, 83], "been": [2, 8, 9, 27, 39, 53, 83], "befor": [3, 13, 24, 26, 27, 31, 39, 41, 42, 50, 66, 69], "begin": 4, "behav": 53, "behavior": [31, 34, 41, 44, 53, 65], "behind": [4, 6, 11, 13, 27, 66, 71], "being": [20, 24, 25, 34, 41, 42, 50, 53], "belong": 53, "below": [32, 53], "benchmark": 5, "besid": [29, 53], "best": [4, 16, 45], "better": [3, 4, 6, 39, 40, 53, 64, 67], "between": [4, 6, 9, 28, 31, 32, 41, 44, 53, 57, 67, 70], "beyond": 4, "bfals": 29, "bi": [31, 71], "biconsum": 52, "bien": 53, "bigdecim": 79, "bigint": [28, 33, 35, 41, 56], "bigint32arrai": 32, "bigint64arrai": [32, 41], "biginteg": [33, 35], "biguint64arrai": 41, "bin": [1, 18], "binari": [41, 47, 62], "binarytre": 6, "bind": [6, 34, 42, 54, 57, 71, 76, 83], "bindfunct": [57, 63], "bindingcontextstor": 64, "bindproperti": [57, 63], "bit": [13, 32, 41, 42], "black": 6, "blank": 53, "blob": 43, "block": [24, 31, 40, 41, 47, 50, 53, 73], "blockonli": 34, "blogspot": 28, "bodi": [53, 67, 69], "boolean": [31, 32, 33, 35, 39, 43], "borrow": [41, 53], "both": [4, 6, 31, 39, 41, 43, 47, 54, 58, 66, 78, 83], "bother": 42, "bound": 42, "boundari": 4, "box": [6, 42], "brand": 4, "break": [9, 31, 42, 53, 54, 67, 77], "breakpoint": 3, "brew": 0, "bridg": [31, 59], "bring": [4, 31, 39], "broadcast": 41, "broken": [1, 9, 26, 41, 53], "browser": [3, 44], "btrue": 29, "buddi": [34, 66], "buffer": [4, 41], "bug": [55, 57, 59, 60, 61, 62, 63, 83], "bui": 9, "build": [3, 4, 5, 8, 11, 12, 17, 18, 22, 26, 28, 42, 43, 53, 57, 58, 62, 64, 75], "build_all_in_on": 2, "build_artifact": 2, "builder": 13, "built": [0, 2, 3, 6, 7, 29, 32, 41, 43, 47, 50, 53, 54, 57, 58, 62, 65, 66, 67, 83], "bundl": 8, "busi": [6, 59, 83], "bypass": [39, 53], "byte": [4, 32, 33, 34, 35, 41, 43, 53, 66], "bytebuddi": [34, 61], "bytebuff": [41, 60], "c": [1, 34, 42, 53, 60, 61, 62, 67, 71], "cach": [42, 56, 60, 61], "cacheddata": 61, "calcul": [4, 53], "call": [4, 6, 9, 13, 17, 24, 26, 27, 30, 31, 34, 39, 40, 41, 42, 44, 50, 54, 57, 66, 67, 69, 70, 76, 83], "callabl": 34, "callasconstructor": [53, 56, 79], "callback": [3, 27, 41, 42, 47, 53, 57, 58, 59, 60, 62, 63, 69], "callbackcontextcount": 47, "callbackinjectionfailur": 47, "callbackmethodfailur": 47, "callbackregistrationfailur": 47, "callbacksignatureparametersizemismatch": 47, "callbacksignatureparametertypemismatch": 47, "callbacktyp": 47, "callbacktypenotsupport": [47, 63], "callbackunknownfailur": 47, "callbackunregistrationfailur": 47, "caller": [53, 54], "callobject": 53, "callprimit": 53, "callvoid": [53, 69], "can": [1, 2, 3, 4, 6, 13, 14, 19, 20, 25, 27, 32, 34, 35, 41, 42, 43, 44, 54, 66, 69, 70, 78, 79, 80, 83], "canaccess": 30, "candiscardcompil": 61, "canexecut": 34, "cannot": [21, 31, 40, 41, 42, 43], "canread": [34, 79], "canwrit": 34, "caoccao": [2, 6, 26, 28, 41, 42, 49, 75], "capabl": [35, 42, 53, 66, 67], "capac": 59, "captur": [43, 77], "care": [3, 33, 34, 40, 42, 44, 54, 66], "carri": [32, 83], "case": [4, 6, 7, 9, 16, 24, 31, 33, 39, 40, 41, 42, 53, 54, 56, 83], "cast": 59, "catalina": [0, 75], "catch": [26, 30, 50, 53, 54, 69, 77], "categor": 41, "caus": [9, 21, 22, 24, 26, 39, 50, 53, 59, 83], "cd": [1, 2, 42], "cdt": [5, 77], "cdtshell": 64, "cent": 75, "cento": 60, "central": [2, 8], "ceo": 30, "certain": [1, 3, 4, 13, 43, 53, 54, 58], "cfo": 30, "chain": [18, 41], "challeng": [4, 9, 13, 31], "chanc": [9, 41], "chang": [2, 17, 26, 31, 32, 40, 42, 47, 58, 59, 63, 64, 70, 76], "channel": 28, "chao": 40, "char": [32, 33, 35, 53], "charact": [33, 35], "characterist": 42, "charm": 53, "chart": 54, "cheap": 31, "cheaper": 4, "check": [13, 40, 42, 53, 58, 65, 83], "check_eq": 17, "checkout": 1, "checkreturnvalu": 57, "childjsonnod": 67, "choic": [18, 28], "choos": [6, 27, 53], "chrome": [4, 5, 17, 20, 25, 28, 43, 56], "chromedevtool": 3, "circular": [30, 47, 58], "clamp": 41, "class": [26, 30, 32, 42, 49, 50, 53, 66, 67, 69, 76, 80], "classdescriptorstor": 64, "classload": [4, 83], "classpath": 80, "clean": [59, 66], "clear": 64, "cli": 42, "click": 3, "clone": [1, 2, 61], "close": [4, 9, 13, 17, 20, 24, 25, 34, 39, 41, 42, 44, 47, 50, 53, 57, 58, 62, 64, 66, 71, 72], "closur": 53, "cmake": [0, 1, 9], "cmakelist": 9, "cmd": [1, 42], "co": 4, "code": [1, 3, 4, 6, 9, 13, 17, 26, 30, 31, 32, 35, 40, 41, 42, 43, 44, 48, 50, 54, 58, 59, 63, 66, 67, 70, 71, 72, 73, 76, 77, 79, 83], "codefil": 69, "codestr": [24, 34, 42, 56], "collect": [27, 29, 32, 39, 51, 56], "collectionutil": 64, "collector": [34, 41, 66], "color": 70, "com": [2, 6, 26, 28, 41, 42, 49, 75], "combin": 53, "come": [0, 4, 6, 40, 42], "command": [1, 43, 77], "commit": [18, 26, 75], "common": [13, 18], "commonj": 42, "commun": [0, 3, 5, 9, 17, 28], "compar": [4, 7, 40], "comparison": [4, 5, 9, 28], "compat": [42, 59, 64], "compel": 11, "compil": [1, 4, 6, 34, 42, 43, 47, 53, 64, 66, 70, 83], "compilationfailur": 47, "compilemodul": 42, "compilev8modul": [42, 83], "compilev8valuefunct": 61, "complement": 41, "complet": [3, 4, 7, 12, 32, 34, 41, 42, 44, 50, 53, 58, 59, 69, 70, 75, 83], "complic": [32, 42], "compress": 0, "compromis": 28, "con": 32, "concept": [4, 13, 54], "concern": 6, "concurr": 40, "condit": [4, 32, 40, 41, 65], "config": [18, 34, 49], "configur": 1, "configurationproperti": 80, "conflict": [40, 47], "conform": 53, "connect": [2, 3, 4, 72], "consid": [41, 53, 67], "consider": [6, 18, 31, 50, 75], "consist": 83, "consol": [3, 4, 24, 30, 53, 54, 66, 67, 69, 72, 73, 76, 77], "const": [34, 42, 43, 52, 53, 67, 69, 70, 71, 79], "constant": 42, "constantli": 3, "construct": [8, 53, 58], "constructor": [32, 34, 35, 59, 66, 79], "consum": [26, 52], "contact": [0, 1, 9, 17, 18, 22, 55, 75, 83], "contain": [30, 34, 35, 42, 44, 53], "containskei": [34, 35], "containsmodul": 42, "content": [41, 54, 64], "context": [3, 6, 13, 27, 40, 41, 42, 44, 47, 62], "continu": 47, "contribut": 9, "contributor": 2, "control": [4, 27, 31, 35, 42, 50, 53], "conveni": 31, "convent": 59, "convers": [13, 29, 31, 35, 61, 64, 71], "convert": [28, 35, 36, 47, 53, 57, 59, 60, 64, 65, 66, 67, 68, 70, 81, 83], "convertercircularstructur": 47, "converterfailur": 47, "convertersymbolnotbuiltin": 47, "cook": 43, "cooki": 69, "copi": [4, 34, 39, 41], "copycontextfrom": 61, "copyscopeinfofrom": [53, 61], "core": [4, 39, 40, 42, 44, 58], "coro": 6, "correspond": [1, 2, 4, 27, 35, 41, 42, 44, 53, 66], "corretto": 67, "corrupt": 27, "cost": 11, "could": [6, 9], "couldn": [9, 83], "count": [4, 24, 47, 50, 52, 66, 69], "coupl": 66, "cours": [2, 34, 41, 42, 53, 66, 83], "cover": [13, 30, 32, 41, 83], "cpp": [1, 43], "cpu": [9, 26, 28, 67], "cpuarch": 75, "crash": [17, 20, 22, 25, 39, 40, 53, 59, 62, 64], "creat": [3, 17, 22, 26, 29, 32, 34, 40, 41, 42, 47, 49, 50, 53, 54, 58, 63, 65, 66, 67, 69, 70, 71, 72, 73, 76, 77, 80, 83], "createsnapshot": [43, 64], "createtargetobject": 64, "createv8modul": [42, 64], "createv8runtim": [20, 24, 25, 28, 30, 42, 43, 50, 66, 67, 69, 73, 76, 77, 78], "createv8valuearrai": 53, "createv8valuearraybuff": 60, "createv8valueboolean": 67, "createv8valuedoubl": 57, "createv8valueerror": 64, "createv8valuefunct": [42, 53], "createv8valueinteg": [53, 67], "createv8valueobject": [30, 41, 42, 53, 76], "createv8valuepromis": 54, "createv8valueproxi": 58, "createv8valuestr": [53, 57], "createv8valuestringobject": 64, "createv8valuesymbol": 58, "createv8valueundefin": 54, "createv8valuezoneddatetim": 57, "creation": [6, 41, 43, 72], "critic": 55, "cross": [5, 83], "cruel": 9, "crypto": 65, "current": [3, 4, 9, 47, 53, 75], "currentthreadid": 47, "currenttimemilli": 67, "curv": 41, "custom": [0, 4, 5, 31, 42, 43, 44, 53, 57, 58, 60], "customfrommap": 32, "customobject": 32, "customtomap": 32, "cycl": [26, 41], "d": [34, 42, 70], "daemon": [2, 41, 50], "daemonthread": 50, "dai": [2, 44], "danger": 34, "dangl": [44, 62], "data": [0, 4, 31, 41, 42, 43, 53, 56, 61, 66], "databas": 72, "dataview": 41, "date": [28, 33, 35, 42, 56], "db": 4, "dcmake_android_arch": 1, "dcmake_android_ndk": 1, "dead": 50, "deal": [6, 30, 32, 41, 53], "debug": [0, 4, 5, 17, 20, 25, 28, 49, 53], "debugg": [3, 53], "debuggerid": 3, "decent": [3, 6, 9, 52, 54], "decim": 42, "decimaljsfil": 79, "decis": 41, "declar": [53, 80, 83], "decor": [13, 53, 58, 76, 83], "dedic": [4, 41, 44, 69, 83], "deepli": 9, "def": [34, 53, 69], "default": [3, 4, 22, 24, 26, 31, 32, 34, 35, 39, 41, 42, 50, 53, 65, 70, 76, 78], "deficit": 53, "defin": [4, 31, 34], "definit": 4, "delai": 42, "delet": [4, 29, 34, 35, 52, 53, 66, 70, 76], "deleteglobalref": 41, "deliv": 83, "delta": 76, "demonstr": 3, "denable_i18n": 1, "deni": 47, "depend": [2, 4, 6, 9, 34, 42, 43, 49, 53, 80], "deploi": [4, 58, 66], "deploy": 43, "depot": 0, "depot_tools_hom": [0, 1], "depot_tools_win_toolchain": 1, "deprec": [56, 57], "depth": [30, 31, 47, 58], "deriv": 35, "describ": 53, "descript": [0, 34, 41], "design": [5, 7, 16, 17, 28, 32, 34, 39, 40, 42, 53, 69, 78, 83], "desper": 0, "despit": 53, "destroi": 41, "detail": [3, 4, 11, 17, 22, 23, 40, 41, 50, 53, 54, 66, 67, 70, 71, 72, 73, 76, 77, 78, 79, 83], "detect": [5, 30, 31, 47, 53, 58, 59], "determin": [41, 53, 58], "dev": [1, 6], "develop": [0, 17, 20, 23, 28, 43, 47, 54, 56, 67, 83], "devic": [9, 28], "devtool": [3, 20, 25, 28], "diagnos": 3, "diagram": [4, 53], "didn": 9, "differ": [6, 9, 13, 32, 42, 44, 53, 54, 67], "differenti": 31, "difficulti": 43, "digit": 41, "direct": 43, "direction": [31, 71], "directli": [3, 28, 34, 39, 41, 42, 53, 67, 70, 83], "directori": [0, 4, 42, 79], "directory_entry_delay_import": 42, "disabl": [1, 3, 13, 14, 20, 26, 34, 41, 43, 44, 47, 50, 54, 61], "disabledfunct": 53, "disabledfunctionset": 53, "disabledproperti": 53, "disablegcnotif": 57, "disableindebugmod": 57, "discard": 53, "discardcompil": 61, "discord": [28, 83], "dispos": 66, "distribut": [18, 26, 60, 64, 75], "djavet": 39, "dll": [1, 20, 25, 42], "dm": 2, "dnode_dir": 1, "do": [7, 9, 13, 23, 27, 28, 40, 41, 42, 44, 50, 53, 54, 71], "doc": [3, 6, 42, 57, 59], "docker": [0, 3, 5, 9], "dockerfil": [2, 58, 62], "document": [39, 53, 58], "doe": [4, 17, 26, 27, 39, 41, 50, 53, 83], "doesn": [0, 3, 4, 9, 32, 34, 39, 40, 41, 42, 47, 49, 50, 53, 80, 83], "don": [4, 9, 17, 28, 34, 42, 43, 49, 78, 80, 83], "donat": [9, 28], "done": [3, 83], "door": [66, 69], "doubl": [32, 33, 35, 41, 53], "down": [6, 83], "downgrad": 64, "download": [12, 18, 42], "dr": 9, "drag": 42, "drain": [24, 31, 41], "drain_the_task_queu": 69, "dramat": [6, 53], "drawback": [6, 42, 67], "drive": [18, 42], "drop": [8, 9, 42, 53], "dsl": [8, 34], "due": 54, "dump": [4, 40, 44, 58, 59], "dumpbin": 42, "duplic": 13, "dure": [4, 26, 27, 31, 39, 41, 42, 43, 53, 57, 83], "dv8_dir": 1, "dy": 11, "dylib": 1, "dynam": [20, 25, 28, 39, 43, 53, 57, 64], "dynamicclass": [34, 66], "e": [4, 6, 13, 15, 24, 27, 29, 30, 31, 39, 41, 42, 50, 53, 54, 66, 67, 69, 76, 78, 79, 83], "each": [4, 41, 50, 53, 78, 83], "earli": [9, 44], "earlier": 42, "easi": [9, 13, 28, 30, 53, 56, 67, 72, 77], "easier": 32, "easili": [9, 31, 35, 41, 50, 80], "echo": 53, "eclips": 9, "ecma": 53, "ecmascript": [9, 42], "ecosystem": [4, 78], "edigit": 6, "edit": [3, 53], "effect": [13, 39, 41, 42, 69], "effici": [2, 16, 58], "effort": [18, 50, 75], "eg": 18, "eight": 28, "either": [3, 4, 6, 7, 42, 53], "elaps": 67, "electron": 42, "elegantli": [28, 66, 67], "elimin": 83, "els": [26, 30, 42, 53, 54, 67, 69, 75, 79, 83], "emb": 6, "embed": [3, 4, 6, 9, 22, 28, 43, 44], "embedd": 42, "emit": 57, "empti": 47, "enabl": [1, 2, 3, 6, 13, 17, 22, 34, 41, 43, 53, 54, 57, 58, 65, 66, 70], "enablegcnotif": [41, 57], "enableindebugmod": 57, "end": [11, 34, 41, 44, 50, 53, 73], "endposit": 53, "enforc": [3, 66], "engin": [5, 26, 28, 29, 41, 42, 43, 47, 59, 74, 80, 81], "engineguardcheckintervalmilli": 65, "enginenotavail": [47, 60], "enginepool": 26, "enhanc": [34, 53, 57, 58, 59, 60, 63], "enjoi": 3, "enough": [4, 30, 34], "ensur": [26, 66], "entri": 35, "enum": 26, "environ": [3, 4, 5, 6, 18, 20, 28, 40, 42, 57, 59, 72], "equal": [42, 53, 56, 71, 77, 79], "equival": [41, 43, 53], "err": [26, 77], "err_vm_dynamic_import_callback_miss": 42, "error": [1, 9, 39, 42, 48, 49, 53, 54, 58, 59, 60, 63], "es6": [4, 9, 14, 20, 42], "esm": [42, 65], "especi": [53, 72, 83], "essenti": 18, "est": 53, "etc": [4, 11, 13, 15, 29, 31, 39, 41, 53, 66, 69, 79], "eval": [44, 53], "evalu": [3, 4, 42, 60, 83], "even": [0, 9, 83], "event": [3, 20, 25, 44, 54, 69, 83], "eventu": [6, 41, 66], "everi": [0, 4, 13, 31, 40, 41, 53], "everyth": [13, 66], "everywher": 83, "evolv": 9, "ex": [42, 43], "exampl": [4, 14, 20, 24, 30, 70, 71], "exce": 41, "excel": [4, 9], "except": [26, 30, 34, 40, 41, 42, 44, 49, 50, 53, 57, 59, 60, 67, 83], "excess": 53, "exchang": 17, "excit": 42, "excluded_method": 30, "execut": [1, 3, 4, 6, 12, 26, 34, 42, 43, 44, 47, 50, 52, 53, 54, 66, 67, 72, 73, 77], "executebiginteg": 35, "executeboolean": [34, 35, 66], "executeinteg": [29, 32, 34, 35, 42, 43, 50, 53, 66, 73], "executeobject": [29, 34, 66, 70, 71], "executeprimit": 64, "executestr": [28, 29, 32, 34, 35, 42, 53, 66, 70, 71, 73, 79], "executevoid": [24, 29, 30, 34, 42, 43, 50, 53, 66, 67, 69, 70, 71, 72, 76, 79], "executioncontextcr": 3, "executionfailur": 47, "executiontermin": [47, 50], "executor": 63, "executorservic": 65, "exist": [4, 11, 34, 35, 42, 43, 67, 79], "existingsourcecod": 53, "existssync": 42, "exit": [27, 77], "expect": [9, 26, 41, 47, 53], "expectedparameters": 47, "expectedparametertyp": 47, "experi": [13, 27, 34, 39, 42, 71, 72, 77], "experienc": 13, "explain": 4, "explicit": [4, 29, 83], "explicitli": [27, 34, 39, 41, 44, 72], "explor": 42, "export": [1, 26, 42], "expos": [3, 4, 28, 31, 32, 34, 41, 42, 46, 53, 54, 59, 66, 68, 81, 83], "exposur": [28, 56], "express": [13, 34, 69, 75], "extend": [30, 34, 35, 42, 53], "extens": [15, 53, 72], "extern": [0, 6, 41], "extra": [43, 83], "extract": 31, "extrem": [40, 53], "ey": 44, "f": [2, 4, 42], "face": [1, 4], "fact": [27, 54], "fail": [2, 20, 25, 42, 47, 50, 53, 60, 65], "failedtoreadpath": 47, "failur": [21, 59], "fall": 33, "fals": [1, 17, 29, 31, 34, 39, 41, 42, 53, 66, 69, 70], "famili": 75, "famou": 31, "fanci": 31, "fannkuch": 6, "faq": [5, 28], "far": 9, "fast": 53, "fasta": 6, "faster": [3, 43], "featur": [3, 4, 5, 8, 9, 13, 26, 32, 35, 39, 41, 42, 47, 52, 53, 54, 55, 70, 78, 79, 83], "fedora": 26, "feed": [4, 42], "feel": [3, 42, 43, 53], "fetch": [4, 6, 54], "few": [1, 2, 3, 8, 9, 11, 13, 26, 30, 31, 34, 41, 53, 56, 57, 64, 66, 70, 71, 77], "field": [34, 35], "file": [1, 3, 4, 6, 9, 22, 41, 42, 43, 54, 66, 69, 79], "filecont": 54, "filepath": 54, "fill": 53, "filter": 53, "final": [2, 26, 30, 31, 32, 34, 41, 42, 47, 50, 53, 54, 66, 67], "find": [11, 53, 66], "fine": [17, 28, 31, 35], "first": [1, 3, 39, 41, 42, 53, 56, 83], "firstli": 53, "fix": [9, 11, 21, 29, 41, 42, 50, 55, 57, 58, 59, 60, 61, 62, 63, 64, 65], "flag": [5, 26, 41, 58, 60], "flat": 64, "flavor": [3, 16, 53, 66, 77], "flexibl": [6, 42], "flip": 17, "float": [32, 33, 35, 41, 53], "float32arrai": [32, 41], "float64arrai": [32, 41], "fly": 3, "folder": [1, 44, 69], "folk": [13, 42], "follow": [1, 2, 3, 4, 12, 16, 18, 22, 24, 26, 27, 28, 30, 32, 35, 41, 42, 43, 44, 47, 49, 50, 52, 53, 54, 66, 67, 69, 76, 78], "footprint": 4, "forc": [26, 27, 34, 44, 72], "foreach": [52, 56, 63], "forev": [2, 24, 41], "form": [9, 53], "format": [41, 42, 47, 53], "forward": [9, 42], "found": [21, 42, 47, 79], "fpic": 1, "framework": [13, 80], "free": [3, 4, 13, 32, 40, 41, 42, 53, 57, 72, 83], "freed": 4, "freez": 64, "frequenc": 41, "frequent": 83, "friend": 54, "friendli": [53, 83], "from": [0, 2, 4, 5, 6, 9, 11, 12, 16, 17, 18, 24, 26, 27, 31, 34, 35, 40, 42, 43, 44, 47, 50, 53, 54, 57, 58, 59, 60, 64, 65, 66, 67, 69, 70, 72, 73, 76, 77, 81, 82], "frommap": 32, "frustrat": [0, 9], "fulfil": 54, "full": [9, 26, 44, 53], "fulli": [9, 30], "func": 53, "function": [4, 15, 17, 32, 39, 41, 42, 43, 51, 56, 59, 60, 61, 65, 66, 67, 69, 70, 76, 83], "functioncallbackreceiv": 53, "functioncontext": 53, "functionnam": 56, "fundament": [17, 49, 80], "further": [3, 6, 41], "futur": 9, "g": [4, 6, 13, 15, 18, 24, 27, 29, 31, 39, 41, 42, 53, 54, 66, 67, 69, 70, 76, 78, 79, 83], "gain": 42, "garbag": [27, 34, 39, 41, 66], "gather": 53, "gb": 2, "gc": [34, 39, 66, 67, 72, 76], "gcbeforeengineclos": 57, "gcc": [0, 18, 57, 64], "gcov": 18, "gen": 1, "gener": [6, 30, 34, 41, 43, 47, 53, 58, 67], "generatearraywithconvert": 53, "generatearraywithoutconvert": 53, "genuin": 27, "get": [4, 9, 13, 27, 29, 30, 32, 34, 39, 41, 42, 44, 49, 50, 52, 53, 54, 59, 60, 67, 69, 71, 72, 78, 79, 80, 83], "getabsolutepath": 79, "getandincr": 52, "getargu": 61, "getboolean": 42, "getcacheddata": 61, "getclass": 30, "getconfig": [26, 34, 35, 42, 66, 78], "getcontext": [53, 59], "getconvert": 32, "getdetailedmessag": [59, 64], "getengin": [26, 42, 50, 72, 78], "getentri": 52, "geterror": 50, "geterrortyp": 64, "getexecutor": [24, 28, 29, 30, 32, 34, 35, 42, 43, 50, 52, 53, 54, 66, 67, 69, 70, 71, 72, 73, 76, 77, 79], "getfilecont": 54, "getfilepath": 54, "getglobalobject": [13, 29, 30, 32, 34, 35, 42, 50, 53, 54, 66, 67, 69, 70, 71, 72, 76, 79, 83], "getguard": [50, 65], "gethandl": 58, "getidentityhash": [56, 65], "getinst": [34, 35, 39, 66], "getinteg": [42, 50], "getisolateid": 3, "getjavetenginepoolnod": 80, "getjavetenginepoolv8": 80, "getjoin": 34, "getjsfunctiontyp": [53, 57], "getjsonnod": 67, "getjsscopetyp": 53, "getkei": 52, "getlength": 52, "getlibpath": 39, "getlogg": [42, 49, 79], "getmessag": [64, 77], "getmethod": [30, 53], "getmethodnamefromlambda": [53, 58], "getmethodnamesetfromlambda": [53, 58], "getnam": [30, 32, 76, 80], "getnamespac": 65, "getnodeinst": [24, 28, 30, 41, 69, 73, 78], "getnodemodul": 42, "getobject": [32, 34, 35], "getownpropertydescriptor": 64, "getownpropertynam": [34, 35, 52], "getownpropertynamestr": 61, "getownpropertysymbol": 58, "getparametercount": 30, "getposit": 53, "getpromis": 54, "getproperti": 75, "getprototyp": 58, "getprototypeof": 65, "getproxyplugin": [35, 64], "getresourcenam": 65, "getscopeinfo": 61, "getscriptid": 65, "getscriptsourc": 61, "getsiz": 52, "getsnapshotblob": 64, "getsourcecod": [53, 57], "getstack": 59, "getstr": 79, "getstringvalu": 53, "gettarget": 58, "getter": [32, 34, 53, 58, 59, 76, 83], "getutil": 34, "getv8guarddaemon": 50, "getv8guardqueu": 50, "getv8heapspacestatist": [41, 59, 65], "getv8heapstatist": [41, 59, 65], "getv8inst": [26, 28, 41, 42, 50, 66, 67, 73, 76, 77, 78], "getv8lock": 40, "getv8runtim": [42, 50, 67, 72, 79], "getv8scop": 41, "getv8sharedmemorystatist": [41, 59], "getvalu": [30, 32, 52, 53, 67, 76], "getvers": 58, "git": 2, "github": [3, 6], "give": [29, 31, 41, 50, 53, 66], "given": 29, "glibc": 75, "global": [4, 13, 26, 42, 53, 62, 66, 72, 83], "globalobject": [13, 53], "globalthi": [13, 42, 83], "gn": 1, "go": [34, 42, 55], "goal": 53, "goe": [13, 53], "gone": [9, 27], "good": [4, 28, 41, 76], "googl": [0, 3], "got": [9, 11], "graalj": [28, 34], "graalvm": 12, "gracefulli": 69, "gradl": [0, 1, 2, 5, 9, 34], "grain": [31, 35], "granular": [40, 42], "great": 28, "greater": 50, "groovi": 34, "groupid": [28, 34, 75], "gson": [3, 67], "guard": 50, "guess": 76, "guid": [1, 28, 81], "guido": 9, "gyp": 42, "ha": [0, 2, 4, 6, 8, 9, 13, 17, 30, 32, 34, 39, 41, 42, 49, 50, 52, 53, 54, 57, 67, 83], "hack": [9, 13, 27], "hacki": 17, "had": [9, 11], "hair": 9, "hand": 27, "handi": 54, "handl": [13, 27, 30, 34, 40, 42, 54, 58, 60, 72], "handler": [60, 69], "hang": [24, 50], "happen": [21, 27, 31, 34, 41, 54], "happi": 53, "hard": [0, 9, 54, 83], "harder": 43, "harmoni": 53, "hascontextextensionslot": 53, "hashmap": [32, 71], "hashset": [30, 32, 53], "hasinternaltyp": 58, "hasn": [9, 27, 53], "hasownproperti": 79, "haspendingexcept": 59, "haspendingmessag": 59, "hasscheduledexcept": 59, "have": [2, 9, 17, 26, 28, 30, 32, 34, 35, 41, 42, 43, 53, 54, 79, 83], "haven": 9, "heap": [4, 41, 43], "heapstatist": 47, "heavi": 42, "heavili": [8, 30, 53, 83], "hei": 9, "held": 50, "hell": [49, 80], "hello": [34, 69, 70, 72, 74, 81], "helloworld": 6, "help": [3, 43, 44], "henc": 53, "here": [0, 3, 4, 6, 9, 11, 17, 30, 34, 39, 41, 42, 53, 54, 69, 70, 71], "hide": [4, 9], "hierarchi": 83, "high": [4, 31, 41], "higher": 6, "highlight": 78, "hijack": 69, "hint": [41, 53], "histori": [10, 11, 20, 83], "hit": [27, 50], "hivemq": 28, "hmodul": 42, "hoc": [6, 9, 40, 58], "hold": [34, 41, 54], "home": 0, "host": [3, 4, 22, 39, 42, 66, 67, 69, 73, 76, 77], "hotfix": [66, 83], "hour": [2, 9], "how": [3, 4, 7, 11, 14, 16, 20, 24, 27, 28, 30, 35, 39, 40, 42, 58, 66, 67, 83], "howev": [4, 6, 9, 11, 13, 27, 31, 32, 39, 41, 53, 67, 83], "http": [2, 3, 4, 6, 28, 69], "huge": [6, 22], "hungri": 43, "i": [0, 1, 2, 4, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 39, 40, 41, 42, 43, 44, 47, 49, 50, 52, 54, 57, 58, 66, 67, 70, 71, 72, 73, 75, 76, 77, 78, 79, 80, 83], "i18n": [0, 1, 20, 25, 47, 60], "i7": [6, 9], "ia32": 1, "icallback": 54, "iclassproxyplugin": [35, 64], "id": [1, 3, 4, 47, 53, 75], "idea": [8, 9, 11, 41], "ident": [29, 42, 53, 76], "identifi": 34, "idl": 41, "idlenotificationdeadlin": [57, 65], "ieee": 41, "ignor": [34, 41, 53, 57], "ijavetanonym": [34, 53, 58, 66], "ijavetanonymous1": 53, "ijavetanonymous2": 53, "ijavetbiindexedconsum": 57, "ijavetclos": [34, 58], "ijavetconsum": 57, "ijavetdirectcal": 63, "ijavetdirectproxyhandl": [63, 64, 65, 67], "ijavetengin": [26, 42, 50, 72, 78, 79], "ijavetengineguard": 56, "ijavetenginepool": [50, 72, 80], "ijavetentityfunct": [31, 32], "ijavetentitymap": [31, 32], "ijavetlibloadinglisten": [39, 59], "ijavetmapp": [32, 58], "ijavetpromiserejectcallback": 54, "ijavetuniconsum": 57, "ijavetuniindexedconsum": 57, "ilisten": 61, "imag": [2, 3, 9, 14, 20], "immedi": [4, 17, 22, 40, 41, 44], "impact": [44, 53], "imper": 83, "implement": [9, 28, 32, 34, 35, 39, 41, 42, 53, 54, 66, 67, 75], "impli": [6, 11, 17, 18, 27, 75, 83], "implicit": [29, 83], "implicitli": [29, 59], "import": [26, 27, 49, 50, 54, 75, 83], "importmoduledynam": 42, "improp": [60, 64], "improv": [5, 9, 40, 41, 43, 59, 63, 64], "includ": [2, 9, 29, 34, 39, 43, 53, 83], "incompat": 40, "inconsist": 83, "inconveni": [31, 39], "incorrect": 53, "increas": [4, 31, 47, 83], "increaseandget": 76, "increment": [30, 67], "inde": [11, 44], "independ": [1, 6], "index": 42, "indic": 53, "ineffici": 31, "inevit": 17, "infinit": [50, 77], "info": [49, 61], "inform": [12, 32], "inherit": 83, "initi": [4, 6, 20, 25, 41, 42, 43, 60, 64, 65, 69, 72, 76], "inject": [31, 34, 39, 41, 43, 47, 53, 54, 58, 65, 66, 67, 83], "inner": [53, 59], "input": [53, 67, 71, 77], "insid": [2, 3, 4, 26, 34, 41, 54], "insight": 4, "inspect": [3, 17, 53], "inspector": [3, 14, 20, 65], "instal": [8, 9, 12, 18, 39, 42, 69, 74, 79, 81], "instanc": [4, 6, 13, 17, 29, 41, 42, 44, 49, 50, 53, 70, 76], "instanceof": [34, 35, 53, 54, 65, 67], "instanti": 66, "instead": [17, 31, 40, 41, 42, 43, 57, 62, 65, 71, 83], "instruct": 2, "int": [26, 30, 32, 33, 34, 35, 43, 50, 53, 67, 69, 76], "int16_t": 41, "int16arrai": [32, 41], "int32_t": 41, "int32arrai": [32, 41], "int64_t": 41, "int64arrai": 32, "int8_t": 41, "int8arrai": [32, 41], "intarrai": [29, 35], "integ": [26, 32, 33, 34, 35, 41, 52, 53, 69], "integerlist": 29, "integr": [3, 9, 28, 49, 56, 74, 81], "intellij": [5, 9], "intend": [9, 13], "interact": [3, 4, 28, 30, 57, 66, 68, 77, 81], "intercept": [3, 5, 34, 41, 42, 56, 58, 74, 81], "interceptor": [4, 27, 53, 54, 66, 72, 76], "interest": [2, 9], "interfac": [49, 54, 83], "interfer": 4, "intern": [5, 34, 39, 40, 41, 50, 53, 59, 60, 63, 75], "internet": 2, "interop": [26, 28, 68, 81], "interoper": 67, "interpret": [3, 4], "interrupt": 50, "interruptedexcept": [50, 69], "intl": 1, "intro": 28, "introduc": [31, 41, 42, 59, 83], "intrud": 53, "intrus": [32, 67], "intvalu": 53, "invis": 53, "invoc": 53, "invok": [13, 30, 57], "invokeinteg": 42, "invokeobject": [53, 70], "invokeprimit": 53, "invokevoid": [53, 67], "involv": 13, "io": [3, 17, 66], "is_component_build": 1, "is_debug": 1, "isarrai": 35, "isassignablefrom": 34, "isasyncfunct": 58, "iscal": 53, "isclass": 53, "isclos": 58, "iscompil": 61, "iscontinu": 50, "iscreatesnapshoten": 64, "isdead": 56, "isdebugen": 49, "isdeploi": 39, "isdirectori": 34, "isfil": 34, "isfreespaceorfillermap": 65, "isfrozen": 65, "isfunct": 53, "isgeneratorfunct": 58, "isgeneratorobject": 58, "isinfoen": 49, "isint": 67, "isinus": [50, 56], "islibinsystempath": 39, "islinux": 75, "ismacosx": 75, "isnullorundefin": 57, "isobject": 67, "isol": [6, 13, 40, 41, 42, 44, 83], "isproxyarrayen": 64, "isproxylisten": 64, "ispurgeeventloopbeforeclos": [60, 65], "isrevok": 58, "isseal": 65, "issourcetextmodul": [42, 64], "isstop": 65, "issu": [1, 3, 4, 11, 12, 26, 27, 40, 41, 42, 44, 57, 58, 59, 62, 64, 65], "issuppressingerror": [39, 59], "issyntheticmodul": [42, 64], "istringjoin": 34, "istringutil": 34, "isundefin": 30, "isv8bindingen": 53, "iswarnen": 49, "iswrap": 61, "iter": [29, 34, 63], "its": [0, 4, 9, 34, 35, 40, 41, 42, 53, 54], "itself": [50, 53], "iv8execut": 64, "iv8executor": [42, 61], "iv8inspectorlisten": 3, "iv8modul": 65, "iv8moduleresolv": 58, "iv8script": 65, "iv8valu": [56, 57, 61, 64], "iv8valuearrai": [63, 64], "iv8valuefunct": [57, 58, 61], "iv8valuemap": 63, "iv8valueobject": [53, 56, 57, 58, 61, 63], "iv8valuepromis": [54, 61], "iv8valueproxi": 58, "iv8valuerefer": 56, "j": [0, 2, 5, 7, 9, 14, 15, 20, 21, 22, 25, 28, 35, 39, 40, 41, 43, 46, 47, 53, 54, 55, 56, 58, 60, 62, 63, 64, 65, 66, 68, 72, 74, 81], "j2v8": [10, 11, 13, 20, 81, 82], "j2v8_win32_x86_64": 9, "j4": 1, "jackson": [3, 67], "jan": 83, "jar": [1, 3, 4, 9], "java": [3, 4, 5, 9, 15, 26, 28, 30, 31, 34, 35, 39, 40, 41, 42, 54, 59, 66, 68, 69, 71, 76, 79, 81, 83], "javadoc": 58, "javaobject": [41, 83], "javascript": [4, 6, 17, 27, 28, 31, 34, 40, 41, 42, 43, 54, 59, 66, 68, 71, 73, 76, 81, 83], "javax": 66, "javenod": [15, 16, 28, 54, 79, 83], "javet": [3, 5, 8, 9, 12, 14, 15, 16, 17, 19, 20, 21, 25, 26, 27, 29, 30, 31, 32, 34, 41, 44, 46, 47, 49, 50, 52, 53, 54, 56, 58, 63, 66, 69, 70, 71, 74, 75, 76, 78, 79, 80, 81], "javet_hom": [0, 1], "javetbridgeconvert": [29, 35, 41, 59, 64], "javetbuiltinmoduleresolv": [42, 64], "javetcallbackcontext": [57, 63], "javetcallbackexcept": 57, "javetcallbacktyp": 63, "javetcompilationexcept": 59, "javetconsoleinterceptor": 72, "javetconverterconfig": [31, 35, 58, 64, 65], "javetconverterexcept": 31, "javetdirectproxyobjecthandl": 65, "javetdynamicobjectfactori": 61, "javetdynamicproxi": [61, 63], "javetengin": [72, 78], "javetengineconfig": [41, 49, 57, 60, 65, 80], "javetengineconfignod": 80, "javetengineconfigv8": 80, "javetengineguard": [57, 65], "javetenginepoo": 78, "javetenginepool": [26, 42, 49, 57, 59, 72, 78, 80], "javetenginepoolnod": 80, "javetenginepoolv8": 80, "javetentityerror": 64, "javetentityfunct": [53, 58], "javetentityobject": 64, "javetentitypropertydescriptor": 64, "javetentitysymbol": 32, "javeterror": [50, 57, 60, 64], "javeterrortyp": 34, "javetexcept": [30, 50, 53, 54, 67, 69, 79], "javetexecutionexcept": [34, 42, 59], "javetjvminterceptor": [64, 66], "javetlibload": 39, "javetlibloadinglisten": [39, 59], "javetlogg": 49, "javetnativemonitor": 4, "javetobjectconvert": [30, 31, 32, 58, 64, 65, 83], "javetosutil": [42, 69, 79], "javetoutofmemoryexcept": 59, "javetperf": [6, 63], "javetprimitiveconvert": [33, 58, 60], "javetpromiserejectcallback": 57, "javetproxyconvert": [29, 31, 35, 41, 58, 59, 66, 67, 70, 83], "javetproxypluginarrai": 64, "javetproxypluginclass": 64, "javetproxyplugindefault": 64, "javetproxypluginlist": 64, "javetproxypluginmap": 64, "javetproxypluginset": 64, "javetproxyprototypestor": 65, "javetproxysymboliterableconvert": [63, 64], "javetproxysymboltoprimitiveconvert": 64, "javetreflectionobjectfactori": [34, 66], "javetreflectionproxi": 63, "javetreflectionutil": [53, 58], "javetscriptingerror": [59, 64], "javetshel": [3, 28, 66], "javetstandardconsoleinterceptor": [41, 72, 76], "javetterminatedexcept": 50, "javetuniversalproxi": 61, "javetuniversalproxyhandl": 58, "javetvirtualobject": 58, "jdk": [0, 5, 30, 49, 67], "jerri": 30, "jetti": 3, "jit": 6, "jni": [4, 8, 39, 41, 53, 59, 60, 62], "jnilib": 1, "join": [26, 34, 66], "joiner": 34, "joke": 9, "jsfunction": 53, "jsfunctiontyp": 53, "json": [2, 3, 29, 34, 35, 42, 67, 71], "jsonnod": [28, 68, 81], "jsonnodewrapp": 67, "jsonstr": 67, "jsruntimetyp": [26, 39, 42, 78, 80], "jsx": 28, "jul": 6, "just": [2, 3, 6, 9, 12, 13, 24, 30, 32, 39, 40, 41, 42, 53, 66, 70, 83], "jvm": [2, 4, 22, 28, 31, 34, 39, 40, 56, 68, 69, 71, 72, 78, 81, 83], "kb": 6, "keep": [4, 31, 34, 40, 41, 44, 67], "kei": [4, 26, 34, 42, 52, 67], "kernel": 26, "keyword": 53, "kind": [4, 9, 30, 40, 53, 83], "knodefaultsignalhandl": 64, "knostdioiniti": 64, "know": [4, 7, 9, 27, 38, 42, 53, 83], "known": [34, 41], "kotlin": [8, 34, 40], "kvm": 26, "l": [35, 78], "label": 43, "lack": [79, 83], "lambda": [34, 53], "land": 27, "lang": [31, 39, 66], "languag": [6, 41, 53], "larg": [2, 17], "last": 9, "later": [9, 11, 42], "latest": [0, 2, 12, 78], "launch": [42, 43, 44], "layer": [9, 83], "layout": 53, "lazi": 4, "ld": 1, "lead": [27, 43, 44], "leaf": 67, "leak": [5, 9, 11, 31, 34, 41, 44, 57, 59, 64, 65, 66], "leakag": [13, 47], "learn": [11, 16, 35], "least": [4, 9], "leav": [4, 11, 32, 42, 66], "legaci": [4, 9, 19, 20, 60], "len": 53, "length": [26, 29, 30, 32, 34, 35, 41, 43], "less": [34, 39], "let": [3, 9, 24, 27, 30, 34, 42, 43, 66, 67, 69, 77], "level": [13, 31, 40, 53], "leverag": 67, "lexic": 53, "lib": [1, 42, 59], "libcxx": 0, "libgcc": 60, "libjavet": [1, 39, 42], "libnod": 1, "librari": [0, 2, 3, 4, 7, 13, 20, 22, 25, 42, 47, 49, 53, 58, 66], "librarynotfound": 47, "librarynotload": 47, "libstdc": 60, "lifecycl": [13, 41, 44, 53], "light": 41, "like": [1, 3, 6, 9, 11, 13, 28, 34, 42, 43, 44, 47, 53, 60, 77], "limit": [4, 13], "line": [30, 40, 53, 77], "link": [1, 20, 25, 41, 42], "linux": [6, 11, 19, 20, 26, 28, 56, 57, 58, 60, 62, 64, 83], "linx": 26, "list": [3, 6, 26, 28, 31, 32, 35, 36, 53, 65], "listen": [3, 27, 41, 54, 69], "liter": 83, "littl": [13, 32], "live": [28, 40, 41, 53], "load": [4, 13, 21, 38, 43, 47, 79, 83], "loadabl": 4, "loadj": 79, "loadlibrari": [39, 58], "loadlibraryexw": 42, "local": [9, 30, 41, 53], "locat": [4, 42, 83], "lock": [4, 38, 41, 47, 50, 57, 64, 65, 83], "lockacquisitionfailur": 47, "lockconflictthreadidmismatch": 47, "lockedthreadid": 47, "locker": 40, "lockreleasefailur": 47, "log": [24, 30, 41, 44, 48, 53, 54, 69, 72, 76], "logerror": 79, "loggerfactori": 49, "logic": [6, 9, 31, 53, 54, 69, 83], "loginfo": [42, 79], "long": [2, 32, 33, 34, 35, 40, 41, 53, 67], "longer": [13, 31, 34, 41, 44, 83], "longlist": 29, "look": [1, 4, 9, 11, 42, 58], "lookup": 53, "loop": [20, 25, 27, 50, 54, 69, 77], "lot": [11, 72], "low": 4, "lower": [11, 43], "lowest": [9, 75], "lowmemorynotif": [34, 53, 54, 57, 66, 67, 72, 76, 83], "lt": 1, "luck": 9, "luckili": [31, 42], "m": [2, 6, 67], "mac": [2, 9, 28, 83], "macbook": 9, "machin": 9, "maco": [1, 9, 28, 39, 75], "made": [9, 11, 43], "mai": [1, 2, 3, 4, 6, 9, 13, 16, 26, 27, 28, 29, 31, 34, 39, 40, 41, 42, 43, 44, 49, 50, 53, 80], "mail": 28, "main": [1, 26, 30, 34, 70], "mainli": 6, "mainstream": 55, "maintain": [0, 17, 18, 22, 55, 75, 83], "mainten": [55, 58], "major": [6, 42, 56, 83], "make": [0, 1, 2, 17, 31, 32, 41, 42, 43, 54, 66, 69, 79, 83], "malform": 53, "malici": [43, 44, 50], "manag": [4, 9, 13, 16, 28, 36, 42, 50, 57], "mandelbrot": 6, "mani": [1, 9, 11, 41, 43, 53, 83], "manipul": [41, 52], "manner": [54, 83], "manual": [11, 18, 34], "map": [4, 29, 31, 32, 35, 42, 52, 65], "mapi": 71, "mapx": 71, "mark": 50, "master": [9, 54], "match": [32, 34, 42, 70], "matcher": [34, 70], "mathadd": 53, "maven": [2, 5, 34], "mavin": 39, "max": [41, 47], "max_valu": 69, "maxdepth": [3, 47], "maxim": [40, 44], "maximum": 31, "maxscriptscaches": 3, "me": [9, 28], "meal": 43, "mean": [6, 39, 42, 49, 53], "meanwhil": [9, 69], "measur": [6, 67], "mechan": [39, 40, 83], "meet": [26, 31, 42], "memor": 32, "memori": [5, 9, 11, 16, 26, 27, 31, 34, 38, 39, 43, 44, 47, 53, 57, 59, 64, 65, 66, 67, 83], "mental": 83, "mere": 9, "merkletre": 6, "messag": [3, 41, 47, 49], "meta": 66, "method": [3, 13, 30, 32, 34, 35, 47, 53, 67], "method_prefix_get": 30, "method_prefix_i": 30, "methodhandl": 59, "methodnam": [30, 47, 53], "might": [11, 39], "migrat": [13, 28, 81], "millisecond": [43, 50, 69], "min": 41, "mini": 9, "minim": [4, 32, 44, 72], "minut": [2, 4, 31], "mirror": 53, "mismatch": 47, "mistakenli": 59, "mitig": 43, "mix": 13, "mixtur": 4, "mockcallbackreceiv": 53, "mode": [1, 5, 7, 14, 18, 20, 21, 22, 25, 27, 28, 39, 41, 43, 44, 53, 54, 57, 58, 60, 63, 65, 66, 72, 74, 81, 83], "model": [4, 26, 40], "modif": 41, "modul": [5, 21, 27, 44, 46, 47, 53, 61, 62, 64, 65, 79], "modular": [21, 38, 44, 83], "modulenam": 47, "modulenameempti": 47, "modulenotfound": 47, "modulepermissiondeni": 47, "monitor": 50, "monolith": 0, "month": [9, 11], "more": [3, 4, 6, 9, 12, 17, 18, 32, 39, 41, 42, 43, 46, 47, 50, 53, 54, 58, 59, 72, 73, 76, 77, 78, 79, 83], "most": [13, 40, 42, 44, 53], "mostli": 27, "motiv": [10, 20, 83], "move": [9, 57, 58], "msvc": [1, 42], "much": [4, 6, 9, 34, 41, 44, 53, 67, 77, 79, 83], "multer": 69, "multi": [54, 72, 83], "multipl": [4, 17, 22, 26, 40, 42, 44, 58, 83], "must": [39, 41, 53, 79], "my": [9, 28], "myjavetengineconfig": 80, "myjavetlogg": [49, 80], "n": [34, 42, 53, 70], "name": [3, 4, 13, 30, 32, 35, 39, 42, 47, 49, 53, 59, 62, 64, 66, 67, 76, 79, 80], "napi": [21, 42], "napi_create_buffer_copi": 42, "napi_create_error": 42, "napi_create_funct": 42, "napi_get_undefin": 42, "napi_open_escapable_handle_scop": 42, "nashorn": 28, "nativ": [4, 14, 20, 21, 28, 29, 32, 35, 40, 41, 44, 53, 56, 69, 83], "nativecontext": 63, "natur": [53, 54], "navig": [1, 42], "nbodi": 6, "ndk": [0, 60], "nearli": 9, "neat": 67, "necessari": [66, 72], "need": [0, 3, 6, 9, 30, 31, 32, 34, 40, 41, 42, 53, 54, 67, 70, 83], "nest": 40, "net": [4, 34], "network": 2, "never": 83, "new": [4, 6, 7, 9, 11, 26, 29, 30, 32, 34, 39, 40, 41, 42, 43, 49, 50, 52, 53, 54, 55, 65, 66, 67, 69, 70, 71, 72, 76, 77, 78, 79, 80], "newer": 7, "newglobalref": 41, "newpath": 34, "newsourcecod": 53, "next": [0, 31, 53], "nextlin": 77, "ninja": 1, "nio": 41, "node": [0, 2, 5, 7, 9, 14, 15, 20, 21, 22, 25, 28, 39, 40, 41, 43, 46, 47, 53, 54, 55, 58, 60, 62, 63, 64, 65, 66, 67, 68, 72, 74, 75, 77, 80, 81], "node_bind": 1, "node_hom": [0, 1], "node_modul": [42, 44, 69, 79], "node_module_fil": 42, "node_sqlite3": 42, "nodemodulemodul": 42, "nodemoduleprocess": 58, "noderuntim": [17, 24, 42, 57, 60, 65, 69, 73, 78], "noderuntimeopt": [41, 59], "non": [34, 44, 50, 53, 66], "none": [3, 53], "norm": 6, "normal": [3, 41, 50, 69], "note": [28, 34, 41, 42, 53], "noth": 13, "notif": [3, 41], "notifi": [41, 67, 76], "notsupport": 47, "now": [8, 9, 30, 34, 42, 49, 50, 53, 76], "nowadai": 9, "npm": [42, 69, 79], "nsiev": 6, "null": [30, 32, 34, 42, 53, 54, 69, 76, 77], "nullpointerexcept": 31, "number": [31, 33, 35, 41, 42], "o": [0, 2, 4, 28, 40, 43, 47, 53, 67, 83], "object": [1, 4, 13, 27, 35, 41, 43, 44, 52, 57, 58, 59, 60, 64, 65, 67, 68, 70, 72, 76, 81, 83], "objectclass": 30, "objectmapp": 67, "objectnod": 67, "observ": 59, "observertimeoutmilli": 65, "obtain": 44, "obvious": [9, 42, 53, 67], "occur": [26, 27, 31, 34, 41], "octet": 41, "off": [0, 1, 3, 4, 35, 41], "offer": [13, 15, 41], "offici": [0, 1, 9, 12, 16, 18, 28, 42], "often": 41, "old": [4, 9, 44, 54], "older": 6, "onc": [1, 30, 31, 35, 41, 42, 43, 47, 66, 69], "oncatch": 54, "one": [4, 7, 9, 11, 13, 17, 22, 29, 34, 39, 41, 42, 50, 53, 67, 70, 76, 77, 78, 83], "ones": 32, "onfulfil": 54, "onli": [4, 13, 15, 17, 22, 26, 31, 33, 34, 39, 42, 43, 44, 49, 50, 53, 55, 67, 83], "onreject": 54, "open": [32, 34, 44, 66], "oper": [4, 31], "operatingsystem": 75, "opportun": 31, "opt": 2, "optim": 6, "option": [0, 5, 17, 33, 42, 43, 44, 53, 58, 60, 64, 66, 67, 76, 78], "optionaldoubl": 33, "optionalint": 33, "optionallong": 33, "optionalstr": 53, "order": [42, 52], "org": [49, 75], "organ": 57, "origin": [3, 4, 53], "originalsourcecod": 53, "orphan": 34, "osgi": 39, "osnotsupport": 47, "other": [3, 4, 13, 31, 39, 40, 41, 43, 44, 49, 53, 54, 57, 69, 71, 75, 78, 83], "otherwis": [3, 32, 33, 39, 40, 53], "out": [1, 26, 28, 41, 42, 47, 50, 66, 67, 69, 70, 71, 73, 76, 77, 83], "outer": 9, "outofmemoryerror": 34, "outperform": 6, "output": [1, 30, 53, 66, 67, 69, 70, 71], "outsid": 41, "over": [4, 27, 31, 35, 42, 53, 83], "overflow": 31, "overhead": [4, 6, 13, 31, 32, 40, 41, 50, 72], "overload": 34, "overrid": [30, 34, 39, 49, 53, 54, 67], "overridden": [31, 39], "own": [0, 4, 9, 30, 32, 34, 35, 39, 41, 42, 53, 54], "ownership": 54, "ownkei": 58, "p": [1, 34, 35], "pace": 41, "packag": [4, 6, 8, 9, 66], "page": 3, "pai": [9, 83], "pain": 83, "pair": [30, 53], "parallel": 53, "param": 3, "paramet": [47, 53], "parent": [30, 44], "pars": [3, 6], "parseint": 26, "parser": 69, "parti": [49, 53], "partial": 4, "particular": [6, 9, 35, 39, 42, 43], "pass": [44, 58], "patch": [26, 55, 64, 65], "patch_node_build": 1, "patch_v8_build": 1, "patchelf": 42, "path": [1, 18, 39, 42, 47, 63, 65, 69], "pattern": [3, 13, 16, 32, 50], "pause_the_event_loop": 69, "pe": 42, "peacefulli": 26, "pend": [60, 69], "peopl": [27, 83], "per": [4, 34, 39, 40, 41, 42], "perform": [2, 3, 4, 5, 9, 26, 27, 28, 29, 31, 32, 39, 41, 42, 44, 53, 56, 59, 63, 64, 67, 69, 72, 76, 83], "period": [34, 46], "permiss": 9, "persist": 41, "person": 8, "perspect": [13, 41], "phase": 1, "pid": 4, "pidigit": 6, "piec": 42, "pink": 70, "pitfal": 0, "place": [1, 4, 9, 27, 31, 41, 83], "plai": [9, 40, 42, 54, 67, 69], "plan": 9, "platform": [0, 5, 43], "pleas": [0, 1, 2, 3, 4, 6, 11, 12, 17, 18, 22, 23, 28, 31, 34, 39, 40, 41, 42, 44, 50, 53, 54, 55, 66, 67, 70, 71, 72, 73, 75, 76, 77, 79, 83], "plug": 39, "plugin": [31, 64], "point": [41, 42], "pointer": [0, 41, 53], "pojo": 32, "pojoarrai": 30, "polyfil": [28, 74, 81, 83], "pom": [9, 60], "pool": [5, 26, 28, 41, 49, 56, 59, 74, 80, 81], "pop": [34, 35], "popinteg": 52, "popular": 43, "port": [3, 55, 69], "posit": [1, 6, 53], "possibl": [4, 32, 40, 43, 44, 65, 67], "potenti": [42, 58, 59], "power": [30, 43], "ppa": 18, "ppee": 42, "practic": [3, 4, 13, 45], "pre": 43, "preciou": 9, "precis": [9, 31, 53], "prefer": 28, "prefix": 80, "prepar": [18, 39, 42, 43, 53, 72], "presenc": 53, "preserv": 52, "pressur": [41, 83], "pretti": 42, "prevent": [27, 39, 41, 44], "previou": [43, 53], "primari": 43, "prime": 6, "primit": [29, 30, 31, 32, 34, 35, 44, 53, 56, 59, 60], "print": [54, 71, 77], "println": [26, 28, 42, 66, 67, 69, 70, 71, 73, 76, 77], "printstacktrac": [26, 30, 50, 69], "prior": 39, "prioriti": [18, 50, 59], "privat": [0, 17, 18, 22, 30, 32, 34, 53, 67, 75, 76], "pro": 32, "problem": [3, 6, 9, 30, 53], "problemat": 9, "process": [2, 3, 27, 30, 50, 54, 65], "profession": 42, "profil": [3, 75], "program": 6, "prohibit": 44, "project": [4, 9, 11, 13, 15, 16, 28, 34, 42, 54, 66, 79, 83], "promis": [6, 27, 44, 51, 69], "promotescheduledexcept": 59, "proper": 1, "properli": [4, 26, 66], "properti": [18, 31, 32, 34, 67, 75, 76, 80], "propertykei": 67, "propertynam": 30, "propertysourc": 80, "propertyvalu": 67, "propos": 42, "protect": [26, 30, 40, 49, 50, 80], "protocol": 3, "prototyp": 53, "provid": [3, 4, 6, 18, 27, 29, 30, 31, 32, 34, 35, 42, 43, 52, 53, 66, 72, 76, 83], "proxi": [29, 32, 59, 60, 64, 65, 66, 67], "proxydeleteproperti": 64, "proxyget": 67, "proxygetownpropertydescriptor": 64, "proxyset": 67, "pseudo": [53, 54, 69], "public": [26, 30, 32, 34, 35, 39, 49, 53, 54, 60, 66, 67, 69, 76, 79, 80], "publish": 83, "pull": 2, "puppi": 42, "pure": 67, "purg": [4, 69], "purpos": 53, "push": [2, 34, 35, 52, 53, 54, 63], "put": [32, 34, 44, 67, 71], "py": 1, "python": [0, 1, 5], "python2": 9, "python3": [1, 9], "queri": [3, 66], "question": 83, "queue": [24, 41, 50, 54], "quickli": 3, "quit": [0, 4, 6, 11, 13, 26, 31, 34, 41, 49, 50, 53, 67, 69, 72, 83], "quot": 53, "r": [2, 18, 70], "r23b": 60, "r25b": 0, "r_x86_64_tpoff32": 1, "race": [4, 40, 41, 65], "radic": 53, "rais": 54, "rang": [33, 41], "rapidli": 9, "rather": 53, "ratio": 41, "ration": 41, "raw": 41, "re": [43, 57, 66, 69], "reach": [26, 31, 47], "reachabl": 42, "read": [31, 41, 43, 47, 54], "readi": 1, "readtre": 67, "realiti": 9, "realli": [9, 54], "reason": [0, 4, 9, 22, 27, 47, 54, 69, 83], "rebuilt": [42, 57], "receiv": [53, 54, 58, 67], "receivecallback": 63, "recogn": [53, 67], "recommend": [4, 6, 8, 34, 35, 44, 53, 54, 67, 72], "recompil": 1, "record": 42, "recurs": [30, 31, 58], "recycl": [4, 6, 27, 31, 34, 41, 44, 73], "redesign": 63, "redirect": [67, 72], "reduc": [22, 43], "redund": 53, "redux": 6, "refactor": [53, 57, 58, 59, 60], "refer": [3, 6, 11, 12, 27, 28, 34, 39, 40, 42, 44, 47, 50, 53, 54, 62, 64, 66, 67, 70, 71, 72, 73, 76, 77, 79, 83], "referenc": [34, 41, 42], "referencecopi": 61, "referencecount": 47, "reflect": [30, 32, 34, 44, 53, 63], "refus": 3, "regard": [2, 3], "regardless": [39, 40, 44], "regist": [13, 27, 42, 44, 47, 53, 61, 63, 66, 72, 76, 83], "registercustomobject": [32, 58], "registr": [32, 47, 83], "regular": [32, 40], "reject": [27, 44, 58], "rel": 9, "relai": [42, 59], "relat": [22, 53], "relationship": 32, "releas": [0, 1, 4, 6, 9, 28, 41, 47, 83], "reli": [18, 41, 49, 66, 67, 80], "reload": 39, "reloc": 1, "remain": 53, "remedi": 65, "remot": 3, "remov": [9, 57, 58, 59, 60, 64, 65], "removegcepiloguecallback": 59, "removegcprologuecallback": 59, "removeif": 35, "renam": [57, 58, 61, 63], "repeat": 83, "repeatedli": 39, "repl": 66, "replac": [42, 65, 66, 67], "report": 40, "reportpendingmessag": 59, "repositori": [2, 18], "repres": [4, 13, 31, 41, 53, 83], "represent": 71, "req": 69, "request": 3, "requir": [1, 6, 8, 13, 39, 42, 44, 50, 53, 54, 65, 69], "requirenonnul": 67, "reset": [6, 44], "resetcontext": [4, 40, 44, 57], "resetisol": [4, 40, 57], "resolut": [42, 63], "resolv": [27, 34, 42, 43, 69, 83], "resourc": [1, 4, 13, 16, 28, 31, 36, 40, 42, 47, 50, 54, 66, 67, 73, 76, 77, 80], "resourcenam": 42, "respons": [3, 39, 42, 43, 53], "rest": [3, 42], "restart": [2, 83], "restor": [39, 53, 64], "result": [2, 3, 4, 6, 31, 40, 44, 54, 73, 77], "resume_the_event_loop": 69, "retain": 65, "retir": 28, "return": [30, 31, 32, 34, 39, 41, 42, 44, 50, 53, 54, 57, 67, 69, 70, 71, 76, 80], "reus": [7, 13], "review": [35, 53, 54], "revis": [61, 65], "revisit": 9, "reviv": 9, "revok": 58, "rewrot": 65, "rich": 83, "richer": 83, "rid": 83, "right": [3, 39], "risk": [39, 44], "roi": 9, "role": 83, "root": [21, 26, 30, 41, 42, 43, 65], "rossum": 9, "rough": 53, "roughli": 2, "round": 67, "routin": [20, 25, 42], "rule": [41, 53], "run": [2, 4, 6, 28, 30, 34, 40, 41, 42, 50, 79], "runfin": [34, 66], "runifwaitingfordebugg": 3, "runnabl": 66, "runnowait": 65, "runonc": [65, 69], "runtim": [3, 4, 18, 22, 24, 34, 39, 40, 42, 43, 44, 47, 50, 53, 58, 59, 60, 62, 64, 66, 67, 69, 72, 73, 76, 77, 78, 83], "runtimealreadyclos": 47, "runtimealreadyregist": 47, "runtimeclosefailur": 47, "runtimecreatesnapshotblock": [47, 64], "runtimecreatesnapshotdis": [47, 64], "runtimeleakagedetect": 47, "runtimenotregist": 47, "runtimeopt": 64, "runtimeoutofmemori": 47, "rust": 6, "safe": [4, 27, 31, 40, 53], "safeti": 53, "sai": [9, 30], "same": [0, 4, 17, 40, 41, 42, 44, 53, 54, 64, 67, 83], "samevalu": 56, "sampl": [4, 30, 34, 39, 41, 42, 53, 66, 69], "samplewithoutthi": 53, "samplewiththi": 53, "sandbox": 0, "satisfi": 9, "save": [42, 69], "sb": 66, "scan": 53, "scanner": 77, "scenario": [40, 41, 44, 56, 83], "scene": [4, 13, 27, 66, 71], "schedul": [41, 59], "school": 4, "scope": [13, 17, 41, 61], "scope_info": 53, "scopeinfo": [53, 61], "scratch": [0, 5, 11, 35, 43], "screenshot": 3, "script": [1, 4, 9, 13, 28, 42, 44, 50, 53, 57, 61, 66, 72, 77, 79], "scriptcontext": 53, "scriptcontextt": 53, "scriptfil": 42, "scriptpath": 42, "scriptstr": 42, "sdk": [0, 49, 80], "seal": [41, 65], "sealeden": 65, "seamlessli": 69, "search": 53, "second": [1, 3, 16, 22, 42, 43, 50, 53], "secondli": 53, "section": [0, 42, 43, 53], "secur": [4, 6, 13, 42, 43, 79, 83], "see": [27, 40, 42, 66, 67, 78], "seem": 26, "segfault": [27, 83], "select": [18, 41, 53], "semi": [41, 53], "send": [3, 31, 41, 69], "sensit": [40, 41, 44, 56, 83], "sentenc": [53, 83], "separ": [4, 6, 13, 34], "sequenc": 40, "serializ": 53, "seriou": [9, 11], "serious": [6, 9], "serv": 17, "server": [3, 6, 31, 75], "serverup": 69, "session": 9, "set": [1, 3, 4, 7, 9, 13, 29, 30, 31, 32, 35, 39, 41, 42, 43, 49, 52, 54, 57, 63, 66, 67, 69, 70, 71, 76], "setallowev": 80, "setallownativessyntax": 41, "setasynccallstackdepth": 3, "setautosendgcnotif": [41, 80], "setblackboxpattern": 3, "setcontext": 53, "setconvert": [29, 30, 34, 66, 67, 70], "setcreatesnapshoten": [43, 64], "setcustomflag": 41, "setdebugmodeen": 50, "setdefaultengineguardtimeoutmilli": 80, "setescap": 41, "setexposegc": 41, "setexposeinspectorscript": 41, "setextractfunctionsourcecod": 31, "setfunct": [56, 57], "setinterv": [15, 24, 69, 79], "setjavetlogg": [49, 80], "setjoin": 34, "setjsruntimetyp": [26, 42, 78, 80], "setlibloadinglisten": 39, "setlibraryreload": 39, "setmaxheaps": 41, "setmaxoldspaces": 41, "setmemoryusagethresholdratio": [41, 57], "setmodul": 42, "setnam": [30, 32, 76], "setpauseonexcept": 3, "setpooldaemoncheckintervalmilli": 80, "setpoolidletimeoutsecond": 80, "setpoolmaxs": 80, "setpoolmins": 80, "setpoolshutdowntimeoutsecond": 80, "setposit": 53, "setpromiserejectcallback": 54, "setprototyp": 58, "setprototypeof": 65, "setproxyarrayen": 64, "setproxylisten": [34, 64], "setproxymapen": [31, 34], "setproxyseten": 34, "setpurgeeventloopbeforeclos": [60, 65, 69], "setreflectionobjectfactori": [34, 66], "setrequirerootdirectori": 42, "setresetenginetimeoutsecond": 80, "setresourcenam": [42, 65], "setscriptsourc": [53, 61], "setskipfunctioninobject": 31, "setsnapshotblob": [43, 64], "setsourcecod": [53, 57], "setsourcecodeopt": 61, "setstop": [24, 65], "setstringvalu": 53, "setter": [32, 34, 53, 58, 76, 83], "settimeout": [15, 69, 79, 83], "setusestrict": 41, "setutil": 34, "setv8moduleresolv": 42, "setv8runtim": 53, "setvalu": [30, 32, 53, 76], "setweak": [41, 44], "sh": [1, 42], "share": [0, 1, 4, 40, 42, 53, 54, 69, 83], "sheetj": 28, "shell": [5, 74, 81], "shift": [34, 64], "ship": 3, "short": [32, 33, 35, 41, 53], "should": [34, 50], "show": [3, 4, 34, 41, 42, 53, 54, 66], "showcas": 3, "shut": 83, "side": [4, 6, 17, 41], "siev": 6, "sign": 41, "signatur": [32, 47, 53], "signific": [6, 41], "significantli": [2, 43, 47], "sigsegv": [20, 25], "similar": [34, 44, 72], "simpl": [30, 34, 39, 41, 42, 43, 49, 53, 67, 69, 78], "simplelist": [34, 35], "simplemap": [34, 35], "simpler": 42, "simpleset": [34, 35], "simpli": [53, 67], "simplifi": [4, 53], "simul": [15, 35, 42, 53, 79, 83], "sinc": [2, 9, 75], "singl": [4, 6, 9, 40, 53, 69], "singleton": 17, "sit": 9, "site": 12, "situat": 53, "size": [2, 4, 6, 22, 29, 32, 34, 35, 39, 41, 47, 50], "sjtucaocao": [1, 2, 28], "skip": [20, 25, 29, 31, 34, 58], "slave": 18, "sleep": [50, 69], "sleep_a_whil": 69, "slf4j": 49, "slight": [40, 41, 64], "slightli": 6, "sloppi": 53, "slot": 53, "slow": [6, 32], "slowli": 11, "small": 26, "smaller": 43, "smart": [34, 41], "smartli": 34, "smooth": 83, "smoother": 41, "smoothli": [13, 31], "snapshot": [0, 18, 38, 47, 61], "snapshotblob1": 43, "snapshotblob2": 43, "snippet": [32, 41, 42, 66], "so": [1, 2, 4, 6, 7, 9, 13, 15, 18, 24, 26, 27, 29, 30, 31, 32, 34, 39, 40, 41, 42, 43, 44, 49, 50, 53, 54, 61, 67, 69, 71, 75, 79, 80, 83], "softwar": 18, "solut": [1, 11, 32, 53, 66], "solvabl": 9, "some": [3, 4, 6, 9, 13, 15, 18, 21, 26, 27, 31, 39, 41, 43, 53, 54, 59, 63, 66, 67, 72, 79, 83], "someon": [9, 42], "someth": [9, 53], "sometim": [11, 24, 26, 29, 30, 31, 34, 41, 43, 53, 54, 66], "somewher": 42, "sort": 35, "sourc": [1, 3, 17, 26, 31, 35, 40, 42, 47, 50, 66, 67, 70, 71, 72, 73, 76, 77, 79, 83], "sourcecod": 53, "space": 41, "spawn": 72, "speak": 53, "special": [34, 42, 53], "specif": [26, 41, 54], "specifi": [53, 83], "spectral": 6, "speed": 43, "spend": 9, "spent": 67, "split": 34, "spring": [13, 28, 56, 74, 81], "sqlite3": 42, "src": [1, 43], "stabl": 2, "stack": [31, 53], "stackoverflowerror": 31, "stage": 44, "stai": [24, 34, 39, 69, 83], "stamp": 42, "standard": [27, 42, 62], "star": 28, "start": [4, 11, 17, 26, 31, 43, 50, 53, 59, 66, 69, 83], "start_io_thread_async_initi": 17, "startposit": 53, "startswith": 30, "starttim": 67, "startup": [0, 43], "state": [3, 43, 53], "static": [0, 1, 17, 26, 30, 43, 53, 58, 60, 69], "staticclassen": 58, "staticecho": 53, "statist": [46, 59], "statu": [18, 50, 55], "std": 17, "step": [9, 12, 13, 27, 29, 32, 34, 39, 41, 42, 53, 66, 70, 73, 76, 77], "stick": 9, "still": [9, 43, 50, 53, 66, 83], "stop": [1, 9, 62], "stoptim": 67, "storag": [2, 6, 26], "store": [4, 26, 35, 41, 42, 43, 53, 62], "stori": 53, "str": [34, 53], "stream": [32, 53, 58, 60], "strictequ": 56, "string": [4, 24, 26, 30, 32, 33, 34, 35, 42, 49, 54, 56, 67, 69, 71, 73, 76, 77, 79], "stringarrai": 71, "stringifi": [29, 34, 35, 71], "stringjoin": 34, "stringlist": 71, "stringutil": 34, "stringvalu": 53, "strongli": [53, 67], "structur": [30, 47, 58, 67], "studio": [0, 5, 61, 62, 65], "style": 46, "subclass": [32, 34, 35, 44, 54], "substanti": 31, "substr": 30, "subtract": 43, "success": 83, "successfulli": [0, 2, 3, 26], "sudo": [18, 42], "suffer": 9, "suit": 7, "suitabl": 76, "summari": [4, 6], "super": [30, 67], "supplier": 53, "support": [0, 1, 2, 4, 8, 9, 14, 17, 19, 20, 25, 28, 32, 33, 34, 35, 39, 41, 42, 43, 47, 50, 52, 53, 57, 58, 59, 60, 61, 63, 64, 65, 75, 78, 83], "suppos": [9, 33, 39, 54], "suppresswarn": 30, "sure": [1, 2, 9, 17, 31, 41, 42, 69, 79], "surpris": 9, "surround": 40, "swap": 64, "swc": 42, "swc4j": 28, "switch": [3, 28, 39, 40, 44, 57], "symbol": [21, 29, 32, 34, 42, 47, 58, 60, 63], "symbol_level": 1, "symboltyp": 53, "sync": 4, "synchron": [6, 40, 83], "system": [4, 8, 11, 26, 28, 34, 39, 42, 47, 49, 64, 66, 67, 69, 70, 71, 73, 75, 76, 77], "system_temporary_directori": 4, "t": [0, 3, 4, 9, 17, 26, 27, 28, 30, 31, 32, 34, 39, 40, 41, 42, 43, 47, 49, 50, 53, 77, 78, 80, 83], "tabl": [42, 62], "take": [2, 4, 6, 9, 11, 27, 33, 34, 41, 42, 43, 53, 57, 59, 66, 67, 69, 72, 77, 83], "target": [3, 7, 31, 32, 43, 67, 83], "target_cpu": 1, "target_o": 1, "task": [24, 41, 54, 57], "team": 9, "teardown": 65, "technic": [43, 53, 78], "technologi": 6, "tediou": [4, 13, 83], "tell": [3, 27, 34, 39, 41, 42, 69, 76], "temp": 39, "temporari": 64, "temporarili": 9, "term": [4, 50, 53, 67], "termin": [47, 48], "terminateexecut": [50, 56, 83], "test": [1, 2, 4, 5, 6, 9, 16, 17, 18, 28, 34, 40, 42, 43, 53, 54, 56, 66, 69, 75, 79], "testcrash": 26, "testexpress": 69, "testfrommodul": 42, "testfunct": 53, "testintercept": 76, "testinterceptor": 76, "testjavaflavor": 67, "testjsflavor": 67, "testlogg": 49, "testnam": 67, "testopt": 53, "testpojo": 30, "testproperti": 53, "testscriptjavaflavor": 67, "testscriptjsflavor": 67, "teststream": 53, "testv8valuedataview": 41, "testv8valuetypedarrai": 41, "than": [6, 11, 31, 43, 50, 53, 79, 83], "thank": 28, "thei": [4, 9, 32, 35, 39, 41, 42, 44, 47, 54, 67, 78], "them": [0, 3, 34, 41, 42, 53, 67], "there_are_more_tasks_in_task_queu": 69, "there_are_no_more_task": 69, "thi": [0, 3, 4, 9, 11, 12, 13, 18, 21, 24, 26, 27, 28, 30, 31, 32, 34, 39, 40, 41, 42, 43, 54, 60, 67, 69, 70, 76, 78, 83], "thin": 1, "thing": [13, 31, 32, 41, 42], "think": [9, 11, 14, 16, 17, 20, 43], "thisobject": 53, "thisobjectrequir": [53, 58], "those": [1, 3, 4, 13, 27, 41, 42, 53, 66], "though": [3, 8, 47, 53, 72, 83], "thought": [9, 11], "thread": [4, 6, 9, 17, 26, 41, 47, 50, 54, 57, 58, 66, 72, 83], "threadcount": 26, "threadisol": 26, "threadlist": 26, "threshold": 41, "through": [42, 53], "throughout": 53, "throw": [26, 30, 31, 34, 42, 50, 53, 54, 67, 69, 79], "throwabl": [26, 49, 77], "throwerror": 64, "thrown": [40, 41, 42, 44, 50, 53], "till": 50, "time": [6, 9, 17, 32, 34, 39, 42, 43, 50, 67, 72], "timeout": [50, 54], "timer": 69, "timestamp": 7, "timeunit": [50, 69], "tini": [31, 41], "tip": [3, 28, 36], "tl": 9, "tmp": 34, "toarrai": [34, 71], "toclon": [53, 61], "todo": [28, 36], "tofil": 69, "togeth": [3, 43, 69], "tojson": [34, 64], "tojsonstr": 53, "toler": 53, "tolowercas": 30, "tom": 30, "tomap": 32, "too": [9, 17, 42], "toobject": 34, "took": 83, "tool": [0, 1, 2, 5, 17, 18, 23, 28, 43, 56], "toolchain": 18, "toolkit": 43, "top": [13, 42, 53, 83], "topath": 34, "topic": [31, 54], "toprimit": 29, "tostr": [34, 42, 52, 53, 65, 66, 67, 70, 77, 79], "touch": [34, 40], "touchabl": 32, "tov8valu": [29, 30, 67], "tp": [6, 9], "track": [4, 41, 63, 65], "trade": 4, "tradit": 42, "transform": 28, "transpar": [30, 34, 53, 83], "transpil": 28, "treat": [34, 39, 41], "tri": [4, 9, 21], "trick": [26, 69], "tricki": 53, "trigger": [17, 40, 41, 53], "troubleshoot": [20, 28, 36], "true": [1, 11, 17, 24, 29, 31, 34, 39, 41, 42, 43, 50, 53, 66, 67, 69, 70, 71, 75, 77], "try": [4, 9, 11, 24, 26, 28, 30, 34, 40, 42, 43, 44, 50, 52, 53, 54, 66, 67, 69, 72, 73, 76, 77, 78, 79], "tr\u00e8": 53, "tsx": 28, "turn": [1, 3, 4, 35, 41, 57, 64], "tutori": [28, 66], "tweak": 30, "two": [34, 35, 41], "txt": 9, "type": [6, 13, 29, 30, 31, 32, 34, 35, 39, 40, 41, 42, 47, 56, 57, 59, 60, 67], "typescript": 28, "typic": [4, 35, 42, 50, 53], "ubuntu": [0, 2, 18, 42, 57, 60, 64, 75], "uint16_t": 41, "uint16arrai": [32, 41], "uint32_t": 41, "uint32arrai": [32, 41], "uint64_t": 41, "uint8_t": 41, "uint8arrai": [32, 41], "uint8clampedarrai": [32, 41], "ultim": 3, "unbind": [53, 58, 83], "unbindfunct": [53, 58, 63], "unbindproperti": [53, 58, 63], "uncertain": 44, "uncertainti": 9, "uncheck": 30, "undefin": [3, 31, 34, 42, 53, 66, 67, 77], "under": [9, 41, 44, 53, 66], "underli": 67, "understand": 9, "unexpect": [9, 31, 53, 65], "unfortun": [4, 9], "unhandl": 44, "unhandledreject": 54, "uniqueid": 3, "unit": [4, 16], "univers": 57, "unix": 75, "unknown": 47, "unless": [6, 41, 44, 83], "unload": [4, 38, 42, 83], "unloadlibrari": [39, 58], "unlock": [40, 67], "unmanag": [4, 41], "unmodifiablelist": 29, "unoffici": 9, "unpack": 4, "unrealist": 31, "unregist": [66, 72, 76], "unregistercustomobject": 58, "unregistr": 47, "unrel": [4, 6], "unrestrict": 41, "unsatisfiedlinkerror": 39, "unshift": [34, 64], "unsign": 41, "unstabl": 39, "until": 41, "untouch": 53, "unzip": 42, "up": [2, 3, 4, 6, 13, 34, 40, 41, 42, 43, 58, 59, 66, 69], "updat": [2, 18, 39, 43, 53, 57, 58, 59, 60, 62, 65], "upgrad": [3, 8, 9, 11, 18, 46, 57, 58, 59, 60, 61, 62, 63, 64, 65], "upon": 32, "url": 4, "us": [1, 3, 4, 6, 8, 11, 17, 26, 27, 31, 33, 39, 41, 42, 43, 44, 49, 53, 66, 72, 83], "usabl": 43, "usag": [43, 83], "use_custom_libcxx": 1, "use_main_context_default_load": 42, "user": [27, 31, 34, 42, 49, 72, 77, 80], "userdefin": 53, "usr": [1, 18], "usual": [0, 30, 34, 42, 50, 53, 54, 66, 69], "util": [26, 34], "v": [1, 5, 9, 28, 42], "v0": [55, 56, 57, 58, 75, 83], "v1": [3, 55, 59, 75], "v10": [55, 64], "v11": [55, 75], "v12": [2, 28], "v14": [55, 57, 58], "v16": [55, 60], "v17": [0, 65], "v18": [55, 62, 63], "v2": [9, 55, 75], "v20": [28, 55, 64, 65], "v3": [8, 26, 42, 55, 75], "v4": 9, "v6": 9, "v7": 8, "v7a": 1, "v8": [2, 3, 5, 7, 9, 11, 13, 14, 17, 20, 22, 25, 27, 28, 31, 32, 34, 36, 39, 40, 43, 44, 46, 47, 50, 55, 66, 68, 69, 70, 71, 72, 74, 75, 76, 77, 80, 81], "v8_enable_i18n_support": 1, "v8_enable_pointer_compress": 1, "v8_enable_sandbox": 1, "v8_flag": 41, "v8_home": [0, 1], "v8_monolith": 1, "v8_static_librari": 1, "v8_target_cpu": 1, "v8_use_external_startup_data": 1, "v8a": 1, "v8allow": [34, 59], "v8awaitmod": [61, 65], "v8bindenabl": 58, "v8bindingenabl": [53, 58], "v8block": [34, 59], "v8convert": 59, "v8customobject": 32, "v8data": 83, "v8errortempl": 64, "v8flag": [58, 65], "v8function": [13, 53, 54, 58, 59, 66], "v8functioncallback": [57, 63], "v8gen": 1, "v8getter": [34, 59], "v8guard": [50, 65], "v8host": [24, 26, 28, 30, 39, 41, 42, 43, 50, 57, 58, 59, 66, 67, 69, 73, 76, 77], "v8intern": 59, "v8locker": [40, 44, 56], "v8modul": [42, 57, 61, 64], "v8modulecount": 47, "v8modulereferr": 42, "v8notifi": 41, "v8properti": [13, 53, 57, 58, 59, 83], "v8runtim": [4, 6, 26, 28, 29, 30, 32, 34, 35, 40, 42, 43, 44, 50, 52, 53, 54, 56, 57, 58, 59, 61, 64, 65, 66, 67, 70, 71, 72, 73, 76, 77, 78, 79], "v8runtimeobserveraveragecallbackcontextcount": 59, "v8runtimeobserveraveragereferencecount": 59, "v8runtimeobserveraveragev8modulecount": 59, "v8runtimeopt": [43, 59], "v8runtimesett": 53, "v8scope": [41, 44, 58], "v8script": [57, 61], "v8setter": [34, 59], "v8statisticsfutur": 65, "v8stringexecutor": 61, "v8valu": [30, 31, 54, 57, 58, 60, 67, 71, 77, 83], "v8valuearrai": 53, "v8valuebiginteg": [60, 65], "v8valueboolean": 67, "v8valuebooleanobject": 64, "v8valuebuiltinobject": [58, 64, 65], "v8valuebuiltinreflect": 64, "v8valuebuiltinsymbol": 58, "v8valuedoubl": 65, "v8valuedoubleobject": 64, "v8valueerror": [54, 64], "v8valueerrortyp": 64, "v8valuefunct": [34, 42, 53, 57, 58, 69, 79], "v8valuefunctiondecim": 79, "v8valueinteg": [52, 53, 65, 67], "v8valueintegerobject": 64, "v8valuelong": 65, "v8valuelongobject": 64, "v8valuemap": 64, "v8valueobject": [30, 34, 41, 42, 53, 58, 60, 65, 76, 79, 83], "v8valueobjectdecim": 79, "v8valueprimit": 83, "v8valuepromis": [54, 57, 58], "v8valuepromiseresolv": 54, "v8valueproxi": 58, "v8valueset": 64, "v8valuesharedarraybuff": 58, "v8valuestr": [52, 67], "v8valuestringobject": 64, "v8valuesymboltyp": 53, "v8valuetemp": 30, "v8valueweakmap": 56, "v8valueweakset": 56, "v8virtualescapablevalu": 58, "v8virtualiter": 63, "v9": [55, 75], "vagu": 4, "val": 75, "valid": [4, 41, 53, 66], "valu": [4, 28, 30, 31, 32, 33, 36, 39, 41, 42, 47, 52, 56, 57, 58, 59, 67, 76], "valueof": 53, "van": 9, "var": [50, 53, 69], "vararg": [34, 53, 57, 60], "variabl": [29, 40, 42, 53, 59, 70, 71, 76], "variant": 43, "variou": [0, 63, 83], "vcbuild": 1, "ve": [9, 11, 43], "verbos": [67, 83], "veri": [4, 26, 34, 42, 44, 53, 77, 78], "verifi": [4, 42, 53], "verifynostrongbaseobject": 61, "versa": 31, "version": [1, 3, 4, 8, 11, 28, 34, 42, 43, 55, 75, 78], "via": [3, 4, 34, 41, 42, 44, 50, 53, 54, 66, 69, 76], "vice": 31, "view": 56, "violat": 4, "virtual": [34, 42, 60], "visibl": [4, 53], "visit": [3, 17, 23, 28, 79], "visual": [0, 5, 61, 62, 65], "vm": [4, 26, 42, 44, 64], "void": [26, 30, 32, 34, 49, 53, 54, 66, 67, 69, 76, 79], "voil\u00e0": [3, 34, 69], "voluntarili": 42, "vs2022": 1, "vulner": [6, 43, 44], "w": 3, "wa": [9, 42, 83], "wai": [0, 4, 13, 27, 28, 29, 30, 34, 35, 39, 41, 42, 43, 44, 50, 53, 54, 58, 67, 69, 72, 76, 80], "wait": [2, 3, 59, 69], "waitforenginemaxretrycount": 60, "want": [4, 8, 9, 13, 27, 31, 39, 40, 41, 43, 47, 53, 54, 55, 66], "warm": 6, "warn": [1, 49, 57], "wasm": 5, "watch": 9, "weak": 4, "weakmap": 52, "weakset": 52, "web": [3, 41, 44], "webassembli": 6, "websit": 3, "websocket": 3, "week": 83, "weight": 41, "welcom": [2, 77], "well": [3, 9, 12, 27, 34, 35, 41, 83], "were": [9, 26], "what": [3, 9, 10, 16, 20, 31, 41, 42, 67, 83], "whatev": [4, 27, 40, 41, 53, 54, 66], "when": [1, 4, 6, 9, 20, 21, 25, 34, 41, 42, 43, 44, 50, 53, 54, 60, 62, 83], "where": [13, 14, 20, 39, 42, 43, 67, 83], "wherea": [31, 41], "whether": [53, 58], "which": [0, 3, 4, 6, 7, 9, 13, 16, 18, 27, 28, 31, 32, 34, 39, 41, 42, 43, 50, 53, 66, 67, 70, 76, 78, 79, 83], "while": [1, 2, 34, 50, 69, 77], "who": [9, 42], "whole": [6, 34, 68, 81], "whose": 44, "why": [3, 13, 14, 20, 25, 26, 39, 41, 79], "win32": 42, "windbg": 0, "window": [6, 11, 13, 21, 28, 56, 67, 83], "wise": [2, 18, 53, 67, 75], "wish": [9, 83], "within": 41, "without": [1, 2, 3, 4, 27, 32, 34, 39, 40, 43, 53, 59, 63, 66, 67, 83], "won": [27, 31, 39], "word": [4, 41, 69], "work": [3, 4, 9, 12, 13, 26, 27, 28, 39, 40, 41, 42, 50, 53, 54, 67, 69, 83], "workaround": [17, 42], "worker": 41, "workflow": 2, "working_directori": [42, 69, 79], "workingdirectori": 42, "worri": [31, 39, 42, 50, 69], "wors": 31, "would": [9, 11, 17], "wrap": 41, "wrapper": 67, "writabl": 34, "write": [11, 30, 31, 41, 83], "written": [6, 31, 43], "wsl2": [0, 2], "x": [9, 28, 29, 32, 34, 35, 42, 53, 55, 71], "x64": [1, 42], "x86": [1, 28, 58, 59, 75], "x86_64": [2, 26, 28, 42, 59, 75], "xcode": 0, "xml": [9, 60], "xms64m": 41, "xmx64m": 41, "y": [18, 29, 32, 34, 35, 71], "ye": [3, 4, 12, 18, 23, 27, 31, 32, 34, 39, 40, 42, 52, 53, 75, 79], "year": [9, 83], "yet": 27, "you": [1, 2, 3, 8, 9, 13, 16, 23, 27, 28, 30, 34, 40, 41, 43, 49, 53, 54, 55, 66, 79, 80, 83], "your": [3, 9, 18, 34, 35, 39, 43, 44, 49, 80, 83], "z": [34, 35], "zero": [4, 41], "zombi": 41, "zoneddatetim": [33, 35, 60, 61]}, "titles": ["Build Javet", "Build Javet from Scratch", "Build Javet with Docker", "Debug with Chrome Developer Tools", "Javet Design", "Development", "Javet Performance", "Test Javet", "Development Tools", "History with J2V8", "Background", "What is the Motivation?", "Can Native Image be Supported?", "How to Think in Javet?", "Development", "Where are ES6 API in V8 Mode?", "Where are the Examples?", "Why is the Inspector Disabled in Node.js Mode?", "Can Javet Support Legacy Linux?", "Environment", "FAQ", "A dynamic link library (DLL) initialization routine failed", "Can i18n be Supported?", "Can I Debug Javet in Chrome DevTools?", "Can Node.js Event Loop be Skipped?", "Troubleshooting", "SIGSEGV at createV8Runtime() in V8 Mode on AWS", "Why Node.js Crashes When being Closed?", "Javet", "Bridge Converter", "Custom Converter", "Converters", "Object Converter", "Primitive Converter", "Proxy Converter", "Proxy Plugins", "Reference", "API Reference", "Resource Management", "Load and Unload", "Know the Lock", "Memory Management", "Modularization", "Snapshot", "Best Practices", "Tips", "TODO List", "Error Codes", "Troubleshooting", "Logging", "Termination", "V8 Values", "V8 Collection", "V8 Function", "V8 Promise", "Release Notes", "Release Notes 0.7.x", "Release Notes 0.8.x", "Release Notes 0.9.x", "Release Notes 1.0.x", "Release Notes 1.1.x", "Release Notes 2.0.x", "Release Notes 2.1.x", "Release Notes 2.2.x", "Release Notes 3.0.x", "Release Notes 3.1.x", "Access the Whole JVM", "Expose JsonNode in V8", "Advanced", "Interact with Node.js", "Java and JavaScript Interop", "Object Converter", "Javet Engine Pool", "Hello Javet", "Basic", "Installation", "Interception", "Javet Shell", "Node.js Mode and V8 Mode", "Polyfill", "Spring Integration", "Tutorial", "Migration Guides", "Migrate from J2V8"], "titleterms": {"0": [56, 57, 58, 59, 60, 61, 62, 63, 64, 65], "1": [3, 26, 40, 41, 49, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 69, 73], "10": [57, 58, 61], "11": 58, "12": 58, "13": 58, "14": 58, "2": [3, 26, 40, 41, 49, 53, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 67, 69], "2022": 8, "21": 59, "3": [3, 8, 41, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 69], "4": [3, 56, 57, 58, 59, 60, 61, 63, 64, 65], "5": [57, 58, 59, 60, 63, 65], "6": [57, 58, 59, 60, 63, 65], "7": [56, 57, 58, 59, 60, 61, 63, 65], "8": [8, 57, 58, 60, 61, 64], "9": [56, 57, 58, 59, 60, 61, 64], "A": 21, "If": 69, "It": 32, "On": [39, 42], "One": 53, "That": 69, "There": 3, "With": 50, "abi": 59, "about": [50, 53], "access": 66, "add": 35, "advanc": 68, "aggress": 41, "all": 2, "alreadi": 39, "altern": 41, "an": 70, "analysi": 26, "android": [0, 1, 2, 59, 75], "anonym": [34, 58], "anoth": 39, "api": [15, 37], "approach": 67, "ar": [15, 16], "architectur": 4, "argument": 53, "arm64": [1, 2, 59], "arrai": [29, 71], "arraybuff": 41, "autom": 9, "automat": [41, 50, 53], "avoid": 53, "aw": 26, "await": [27, 41], "background": [10, 27], "backward": 47, "basic": 74, "being": 27, "benchmark": 6, "benefit": 43, "best": 44, "between": 42, "bind": [31, 53], "bindfunct": 53, "birth": 56, "bless": 83, "blog": 28, "boolean": [29, 53], "both": 53, "bridg": 29, "bug": 56, "build": [0, 1, 2, 9], "built": [31, 35, 42], "c": 41, "call": 53, "callback": 54, "can": [12, 18, 22, 23, 24, 31, 39, 53], "cast": 29, "caus": 27, "cdt": 3, "challeng": 41, "chang": 53, "chrome": [3, 23], "circular": 31, "class": [34, 70], "classload": [39, 58], "cleanup": 66, "close": [27, 69], "co": 78, "code": [47, 53, 57], "codestr": 53, "collect": 52, "commun": 8, "comparison": [6, 31, 40, 53], "compat": [47, 75], "conclus": 67, "config": 31, "configur": 80, "context": [4, 53], "convers": [53, 57, 83], "convert": [29, 30, 31, 32, 33, 34, 58, 71], "core": 59, "coroutin": 40, "count": 53, "crash": 27, "creat": [30, 35, 43], "createv8runtim": 26, "cross": 4, "custom": [3, 30, 32, 34, 39, 59], "deal": 42, "debug": [3, 23, 50, 56], "decim": 79, "declar": [13, 57], "defin": [30, 53], "demand": [39, 42], "demo": 3, "depend": [28, 75], "deploi": [9, 39], "deploy": 39, "deprec": 2, "design": [4, 30], "detect": 4, "develop": [3, 5, 8, 14], "devtool": 23, "direct": 67, "disabl": [17, 53], "dll": 21, "docker": 2, "document": 28, "doe": [3, 31, 32, 34, 40], "dsl": [28, 75], "dure": 69, "dynam": [21, 34, 42, 66], "effect": 31, "elf": 42, "empow": 58, "enforc": 26, "engin": [4, 44, 50, 56, 72], "enhanc": 32, "enum": [34, 70], "environ": [0, 2, 19, 26, 39], "error": [47, 57], "es6": [15, 83], "escap": 41, "event": [24, 27, 57], "exampl": [16, 42, 54], "execut": 13, "executor": 13, "exist": 78, "explicit": 40, "expos": 67, "exposur": 67, "express": 2, "f": 54, "fail": 21, "faq": [3, 20], "featur": [0, 28, 34], "file": [2, 34, 39], "first": [57, 59], "fix": 56, "flag": 0, "flavor": 67, "fly": 53, "foreach": 57, "from": [1, 13, 32, 33, 39, 41, 83], "full": 2, "function": [13, 31, 34, 53, 57, 58], "functionnam": 53, "gap": 42, "gc": [41, 57], "github": 2, "go": 30, "goal": 72, "gradl": [8, 28, 75], "groovi": [28, 75], "guard": 56, "guid": [82, 83], "handl": 53, "handshak": 3, "hang": 69, "hello": [28, 73], "highlight": [6, 32], "histori": 9, "hotfix": 57, "how": [13, 29, 32, 34, 41, 43, 50, 53, 69], "hub": 2, "i": [3, 11, 17, 23, 53, 69], "i18n": 22, "ignor": 31, "ijavetlogg": 49, "imag": 12, "implement": 49, "implicit": 40, "import": [4, 42, 53], "improv": 6, "index": 57, "info": 53, "initi": [21, 26], "inject": [49, 70, 80], "insid": 31, "inspector": 17, "instal": 75, "instanc": 34, "int": 29, "integ": 29, "integr": 80, "intellij": 8, "interact": 69, "intercept": [4, 13, 53, 57, 76], "interfac": [34, 58, 66], "intern": [3, 42], "interop": 70, "invok": 53, "isol": 4, "issu": 9, "j": [1, 3, 4, 6, 8, 17, 24, 27, 42, 44, 57, 59, 61, 67, 69, 73, 78, 79, 83], "j2v8": [9, 83], "jar": 39, "java": [6, 29, 32, 33, 53, 58, 67, 70], "javascript": [29, 32, 33, 53, 69, 70], "javet": [0, 1, 2, 4, 6, 7, 13, 18, 23, 28, 39, 40, 42, 43, 59, 72, 73, 77, 83], "javet_disable_pku": 26, "javetcallbackcontext": 53, "javetproxyconvert": 34, "javetproxypluginarrai": 35, "javetproxyplugindefault": 35, "javetproxypluginlist": 35, "javetproxypluginmap": 35, "javetproxypluginset": 35, "jdk": 8, "jni": 1, "jsonnod": 67, "jvm": [41, 66], "kei": 53, "know": 40, "kotlin": [28, 75], "latest": 9, "leak": 4, "learn": 13, "legaci": 18, "lib": 39, "librari": [1, 21, 39, 59], "licens": 28, "lifecycl": 54, "limit": 43, "link": 21, "linux": [0, 1, 2, 9, 18, 42, 75], "list": [29, 34, 46, 71], "listen": 39, "live": [3, 56], "load": [39, 42, 59], "locat": 39, "lock": 40, "locker": 56, "log": 49, "logger": 49, "long": 29, "loop": [24, 57], "lowmemorynotif": [27, 41], "mac": [1, 58, 59, 75], "maco": 0, "main": 69, "major": 28, "manag": [38, 41, 44, 53], "manual": [41, 42, 50, 53], "map": [34, 53, 71], "maven": [8, 9, 28, 75], "mean": 40, "memori": [4, 41], "migrat": [82, 83], "mismatch": 53, "mksnapshot": 43, "mode": [3, 4, 6, 15, 17, 26, 34, 40, 42, 50, 73, 78, 79], "modul": [4, 42, 57, 58, 83], "modular": 42, "motiv": [11, 72], "multi": [2, 4, 58], "name": 34, "nativ": [12, 31, 39, 42, 57], "new": 35, "node": [1, 3, 4, 6, 8, 17, 24, 27, 42, 44, 57, 59, 61, 69, 73, 78, 79, 83], "noderuntim": 27, "note": [55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65], "null": 31, "o": [1, 58, 59, 75], "object": [29, 30, 31, 32, 34, 53, 66, 71], "one": 2, "onli": 9, "open": 3, "option": [8, 41], "pass": 53, "passiv": 41, "patch": [1, 42], "path": 34, "pattern": [34, 70], "perform": [6, 40], "plai": 66, "platform": 4, "plugin": 35, "pojo": 30, "pojoconvert": 30, "polyfil": [58, 79], "pool": [4, 44, 50, 72, 78], "possibl": 69, "practic": 44, "pre": 42, "prepar": [1, 29, 34, 70], "primit": [4, 33, 57, 83], "print": 73, "privat": 58, "process": [4, 58], "promis": [54, 58], "properti": [13, 53, 57, 58], "proxi": [31, 34, 35, 58], "python": 8, "quick": 28, "readfileasync": 54, "readi": 30, "rebuild": 42, "recommend": 41, "refer": [4, 36, 37, 41], "regist": [32, 54], "registerjavamethod": 83, "registr": 53, "reject": 54, "releas": [55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65], "remov": [35, 39], "repositori": 9, "requir": 4, "resolv": [54, 58], "resourc": [38, 41, 44, 53], "root": 27, "routin": 21, "run": 3, "runfin": 41, "runtim": 41, "safe": 58, "safeti": [4, 31, 40], "sampl": 76, "scope": [53, 58], "scratch": 1, "script": 3, "secur": 44, "server": 69, "set": [26, 34, 53], "shell": [3, 77], "sigsegv": 26, "skip": [24, 39], "snapshot": 43, "solut": [26, 27], "sourc": [53, 57], "sponsor": 28, "spring": 80, "stage": 2, "start": 28, "static": [34, 70], "statist": 41, "step": [49, 69], "string": [29, 53], "stringbuild": [34, 66, 70], "structur": 31, "studio": 8, "summari": [53, 66], "support": [3, 12, 18, 22], "suppress": 39, "symbol": 53, "symptom": 26, "synthet": 42, "system": [9, 41], "take": [31, 39], "termin": 50, "test": [7, 13, 67, 76], "thi": 53, "think": 13, "thread": [40, 44, 69], "time": [57, 59], "tip": [45, 53], "todo": 46, "tool": [3, 8], "troubleshoot": [25, 48], "try": 41, "tutori": 81, "type": [4, 53, 83], "unhandl": 54, "unhandledreject": 27, "unit": 13, "unload": 39, "unmodifi": 29, "unregist": 53, "usag": [29, 32, 34, 41, 52, 72, 78], "user": 53, "usual": 3, "v": [4, 6, 53], "v1": 58, "v10": [60, 61], "v11": [61, 62, 63, 64], "v12": [64, 65], "v16": 59, "v18": 61, "v2": 58, "v8": [0, 1, 4, 6, 15, 26, 41, 42, 51, 52, 53, 54, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 67, 73, 78, 79, 83], "v8convert": 34, "v8flag": 41, "v8function": [34, 76, 83], "v8host": 78, "v8locker": 83, "v8properti": [34, 76], "v8runtim": [13, 41, 83], "v8valu": 53, "v8valuearrai": 52, "v8valueglobalobject": 13, "v8valuemap": 52, "v8valueset": 52, "v9": [57, 58, 59, 60], "valu": [51, 53], "variabl": [0, 26, 39], "version": 9, "via": [31, 43], "virtual": [4, 40], "visual": 8, "wasm": 6, "weak": 41, "what": [11, 40, 53, 69], "when": [27, 31], "where": [15, 16], "whole": 66, "why": [1, 9, 17, 27, 47, 53, 83], "window": [0, 1, 2, 9, 42, 75], "without": [41, 50], "work": [32, 34, 43], "worker": 69, "wrap": 67, "x": [56, 57, 58, 59, 60, 61, 62, 63, 64, 65], "x86_64": [1, 58]}}) \ No newline at end of file diff --git a/docs/tutorial/advanced/access_the_whole_jvm.html b/docs/tutorial/advanced/access_the_whole_jvm.html index 3b35e6825..ed60dfe72 100644 --- a/docs/tutorial/advanced/access_the_whole_jvm.html +++ b/docs/tutorial/advanced/access_the_whole_jvm.html @@ -6,7 +6,7 @@ - Access the Whole JVM - Javet 3.1.3 documentation + Access the Whole JVM - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/tutorial/advanced/expose_json_node_in_v8.html b/docs/tutorial/advanced/expose_json_node_in_v8.html index c9e2b6234..694a8fd56 100644 --- a/docs/tutorial/advanced/expose_json_node_in_v8.html +++ b/docs/tutorial/advanced/expose_json_node_in_v8.html @@ -6,7 +6,7 @@ - Expose JsonNode in V8 - Javet 3.1.3 documentation + Expose JsonNode in V8 - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/tutorial/advanced/index.html b/docs/tutorial/advanced/index.html index 6b5fbaacb..78aed1aa4 100644 --- a/docs/tutorial/advanced/index.html +++ b/docs/tutorial/advanced/index.html @@ -6,7 +6,7 @@ - Advanced - Javet 3.1.3 documentation + Advanced - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/tutorial/advanced/interact_with_node_js.html b/docs/tutorial/advanced/interact_with_node_js.html index a1f5c3828..dabeda09d 100644 --- a/docs/tutorial/advanced/interact_with_node_js.html +++ b/docs/tutorial/advanced/interact_with_node_js.html @@ -6,7 +6,7 @@ - Interact with Node.js - Javet 3.1.3 documentation + Interact with Node.js - Javet 3.1.4 documentation @@ -125,7 +125,7 @@
    @@ -151,7 +151,7 @@
    - Javet 3.1.3 documentation + Javet 3.1.4 documentation @@ -250,6 +250,7 @@
  • A dynamic link library (DLL) initialization routine failed
  • Can i18n be Supported?
  • Can I Debug Javet in Chrome DevTools?
  • +
  • Can Node.js Event Loop be Skipped?
  • SIGSEGV at createV8Runtime() in V8 Mode on AWS
  • Why Node.js Crashes When being Closed?
  • @@ -518,7 +519,7 @@

    What If Node.js Hangs during Close()? +

    diff --git a/docs/tutorial/advanced/java_and_javascript_interop.html b/docs/tutorial/advanced/java_and_javascript_interop.html index f8dc72e66..6bd8d02fb 100644 --- a/docs/tutorial/advanced/java_and_javascript_interop.html +++ b/docs/tutorial/advanced/java_and_javascript_interop.html @@ -6,7 +6,7 @@ - Java and JavaScript Interop - Javet 3.1.3 documentation + Java and JavaScript Interop - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/tutorial/advanced/object_converter.html b/docs/tutorial/advanced/object_converter.html index 4d46ee60f..88d6935ee 100644 --- a/docs/tutorial/advanced/object_converter.html +++ b/docs/tutorial/advanced/object_converter.html @@ -6,7 +6,7 @@ - Object Converter - Javet 3.1.3 documentation + Object Converter - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/tutorial/basic/engine_pool.html b/docs/tutorial/basic/engine_pool.html index 9ae0a1e88..420f6dc59 100644 --- a/docs/tutorial/basic/engine_pool.html +++ b/docs/tutorial/basic/engine_pool.html @@ -6,7 +6,7 @@ - Javet Engine Pool - Javet 3.1.3 documentation + Javet Engine Pool - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/tutorial/basic/hello_javet.html b/docs/tutorial/basic/hello_javet.html index d6bb402db..e5eac18fb 100644 --- a/docs/tutorial/basic/hello_javet.html +++ b/docs/tutorial/basic/hello_javet.html @@ -6,7 +6,7 @@ - Hello Javet - Javet 3.1.3 documentation + Hello Javet - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/tutorial/basic/index.html b/docs/tutorial/basic/index.html index 5b2ff3a8e..436ee4c3f 100644 --- a/docs/tutorial/basic/index.html +++ b/docs/tutorial/basic/index.html @@ -6,7 +6,7 @@ - Basic - Javet 3.1.3 documentation + Basic - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/tutorial/basic/installation.html b/docs/tutorial/basic/installation.html index 9b5a167ee..00c17cd16 100644 --- a/docs/tutorial/basic/installation.html +++ b/docs/tutorial/basic/installation.html @@ -6,7 +6,7 @@ - Installation - Javet 3.1.3 documentation + Installation - Javet 3.1.4 documentation @@ -125,7 +125,7 @@
    @@ -151,7 +151,7 @@
    - Javet 3.1.3 documentation + Javet 3.1.4 documentation @@ -250,6 +250,7 @@
  • A dynamic link library (DLL) initialization routine failed
  • Can i18n be Supported?
  • Can I Debug Javet in Chrome DevTools?
  • +
  • Can Node.js Event Loop be Skipped?
  • SIGSEGV at createV8Runtime() in V8 Mode on AWS
  • Why Node.js Crashes When being Closed?
  • @@ -315,28 +316,28 @@

    Maven <dependency> <groupId>com.caoccao.javet</groupId> <artifactId>javet</artifactId> - <version>3.1.3</version> + <version>3.1.4</version> </dependency> <!-- Linux (arm64) --> <dependency> <groupId>com.caoccao.javet</groupId> <artifactId>javet-linux-arm64</artifactId> - <version>3.1.3</version> + <version>3.1.4</version> </dependency> <!-- Mac OS (x86_64 and arm64) --> <dependency> <groupId>com.caoccao.javet</groupId> <artifactId>javet-macos</artifactId> - <version>3.1.3</version> + <version>3.1.4</version> </dependency>

    <properties>
    -  <javet.version>3.1.3</javet.version>
    +  <javet.version>3.1.4</javet.version>
     </properties>
     
     <profiles>
    @@ -414,11 +415,11 @@ 

    Maven

    Gradle Kotlin DSL

    -
    implementation("com.caoccao.javet:javet:3.1.3") // Linux and Windows (x86_64)
    -implementation("com.caoccao.javet:javet-linux-arm64:3.1.3") // Linux (arm64)
    -implementation("com.caoccao.javet:javet-macos:3.1.3") // Mac OS (x86_64 and arm64)
    -implementation("com.caoccao.javet:javet-android-node:3.1.3") // Android Node (arm, arm64, x86 and x86_64)
    -implementation("com.caoccao.javet:javet-android-v8:3.1.3") // Android V8 (arm, arm64, x86 and x86_64)
    +
    implementation("com.caoccao.javet:javet:3.1.4") // Linux and Windows (x86_64)
    +implementation("com.caoccao.javet:javet-linux-arm64:3.1.4") // Linux (arm64)
    +implementation("com.caoccao.javet:javet-macos:3.1.4") // Mac OS (x86_64 and arm64)
    +implementation("com.caoccao.javet:javet-android-node:3.1.4") // Android Node (arm, arm64, x86 and x86_64)
    +implementation("com.caoccao.javet:javet-android-v8:3.1.4") // Android V8 (arm, arm64, x86 and x86_64)
     
    @@ -428,11 +429,11 @@

    Gradle Kotlin DSLval os = OperatingSystem.current() val cpuArch = System.getProperty("os.arch") if (os.isMacOsX) { - implementation("com.caoccao.javet:javet:3.1.3") + implementation("com.caoccao.javet:javet:3.1.4") } else if (os.isLinux && (cpuArch == "aarch64" || cpuArch == "arm64")) { - implementation("com.caoccao.javet:javet-linux-arm64:3.1.3") + implementation("com.caoccao.javet:javet-linux-arm64:3.1.4") } else { - implementation("com.caoccao.javet:javet-macos:3.1.3") + implementation("com.caoccao.javet:javet-macos:3.1.4") }

    @@ -441,11 +442,11 @@

    Gradle Kotlin DSL

    Gradle Groovy DSL

    -
    implementation 'com.caoccao.javet:javet:3.1.3' // Linux and Windows (x86_64)
    -implementation 'com.caoccao.javet:javet-linux-arm64:3.1.3' // Linux (arm64)
    -implementation 'com.caoccao.javet:javet-macos:3.1.3' // Mac OS (x86_64 and arm64)
    -implementation 'com.caoccao.javet:javet-android-node:3.1.3' // Android Node (arm, arm64, x86 and x86_64)
    -implementation 'com.caoccao.javet:javet-android-v8:3.1.3' // Android V8 (arm, arm64, x86 and x86_64)
    +
    implementation 'com.caoccao.javet:javet:3.1.4' // Linux and Windows (x86_64)
    +implementation 'com.caoccao.javet:javet-linux-arm64:3.1.4' // Linux (arm64)
    +implementation 'com.caoccao.javet:javet-macos:3.1.4' // Mac OS (x86_64 and arm64)
    +implementation 'com.caoccao.javet:javet-android-node:3.1.4' // Android Node (arm, arm64, x86 and x86_64)
    +implementation 'com.caoccao.javet:javet-android-v8:3.1.4' // Android V8 (arm, arm64, x86 and x86_64)
     
    @@ -678,7 +679,7 @@

    Android

    -
    +

    diff --git a/docs/tutorial/basic/installation.rst b/docs/tutorial/basic/installation.rst index 7cc5b4d08..7519bc58c 100644 --- a/docs/tutorial/basic/installation.rst +++ b/docs/tutorial/basic/installation.rst @@ -16,21 +16,21 @@ Maven com.caoccao.javet javet - 3.1.3 + 3.1.4 com.caoccao.javet javet-linux-arm64 - 3.1.3 + 3.1.4 com.caoccao.javet javet-macos - 3.1.3 + 3.1.4 .. tab:: Complete @@ -38,7 +38,7 @@ Maven .. code-block:: xml - 3.1.3 + 3.1.4 @@ -115,11 +115,11 @@ Gradle Kotlin DSL .. code-block:: kotlin - implementation("com.caoccao.javet:javet:3.1.3") // Linux and Windows (x86_64) - implementation("com.caoccao.javet:javet-linux-arm64:3.1.3") // Linux (arm64) - implementation("com.caoccao.javet:javet-macos:3.1.3") // Mac OS (x86_64 and arm64) - implementation("com.caoccao.javet:javet-android-node:3.1.3") // Android Node (arm, arm64, x86 and x86_64) - implementation("com.caoccao.javet:javet-android-v8:3.1.3") // Android V8 (arm, arm64, x86 and x86_64) + implementation("com.caoccao.javet:javet:3.1.4") // Linux and Windows (x86_64) + implementation("com.caoccao.javet:javet-linux-arm64:3.1.4") // Linux (arm64) + implementation("com.caoccao.javet:javet-macos:3.1.4") // Mac OS (x86_64 and arm64) + implementation("com.caoccao.javet:javet-android-node:3.1.4") // Android Node (arm, arm64, x86 and x86_64) + implementation("com.caoccao.javet:javet-android-v8:3.1.4") // Android V8 (arm, arm64, x86 and x86_64) .. tab:: Complete @@ -130,11 +130,11 @@ Gradle Kotlin DSL val os = OperatingSystem.current() val cpuArch = System.getProperty("os.arch") if (os.isMacOsX) { - implementation("com.caoccao.javet:javet:3.1.3") + implementation("com.caoccao.javet:javet:3.1.4") } else if (os.isLinux && (cpuArch == "aarch64" || cpuArch == "arm64")) { - implementation("com.caoccao.javet:javet-linux-arm64:3.1.3") + implementation("com.caoccao.javet:javet-linux-arm64:3.1.4") } else { - implementation("com.caoccao.javet:javet-macos:3.1.3") + implementation("com.caoccao.javet:javet-macos:3.1.4") } Gradle Groovy DSL @@ -142,11 +142,11 @@ Gradle Groovy DSL .. code-block:: groovy - implementation 'com.caoccao.javet:javet:3.1.3' // Linux and Windows (x86_64) - implementation 'com.caoccao.javet:javet-linux-arm64:3.1.3' // Linux (arm64) - implementation 'com.caoccao.javet:javet-macos:3.1.3' // Mac OS (x86_64 and arm64) - implementation 'com.caoccao.javet:javet-android-node:3.1.3' // Android Node (arm, arm64, x86 and x86_64) - implementation 'com.caoccao.javet:javet-android-v8:3.1.3' // Android V8 (arm, arm64, x86 and x86_64) + implementation 'com.caoccao.javet:javet:3.1.4' // Linux and Windows (x86_64) + implementation 'com.caoccao.javet:javet-linux-arm64:3.1.4' // Linux (arm64) + implementation 'com.caoccao.javet:javet-macos:3.1.4' // Mac OS (x86_64 and arm64) + implementation 'com.caoccao.javet:javet-android-node:3.1.4' // Android Node (arm, arm64, x86 and x86_64) + implementation 'com.caoccao.javet:javet-android-v8:3.1.4' // Android V8 (arm, arm64, x86 and x86_64) OS Compatibility ================ diff --git a/docs/tutorial/basic/interception.html b/docs/tutorial/basic/interception.html index 2e67848d9..93e4e6113 100644 --- a/docs/tutorial/basic/interception.html +++ b/docs/tutorial/basic/interception.html @@ -6,7 +6,7 @@ - Interception - Javet 3.1.3 documentation + Interception - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/tutorial/basic/javet_shell.html b/docs/tutorial/basic/javet_shell.html index ce5ddb3e3..6780877e0 100644 --- a/docs/tutorial/basic/javet_shell.html +++ b/docs/tutorial/basic/javet_shell.html @@ -6,7 +6,7 @@ - Javet Shell - Javet 3.1.3 documentation + Javet Shell - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/tutorial/basic/node_js_mode_and_v8_mode.html b/docs/tutorial/basic/node_js_mode_and_v8_mode.html index 6c6f6ba29..f1998231e 100644 --- a/docs/tutorial/basic/node_js_mode_and_v8_mode.html +++ b/docs/tutorial/basic/node_js_mode_and_v8_mode.html @@ -6,7 +6,7 @@ - Node.js Mode and V8 Mode - Javet 3.1.3 documentation + Node.js Mode and V8 Mode - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/tutorial/basic/polyfill.html b/docs/tutorial/basic/polyfill.html index 80338b98c..b47822c94 100644 --- a/docs/tutorial/basic/polyfill.html +++ b/docs/tutorial/basic/polyfill.html @@ -6,7 +6,7 @@ - Polyfill - Javet 3.1.3 documentation + Polyfill - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/tutorial/basic/spring_integration.html b/docs/tutorial/basic/spring_integration.html index 8a424cc19..fe3e5e5f0 100644 --- a/docs/tutorial/basic/spring_integration.html +++ b/docs/tutorial/basic/spring_integration.html @@ -6,7 +6,7 @@ - Spring Integration - Javet 3.1.3 documentation + Spring Integration - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/tutorial/index.html b/docs/tutorial/index.html index 2204500cd..55892d7ff 100644 --- a/docs/tutorial/index.html +++ b/docs/tutorial/index.html @@ -6,7 +6,7 @@ - Tutorial - Javet 3.1.3 documentation + Tutorial - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/docs/tutorial/migration_guides/index.html b/docs/tutorial/migration_guides/index.html index e8c844b61..32a0892cd 100644 --- a/docs/tutorial/migration_guides/index.html +++ b/docs/tutorial/migration_guides/index.html @@ -6,7 +6,7 @@ - Migration Guides - Javet 3.1.3 documentation + Migration Guides - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ diff --git a/docs/tutorial/migration_guides/migrate_from_j2v8.html b/docs/tutorial/migration_guides/migrate_from_j2v8.html index dd628aa8d..d4e4be1a8 100644 --- a/docs/tutorial/migration_guides/migrate_from_j2v8.html +++ b/docs/tutorial/migration_guides/migrate_from_j2v8.html @@ -6,7 +6,7 @@ - Migrate from J2V8 - Javet 3.1.3 documentation + Migrate from J2V8 - Javet 3.1.4 documentation @@ -125,7 +125,7 @@ - + diff --git a/scripts/node/javet-rebuild/rebuild.cmd b/scripts/node/javet-rebuild/rebuild.cmd index b44659f1a..f9c06b242 100644 --- a/scripts/node/javet-rebuild/rebuild.cmd +++ b/scripts/node/javet-rebuild/rebuild.cmd @@ -1,5 +1,5 @@ @echo off -SET NODE_LIB_FILE="..\..\..\..\..\..\build\libs\libjavet-node-windows-x86_64.v.3.1.3.lib" +SET NODE_LIB_FILE="..\..\..\..\..\..\build\libs\libjavet-node-windows-x86_64.v.3.1.4.lib" cd %NODE_MODULE_ROOT% call node-gyp clean call node-gyp configure --module_name=%NODE_MODULE_NAME% --module_path=%NODE_MODULE_PATH% --node_lib_file=%NODE_LIB_FILE% diff --git a/scripts/node/javet-rebuild/rebuild.sh b/scripts/node/javet-rebuild/rebuild.sh index 0eae4cd41..81ecedd06 100755 --- a/scripts/node/javet-rebuild/rebuild.sh +++ b/scripts/node/javet-rebuild/rebuild.sh @@ -1 +1 @@ -patchelf --add-needed libjavet-node-linux-x86_64.v.3.1.3.so ${NODE_MODULE_FILE} +patchelf --add-needed libjavet-node-linux-x86_64.v.3.1.4.so ${NODE_MODULE_FILE} diff --git a/scripts/python/change_javet_version.py b/scripts/python/change_javet_version.py index 94fdf337a..8e2d2e157 100644 --- a/scripts/python/change_javet_version.py +++ b/scripts/python/change_javet_version.py @@ -186,7 +186,7 @@ def _update(self, relative_file_path: str, line_separator: str, *patterns: list) logging.info(' Updated.') def main(): - change_javet_version = ChangeJavetVersion('3.1.3') + change_javet_version = ChangeJavetVersion('3.1.4') change_javet_version.update() return 0 diff --git a/scripts/python/change_node_v8_version.py b/scripts/python/change_node_v8_version.py index 7afb0ae52..d61456485 100644 --- a/scripts/python/change_node_v8_version.py +++ b/scripts/python/change_node_v8_version.py @@ -164,9 +164,9 @@ def update(self) -> None: re.compile(r'"(?P\d+\.\d+\.\d+\.\d+)",')) def main(): - change_node_version = ChangeNodeVersion('20.14.0') + change_node_version = ChangeNodeVersion('20.15.1') change_node_version.update() - change_v8_version = ChangeV8Version('12.6.228.13') + change_v8_version = ChangeV8Version('12.7.224.16') change_v8_version.update() return 0 diff --git a/src/main/java/com/caoccao/javet/enums/JSRuntimeType.java b/src/main/java/com/caoccao/javet/enums/JSRuntimeType.java index 394f93872..6fa000b81 100644 --- a/src/main/java/com/caoccao/javet/enums/JSRuntimeType.java +++ b/src/main/java/com/caoccao/javet/enums/JSRuntimeType.java @@ -47,7 +47,7 @@ public enum JSRuntimeType { */ V8( "v8", - "12.6.228.13", + "12.7.224.16", V8RuntimeOptions::new, o -> o instanceof V8RuntimeOptions); diff --git a/src/main/java/com/caoccao/javet/enums/JSScopeType.java b/src/main/java/com/caoccao/javet/enums/JSScopeType.java index 1694ca6c7..b524a167c 100644 --- a/src/main/java/com/caoccao/javet/enums/JSScopeType.java +++ b/src/main/java/com/caoccao/javet/enums/JSScopeType.java @@ -18,6 +18,11 @@ import java.util.stream.Stream; +/** + * The enum JS scope type. + * + * @since 0.8.8 + */ public enum JSScopeType { Class(0, "Class"), Eval(1, "Eval"), diff --git a/src/main/java/com/caoccao/javet/enums/RawPointerType.java b/src/main/java/com/caoccao/javet/enums/RawPointerType.java new file mode 100644 index 000000000..b4e29d097 --- /dev/null +++ b/src/main/java/com/caoccao/javet/enums/RawPointerType.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2024. caoccao.com Sam Cao + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.caoccao.javet.enums; + +/** + * The enum raw pointer type is for internal use only. + * + * @since 3.1.4 + */ +public enum RawPointerType { + /** + * Heap statistics container javet raw pointer type. + * + * @since 3.1.4 + */ + HeapStatisticsContainer(1), + /** + * Heap space statistics container javet raw pointer type. + * + * @since 3.1.4 + */ + HeapSpaceStatisticsContainer(2), + /** + * Invalid raw pointer type. + * + * @since 3.1.4 + */ + Invalid(0); + + private final int id; + + RawPointerType(int id) { + this.id = id; + } + + /** + * Parse raw pointer type by id. + * + * @param id the id + * @return the raw pointer type + * @since 3.1.4 + */ + public static RawPointerType parse(int id) { + switch (id) { + case 1: + return HeapStatisticsContainer; + case 2: + return HeapSpaceStatisticsContainer; + default: + return Invalid; + } + } + + /** + * Gets id. + * + * @return the id + * @since 3.1.4 + */ + public int getId() { + return id; + } +} diff --git a/src/main/java/com/caoccao/javet/interfaces/IJavetRawPointer.java b/src/main/java/com/caoccao/javet/interfaces/IJavetRawPointer.java new file mode 100644 index 000000000..8363a2bbd --- /dev/null +++ b/src/main/java/com/caoccao/javet/interfaces/IJavetRawPointer.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2024. caoccao.com Sam Cao + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.caoccao.javet.interfaces; + +import com.caoccao.javet.enums.RawPointerType; + +/** + * The interface Javet raw pointer is for internal use only. + * + * @since 3.1.4 + */ +public interface IJavetRawPointer { + /** + * Gets raw pointer type. + * + * @return the raw pointer type + * @since 3.1.4 + */ + RawPointerType getRawPointerType(); +} diff --git a/src/main/java/com/caoccao/javet/interop/INodeNative.java b/src/main/java/com/caoccao/javet/interop/INodeNative.java index cb3f7687e..bb9895105 100644 --- a/src/main/java/com/caoccao/javet/interop/INodeNative.java +++ b/src/main/java/com/caoccao/javet/interop/INodeNative.java @@ -22,4 +22,7 @@ * @since 0.8.0 */ public interface INodeNative extends IV8Native { + boolean isStopping(long nodeRuntimeHandle); + + void setStopping(long nodeRuntimeHandle, boolean stopping); } diff --git a/src/main/java/com/caoccao/javet/interop/IV8Native.java b/src/main/java/com/caoccao/javet/interop/IV8Native.java index b2f337964..cf699bed4 100644 --- a/src/main/java/com/caoccao/javet/interop/IV8Native.java +++ b/src/main/java/com/caoccao/javet/interop/IV8Native.java @@ -136,7 +136,7 @@ boolean functionSetSourceCode( long[] getInternalStatistic(); - Object getV8HeapSpaceStatistics(long v8RuntimeHandle, int allocationSpace); + Object getV8HeapSpaceStatistics(long v8RuntimeHandle, Object v8AllocationSpace); Object getV8HeapStatistics(long v8RuntimeHandle); @@ -152,8 +152,6 @@ boolean functionSetSourceCode( boolean hasScheduledException(long v8RuntimeHandle); - void idleNotificationDeadline(long v8RuntimeHandle, long deadlineInMillis); - Object integerObjectCreate(long v8RuntimeHandle, int intValue); Object integerObjectValueOf(long v8RuntimeHandle, long v8ValueHandle, int v8ValueType); @@ -360,6 +358,8 @@ Object promiseThen( void removeJNIGlobalRef(long handle); + void removeRawPointer(long handle, int rawPointerTypeId); + void removeReferenceHandle(long v8RuntimeHandle, long referenceHandle, int referenceType); boolean reportPendingMessages(long v8RuntimeHandle); diff --git a/src/main/java/com/caoccao/javet/interop/NodeNative.java b/src/main/java/com/caoccao/javet/interop/NodeNative.java index 029ac9060..a66bd1b14 100644 --- a/src/main/java/com/caoccao/javet/interop/NodeNative.java +++ b/src/main/java/com/caoccao/javet/interop/NodeNative.java @@ -27,5 +27,11 @@ class NodeNative extends V8Native implements INodeNative { } @Override - public native boolean await(long v8RuntimeHandle, int v8AwaitMode); + public native boolean await(long nodeRuntimeHandle, int v8AwaitMode); + + @Override + public native boolean isStopping(long nodeRuntimeHandle); + + @Override + public native void setStopping(long nodeRuntimeHandle, boolean stopping); } diff --git a/src/main/java/com/caoccao/javet/interop/NodeRuntime.java b/src/main/java/com/caoccao/javet/interop/NodeRuntime.java index 4eaf57b00..112a6c354 100644 --- a/src/main/java/com/caoccao/javet/interop/NodeRuntime.java +++ b/src/main/java/com/caoccao/javet/interop/NodeRuntime.java @@ -158,6 +158,16 @@ public int getNodeModuleCount() { return nodeModuleMap.size(); } + /** + * Is the event loop stopping. + * + * @return true : the event queue will be skipped while the Node.js runtime is being closed, false : regular behavior + * @since 3.1.4 + */ + public boolean isStopping() { + return ((INodeNative) v8Native).isStopping(handle); + } + @Override void removeAllReferences() throws JavetException { removeNodeModules(); @@ -190,4 +200,14 @@ void removeNodeModules() { nodeModuleMap.clear(); } } + + /** + * Sets the event loop stopping. + * + * @param stopping true : the event queue will be skipped while the Node.js runtime is being closed, false : regular behavior + * @since 3.1.4 + */ + public void setStopping(boolean stopping) { + ((INodeNative) v8Native).setStopping(handle, stopping); + } } diff --git a/src/main/java/com/caoccao/javet/interop/V8Host.java b/src/main/java/com/caoccao/javet/interop/V8Host.java index ded53ff67..abf781f04 100644 --- a/src/main/java/com/caoccao/javet/interop/V8Host.java +++ b/src/main/java/com/caoccao/javet/interop/V8Host.java @@ -22,16 +22,21 @@ import com.caoccao.javet.interfaces.IJavetLogger; import com.caoccao.javet.interop.loader.JavetLibLoader; import com.caoccao.javet.interop.monitoring.V8SharedMemoryStatistics; +import com.caoccao.javet.interop.monitoring.V8StatisticsFuture; import com.caoccao.javet.interop.options.RuntimeOptions; +import com.caoccao.javet.utils.JavetDateTimeUtils; import com.caoccao.javet.utils.JavetDefaultLogger; import com.caoccao.javet.utils.SimpleMap; import java.lang.management.ManagementFactory; import java.lang.management.MemoryPoolMXBean; import java.lang.management.MemoryType; +import java.time.Duration; +import java.time.ZonedDateTime; import java.util.List; import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.PriorityBlockingQueue; import java.util.concurrent.TimeUnit; @@ -41,7 +46,7 @@ * @since 0.7.0 */ @SuppressWarnings("unchecked") -public final class V8Host implements AutoCloseable { +public final class V8Host { private static final long INVALID_HANDLE = 0L; private static boolean libraryReloadable = false; private static volatile double memoryUsageThresholdRatio = 0.7; @@ -50,11 +55,13 @@ public final class V8Host implements AutoCloseable { private final V8GuardDaemon v8GuardDaemon; private final V8Notifier v8Notifier; private final ConcurrentHashMap v8RuntimeMap; + private final V8StatisticsFutureDaemon v8StatisticsFutureDaemon; private boolean isolateCreated; private JavetClassLoader javetClassLoader; private JavetException lastException; private volatile boolean libraryLoaded; private Thread threadV8GuardDaemon; + private Thread threadV8StatisticsFutureDaemon; private IV8Native v8Native; private V8Host(JSRuntimeType jsRuntimeType) { @@ -68,7 +75,9 @@ private V8Host(JSRuntimeType jsRuntimeType) { isolateCreated = false; this.jsRuntimeType = jsRuntimeType; v8GuardDaemon = new V8GuardDaemon(); + v8StatisticsFutureDaemon = new V8StatisticsFutureDaemon(); threadV8GuardDaemon = null; + threadV8StatisticsFutureDaemon = null; loadLibrary(); v8Notifier = new V8Notifier(v8RuntimeMap); } @@ -187,20 +196,6 @@ public void clearInternalStatistic() { v8Native.clearInternalStatistic(); } - @Override - public void close() throws JavetException { - threadV8GuardDaemon.interrupt(); - v8GuardDaemon.getV8GuardQueue().clear(); - lastException = null; - final int v8RuntimeCount = getV8RuntimeCount(); - if (v8RuntimeCount != 0) { - throw new JavetException( - JavetError.RuntimeLeakageDetected, - SimpleMap.of(JavetError.PARAMETER_COUNT, v8RuntimeCount)); - } - disableGCNotification(); - } - /** * Close V8 runtime. * @@ -447,6 +442,10 @@ public synchronized boolean loadLibrary() { threadV8GuardDaemon = new Thread(v8GuardDaemon); threadV8GuardDaemon.setDaemon(true); threadV8GuardDaemon.start(); + v8StatisticsFutureDaemon.setV8Native(v8Native); + threadV8StatisticsFutureDaemon = new Thread(v8StatisticsFutureDaemon); + threadV8StatisticsFutureDaemon.setDaemon(true); + threadV8StatisticsFutureDaemon.start(); } catch (JavetException e) { logger.logError(e, "Failed to load Javet lib with error {0}.", e.getMessage()); lastException = e; @@ -455,6 +454,15 @@ public synchronized boolean loadLibrary() { return libraryLoaded; } + /** + * Offer V8 statistics future to the queue. + * + * @param v8StatisticsFuture the V8 statistics future + */ + void offerV8StatisticsFuture(V8StatisticsFuture v8StatisticsFuture) { + v8StatisticsFutureDaemon.getV8StatisticsFutureQueue().offer(Objects.requireNonNull(v8StatisticsFuture)); + } + /** * Sets sleep interval millis. * @@ -479,7 +487,12 @@ public synchronized boolean unloadLibrary() { "[{0}] Unloading library.", jsRuntimeType.getName()); threadV8GuardDaemon.interrupt(); + threadV8GuardDaemon = null; v8GuardDaemon.getV8GuardQueue().clear(); + threadV8StatisticsFutureDaemon.interrupt(); + threadV8StatisticsFutureDaemon = null; + v8StatisticsFutureDaemon.purgeV8StatisticsFutureQueue(); + v8StatisticsFutureDaemon.setV8Native(null); isolateCreated = false; v8Native = null; javetClassLoader = null; @@ -562,4 +575,66 @@ public void setSleepIntervalMillis(long sleepIntervalMillis) { private static class V8InstanceHolder { private static final V8Host INSTANCE = new V8Host(JSRuntimeType.V8); } + + static class V8StatisticsFutureDaemon implements Runnable { + private static final long SLEEP_IN_MILLIS = 1000; + private static final long TIMEOUT_IN_SECONDS = 60; + private final ConcurrentLinkedQueue> v8StatisticsFutureQueue; + private IV8Native v8Native; + + public V8StatisticsFutureDaemon() { + v8Native = null; + v8StatisticsFutureQueue = new ConcurrentLinkedQueue<>(); + } + + public ConcurrentLinkedQueue> getV8StatisticsFutureQueue() { + return v8StatisticsFutureQueue; + } + + public void purgeV8StatisticsFutureQueue() { + while (!v8StatisticsFutureQueue.isEmpty()) { + V8StatisticsFuture v8StatisticsFuture = v8StatisticsFutureQueue.poll(); + if (!v8StatisticsFuture.isDone()) { + v8Native.removeRawPointer( + v8StatisticsFuture.getHandle(), + v8StatisticsFuture.getRawPointerType().getId()); + } + } + } + + @Override + public void run() { + while (true) { + try { + if (v8StatisticsFutureQueue.isEmpty()) { + TimeUnit.MILLISECONDS.sleep(SLEEP_IN_MILLIS); + } else { + V8StatisticsFuture v8StatisticsFuture = v8StatisticsFutureQueue.peek(); + if (v8StatisticsFuture.isDone()) { + v8StatisticsFutureQueue.poll(); + } else { + ZonedDateTime now = JavetDateTimeUtils.getUTCNow(); + ZonedDateTime purgeDateTime = + v8StatisticsFuture.getCreationDateTime().plusSeconds(TIMEOUT_IN_SECONDS); + Duration duration = Duration.between(now, purgeDateTime); + if (duration.isNegative()) { + v8Native.removeRawPointer( + v8StatisticsFuture.getHandle(), + v8StatisticsFuture.getRawPointerType().getId()); + v8StatisticsFutureQueue.poll(); + } else { + TimeUnit.MILLISECONDS.sleep(duration.toMillis()); + } + } + } + } catch (InterruptedException ignored) { + break; + } + } + } + + public void setV8Native(IV8Native v8Native) { + this.v8Native = v8Native; + } + } } diff --git a/src/main/java/com/caoccao/javet/interop/V8Native.java b/src/main/java/com/caoccao/javet/interop/V8Native.java index fccb668bb..eaa4e59ce 100644 --- a/src/main/java/com/caoccao/javet/interop/V8Native.java +++ b/src/main/java/com/caoccao/javet/interop/V8Native.java @@ -195,7 +195,7 @@ public native boolean functionSetSourceCode( public native long[] getInternalStatistic(); @Override - public native Object getV8HeapSpaceStatistics(long v8RuntimeHandle, int allocationSpace); + public native Object getV8HeapSpaceStatistics(long v8RuntimeHandle, Object v8AllocationSpace); @Override public native Object getV8HeapStatistics(long v8RuntimeHandle); @@ -218,9 +218,6 @@ public native boolean functionSetSourceCode( @Override public native boolean hasScheduledException(long v8RuntimeHandle); - @Override - public native void idleNotificationDeadline(long v8RuntimeHandle, long deadlineInMillis); - @Override public native Object integerObjectCreate(long v8RuntimeHandle, int intValue); @@ -549,6 +546,9 @@ public native Object promiseThen( @Override public native void removeJNIGlobalRef(long handle); + @Override + public native void removeRawPointer(long handle, int rawPointerTypeId); + @Override public native void removeReferenceHandle(long v8RuntimeHandle, long referenceHandle, int referenceType); diff --git a/src/main/java/com/caoccao/javet/interop/V8Runtime.java b/src/main/java/com/caoccao/javet/interop/V8Runtime.java index 1589afc20..0599c1bbe 100644 --- a/src/main/java/com/caoccao/javet/interop/V8Runtime.java +++ b/src/main/java/com/caoccao/javet/interop/V8Runtime.java @@ -32,6 +32,7 @@ import com.caoccao.javet.interop.monitoring.V8HeapSpaceStatistics; import com.caoccao.javet.interop.monitoring.V8HeapStatistics; import com.caoccao.javet.interop.monitoring.V8SharedMemoryStatistics; +import com.caoccao.javet.interop.monitoring.V8StatisticsFuture; import com.caoccao.javet.interop.options.RuntimeOptions; import com.caoccao.javet.utils.JavetDefaultLogger; import com.caoccao.javet.utils.JavetResourceUtils; @@ -51,6 +52,7 @@ import java.text.MessageFormat; import java.time.ZonedDateTime; import java.util.*; +import java.util.concurrent.CompletableFuture; import java.util.concurrent.CopyOnWriteArrayList; import static com.caoccao.javet.exceptions.JavetError.PARAMETER_FEATURE; @@ -1550,26 +1552,36 @@ public RuntimeOptions getRuntimeOptions() { } /** - * Gets V8 heap space statistics by an allocation space. + * Gets V8 heap space statistics by an allocation space via completable future. + * It is an async call that will be completed if there is no race condition. * * @param v8AllocationSpace the V8 allocation space - * @return the V8 heap space statistics + * @return the V8 heap space statistics in a complete future * @since 1.0.4 */ - public V8HeapSpaceStatistics getV8HeapSpaceStatistics(V8AllocationSpace v8AllocationSpace) { - Objects.requireNonNull(v8AllocationSpace); - return ((V8HeapSpaceStatistics) v8Native.getV8HeapSpaceStatistics(handle, v8AllocationSpace.getIndex())) - .setAllocationSpace(v8AllocationSpace); + public CompletableFuture getV8HeapSpaceStatistics(V8AllocationSpace v8AllocationSpace) { + V8StatisticsFuture v8StatisticsFuture = (V8StatisticsFuture) + v8Native.getV8HeapSpaceStatistics(handle, Objects.requireNonNull(v8AllocationSpace)); + if (!v8StatisticsFuture.isDone()) { + v8Host.offerV8StatisticsFuture(v8StatisticsFuture); + } + return v8StatisticsFuture; } /** - * Gets V8 heap statistics. + * Gets V8 heap statistics via completable future. + * It is an async call that will be completed if there is no race condition. * - * @return the V8 heap statistics + * @return the V8 heap statistics in a complete future * @since 1.0.0 */ - public V8HeapStatistics getV8HeapStatistics() { - return (V8HeapStatistics) v8Native.getV8HeapStatistics(handle); + public CompletableFuture getV8HeapStatistics() { + V8StatisticsFuture v8StatisticsFuture = (V8StatisticsFuture) + v8Native.getV8HeapStatistics(handle); + if (!v8StatisticsFuture.isDone()) { + v8Host.offerV8StatisticsFuture(v8StatisticsFuture); + } + return v8StatisticsFuture; } /** @@ -1756,18 +1768,6 @@ public boolean hasScheduledException() throws JavetException { return v8Native.hasScheduledException(handle); } - /** - * Idle notification deadline tells V8 to perform GC in the given millis. - * - * @param deadlineInMillis the deadline in millis - * @since 0.9.1 - */ - public void idleNotificationDeadline(long deadlineInMillis) { - if (!isClosed() && deadlineInMillis > 0) { - v8Native.idleNotificationDeadline(handle, deadlineInMillis); - } - } - /** * Initialize V8 value cache. * diff --git a/src/main/java/com/caoccao/javet/interop/engine/IJavetEnginePool.java b/src/main/java/com/caoccao/javet/interop/engine/IJavetEnginePool.java index d50a72e35..8adcb1317 100644 --- a/src/main/java/com/caoccao/javet/interop/engine/IJavetEnginePool.java +++ b/src/main/java/com/caoccao/javet/interop/engine/IJavetEnginePool.java @@ -20,7 +20,6 @@ import com.caoccao.javet.enums.V8AllocationSpace; import com.caoccao.javet.exceptions.JavetException; import com.caoccao.javet.interfaces.IJavetClosable; -import com.caoccao.javet.interop.V8Host; import com.caoccao.javet.interop.V8Runtime; import com.caoccao.javet.interop.engine.observers.*; import com.caoccao.javet.interop.monitoring.V8HeapSpaceStatistics; @@ -77,7 +76,9 @@ default int getAverageReferenceCount() { */ default V8HeapSpaceStatistics getAverageV8HeapSpaceStatistics(final V8AllocationSpace v8AllocationSpace) { V8RuntimeObserverAverageV8HeapSpaceStatistics observer = new V8RuntimeObserverAverageV8HeapSpaceStatistics( - v8AllocationSpace, getConfig().getPoolMaxSize()); + v8AllocationSpace, + getConfig().getPoolMaxSize(), + getConfig().getObserverTimeoutMillis()); observe(observer); return observer.getResult(); } @@ -90,7 +91,8 @@ default V8HeapSpaceStatistics getAverageV8HeapSpaceStatistics(final V8Allocation */ default V8HeapStatistics getAverageV8HeapStatistics() { V8RuntimeObserverAverageV8HeapStatistics observer = new V8RuntimeObserverAverageV8HeapStatistics( - getConfig().getPoolMaxSize()); + getConfig().getPoolMaxSize(), + getConfig().getObserverTimeoutMillis()); observe(observer); return observer.getResult(); } diff --git a/src/main/java/com/caoccao/javet/interop/engine/JavetEngineConfig.java b/src/main/java/com/caoccao/javet/interop/engine/JavetEngineConfig.java index 37fbc01af..14d449686 100644 --- a/src/main/java/com/caoccao/javet/interop/engine/JavetEngineConfig.java +++ b/src/main/java/com/caoccao/javet/interop/engine/JavetEngineConfig.java @@ -37,6 +37,12 @@ public final class JavetEngineConfig { * @since 0.8.0 */ public static final JSRuntimeType DEFAULT_JS_RUNTIME_TYPE = JSRuntimeType.V8; + /** + * The constant DEFAULT_OBSERVER_TIMEOUT_MILLIS. + * + * @since 3.1.4 + */ + public static final int DEFAULT_OBSERVER_TIMEOUT_MILLIS = 5000; /** * The constant DEFAULT_POOL_MIN_SIZE. * @@ -55,12 +61,6 @@ public final class JavetEngineConfig { * @since 0.7.0 */ public static final int DEFAULT_POOL_DAEMON_CHECK_INTERVAL_MILLIS = 1000; - /** - * The constant DEFAULT_RESET_ENGINE_TIMEOUT_SECONDS. - * - * @since 0.7.0 - */ - public static final int DEFAULT_RESET_ENGINE_TIMEOUT_SECONDS = 3600; /** * The constant DEFAULT_POOL_SHUTDOWN_TIMEOUT_SECONDS. * @@ -68,23 +68,29 @@ public final class JavetEngineConfig { */ public static final int DEFAULT_POOL_SHUTDOWN_TIMEOUT_SECONDS = 5; /** - * The constant DEFAULT_WAIT_FOR_ENGINE_LOG_INTERVAL_MILLIS. + * The constant DEFAULT_RESET_ENGINE_TIMEOUT_SECONDS. * - * @since 1.0.5 + * @since 0.7.0 */ - public static final int DEFAULT_WAIT_FOR_ENGINE_LOG_INTERVAL_MILLIS = 1000; + public static final int DEFAULT_RESET_ENGINE_TIMEOUT_SECONDS = 3600; /** - * The constant MAX_POOL_SIZE. + * The constant DEFAULT_WAIT_FOR_ENGINE_LOG_INTERVAL_MILLIS. * - * @since 1.0.4 + * @since 1.0.5 */ - public static final int MAX_POOL_SIZE = 4096; + public static final int DEFAULT_WAIT_FOR_ENGINE_LOG_INTERVAL_MILLIS = 1000; /** * The constant DEFAULT_WAIT_FOR_ENGINE_MAX_RETRY_COUNT. * * @since 1.1.6 */ public static final int DEFAULT_WAIT_FOR_ENGINE_MAX_RETRY_COUNT = 500; + /** + * The constant MAX_POOL_SIZE. + * + * @since 1.0.4 + */ + public static final int MAX_POOL_SIZE = 4096; /** * The constant DEFAULT_WAIT_FOR_ENGINE_SHEEP_INTERVAL_MILLIS. * @@ -104,6 +110,7 @@ public final class JavetEngineConfig { private String globalName; private IJavetLogger javetLogger; private JSRuntimeType jsRuntimeType; + private int observerTimeoutMillis; private int poolDaemonCheckIntervalMillis; private int poolIdleTimeoutSeconds; private int poolMaxSize; @@ -193,6 +200,16 @@ public IJavetLogger getJavetLogger() { return javetLogger; } + /** + * Gets observer timeout millis. + * + * @return the observer timeout millis + * @since 3.1.4 + */ + public int getObserverTimeoutMillis() { + return observerTimeoutMillis; + } + /** * Gets pool daemon check interval millis. * @@ -332,6 +349,7 @@ public JavetEngineConfig setAllowEval(boolean allowEval) { * @return the self * @since 0.9.1 */ + @SuppressWarnings("UnusedReturnValue") public JavetEngineConfig setAutoSendGCNotification(boolean autoSendGCNotification) { this.autoSendGCNotification = autoSendGCNotification; return this; @@ -344,6 +362,7 @@ public JavetEngineConfig setAutoSendGCNotification(boolean autoSendGCNotificatio * @return the self * @since 0.7.2 */ + @SuppressWarnings("UnusedReturnValue") public JavetEngineConfig setDefaultEngineGuardTimeoutMillis(int defaultEngineGuardTimeoutMillis) { assert defaultEngineGuardTimeoutMillis > 0 : "The default engine guard timeout millis must be greater than 0."; this.defaultEngineGuardTimeoutMillis = defaultEngineGuardTimeoutMillis; @@ -357,6 +376,7 @@ public JavetEngineConfig setDefaultEngineGuardTimeoutMillis(int defaultEngineGua * @return the self * @since 0.9.1 */ + @SuppressWarnings("UnusedReturnValue") public JavetEngineConfig setGCBeforeEngineClose(boolean gcBeforeEngineClose) { this.gcBeforeEngineClose = gcBeforeEngineClose; return this; @@ -369,6 +389,7 @@ public JavetEngineConfig setGCBeforeEngineClose(boolean gcBeforeEngineClose) { * @return the self * @since 0.9.1 */ + @SuppressWarnings("UnusedReturnValue") public JavetEngineConfig setGlobalName(String globalName) { this.globalName = globalName; return this; @@ -381,6 +402,7 @@ public JavetEngineConfig setGlobalName(String globalName) { * @return the self * @since 0.9.1 */ + @SuppressWarnings("UnusedReturnValue") public JavetEngineConfig setJSRuntimeType(JSRuntimeType jsRuntimeType) { this.jsRuntimeType = Objects.requireNonNull(jsRuntimeType); return this; @@ -393,11 +415,26 @@ public JavetEngineConfig setJSRuntimeType(JSRuntimeType jsRuntimeType) { * @return the self * @since 0.7.0 */ + @SuppressWarnings("UnusedReturnValue") public JavetEngineConfig setJavetLogger(IJavetLogger javetLogger) { this.javetLogger = Objects.requireNonNull(javetLogger); return this; } + /** + * Sets observer timeout millis. + * + * @param observerTimeoutMillis the observer timeout millis + * @return the self + * @since 3.1.4 + */ + @SuppressWarnings("UnusedReturnValue") + public JavetEngineConfig setObserverTimeoutMillis(int observerTimeoutMillis) { + assert observerTimeoutMillis > 0 : "The observer timeout millis must be greater than 0."; + this.observerTimeoutMillis = observerTimeoutMillis; + return this; + } + /** * Sets pool daemon check interval millis. * @@ -419,6 +456,7 @@ public JavetEngineConfig setPoolDaemonCheckIntervalMillis(int poolDaemonCheckInt * @return the self * @since 0.9.1 */ + @SuppressWarnings("UnusedReturnValue") public JavetEngineConfig setPoolIdleTimeoutSeconds(int poolIdleTimeoutSeconds) { assert poolIdleTimeoutSeconds > 0 : "The pool idle timeout seconds must be greater than 0."; this.poolIdleTimeoutSeconds = poolIdleTimeoutSeconds; @@ -432,6 +470,7 @@ public JavetEngineConfig setPoolIdleTimeoutSeconds(int poolIdleTimeoutSeconds) { * @return the self * @since 0.9.1 */ + @SuppressWarnings("UnusedReturnValue") public JavetEngineConfig setPoolMaxSize(int poolMaxSize) { assert poolMaxSize > 0 : "Pool max size must be greater than 0."; assert poolMaxSize <= MAX_POOL_SIZE : "Pool max size must be no greater than " + MAX_POOL_SIZE + "."; @@ -448,6 +487,7 @@ public JavetEngineConfig setPoolMaxSize(int poolMaxSize) { * @return the self * @since 0.7.0 */ + @SuppressWarnings("UnusedReturnValue") public JavetEngineConfig setPoolMinSize(int poolMinSize) { assert poolMinSize > 0 : "Pool min size must be greater than 0."; assert poolMinSize <= MAX_POOL_SIZE : "Pool min size must be no greater than " + MAX_POOL_SIZE + "."; @@ -464,6 +504,7 @@ public JavetEngineConfig setPoolMinSize(int poolMinSize) { * @return the self * @since 0.9.1 */ + @SuppressWarnings("UnusedReturnValue") public JavetEngineConfig setPoolShutdownTimeoutSeconds(int poolShutdownTimeoutSeconds) { assert poolShutdownTimeoutSeconds > 0 : "The pool shutdown timeout seconds must be greater than 0."; this.poolShutdownTimeoutSeconds = poolShutdownTimeoutSeconds; @@ -477,6 +518,7 @@ public JavetEngineConfig setPoolShutdownTimeoutSeconds(int poolShutdownTimeoutSe * @return the self * @since 0.9.1 */ + @SuppressWarnings("UnusedReturnValue") public JavetEngineConfig setResetEngineTimeoutSeconds(int resetEngineTimeoutSeconds) { assert resetEngineTimeoutSeconds > 0 : "The reset engine timeout seconds must be greater than 0."; this.resetEngineTimeoutSeconds = resetEngineTimeoutSeconds; @@ -490,7 +532,9 @@ public JavetEngineConfig setResetEngineTimeoutSeconds(int resetEngineTimeoutSeco * @return the self * @since 1.0.5 */ + @SuppressWarnings("UnusedReturnValue") public JavetEngineConfig setWaitForEngineLogIntervalMillis(int waitForEngineLogIntervalMillis) { + assert waitForEngineLogIntervalMillis > 0 : "The wait for engine log interval millis must be greater than 0."; this.waitForEngineLogIntervalMillis = waitForEngineLogIntervalMillis; return this; } @@ -502,7 +546,9 @@ public JavetEngineConfig setWaitForEngineLogIntervalMillis(int waitForEngineLogI * @return the self * @since 1.1.6 */ + @SuppressWarnings("UnusedReturnValue") public JavetEngineConfig setWaitForEngineMaxRetryCount(int waitForEngineMaxRetryCount) { + assert waitForEngineMaxRetryCount >= 0 : "The wait for engine max retry count must be no less than 0."; this.waitForEngineMaxRetryCount = waitForEngineMaxRetryCount; return this; } @@ -514,6 +560,7 @@ public JavetEngineConfig setWaitForEngineMaxRetryCount(int waitForEngineMaxRetry * @return the self * @since 1.0.5 */ + @SuppressWarnings("UnusedReturnValue") public JavetEngineConfig setWaitForEngineSleepIntervalMillis(int[] waitForEngineSleepIntervalMillis) { Objects.requireNonNull(waitForEngineSleepIntervalMillis); assert waitForEngineSleepIntervalMillis.length > 0; diff --git a/src/main/java/com/caoccao/javet/interop/engine/JavetEnginePool.java b/src/main/java/com/caoccao/javet/interop/engine/JavetEnginePool.java index 82be9d99d..9e8d2decb 100644 --- a/src/main/java/com/caoccao/javet/interop/engine/JavetEnginePool.java +++ b/src/main/java/com/caoccao/javet/interop/engine/JavetEnginePool.java @@ -296,24 +296,17 @@ public int observe(IV8RuntimeObserver... observers) { IJavetLogger logger = config.getJavetLogger(); for (JavetEngine engine : engines) { if (engine != null) { - boolean isContinuable = true; for (IV8RuntimeObserver observer : observers) { if (!engine.v8Runtime.isClosed()) { try { - isContinuable = observer.observe(engine.v8Runtime); + observer.observe(engine.v8Runtime); } catch (Throwable t) { logger.error(t.getMessage(), t); } finally { ++processedCount; } - if (!isContinuable) { - break; - } } } - if (!isContinuable) { - break; - } } } } diff --git a/src/main/java/com/caoccao/javet/interop/engine/observers/IV8RuntimeObserver.java b/src/main/java/com/caoccao/javet/interop/engine/observers/IV8RuntimeObserver.java index 4cd420b24..71d0f5f80 100644 --- a/src/main/java/com/caoccao/javet/interop/engine/observers/IV8RuntimeObserver.java +++ b/src/main/java/com/caoccao/javet/interop/engine/observers/IV8RuntimeObserver.java @@ -37,13 +37,11 @@ default R getResult() { /** * Observe the input V8 runtime. - * The return value notifies the owner to whether continue or break. * * @param v8Runtime the V8 runtime - * @return true : continue, false : break * @since 1.0.5 */ - boolean observe(V8Runtime v8Runtime); + void observe(V8Runtime v8Runtime); /** * Reset. diff --git a/src/main/java/com/caoccao/javet/interop/engine/observers/V8RuntimeObserverAverageCallbackContextCount.java b/src/main/java/com/caoccao/javet/interop/engine/observers/V8RuntimeObserverAverageCallbackContextCount.java index 6ff1bed37..439e811af 100644 --- a/src/main/java/com/caoccao/javet/interop/engine/observers/V8RuntimeObserverAverageCallbackContextCount.java +++ b/src/main/java/com/caoccao/javet/interop/engine/observers/V8RuntimeObserverAverageCallbackContextCount.java @@ -68,9 +68,8 @@ public Integer getResult() { } @Override - public boolean observe(V8Runtime v8Runtime) { + public void observe(V8Runtime v8Runtime) { callbackContextCountList.add(v8Runtime.getCallbackContextCount()); - return true; } @Override diff --git a/src/main/java/com/caoccao/javet/interop/engine/observers/V8RuntimeObserverAverageReferenceCount.java b/src/main/java/com/caoccao/javet/interop/engine/observers/V8RuntimeObserverAverageReferenceCount.java index c877a2123..39c999581 100644 --- a/src/main/java/com/caoccao/javet/interop/engine/observers/V8RuntimeObserverAverageReferenceCount.java +++ b/src/main/java/com/caoccao/javet/interop/engine/observers/V8RuntimeObserverAverageReferenceCount.java @@ -68,9 +68,8 @@ public Integer getResult() { } @Override - public boolean observe(V8Runtime v8Runtime) { + public void observe(V8Runtime v8Runtime) { referenceCountList.add(v8Runtime.getReferenceCount()); - return true; } @Override diff --git a/src/main/java/com/caoccao/javet/interop/engine/observers/V8RuntimeObserverAverageV8HeapSpaceStatistics.java b/src/main/java/com/caoccao/javet/interop/engine/observers/V8RuntimeObserverAverageV8HeapSpaceStatistics.java index 7609bf878..345fe17c5 100644 --- a/src/main/java/com/caoccao/javet/interop/engine/observers/V8RuntimeObserverAverageV8HeapSpaceStatistics.java +++ b/src/main/java/com/caoccao/javet/interop/engine/observers/V8RuntimeObserverAverageV8HeapSpaceStatistics.java @@ -24,6 +24,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; /** * The type V8 runtime observer average V8 heap space statistics. @@ -31,6 +33,24 @@ * @since 1.0.5 */ public class V8RuntimeObserverAverageV8HeapSpaceStatistics implements IV8RuntimeObserver { + /** + * The constant DEFAULT_CAPACITY. + * + * @since 3.1.4 + */ + protected static final int DEFAULT_CAPACITY = 256; + /** + * The constant DEFAULT_TIMEOUT_MILLIS. + * + * @since 3.1.4 + */ + protected static final int DEFAULT_TIMEOUT_MILLIS = 5000; + /** + * The Timeout millis. + * + * @since 3.1.4 + */ + protected final int timeoutMillis; /** * The V8 allocation space. * @@ -38,11 +58,11 @@ public class V8RuntimeObserverAverageV8HeapSpaceStatistics implements IV8Runtime */ protected final V8AllocationSpace v8AllocationSpace; /** - * The V8 heap space statistics list. + * The V8 heap space statistics future list. * * @since 1.0.5 */ - protected final List v8HeapSpaceStatisticsList; + protected final List> v8HeapSpaceStatisticsFutureList; /** * Instantiates a new V8 runtime observer for average V8 heap space statistics. @@ -51,7 +71,7 @@ public class V8RuntimeObserverAverageV8HeapSpaceStatistics implements IV8Runtime * @since 1.0.5 */ public V8RuntimeObserverAverageV8HeapSpaceStatistics(V8AllocationSpace v8AllocationSpace) { - this(v8AllocationSpace, 256); + this(v8AllocationSpace, DEFAULT_CAPACITY, DEFAULT_TIMEOUT_MILLIS); } /** @@ -59,11 +79,16 @@ public V8RuntimeObserverAverageV8HeapSpaceStatistics(V8AllocationSpace v8Allocat * * @param v8AllocationSpace the V8 allocation space * @param capacity the capacity + * @param timeoutMillis the timeout millis * @since 1.0.6 */ - public V8RuntimeObserverAverageV8HeapSpaceStatistics(V8AllocationSpace v8AllocationSpace, int capacity) { + public V8RuntimeObserverAverageV8HeapSpaceStatistics( + V8AllocationSpace v8AllocationSpace, + int capacity, + int timeoutMillis) { this.v8AllocationSpace = Objects.requireNonNull(v8AllocationSpace); - v8HeapSpaceStatisticsList = new ArrayList<>(capacity); + this.timeoutMillis = timeoutMillis; + v8HeapSpaceStatisticsFutureList = new ArrayList<>(capacity); } @Override @@ -73,21 +98,34 @@ public V8HeapSpaceStatistics getResult() { String spaceName = StringUtils.EMPTY; long spaceSize = 0; long spaceUsedSize = 0; - if (!v8HeapSpaceStatisticsList.isEmpty()) { - for (V8HeapSpaceStatistics v8HeapSpaceStatistics : v8HeapSpaceStatisticsList) { - if (spaceName.isEmpty()) { - spaceName = v8HeapSpaceStatistics.getSpaceName(); + if (!v8HeapSpaceStatisticsFutureList.isEmpty()) { + int count = 0; + final long expectedEndTime = System.currentTimeMillis() + timeoutMillis; + for (CompletableFuture v8HeapSpaceStatisticsFuture : v8HeapSpaceStatisticsFutureList) { + try { + final long now = System.currentTimeMillis(); + V8HeapSpaceStatistics v8HeapSpaceStatistics = now < expectedEndTime + ? v8HeapSpaceStatisticsFuture.get(expectedEndTime - now, TimeUnit.MILLISECONDS) + : v8HeapSpaceStatisticsFuture.getNow(null); + if (v8HeapSpaceStatistics != null) { + if (spaceName.isEmpty()) { + spaceName = v8HeapSpaceStatistics.getSpaceName(); + } + physicalSpaceSize += v8HeapSpaceStatistics.getPhysicalSpaceSize(); + spaceAvailableSize += v8HeapSpaceStatistics.getSpaceAvailableSize(); + spaceSize += v8HeapSpaceStatistics.getSpaceSize(); + spaceUsedSize += v8HeapSpaceStatistics.getSpaceUsedSize(); + ++count; + } + } catch (Throwable ignored) { } - physicalSpaceSize += v8HeapSpaceStatistics.getPhysicalSpaceSize(); - spaceAvailableSize += v8HeapSpaceStatistics.getSpaceAvailableSize(); - spaceSize += v8HeapSpaceStatistics.getSpaceSize(); - spaceUsedSize += v8HeapSpaceStatistics.getSpaceUsedSize(); } - final int v8RuntimeCount = v8HeapSpaceStatisticsList.size(); - physicalSpaceSize = physicalSpaceSize / v8RuntimeCount; - spaceAvailableSize = spaceAvailableSize / v8RuntimeCount; - spaceSize = spaceSize / v8RuntimeCount; - spaceUsedSize = spaceUsedSize / v8RuntimeCount; + if (count > 0) { + physicalSpaceSize = physicalSpaceSize / count; + spaceAvailableSize = spaceAvailableSize / count; + spaceSize = spaceSize / count; + spaceUsedSize = spaceUsedSize / count; + } } return new V8HeapSpaceStatistics( spaceName, @@ -98,13 +136,12 @@ public V8HeapSpaceStatistics getResult() { } @Override - public boolean observe(V8Runtime v8Runtime) { - v8HeapSpaceStatisticsList.add(v8Runtime.getV8HeapSpaceStatistics(v8AllocationSpace)); - return true; + public void observe(V8Runtime v8Runtime) { + v8HeapSpaceStatisticsFutureList.add(v8Runtime.getV8HeapSpaceStatistics(v8AllocationSpace)); } @Override public void reset() { - v8HeapSpaceStatisticsList.clear(); + v8HeapSpaceStatisticsFutureList.clear(); } } diff --git a/src/main/java/com/caoccao/javet/interop/engine/observers/V8RuntimeObserverAverageV8HeapStatistics.java b/src/main/java/com/caoccao/javet/interop/engine/observers/V8RuntimeObserverAverageV8HeapStatistics.java index c1248e3da..c0df80e95 100644 --- a/src/main/java/com/caoccao/javet/interop/engine/observers/V8RuntimeObserverAverageV8HeapStatistics.java +++ b/src/main/java/com/caoccao/javet/interop/engine/observers/V8RuntimeObserverAverageV8HeapStatistics.java @@ -21,6 +21,8 @@ import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; /** * The type V8 runtime observer average V8 heap statistics. @@ -29,11 +31,29 @@ */ public class V8RuntimeObserverAverageV8HeapStatistics implements IV8RuntimeObserver { /** - * The V8 heap statistics list. + * The constant DEFAULT_CAPACITY. + * + * @since 3.1.4 + */ + protected static final int DEFAULT_CAPACITY = 256; + /** + * The constant DEFAULT_TIMEOUT_MILLIS. + * + * @since 3.1.4 + */ + protected static final int DEFAULT_TIMEOUT_MILLIS = 5000; + /** + * The Timeout millis. + * + * @since 3.1.4 + */ + protected final int timeoutMillis; + /** + * The V8 heap statistics future list. * * @since 1.0.5 */ - protected final List v8HeapStatisticsList; + protected final List> v8HeapStatisticsFutureList; /** * Instantiates a new V8 runtime observer for average V8 heap statistics. @@ -41,17 +61,19 @@ public class V8RuntimeObserverAverageV8HeapStatistics implements IV8RuntimeObser * @since 1.0.5 */ public V8RuntimeObserverAverageV8HeapStatistics() { - this(256); + this(DEFAULT_CAPACITY, DEFAULT_TIMEOUT_MILLIS); } /** * Instantiates a new V8 runtime observer for average V8 heap statistics. * - * @param capacity the capacity + * @param capacity the capacity + * @param timeoutMillis the timeout millis * @since 1.0.6 */ - public V8RuntimeObserverAverageV8HeapStatistics(int capacity) { - v8HeapStatisticsList = new ArrayList<>(capacity); + public V8RuntimeObserverAverageV8HeapStatistics(int capacity, int timeoutMillis) { + this.timeoutMillis = timeoutMillis; + v8HeapStatisticsFutureList = new ArrayList<>(capacity); } @Override @@ -70,38 +92,51 @@ public V8HeapStatistics getResult() { long totalPhysicalSize = 0; long usedGlobalHandlesSize = 0; long usedHeapSize = 0; - if (!v8HeapStatisticsList.isEmpty()) { - for (V8HeapStatistics v8HeapStatistics : v8HeapStatisticsList) { - doesZapGarbage += v8HeapStatistics.getDoesZapGarbage(); - externalMemory += v8HeapStatistics.getExternalMemory(); - heapSizeLimit += v8HeapStatistics.getHeapSizeLimit(); - mallocedMemory += v8HeapStatistics.getMallocedMemory(); - numberOfDetachedContexts += v8HeapStatistics.getNumberOfDetachedContexts(); - numberOfNativeContexts += v8HeapStatistics.getNumberOfNativeContexts(); - peakMallocedMemory += v8HeapStatistics.getPeakMallocedMemory(); - totalAvailableSize += v8HeapStatistics.getTotalAvailableSize(); - totalGlobalHandlesSize += v8HeapStatistics.getTotalGlobalHandlesSize(); - totalHeapSize += v8HeapStatistics.getTotalHeapSize(); - totalHeapSizeExecutable += v8HeapStatistics.getTotalHeapSizeExecutable(); - totalPhysicalSize += v8HeapStatistics.getTotalPhysicalSize(); - usedGlobalHandlesSize += v8HeapStatistics.getUsedGlobalHandlesSize(); - usedHeapSize += v8HeapStatistics.getUsedHeapSize(); + if (!v8HeapStatisticsFutureList.isEmpty()) { + int count = 0; + final long expectedEndTime = System.currentTimeMillis() + timeoutMillis; + for (CompletableFuture v8HeapStatisticsFuture : v8HeapStatisticsFutureList) { + try { + final long now = System.currentTimeMillis(); + V8HeapStatistics v8HeapStatistics = now < expectedEndTime + ? v8HeapStatisticsFuture.get(expectedEndTime - now, TimeUnit.MILLISECONDS) + : v8HeapStatisticsFuture.getNow(null); + if (v8HeapStatistics != null) { + doesZapGarbage += v8HeapStatistics.getDoesZapGarbage(); + externalMemory += v8HeapStatistics.getExternalMemory(); + heapSizeLimit += v8HeapStatistics.getHeapSizeLimit(); + mallocedMemory += v8HeapStatistics.getMallocedMemory(); + numberOfDetachedContexts += v8HeapStatistics.getNumberOfDetachedContexts(); + numberOfNativeContexts += v8HeapStatistics.getNumberOfNativeContexts(); + peakMallocedMemory += v8HeapStatistics.getPeakMallocedMemory(); + totalAvailableSize += v8HeapStatistics.getTotalAvailableSize(); + totalGlobalHandlesSize += v8HeapStatistics.getTotalGlobalHandlesSize(); + totalHeapSize += v8HeapStatistics.getTotalHeapSize(); + totalHeapSizeExecutable += v8HeapStatistics.getTotalHeapSizeExecutable(); + totalPhysicalSize += v8HeapStatistics.getTotalPhysicalSize(); + usedGlobalHandlesSize += v8HeapStatistics.getUsedGlobalHandlesSize(); + usedHeapSize += v8HeapStatistics.getUsedHeapSize(); + ++count; + } + } catch (Throwable ignored) { + } + } + if (count > 0) { + doesZapGarbage = doesZapGarbage / count; + externalMemory = externalMemory / count; + heapSizeLimit = heapSizeLimit / count; + mallocedMemory = mallocedMemory / count; + numberOfDetachedContexts = numberOfDetachedContexts / count; + numberOfNativeContexts = numberOfNativeContexts / count; + peakMallocedMemory = peakMallocedMemory / count; + totalAvailableSize = totalAvailableSize / count; + totalGlobalHandlesSize = totalGlobalHandlesSize / count; + totalHeapSize = totalHeapSize / count; + totalHeapSizeExecutable = totalHeapSizeExecutable / count; + totalPhysicalSize = totalPhysicalSize / count; + usedGlobalHandlesSize = usedGlobalHandlesSize / count; + usedHeapSize = usedHeapSize / count; } - final int v8RuntimeCount = v8HeapStatisticsList.size(); - doesZapGarbage = doesZapGarbage / v8RuntimeCount; - externalMemory = externalMemory / v8RuntimeCount; - heapSizeLimit = heapSizeLimit / v8RuntimeCount; - mallocedMemory = mallocedMemory / v8RuntimeCount; - numberOfDetachedContexts = numberOfDetachedContexts / v8RuntimeCount; - numberOfNativeContexts = numberOfNativeContexts / v8RuntimeCount; - peakMallocedMemory = peakMallocedMemory / v8RuntimeCount; - totalAvailableSize = totalAvailableSize / v8RuntimeCount; - totalGlobalHandlesSize = totalGlobalHandlesSize / v8RuntimeCount; - totalHeapSize = totalHeapSize / v8RuntimeCount; - totalHeapSizeExecutable = totalHeapSizeExecutable / v8RuntimeCount; - totalPhysicalSize = totalPhysicalSize / v8RuntimeCount; - usedGlobalHandlesSize = usedGlobalHandlesSize / v8RuntimeCount; - usedHeapSize = usedHeapSize / v8RuntimeCount; } return new V8HeapStatistics( doesZapGarbage, @@ -121,13 +156,12 @@ public V8HeapStatistics getResult() { } @Override - public boolean observe(V8Runtime v8Runtime) { - v8HeapStatisticsList.add(v8Runtime.getV8HeapStatistics()); - return true; + public void observe(V8Runtime v8Runtime) { + v8HeapStatisticsFutureList.add(v8Runtime.getV8HeapStatistics()); } @Override public void reset() { - v8HeapStatisticsList.clear(); + v8HeapStatisticsFutureList.clear(); } } diff --git a/src/main/java/com/caoccao/javet/interop/engine/observers/V8RuntimeObserverAverageV8ModuleCount.java b/src/main/java/com/caoccao/javet/interop/engine/observers/V8RuntimeObserverAverageV8ModuleCount.java index ad35e82d1..63cdbe5f4 100644 --- a/src/main/java/com/caoccao/javet/interop/engine/observers/V8RuntimeObserverAverageV8ModuleCount.java +++ b/src/main/java/com/caoccao/javet/interop/engine/observers/V8RuntimeObserverAverageV8ModuleCount.java @@ -68,9 +68,8 @@ public Integer getResult() { } @Override - public boolean observe(V8Runtime v8Runtime) { + public void observe(V8Runtime v8Runtime) { v8ModuleCountList.add(v8Runtime.getV8ModuleCount()); - return true; } @Override diff --git a/src/main/java/com/caoccao/javet/interop/loader/JavetLibLoader.java b/src/main/java/com/caoccao/javet/interop/loader/JavetLibLoader.java index 1ea2e9b22..ea326a253 100644 --- a/src/main/java/com/caoccao/javet/interop/loader/JavetLibLoader.java +++ b/src/main/java/com/caoccao/javet/interop/loader/JavetLibLoader.java @@ -45,7 +45,7 @@ public final class JavetLibLoader { * * @since 0.8.0 */ - public static final String LIB_VERSION = "3.1.3"; + public static final String LIB_VERSION = "3.1.4"; private static final String ANDROID_ABI_ARM = "armeabi-v7a"; private static final String ANDROID_ABI_ARM64 = "arm64-v8a"; private static final String ANDROID_ABI_X86 = "x86"; diff --git a/src/main/java/com/caoccao/javet/interop/monitoring/V8StatisticsFuture.java b/src/main/java/com/caoccao/javet/interop/monitoring/V8StatisticsFuture.java new file mode 100644 index 000000000..e44447c93 --- /dev/null +++ b/src/main/java/com/caoccao/javet/interop/monitoring/V8StatisticsFuture.java @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2024. caoccao.com Sam Cao + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.caoccao.javet.interop.monitoring; + +import com.caoccao.javet.enums.RawPointerType; +import com.caoccao.javet.interfaces.IJavetRawPointer; +import com.caoccao.javet.utils.JavetDateTimeUtils; + +import java.time.ZonedDateTime; +import java.util.concurrent.CompletableFuture; + +/** + * The type V8 statistics future. + * + * @param the type parameter + * @since 3.1.4 + */ +public final class V8StatisticsFuture extends CompletableFuture implements IJavetRawPointer { + /** + * The constant INVALID_HANDLE. + * + * @since 3.1.4 + */ + public static final long INVALID_HANDLE = 0L; + private final ZonedDateTime creationDateTime; + private final RawPointerType rawPointerType; + private long handle; + + /** + * Instantiates a new V8 statistics future. + * + * @since 3.1.4 + */ + V8StatisticsFuture(int rawPointerTypeId) { + super(); + creationDateTime = JavetDateTimeUtils.getUTCNow(); + handle = INVALID_HANDLE; + rawPointerType = RawPointerType.parse(rawPointerTypeId); + } + + /** + * Gets creation date time. + * + * @return the creation date time + * @since 3.1.4 + */ + public ZonedDateTime getCreationDateTime() { + return creationDateTime; + } + + /** + * Gets handle. + * + * @return the handle + * @since 3.1.4 + */ + public long getHandle() { + return handle; + } + + @Override + public RawPointerType getRawPointerType() { + return rawPointerType; + } + + /** + * Sets handle. + * + * @param handle the handle + * @since 3.1.4 + */ + void setHandle(long handle) { + this.handle = handle; + } +} diff --git a/src/main/java/com/caoccao/javet/interop/options/V8Flags.java b/src/main/java/com/caoccao/javet/interop/options/V8Flags.java index 33659c171..80015dd3e 100644 --- a/src/main/java/com/caoccao/javet/interop/options/V8Flags.java +++ b/src/main/java/com/caoccao/javet/interop/options/V8Flags.java @@ -66,12 +66,6 @@ public final class V8Flags { * @since 0.9.13 */ public static final String FLAG_MAX_HEAP_SIZE = "--max-heap-size"; - /** - * The constant FLAG_TRACK_RETAINING_PATH. - * - * @since 0.9.13 - */ - public static final String FLAG_TRACK_RETAINING_PATH = "--track-retaining-path"; /** * The constant FLAG_USE_STRICT. * @@ -87,7 +81,6 @@ public final class V8Flags { private int maxHeapSize; private int maxOldSpaceSize; private boolean sealed; - private boolean trackRetainingPath; private boolean useStrict; /** @@ -104,7 +97,6 @@ public final class V8Flags { maxHeapSize = 0; maxOldSpaceSize = 0; sealed = false; - trackRetainingPath = false; useStrict = true; } @@ -192,16 +184,6 @@ public boolean isSealed() { return sealed; } - /** - * Is track retaining path. - * - * @return the boolean - * @since 0.7.0 - */ - public boolean isTrackRetainingPath() { - return trackRetainingPath; - } - /** * Is use strict. * @@ -335,20 +317,6 @@ public V8Flags setMaxOldSpaceSize(int maxOldSpaceSize) { return this; } - /** - * Sets track retaining path. - * - * @param trackRetainingPath the track retaining path - * @return the self - * @since 0.7.0 - */ - public V8Flags setTrackRetainingPath(boolean trackRetainingPath) { - if (!sealed) { - this.trackRetainingPath = trackRetainingPath; - } - return this; - } - /** * Sets use strict. * @@ -387,9 +355,6 @@ public String toString() { if (useStrict) { tokens.add(FLAG_USE_STRICT); } - if (trackRetainingPath) { - tokens.add(FLAG_TRACK_RETAINING_PATH); - } Collections.sort(tokens, String::compareTo); if (StringUtils.isNotEmpty(customFlags)) { tokens.add(customFlags); diff --git a/src/test/java/com/caoccao/javet/BaseTestJavet.java b/src/test/java/com/caoccao/javet/BaseTestJavet.java index 326940cab..cc15e23a2 100644 --- a/src/test/java/com/caoccao/javet/BaseTestJavet.java +++ b/src/test/java/com/caoccao/javet/BaseTestJavet.java @@ -68,7 +68,6 @@ public BaseTestJavet(JSRuntimeType jsRuntimeType) { v8Flags.setMaxHeapSize(768); v8Flags.setMaxOldSpaceSize(512); v8Flags.setUseStrict(true); - v8Flags.setTrackRetainingPath(true); } } if (jsRuntimeType.isNode()) { diff --git a/src/test/java/com/caoccao/javet/BaseTestJavetRuntime.java b/src/test/java/com/caoccao/javet/BaseTestJavetRuntime.java index 3096439c2..48ef27253 100644 --- a/src/test/java/com/caoccao/javet/BaseTestJavetRuntime.java +++ b/src/test/java/com/caoccao/javet/BaseTestJavetRuntime.java @@ -49,8 +49,8 @@ public void afterEach() throws JavetException { long[] counters = v8Host.getInternalStatistic(); if (counters != null) { assertArrayEquals( - Arrays.copyOfRange(counters, 1, 7), - Arrays.copyOfRange(counters, 7, 13)); + Arrays.copyOfRange(counters, 1, 8), + Arrays.copyOfRange(counters, 8, 15)); } v8Host.clearInternalStatistic(); assertEquals(0, v8Host.getV8RuntimeCount()); diff --git a/src/test/java/com/caoccao/javet/interop/TestNodeRuntime.java b/src/test/java/com/caoccao/javet/interop/TestNodeRuntime.java index 9fa554db6..3035f5d70 100644 --- a/src/test/java/com/caoccao/javet/interop/TestNodeRuntime.java +++ b/src/test/java/com/caoccao/javet/interop/TestNodeRuntime.java @@ -39,6 +39,7 @@ import java.nio.file.StandardOpenOption; import java.text.MessageFormat; import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.IntStream; import static org.junit.jupiter.api.Assertions.*; @@ -170,6 +171,20 @@ public void testConsoleArguments() throws JavetException { } } + @Test + public void testDynamicImport() throws JavetException { + nodeRuntime.getExecutor("const { Script, constants } = require('node:vm');\n" + + "const script = new Script(\n" + + " 'import(\"node:fs\").then(({readFile}) => readFile instanceof Function)',\n" + + " { importModuleDynamically: constants.USE_MAIN_CONTEXT_DEFAULT_LOADER });\n" + + "globalThis.a = null;" + + "script.runInNewContext().then((x) => { globalThis.a = x; });") + .setModule(true) + .executeVoid(); + nodeRuntime.await(); + assertFalse(nodeRuntime.getGlobalObject().getBoolean("a")); + } + @Test public void testModuleAny() throws JavetException { NodeModuleAny nodeModuleFS = nodeRuntime.getNodeModule("fs", NodeModuleAny.class); @@ -195,7 +210,7 @@ public void testModuleProcess() throws JavetException { Path path4 = nodeModuleProcess.getWorkingDirectory().toPath(); assertNotEquals(path1.toAbsolutePath().toString(), path3.toAbsolutePath().toString()); assertEquals(path1.toAbsolutePath().toString(), path4.toAbsolutePath().toString()); - assertEquals("v20.14.0", nodeModuleProcess.getVersion()); + assertEquals("v20.15.1", nodeModuleProcess.getVersion()); } @Test @@ -299,6 +314,18 @@ public void testSqlite3InSubDirectory() throws JavetException { } } + @Test + public void testStopping() throws JavetException { + IntStream.range(0, 5).forEach(i -> assertFalse(nodeRuntime.isStopping())); + IntStream.range(0, 5).forEach(i -> { + nodeRuntime.setStopping(false); + assertFalse(nodeRuntime.isStopping()); + nodeRuntime.setStopping(true); + assertTrue(nodeRuntime.isStopping()); + }); + nodeRuntime.getExecutor("let count = 0; setInterval(()=> console.log(count++), 1000);").executeVoid(); + } + @Test public void testTimers() throws JavetException { nodeRuntime.getExecutor(getScriptFile("test-node-module-timers.js")).executeVoid(); diff --git a/src/test/java/com/caoccao/javet/interop/TestV8Runtime.java b/src/test/java/com/caoccao/javet/interop/TestV8Runtime.java index c3df5b207..b9748ad2d 100644 --- a/src/test/java/com/caoccao/javet/interop/TestV8Runtime.java +++ b/src/test/java/com/caoccao/javet/interop/TestV8Runtime.java @@ -144,13 +144,6 @@ public void testGlobalName() throws JavetException { } } - @Test - public void testIdleNotificationDeadline() throws JavetException { - try (V8Runtime v8Runtime = v8Host.createV8Runtime()) { - v8Runtime.idleNotificationDeadline(1000); - } - } - @Test public void testLowMemoryNotification() throws JavetException { try (V8Runtime v8Runtime = v8Host.createV8Runtime()) { diff --git a/src/test/java/com/caoccao/javet/interop/engine/TestJavetEnginePool.java b/src/test/java/com/caoccao/javet/interop/engine/TestJavetEnginePool.java index 6efa1a18f..0359ab2e5 100644 --- a/src/test/java/com/caoccao/javet/interop/engine/TestJavetEnginePool.java +++ b/src/test/java/com/caoccao/javet/interop/engine/TestJavetEnginePool.java @@ -259,9 +259,9 @@ public void testMultiThreadedExecutionExceedsMaxSize() throws Exception { @Test public void testSingleThreadedExecution() throws Exception { - List v8HeapStatisticsList = new ArrayList<>(); + final List> v8HeapStatisticsFutureList = new ArrayList<>(); IV8RuntimeObserver observer = - v8Runtime -> v8HeapStatisticsList.add(v8Runtime.getV8HeapStatistics()); + v8Runtime -> v8HeapStatisticsFutureList.add(v8Runtime.getV8HeapStatistics()); assertEquals(0, javetEnginePool.observe(observer)); try (IJavetEngine engine = javetEnginePool.getEngine()) { assertEquals(0, javetEnginePool.getIdleEngineCount()); @@ -282,8 +282,11 @@ public void testSingleThreadedExecution() throws Exception { assertEquals(0, javetEnginePool.getActiveEngineCount()); assertEquals(javetEnginePool.getConfig().getPoolMaxSize() - 1, javetEnginePool.getReleasedEngineCount()); assertEquals(1, javetEnginePool.observe(observer)); - assertEquals(1, v8HeapStatisticsList.size()); - assertNotNull(v8HeapStatisticsList.stream().map(V8HeapStatistics::toString).collect(Collectors.joining())); + assertEquals(1, v8HeapStatisticsFutureList.size()); + assertNotNull(v8HeapStatisticsFutureList.stream() + .map(CompletableFuture::join) + .map(V8HeapStatistics::toString) + .collect(Collectors.joining())); } @Test diff --git a/src/test/java/com/caoccao/javet/interop/monitoring/TestV8HeapSpaceStatistics.java b/src/test/java/com/caoccao/javet/interop/monitoring/TestV8HeapSpaceStatistics.java index ae11f36cb..ea8535212 100644 --- a/src/test/java/com/caoccao/javet/interop/monitoring/TestV8HeapSpaceStatistics.java +++ b/src/test/java/com/caoccao/javet/interop/monitoring/TestV8HeapSpaceStatistics.java @@ -17,6 +17,7 @@ package com.caoccao.javet.interop.monitoring; import com.caoccao.javet.BaseTestJavetRuntime; +import com.caoccao.javet.enums.RawPointerType; import com.caoccao.javet.enums.V8AllocationSpace; import com.caoccao.javet.exceptions.JavetException; import com.caoccao.javet.interop.V8Runtime; @@ -54,12 +55,17 @@ public void testCorrelations() throws JavetException { @Test public void testGetV8HeapSpaceStatistics() { for (V8AllocationSpace v8AllocationSpace : V8AllocationSpace.values()) { - V8HeapSpaceStatistics v8HeapSpaceStatistics = v8Runtime.getV8HeapSpaceStatistics(v8AllocationSpace); + V8StatisticsFuture v8HeapSpaceStatisticsFuture = + (V8StatisticsFuture) v8Runtime.getV8HeapSpaceStatistics(v8AllocationSpace); + assertEquals(V8StatisticsFuture.INVALID_HANDLE, v8HeapSpaceStatisticsFuture.getHandle()); + assertEquals(RawPointerType.HeapSpaceStatisticsContainer, v8HeapSpaceStatisticsFuture.getRawPointerType()); + assertTrue(v8HeapSpaceStatisticsFuture.isDone()); + V8HeapSpaceStatistics v8HeapSpaceStatistics = v8HeapSpaceStatisticsFuture.join(); assertNotNull(v8HeapSpaceStatistics); String detailString = v8HeapSpaceStatistics.toString(); assertNotNull(detailString); assertEquals(v8AllocationSpace, v8HeapSpaceStatistics.getAllocationSpace()); - assertTrue(v8HeapSpaceStatistics.getSpaceName().length() > 0); + assertFalse(v8HeapSpaceStatistics.getSpaceName().isEmpty()); assertTrue(v8HeapSpaceStatistics.getPhysicalSpaceSize() >= 0); assertTrue(v8HeapSpaceStatistics.getSpaceAvailableSize() >= 0); assertTrue(v8HeapSpaceStatistics.getSpaceSize() >= 0); diff --git a/src/test/java/com/caoccao/javet/interop/monitoring/TestV8HeapStatistics.java b/src/test/java/com/caoccao/javet/interop/monitoring/TestV8HeapStatistics.java index 5f9212678..88e3b8734 100644 --- a/src/test/java/com/caoccao/javet/interop/monitoring/TestV8HeapStatistics.java +++ b/src/test/java/com/caoccao/javet/interop/monitoring/TestV8HeapStatistics.java @@ -17,6 +17,7 @@ package com.caoccao.javet.interop.monitoring; import com.caoccao.javet.BaseTestJavetRuntime; +import com.caoccao.javet.enums.RawPointerType; import com.caoccao.javet.exceptions.JavetException; import com.caoccao.javet.interop.V8Runtime; import com.caoccao.javet.utils.JavetResourceUtils; @@ -49,8 +50,12 @@ public void testCorrelations() throws JavetException { @Test public void testGetV8HeapStatistics() { - V8HeapStatistics v8HeapStatistics = v8Runtime.getV8HeapStatistics(); - assertNotNull(v8HeapStatistics); + V8StatisticsFuture v8HeapStatisticsFuture = + (V8StatisticsFuture) v8Runtime.getV8HeapStatistics(); + assertEquals(V8StatisticsFuture.INVALID_HANDLE, v8HeapStatisticsFuture.getHandle()); + assertEquals(RawPointerType.HeapStatisticsContainer, v8HeapStatisticsFuture.getRawPointerType()); + assertTrue(v8HeapStatisticsFuture.isDone()); + V8HeapStatistics v8HeapStatistics = v8HeapStatisticsFuture.join(); String detailString = v8HeapStatistics.toString(); assertNotNull(detailString); assertEquals(0, v8HeapStatistics.getDoesZapGarbage()); diff --git a/src/test/java/com/caoccao/javet/interop/monitoring/TestV8HeapStatisticsOOM.java b/src/test/java/com/caoccao/javet/interop/monitoring/TestV8HeapStatisticsOOM.java index ef4873549..50633f520 100644 --- a/src/test/java/com/caoccao/javet/interop/monitoring/TestV8HeapStatisticsOOM.java +++ b/src/test/java/com/caoccao/javet/interop/monitoring/TestV8HeapStatisticsOOM.java @@ -19,6 +19,7 @@ import com.caoccao.javet.exceptions.JavetException; import com.caoccao.javet.interop.V8Host; import com.caoccao.javet.interop.V8Runtime; +import com.caoccao.javet.interop.options.NodeRuntimeOptions; import com.caoccao.javet.interop.options.V8RuntimeOptions; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; @@ -28,27 +29,39 @@ import java.util.concurrent.TimeUnit; public class TestV8HeapStatisticsOOM { + protected void internalTest(V8Runtime v8Runtime) throws JavetException, InterruptedException { + final ScheduledExecutorService timerService = Executors.newSingleThreadScheduledExecutor(); + timerService.scheduleAtFixedRate(() -> v8Runtime.getV8HeapStatistics().thenAccept(v8HeapStatistics -> { + double used = v8HeapStatistics.getUsedHeapSize(); + double limit = v8HeapStatistics.getHeapSizeLimit(); + double ratio = used / limit; + System.out.println("Limit: " + v8HeapStatistics.getHeapSizeLimit() + + ", Used: " + v8HeapStatistics.getUsedHeapSize() + + ", Ratio: " + ratio); + }), 250, 1000, TimeUnit.MILLISECONDS); + v8Runtime.getExecutor("const a = [];" + + "for (let i = 0; i < 100000000; i++) {" + + " a.push({test:'test'});" + + "}").executeVoid(); + timerService.shutdown(); + timerService.awaitTermination(30, TimeUnit.SECONDS); + } + + @Test + @Tag("performance") + public void testNodeOOM() throws JavetException, InterruptedException { + NodeRuntimeOptions.V8_FLAGS.setMaxHeapSize(8096); + try (V8Runtime v8Runtime = V8Host.getNodeInstance().createV8Runtime()) { + internalTest(v8Runtime); + } + } + @Test @Tag("performance") - public void testOOM() throws JavetException, InterruptedException { + public void testV8OOM() throws JavetException, InterruptedException { V8RuntimeOptions.V8_FLAGS.setMaxHeapSize(8096); try (V8Runtime v8Runtime = V8Host.getV8Instance().createV8Runtime()) { - final ScheduledExecutorService timerService = Executors.newSingleThreadScheduledExecutor(); - timerService.scheduleAtFixedRate(() -> { - V8HeapStatistics v8HeapStatistics = v8Runtime.getV8HeapStatistics(); - double used = v8HeapStatistics.getUsedHeapSize(); - double limit = v8HeapStatistics.getHeapSizeLimit(); - double ratio = used / limit; - System.out.println("Limit: " + v8HeapStatistics.getHeapSizeLimit() + - ", Used: " + v8HeapStatistics.getUsedHeapSize() + - ", Ratio: " + ratio); - }, 250, 1000, TimeUnit.MILLISECONDS); - v8Runtime.getExecutor("const a = [];" + - "for (let i = 0; i < 100000000; i++) {" + - " a.push({test:'test'});" + - "}").executeVoid(); - timerService.shutdown(); - timerService.awaitTermination(30, TimeUnit.SECONDS); + internalTest(v8Runtime); } } } diff --git a/src/test/java/com/caoccao/javet/interop/options/TestV8Flags.java b/src/test/java/com/caoccao/javet/interop/options/TestV8Flags.java index 4f2e0c27f..6c9110a29 100644 --- a/src/test/java/com/caoccao/javet/interop/options/TestV8Flags.java +++ b/src/test/java/com/caoccao/javet/interop/options/TestV8Flags.java @@ -16,7 +16,6 @@ package com.caoccao.javet.interop.options; -import com.caoccao.javet.interop.options.V8Flags; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; @@ -39,8 +38,6 @@ public void testSeal() { assertEquals(2048, v8Flags.setMaxHeapSize(2048).getMaxHeapSize()); assertEquals(0, v8Flags.getMaxOldSpaceSize()); assertEquals(2048, v8Flags.setMaxOldSpaceSize(2048).getMaxOldSpaceSize()); - assertFalse(v8Flags.isTrackRetainingPath()); - assertTrue(v8Flags.setTrackRetainingPath(true).isTrackRetainingPath()); assertTrue(v8Flags.isUseStrict()); assertFalse(v8Flags.setUseStrict(false).isUseStrict()); assertNull(v8Flags.getCustomFlags()); @@ -53,7 +50,6 @@ public void testSeal() { assertEquals(2048, v8Flags.setInitialHeapSize(1).getInitialHeapSize()); assertEquals(2048, v8Flags.setMaxHeapSize(1).getMaxHeapSize()); assertEquals(2048, v8Flags.setMaxOldSpaceSize(1).getMaxOldSpaceSize()); - assertTrue(v8Flags.setTrackRetainingPath(false).isTrackRetainingPath()); assertFalse(v8Flags.setUseStrict(true).isUseStrict()); assertEquals("test 123", v8Flags.setCustomFlags("abc def").getCustomFlags()); }