diff --git a/.github/workflows/android_node_build.yml b/.github/workflows/android_node_build.yml index 7a7cdefb5..26045fff1 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.15.1 - JAVET_VERSION: 3.1.4 + JAVET_NODE_VERSION: 20.16.0 + JAVET_VERSION: 3.1.5 ROOT: /home/runner/work/Javet jobs: @@ -47,7 +47,7 @@ jobs: id: setup-ndk uses: nttld/setup-ndk@v1 with: - ndk-version: r25b + ndk-version: r27 local-cache: false - name: Setup Path @@ -115,7 +115,7 @@ jobs: python-version: '3.11' - name: Setup Gradle - uses: gradle/gradle-build-action@v3 + uses: gradle/actions/setup-gradle@v4 with: gradle-version: 8.5 diff --git a/.github/workflows/android_v8_build.yml b/.github/workflows/android_v8_build.yml index f6cfac5d0..d361459a0 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.7.224.16 - JAVET_VERSION: 3.1.4 + JAVET_V8_VERSION: 12.8.374.17 + JAVET_VERSION: 3.1.5 ROOT: /home/runner/work/Javet jobs: @@ -55,7 +55,7 @@ jobs: id: setup-ndk uses: nttld/setup-ndk@v1 with: - ndk-version: r25b + ndk-version: r27 local-cache: false - name: Setup Path @@ -127,7 +127,7 @@ jobs: python-version: '3.11' - name: Setup Gradle - uses: gradle/gradle-build-action@v3 + uses: gradle/actions/setup-gradle@v4 with: gradle-version: 8.5 diff --git a/.github/workflows/build_docs.yml b/.github/workflows/build_docs.yml index 7e4aec9d1..67d97bab8 100644 --- a/.github/workflows/build_docs.yml +++ b/.github/workflows/build_docs.yml @@ -56,7 +56,7 @@ jobs: java-version: '8' - name: Setup Gradle - uses: gradle/gradle-build-action@v3 + uses: gradle/actions/setup-gradle@v4 with: gradle-version: 8.5 diff --git a/.github/workflows/linux_build_artifact.yml b/.github/workflows/linux_build_artifact.yml index 7e1494ee8..460eb1323 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.15.1 - JAVET_V8_VERSION: 12.7.224.16 - JAVET_VERSION: 3.1.4 + JAVET_NODE_VERSION: 20.16.0 + JAVET_V8_VERSION: 12.8.374.17 + JAVET_VERSION: 3.1.5 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 27c7e74f9..f9d9ef867 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.15.1 - JAVET_V8_VERSION: 12.7.224.16 - JAVET_VERSION: 3.1.4 + JAVET_NODE_VERSION: 20.16.0 + JAVET_V8_VERSION: 12.8.374.17 + JAVET_VERSION: 3.1.5 # 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 67c433601..75cc619d5 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.15.1 - JAVET_V8_VERSION: 12.7.224.16 - JAVET_VERSION: 3.1.4 + JAVET_NODE_VERSION: 20.16.0 + JAVET_V8_VERSION: 12.8.374.17 + JAVET_VERSION: 3.1.5 ROOT: /home/runner/work/Javet jobs: @@ -147,7 +147,7 @@ jobs: java-version: 8 - name: Setup Gradle - uses: gradle/gradle-build-action@v3 + uses: gradle/actions/setup-gradle@v4 with: gradle-version: 8.5 diff --git a/.github/workflows/macos_arm64_build.yml b/.github/workflows/macos_arm64_build.yml index c1314e810..5a56cf0bb 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.15.1 - JAVET_V8_VERSION: 12.7.224.16 - JAVET_VERSION: 3.1.4 + JAVET_NODE_VERSION: 20.16.0 + JAVET_V8_VERSION: 12.8.374.17 + JAVET_VERSION: 3.1.5 ROOT: /Users/runner/work/Javet jobs: @@ -142,7 +142,7 @@ jobs: java-version: 8 - name: Setup Gradle - uses: gradle/gradle-build-action@v3 + uses: gradle/actions/setup-gradle@v4 with: gradle-version: 8.5 diff --git a/.github/workflows/macos_x86_64_build.yml b/.github/workflows/macos_x86_64_build.yml index 1d3c2beec..171034ce0 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.15.1 - JAVET_V8_VERSION: 12.7.224.16 - JAVET_VERSION: 3.1.4 + JAVET_NODE_VERSION: 20.16.0 + JAVET_V8_VERSION: 12.8.374.17 + JAVET_VERSION: 3.1.5 ROOT: /Users/runner/work/Javet jobs: @@ -142,7 +142,7 @@ jobs: java-version: 8 - name: Setup Gradle - uses: gradle/gradle-build-action@v3 + uses: gradle/actions/setup-gradle@v4 with: gradle-version: 8.5 diff --git a/README.rst b/README.rst index db6518aa7..aa5f7bc17 100644 --- a/README.rst +++ b/README.rst @@ -47,7 +47,7 @@ arm ✔️ ❌ ❌ ❌ arm64 ✔️ ✔️ ✔️ ❌ =========== ======= ======= ======= ======= -* Node.js ``v20.15.1`` + V8 ``v12.7.224.16`` +* Node.js ``v20.16.0`` + V8 ``v12.8.374.17`` * 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.4 + 3.1.5 com.caoccao.javet javet-linux-arm64 - 3.1.4 + 3.1.5 com.caoccao.javet javet-macos - 3.1.4 + 3.1.5 Gradle Kotlin DSL @@ -97,22 +97,22 @@ Gradle Kotlin DSL .. code-block:: kotlin - 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) + implementation("com.caoccao.javet:javet:3.1.5") // Linux and Windows (x86_64) + implementation("com.caoccao.javet:javet-linux-arm64:3.1.5") // Linux (arm64) + implementation("com.caoccao.javet:javet-macos:3.1.5") // Mac OS (x86_64 and arm64) + implementation("com.caoccao.javet:javet-android-node:3.1.5") // Android Node (arm, arm64, x86 and x86_64) + implementation("com.caoccao.javet:javet-android-v8:3.1.5") // Android V8 (arm, arm64, x86 and x86_64) Gradle Groovy DSL ^^^^^^^^^^^^^^^^^ .. code-block:: groovy - 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) + implementation 'com.caoccao.javet:javet:3.1.5' // Linux and Windows (x86_64) + implementation 'com.caoccao.javet:javet-linux-arm64:3.1.5' // Linux (arm64) + implementation 'com.caoccao.javet:javet-macos:3.1.5' // Mac OS (x86_64 and arm64) + implementation 'com.caoccao.javet:javet-android-node:3.1.5' // Android Node (arm, arm64, x86 and x86_64) + implementation 'com.caoccao.javet:javet-android-v8:3.1.5' // Android V8 (arm, arm64, x86 and x86_64) Hello Javet ----------- diff --git a/android/javet-android/build.gradle.kts b/android/javet-android/build.gradle.kts index 3d9eadaea..1cbe99ff1 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.4" + const val JAVET = "3.1.5" 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 772b2b17d..0afc83bfe 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 8ddc175f4..173b80767 100644 --- a/android/pom.xml +++ b/android/pom.xml @@ -3,7 +3,7 @@ com.caoccao.javet javet-android - 3.1.4 + 3.1.5 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.4 + 3.1.5 diff --git a/build.gradle.kts b/build.gradle.kts index 338488bbd..8c09ee7c6 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.4" + const val JAVET = "3.1.5" 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 587b273ec..625e9dc57 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -99,6 +99,7 @@ if(DEFINED V8_DIR) ${V8_DIR} ${V8_DIR}/include ${V8_DIR}/third_party/abseil-cpp + ${V8_DIR}/third_party/fp16/src/include ${V8_RELEASE_DIR}/gen) if(DEFINED ENABLE_I18N) add_definitions(-DENABLE_I18N -DV8_INTL_SUPPORT) @@ -196,8 +197,8 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android set(CMAKE_POSITION_INDEPENDENT_CODE ON) add_library(Javet SHARED ${sourceFiles}) add_library(JavetStatic STATIC ${sourceFiles}) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-invalid-offsetof -O3 ") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-invalid-offsetof -O3 ") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-invalid-offsetof -O3 -fno-rtti ") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-invalid-offsetof -O3 -fno-rtti ") if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "(arm64|x86_64|aarch64)") set(JAVET_LIB_SYSTEM "linux") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated -Wno-deprecated-declarations ") diff --git a/cpp/build-android.sh b/cpp/build-android.sh index 7c6226501..fb2afbeb9 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.4 +JAVET_VERSION=3.1.5 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 616e6b7f0..218ccf4f0 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.4 +JAVET_VERSION=3.1.5 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 31998f1be..d4343d6b8 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.4 +JAVET_VERSION=3.1.5 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 b0c713b00..3d8258727 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.4 +JAVET_VERSION=3.1.5 rm -rf build_macos mkdir build_macos cd build_macos diff --git a/cpp/build-windows.cmd b/cpp/build-windows.cmd index 10e3fb602..be78cada7 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.4 +SET JAVET_VERSION=3.1.5 rd /s/q build_windows mkdir build_windows cd build_windows diff --git a/cpp/jni/javet_converter.cpp b/cpp/jni/javet_converter.cpp index c22b8edd7..fcc179fc1 100644 --- a/cpp/jni/javet_converter.cpp +++ b/cpp/jni/javet_converter.cpp @@ -625,12 +625,12 @@ namespace Javet { return ToExternalV8Value(jniEnv, v8Runtime, v8Context, v8LocalObject); } else if (v8::internal::IsContext(v8InternalObject)) { - auto v8InternalContext = V8InternalContext::cast(v8InternalObject); + auto v8InternalContext = v8::internal::Cast(v8InternalObject); auto v8LocalContext = v8::Utils::ToLocal(v8::internal::handle(v8InternalContext, v8InternalIsolate)); return ToExternalV8Context(jniEnv, v8Runtime, v8Context, v8LocalContext); } else if (v8::internal::IsModule(v8InternalObject)) { - auto v8LocalModule = v8::Utils::ToLocal(v8::internal::handle(V8InternalModule::cast(v8InternalObject), v8InternalIsolate)); + auto v8LocalModule = v8::Utils::ToLocal(v8::internal::handle(v8::internal::Cast(v8InternalObject), v8InternalIsolate)); return ToExternalV8Module(jniEnv, v8Runtime, v8Context, v8LocalModule); } else if (v8::internal::IsScript(v8InternalObject)) { @@ -656,179 +656,261 @@ namespace Javet { return ToExternalV8ValueNull(jniEnv, v8Runtime); } // Reference types - // Note: Reference types must be checked before primitive types are checked. - if (v8Value->IsArray()) { - return jniEnv->NewObject( - jclassV8ValueArray, - jmethodIDV8ValueArrayConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - if (v8Value->IsTypedArray()) { - int type = V8ValueReferenceType::Invalid; - if (v8Value->IsBigInt64Array()) { - type = V8ValueReferenceType::BigInt64Array; + if (v8Value->IsObject()) { + if (v8Value->IsArray()) { + return jniEnv->NewObject( + jclassV8ValueArray, + jmethodIDV8ValueArrayConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); } - else if (v8Value->IsBigUint64Array()) { - type = V8ValueReferenceType::BigUint64Array; + if (v8Value->IsTypedArray()) { + int type = V8ValueReferenceType::Invalid; + if (v8Value->IsBigInt64Array()) { + type = V8ValueReferenceType::BigInt64Array; + } + else if (v8Value->IsBigUint64Array()) { + type = V8ValueReferenceType::BigUint64Array; + } + else if (v8Value->IsFloat32Array()) { + type = V8ValueReferenceType::Float32Array; + } + else if (v8Value->IsFloat64Array()) { + type = V8ValueReferenceType::Float64Array; + } + else if (v8Value->IsInt16Array()) { + type = V8ValueReferenceType::Int16Array; + } + else if (v8Value->IsInt32Array()) { + type = V8ValueReferenceType::Int32Array; + } + else if (v8Value->IsInt8Array()) { + type = V8ValueReferenceType::Int8Array; + } + else if (v8Value->IsUint16Array()) { + type = V8ValueReferenceType::Uint16Array; + } + else if (v8Value->IsUint32Array()) { + type = V8ValueReferenceType::Uint32Array; + } + else if (v8Value->IsUint8Array()) { + type = V8ValueReferenceType::Uint8Array; + } + else if (v8Value->IsUint8ClampedArray()) { + type = V8ValueReferenceType::Uint8ClampedArray; + } + if (type != V8ValueReferenceType::Invalid) { + return jniEnv->NewObject( + jclassV8ValueTypedArray, + jmethodIDV8ValueTypedArrayConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value), + type); + } } - else if (v8Value->IsFloat32Array()) { - type = V8ValueReferenceType::Float32Array; + if (v8Value->IsDataView()) { + return jniEnv->NewObject( + jclassV8ValueDataView, + jmethodIDV8ValueDataViewConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); } - else if (v8Value->IsFloat64Array()) { - type = V8ValueReferenceType::Float64Array; + if (v8Value->IsArrayBuffer()) { + auto v8ArrayBuffer = v8Value.As(); + return jniEnv->NewObject( + jclassV8ValueArrayBuffer, + jmethodIDV8ValueArrayBufferConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value), + jniEnv->NewDirectByteBuffer(v8ArrayBuffer->GetBackingStore()->Data(), v8ArrayBuffer->ByteLength())); } - else if (v8Value->IsInt16Array()) { - type = V8ValueReferenceType::Int16Array; + if (v8Value->IsSharedArrayBuffer()) { + auto v8SharedArrayBuffer = v8Value.As(); + return jniEnv->NewObject( + jclassV8ValueSharedArrayBuffer, + jmethodIDV8ValueSharedArrayBufferConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value), + jniEnv->NewDirectByteBuffer(v8SharedArrayBuffer->GetBackingStore()->Data(), v8SharedArrayBuffer->ByteLength())); } - else if (v8Value->IsInt32Array()) { - type = V8ValueReferenceType::Int32Array; + if (v8Value->IsArrayBufferView()) { + /* + * ArrayBufferView is a helper type representing any of typed array or DataView. + * This block shouldn't be entered. + */ } - else if (v8Value->IsInt8Array()) { - type = V8ValueReferenceType::Int8Array; + if (v8Value->IsWeakMap()) { + return jniEnv->NewObject( + jclassV8ValueWeakMap, + jmethodIDV8ValueWeakMapConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); } - else if (v8Value->IsUint16Array()) { - type = V8ValueReferenceType::Uint16Array; + if (v8Value->IsWeakSet()) { + return jniEnv->NewObject( + jclassV8ValueWeakSet, + jmethodIDV8ValueWeakSetConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); } - else if (v8Value->IsUint32Array()) { - type = V8ValueReferenceType::Uint32Array; + if (v8Value->IsMap()) { + return jniEnv->NewObject( + jclassV8ValueMap, + jmethodIDV8ValueMapConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); } - else if (v8Value->IsUint8Array()) { - type = V8ValueReferenceType::Uint8Array; + if (v8Value->IsSet()) { + return jniEnv->NewObject( + jclassV8ValueSet, + jmethodIDV8ValueSetConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); } - else if (v8Value->IsUint8ClampedArray()) { - type = V8ValueReferenceType::Uint8ClampedArray; + if (v8Value->IsMapIterator() || v8Value->IsSetIterator() || v8Value->IsGeneratorObject()) { + return jniEnv->NewObject( + jclassV8ValueIterator, + jmethodIDV8ValueIteratorConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); } - if (type != V8ValueReferenceType::Invalid) { + if (v8Value->IsArgumentsObject()) { return jniEnv->NewObject( - jclassV8ValueTypedArray, - jmethodIDV8ValueTypedArrayConstructor, + jclassV8ValueArguments, + jmethodIDV8ValueArgumentsConstructor, v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value), - type); + ToV8PersistentReference(v8Context, v8Value)); + } + if (v8Value->IsPromise()) { + return jniEnv->NewObject( + jclassV8ValuePromise, + jmethodIDV8ValuePromiseConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); + } + if (v8Value->IsRegExp()) { + return jniEnv->NewObject( + jclassV8ValueRegExp, + jmethodIDV8ValueRegExpConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); + } + if (v8Value->IsAsyncFunction()) { + // It defaults to V8ValueFunction. + } + if (v8Value->IsGeneratorFunction()) { + // It defaults to V8ValueFunction. + } + if (v8Value->IsProxy()) { + // Proxy is also a function. So, it needs to be tested before IsFunction(). + return jniEnv->NewObject( + jclassV8ValueProxy, + jmethodIDV8ValueProxyConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); + } + if (v8Value->IsFunction()) { + return jniEnv->NewObject( + jclassV8ValueFunction, + jmethodIDV8ValueFunctionConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); + } + if (v8Value->IsNativeError()) { + return jniEnv->NewObject( + jclassV8ValueError, + jmethodIDV8ValueErrorConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); + } + if (v8Value->IsDate()) { + auto v8Date = v8Value->ToObject(v8Context).ToLocalChecked().As(); + return jniEnv->CallObjectMethod( + v8Runtime->externalV8Runtime, + jmethodIDV8RuntimeCreateV8ValueZonedDateTime, + static_cast(v8Date->ValueOf())); + } + if (v8Value->IsSymbolObject()) { + return jniEnv->NewObject( + jclassV8ValueSymbolObject, + jmethodIDV8ValueSymbolObjectConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); + } + if (v8Value->IsStringObject()) { + return jniEnv->NewObject( + jclassV8ValueStringObject, + jmethodIDV8ValueStringObjectConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); + } + if (v8Value->IsNumberObject()) { + return jniEnv->NewObject( + jclassV8ValueDoubleObject, + jmethodIDV8ValueDoubleObjectConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); + } + if (v8Value->IsBooleanObject()) { + return jniEnv->NewObject( + jclassV8ValueBooleanObject, + jmethodIDV8ValueBooleanObjectConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); + } + if (v8Value->IsBigIntObject()) { + return jniEnv->NewObject( + jclassV8ValueLongObject, + jmethodIDV8ValueLongObjectConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); + } + if (v8Value->IsName()) { + /* + * Name is handled by either String or Symbol. + * This block should not be entered. + */ + } + if (v8Value->IsModule()) { + return jniEnv->NewObject( + jclassV8Module, + jmethodIDV8ModuleConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); } - } - if (v8Value->IsDataView()) { - return jniEnv->NewObject( - jclassV8ValueDataView, - jmethodIDV8ValueDataViewConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - if (v8Value->IsArrayBuffer()) { - auto v8ArrayBuffer = v8Value.As(); - return jniEnv->NewObject( - jclassV8ValueArrayBuffer, - jmethodIDV8ValueArrayBufferConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value), - jniEnv->NewDirectByteBuffer(v8ArrayBuffer->GetBackingStore()->Data(), v8ArrayBuffer->ByteLength())); - } - if (v8Value->IsSharedArrayBuffer()) { - auto v8SharedArrayBuffer = v8Value.As(); - return jniEnv->NewObject( - jclassV8ValueSharedArrayBuffer, - jmethodIDV8ValueSharedArrayBufferConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value), - jniEnv->NewDirectByteBuffer(v8SharedArrayBuffer->GetBackingStore()->Data(), v8SharedArrayBuffer->ByteLength())); - } - if (v8Value->IsArrayBufferView()) { - /* - * ArrayBufferView is a helper type representing any of typed array or DataView. - * This block shouldn't be entered. - */ - } - if (v8Value->IsWeakMap()) { - return jniEnv->NewObject( - jclassV8ValueWeakMap, - jmethodIDV8ValueWeakMapConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - if (v8Value->IsWeakSet()) { - return jniEnv->NewObject( - jclassV8ValueWeakSet, - jmethodIDV8ValueWeakSetConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - if (v8Value->IsMap()) { - return jniEnv->NewObject( - jclassV8ValueMap, - jmethodIDV8ValueMapConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - if (v8Value->IsSet()) { - return jniEnv->NewObject( - jclassV8ValueSet, - jmethodIDV8ValueSetConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - if (v8Value->IsMapIterator() || v8Value->IsSetIterator() || v8Value->IsGeneratorObject()) { - return jniEnv->NewObject( - jclassV8ValueIterator, - jmethodIDV8ValueIteratorConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - if (v8Value->IsArgumentsObject()) { - return jniEnv->NewObject( - jclassV8ValueArguments, - jmethodIDV8ValueArgumentsConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - if (v8Value->IsPromise()) { - return jniEnv->NewObject( - jclassV8ValuePromise, - jmethodIDV8ValuePromiseConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - if (v8Value->IsRegExp()) { return jniEnv->NewObject( - jclassV8ValueRegExp, - jmethodIDV8ValueRegExpConstructor, + jclassV8ValueObject, + jmethodIDV8ValueObjectConstructor, v8Runtime->externalV8Runtime, ToV8PersistentReference(v8Context, v8Value)); } - if (v8Value->IsAsyncFunction()) { - // It defaults to V8ValueFunction. - } - if (v8Value->IsGeneratorFunction()) { - // It defaults to V8ValueFunction. - } - if (v8Value->IsProxy()) { - // Proxy is also a function. So, it needs to be tested before IsFunction(). - return jniEnv->NewObject( - jclassV8ValueProxy, - jmethodIDV8ValueProxyConstructor, + // Primitive types + if (v8Value->IsBoolean()) { + return jniEnv->CallObjectMethod( v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); + jmethodIDV8RuntimeCreateV8ValueBoolean, + v8Value->IsTrue()); } - if (v8Value->IsFunction()) { - return jniEnv->NewObject( - jclassV8ValueFunction, - jmethodIDV8ValueFunctionConstructor, + if (v8Value->IsInt32()) { + return jniEnv->CallObjectMethod( v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); + jmethodIDV8RuntimeCreateV8ValueInteger, + v8Value->Int32Value(v8Context).FromMaybe(0)); } - if (v8Value->IsNativeError()) { - return jniEnv->NewObject( - jclassV8ValueError, - jmethodIDV8ValueErrorConstructor, + if (v8Value->IsNumber()) { + return jniEnv->CallObjectMethod( v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); + jmethodIDV8RuntimeCreateV8ValueDouble, + v8Value->NumberValue(v8Context).FromMaybe(0)); } - if (v8Value->IsSymbolObject()) { - return jniEnv->NewObject( - jclassV8ValueSymbolObject, - jmethodIDV8ValueSymbolObjectConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); + if (v8Value->IsString()) { + return ToExternalV8ValuePrimitive( + jniEnv, + jclassV8ValueString, + jmethodIDV8ValueStringConstructor, + v8Runtime, + v8Context, + v8Value); } if (v8Value->IsSymbol()) { return jniEnv->NewObject( @@ -837,47 +919,6 @@ namespace Javet { v8Runtime->externalV8Runtime, ToV8PersistentReference(v8Context, v8Value)); } - if (v8Value->IsStringObject()) { - return jniEnv->NewObject( - jclassV8ValueStringObject, - jmethodIDV8ValueStringObjectConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - if (v8Value->IsNumberObject()) { - return jniEnv->NewObject( - jclassV8ValueDoubleObject, - jmethodIDV8ValueDoubleObjectConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - if (v8Value->IsBooleanObject()) { - return jniEnv->NewObject( - jclassV8ValueBooleanObject, - jmethodIDV8ValueBooleanObjectConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - if (v8Value->IsBigIntObject()) { - return jniEnv->NewObject( - jclassV8ValueLongObject, - jmethodIDV8ValueLongObjectConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - // Primitive types - if (v8Value->IsBoolean()) { - return jniEnv->CallObjectMethod( - v8Runtime->externalV8Runtime, - jmethodIDV8RuntimeCreateV8ValueBoolean, - v8Value->IsTrue()); - } - if (v8Value->IsInt32()) { - return jniEnv->CallObjectMethod( - v8Runtime->externalV8Runtime, - jmethodIDV8RuntimeCreateV8ValueInteger, - v8Value->Int32Value(v8Context).FromMaybe(0)); - } if (v8Value->IsBigInt()) { V8LocalBigInt v8LocalBigInt = v8Value->ToBigInt(v8Context).ToLocalChecked(); int wordCount = v8LocalBigInt->WordCount(); @@ -903,49 +944,6 @@ namespace Javet { mLongArray); } } - if (v8Value->IsDate()) { - auto v8Date = v8Value->ToObject(v8Context).ToLocalChecked().As(); - return jniEnv->CallObjectMethod( - v8Runtime->externalV8Runtime, - jmethodIDV8RuntimeCreateV8ValueZonedDateTime, - static_cast(v8Date->ValueOf())); - } - if (v8Value->IsNumber()) { - return jniEnv->CallObjectMethod( - v8Runtime->externalV8Runtime, - jmethodIDV8RuntimeCreateV8ValueDouble, - v8Value->NumberValue(v8Context).FromMaybe(0)); - } - if (v8Value->IsString()) { - return ToExternalV8ValuePrimitive( - jniEnv, - jclassV8ValueString, - jmethodIDV8ValueStringConstructor, - v8Runtime, - v8Context, - v8Value); - } - if (v8Value->IsName()) { - /* - * Name is handled by either String or Symbol. - * This block should not be entered. - */ - } - if (v8Value->IsModule()) { - return jniEnv->NewObject( - jclassV8Module, - jmethodIDV8ModuleConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - // Object needs to be the last one. - if (v8Value->IsObject()) { - return jniEnv->NewObject( - jclassV8ValueObject, - jmethodIDV8ValueObjectConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } // Something is wrong. It defaults to toString(). return ToExternalV8ValuePrimitive( jniEnv, diff --git a/cpp/jni/javet_converter.h b/cpp/jni/javet_converter.h index e105c69c6..f08643b68 100644 --- a/cpp/jni/javet_converter.h +++ b/cpp/jni/javet_converter.h @@ -332,7 +332,7 @@ namespace Javet { #ifdef ENABLE_NODE return V8InternalContext::cast(*v8::Utils::OpenHandle(*v8LocalContext)); #else - return *V8InternalContext::cast(*v8::Utils::OpenHandle(*v8LocalContext)); + return *v8::internal::Cast(*v8::Utils::OpenHandle(*v8LocalContext)); #endif } @@ -341,7 +341,7 @@ namespace Javet { #ifdef ENABLE_NODE return V8InternalJSFunction::cast(*v8::Utils::OpenHandle(*v8LocalValue)); #else - return *V8InternalJSFunction::cast(*v8::Utils::OpenHandle(*v8LocalValue)); + return *v8::internal::Cast(*v8::Utils::OpenHandle(*v8LocalValue)); #endif } @@ -350,7 +350,7 @@ namespace Javet { #ifdef ENABLE_NODE return V8InternalJSObject::cast(*v8::Utils::OpenHandle(*v8LocalValue)); #else - return *V8InternalJSObject::cast(*v8::Utils::OpenHandle(*v8LocalValue)); + return *v8::internal::Cast(*v8::Utils::OpenHandle(*v8LocalValue)); #endif } @@ -359,7 +359,7 @@ namespace Javet { #ifdef ENABLE_NODE return V8InternalModule::cast(*v8::Utils::OpenHandle(*v8LocalModule)); #else - return *V8InternalModule::cast(*v8::Utils::OpenHandle(*v8LocalModule)); + return *v8::internal::Cast(*v8::Utils::OpenHandle(*v8LocalModule)); #endif } @@ -368,7 +368,7 @@ namespace Javet { #ifdef ENABLE_NODE return V8InternalScript::cast(*v8::Utils::OpenHandle(*v8LocalScript)); #else - return *V8InternalScript::cast(*v8::Utils::OpenHandle(*v8LocalScript)); + return *v8::internal::Cast(*v8::Utils::OpenHandle(*v8LocalScript)); #endif } } diff --git a/cpp/jni/javet_inspector.cpp b/cpp/jni/javet_inspector.cpp index 3bb85e0a5..08d3e26d8 100644 --- a/cpp/jni/javet_inspector.cpp +++ b/cpp/jni/javet_inspector.cpp @@ -140,9 +140,6 @@ namespace Javet { return v8Runtime->GetV8LocalContext(); } - JavetInspectorClient::~JavetInspectorClient() { - } - JavetInspectorChannel::JavetInspectorChannel(V8Runtime* v8Runtime, const jobject mV8Inspector) noexcept { this->mV8Inspector = mV8Inspector; this->v8Runtime = v8Runtime; diff --git a/cpp/jni/javet_inspector.h b/cpp/jni/javet_inspector.h index c51b075b5..f16e1686b 100644 --- a/cpp/jni/javet_inspector.h +++ b/cpp/jni/javet_inspector.h @@ -57,7 +57,7 @@ namespace Javet { void quitMessageLoopOnPause() override; void runIfWaitingForDebugger(int contextGroupId) override; void runMessageLoopOnPause(int contextGroupId) override; - virtual ~JavetInspectorClient(); + virtual ~JavetInspectorClient() = default; private: bool activateMessageLoop; jobject mV8Inspector; diff --git a/cpp/jni/javet_jni_function.cpp b/cpp/jni/javet_jni_function.cpp index e405427c4..fa60158d9 100644 --- a/cpp/jni/javet_jni_function.cpp +++ b/cpp/jni/javet_jni_function.cpp @@ -244,7 +244,7 @@ JNIEXPORT jobjectArray JNICALL Java_com_caoccao_javet_interop_V8Native_functionG auto v8InternalScript = V8InternalScript::cast(v8InternalShared.script()); auto wrappedArguments = v8InternalScript.wrapped_arguments(); #else - auto v8InternalScript = V8InternalScript::cast(v8InternalShared->script()); + auto v8InternalScript = v8::internal::Cast(v8InternalShared->script()); auto wrappedArguments = *v8InternalScript->wrapped_arguments(); #endif auto length = wrappedArguments.length(); @@ -274,7 +274,7 @@ JNIEXPORT jbyteArray JNICALL Java_com_caoccao_javet_interop_V8Native_functionGet auto v8InternalScript = V8InternalScript::cast(v8InternalShared.script()); if (v8InternalScript.is_wrapped()) { #else - auto v8InternalScript = V8InternalScript::cast(v8InternalShared->script()); + auto v8InternalScript = v8::internal::Cast(v8InternalShared->script()); if (v8InternalScript->is_wrapped()) { #endif V8TryCatch v8TryCatch(v8Context->GetIsolate()); @@ -425,8 +425,8 @@ JNIEXPORT jobject JNICALL Java_com_caoccao_javet_interop_V8Native_functionGetScr V8InternalAllowNullsFlag::DISALLOW_NULLS, V8InternalRobustnessFlag::ROBUST_STRING_TRAVERSAL, 0, sourceLength); #else - auto v8InternalScript = V8InternalScript::cast(v8InternalShared->script()); - auto v8InternalSource = V8InternalString::cast(v8InternalScript->source()); + auto v8InternalScript = v8::internal::Cast(v8InternalShared->script()); + auto v8InternalSource = v8::internal::Cast(v8InternalScript->source()); const int startPosition = v8InternalShared->StartPosition(); const int endPosition = v8InternalShared->EndPosition(); const int sourceLength = v8InternalSource->length(); @@ -461,8 +461,8 @@ JNIEXPORT jstring JNICALL Java_com_caoccao_javet_interop_V8Native_functionGetSou V8InternalAllowNullsFlag::DISALLOW_NULLS, V8InternalRobustnessFlag::ROBUST_STRING_TRAVERSAL, startPosition, endPosition - startPosition); #else - auto v8InternalScript = V8InternalScript::cast(v8InternalShared->script()); - auto v8InternalSource = V8InternalString::cast(v8InternalScript->source()); + auto v8InternalScript = v8::internal::Cast(v8InternalShared->script()); + auto v8InternalSource = v8::internal::Cast(v8InternalScript->source()); const int startPosition = v8InternalShared->StartPosition(); const int endPosition = v8InternalShared->EndPosition(); auto sourceCode = v8InternalSource->ToCString( @@ -551,7 +551,7 @@ JNIEXPORT jboolean JNICALL Java_com_caoccao_javet_interop_V8Native_functionSetSc bool sourceCodeEquals = v8InternalScript.source().StrictEquals(*v8InternalSource); bool positionEquals = startPosition == v8InternalShared.StartPosition() && endPosition == v8InternalShared.EndPosition(); #else - auto v8InternalScript = V8InternalScript::cast(v8InternalShared->script()); + auto v8InternalScript = v8::internal::Cast(v8InternalShared->script()); auto v8InternalSource = v8::Utils::OpenHandle(*umSourceCode); bool sourceCodeEquals = V8InternalObject::StrictEquals(v8InternalScript->source(), *v8InternalSource); bool positionEquals = startPosition == v8InternalShared->StartPosition() && endPosition == v8InternalShared->EndPosition(); @@ -629,8 +629,8 @@ JNIEXPORT jboolean JNICALL Java_com_caoccao_javet_interop_V8Native_functionSetSo const int endPosition = v8InternalShared.EndPosition(); const int sourceLength = v8InternalSource.length(); #else - auto v8InternalScript = V8InternalScript::cast(v8InternalShared->script()); - auto v8InternalSource = V8InternalString::cast(v8InternalScript->source()); + auto v8InternalScript = v8::internal::Cast(v8InternalShared->script()); + auto v8InternalSource = v8::internal::Cast(v8InternalScript->source()); const int startPosition = v8InternalShared->StartPosition(); const int endPosition = v8InternalShared->EndPosition(); const int sourceLength = v8InternalSource->length(); diff --git a/cpp/jni/javet_jni_module.cpp b/cpp/jni/javet_jni_module.cpp index 79fcfe998..42842b74d 100644 --- a/cpp/jni/javet_jni_module.cpp +++ b/cpp/jni/javet_jni_module.cpp @@ -216,10 +216,11 @@ JNIEXPORT jstring JNICALL Java_com_caoccao_javet_interop_V8Native_moduleGetResou auto v8InternalModule = Javet::Converter::ToV8InternalModule(v8LocalModule); V8LocalValue v8LocalObjectName; if (v8LocalModule->IsSourceTextModule()) { - auto v8InternalSourceTextModule = V8InternalSourceTextModule::cast(v8InternalModule); #ifdef ENABLE_NODE + auto v8InternalSourceTextModule = V8InternalSourceTextModule::cast(v8InternalModule); auto v8InternalScript = v8InternalSourceTextModule.GetScript(); #else + auto v8InternalSourceTextModule = v8::internal::Cast(v8InternalModule); auto v8InternalScript = *((*v8InternalSourceTextModule).GetScript()); #endif auto v8InternalObjectNameOrSourceURL = v8InternalScript.GetNameOrSourceURL(); @@ -229,7 +230,7 @@ JNIEXPORT jstring JNICALL Java_com_caoccao_javet_interop_V8Native_moduleGetResou #ifdef ENABLE_NODE auto v8InternalSyntheticModule = V8InternalSyntheticModule::cast(v8InternalModule); #else - auto v8InternalSyntheticModule = *V8InternalSyntheticModule::cast(v8InternalModule); + auto v8InternalSyntheticModule = *v8::internal::Cast(v8InternalModule); #endif auto v8InternalStringName = v8InternalSyntheticModule.name(); v8LocalObjectName = v8::Utils::ToLocal(v8::internal::handle(v8InternalStringName, v8InternalIsolate)); diff --git a/cpp/jni/javet_jni_object.cpp b/cpp/jni/javet_jni_object.cpp index 31ef3de37..104f63dfd 100644 --- a/cpp/jni/javet_jni_object.cpp +++ b/cpp/jni/javet_jni_object.cpp @@ -646,7 +646,7 @@ JNIEXPORT jboolean JNICALL Java_com_caoccao_javet_interop_V8Native_objectIsFroze #ifdef ENABLE_NODE auto elementKind = V8InternalJSObject::cast(v8InternalJSObject).GetElementsKind(); #else - auto elementKind = V8InternalJSObject::cast(v8InternalJSObject)->GetElementsKind(); + auto elementKind = v8::internal::Cast(v8InternalJSObject)->GetElementsKind(); #endif return v8::internal::IsFrozenElementsKind(elementKind); } @@ -661,7 +661,7 @@ JNIEXPORT jboolean JNICALL Java_com_caoccao_javet_interop_V8Native_objectIsSeale #ifdef ENABLE_NODE auto elementKind = V8InternalJSObject::cast(v8InternalJSObject).GetElementsKind(); #else - auto elementKind = V8InternalJSObject::cast(v8InternalJSObject)->GetElementsKind(); + auto elementKind = v8::internal::Cast(v8InternalJSObject)->GetElementsKind(); #endif return v8::internal::IsSealedElementsKind(elementKind); } @@ -718,7 +718,11 @@ JNIEXPORT jboolean JNICALL Java_com_caoccao_javet_interop_V8Native_objectSetAcce return false; } if (mContextGetter == nullptr) { +#ifdef ENABLE_NODE v8MaybeBool = v8LocalObject.As()->SetAccessor(v8Context, v8LocalName, nullptr); +#else + v8MaybeBool = v8LocalObject.As()->SetNativeDataProperty(v8Context, v8LocalName, nullptr); +#endif } else { auto v8LocalArrayContext = v8::Array::New(v8Context->GetIsolate(), 2); @@ -745,7 +749,11 @@ JNIEXPORT jboolean JNICALL Java_com_caoccao_javet_interop_V8Native_objectSetAcce maybeResult = v8LocalArrayContext->Set(v8Context, 1, v8LocalContextSetterHandle); setter = Javet::Callback::JavetPropertySetterCallback; } +#ifdef ENABLE_NODE v8MaybeBool = v8LocalObject.As()->SetAccessor(v8Context, v8LocalName, getter, setter, v8LocalArrayContext); +#else + v8MaybeBool = v8LocalObject.As()->SetNativeDataProperty(v8Context, v8LocalName, getter, setter, v8LocalArrayContext); +#endif } } if (v8MaybeBool.IsNothing()) { diff --git a/cpp/jni/javet_resource_node.rc b/cpp/jni/javet_resource_node.rc index 9d10ecef8..118297286 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,4,0 - PRODUCTVERSION 3,1,4,0 + FILEVERSION 3,1,5,0 + PRODUCTVERSION 3,1,5,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.4.0" - VALUE "InternalName", "libjavet-node-windows-x86_64.v.3.1.4.dll" + VALUE "FileVersion", "3.1.5.0" + VALUE "InternalName", "libjavet-node-windows-x86_64.v.3.1.5.dll" VALUE "LegalCopyright", "Copyright (c) 2021-2024." - VALUE "OriginalFilename", "libjavet-node-windows-x86_64.v.3.1.4.dll" + VALUE "OriginalFilename", "libjavet-node-windows-x86_64.v.3.1.5.dll" VALUE "ProductName", "Javet Windows" - VALUE "ProductVersion", "3.1.4.0" + VALUE "ProductVersion", "3.1.5.0" END END BLOCK "VarFileInfo" diff --git a/cpp/jni/javet_resource_v8.rc b/cpp/jni/javet_resource_v8.rc index 531e66bb4..179ab350d 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,4,0 - PRODUCTVERSION 3,1,4,0 + FILEVERSION 3,1,5,0 + PRODUCTVERSION 3,1,5,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.4.0" - VALUE "InternalName", "libjavet-v8-windows-x86_64.v.3.1.4.dll" + VALUE "FileVersion", "3.1.5.0" + VALUE "InternalName", "libjavet-v8-windows-x86_64.v.3.1.5.dll" VALUE "LegalCopyright", "Copyright (c) 2021-2024." - VALUE "OriginalFilename", "libjavet-v8-windows-x86_64.v.3.1.4.dll" + VALUE "OriginalFilename", "libjavet-v8-windows-x86_64.v.3.1.5.dll" VALUE "ProductName", "Javet Windows" - VALUE "ProductVersion", "3.1.4.0" + VALUE "ProductVersion", "3.1.5.0" END END BLOCK "VarFileInfo" diff --git a/cpp/jni/javet_v8_runtime.cpp b/cpp/jni/javet_v8_runtime.cpp index abedeff67..aeff20cc7 100644 --- a/cpp/jni/javet_v8_runtime.cpp +++ b/cpp/jni/javet_v8_runtime.cpp @@ -316,7 +316,7 @@ namespace Javet { jstring mGlobalName = (jstring)jniEnv->CallObjectMethod(mRuntimeOptions, jmethodV8RuntimeOptionsGetGlobalName); if (mGlobalName != nullptr) { auto umGlobalName = Javet::Converter::ToV8String(jniEnv, v8::Context::New(v8Isolate), mGlobalName); - v8ObjectTemplate->SetAccessor(umGlobalName, GlobalAccessorGetterCallback); + v8ObjectTemplate->SetNativeDataProperty(umGlobalName, GlobalAccessorGetterCallback); } } auto v8LocalContext = v8::Context::New(v8Isolate, nullptr, v8ObjectTemplate); diff --git a/docker/android/base.Dockerfile b/docker/android/base.Dockerfile index e3b322e7a..badfef199 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.4 -f docker/android/base.Dockerfile . +# Usage: docker build -t sjtucaocao/javet-android:3.1.5 -f docker/android/base.Dockerfile . -ARG JAVET_V8_VERSION=12.7.224.16 +ARG JAVET_V8_VERSION=12.8.374.17 FROM ubuntu:20.04 WORKDIR / @@ -58,9 +58,9 @@ RUN echo V8 preparation is completed. # Prepare Android NDK WORKDIR / -RUN wget https://dl.google.com/android/repository/android-ndk-r25b-linux.zip -RUN unzip android-ndk-r25b-linux.zip -RUN rm android-ndk-r25b-linux.zip +RUN wget https://dl.google.com/android/repository/android-ndk-r27-linux.zip +RUN unzip android-ndk-r27-linux.zip +RUN rm android-ndk-r27-linux.zip # Prepare Android SDK WORKDIR /google/v8/third_party/android_sdk/public/cmdline-tools/latest/bin diff --git a/docker/android/build.Dockerfile b/docker/android/build.Dockerfile index a7e415a3c..f84ace9bc 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.4 +FROM sjtucaocao/javet-android:3.1.5 WORKDIR / # Copy Javet diff --git a/docker/linux-arm64/base_all_in_one.Dockerfile b/docker/linux-arm64/base_all_in_one.Dockerfile index dfca3ee42..a8cd72a2d 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.4 -f docker/linux-arm64/base_all_in_one.Dockerfile . +# Usage: docker build -t sjtucaocao/javet-arm64:3.1.5 -f docker/linux-arm64/base_all_in_one.Dockerfile . ARG JAVET_NODE_VERSION=18.15.0 -ARG JAVET_V8_VERSION=12.7.224.16 +ARG JAVET_V8_VERSION=12.8.374.17 FROM ubuntu:20.04 WORKDIR / diff --git a/docker/linux-arm64/base_gradle.Dockerfile b/docker/linux-arm64/base_gradle.Dockerfile index 460d6a648..09ba78d51 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.4 \ +# -t sjtucaocao/javet:arm64-3.1.5 \ # --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 11dcd4a8d..bf25271eb 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.7.224.16 \ +# -t sjtucaocao/javet:arm64-base-v8_12.8.374.17 \ # --build-arg JAVET_REPO=sjtucaocao/javet \ -# --build-arg JAVET_V8_VERSION=12.7.224.16 \ +# --build-arg JAVET_V8_VERSION=12.8.374.17 \ # -f docker/linux-arm64/base_v8.Dockerfile . ARG JAVET_REPO=sjtucaocao/javet -ARG JAVET_V8_VERSION=12.7.224.16 +ARG JAVET_V8_VERSION=12.8.374.17 FROM ${JAVET_REPO}:arm64-base-jvm diff --git a/docker/linux-arm64/build_artifact.Dockerfile b/docker/linux-arm64/build_artifact.Dockerfile index 3b16edbd1..b3ede0131 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.4 \ +# --build-arg JAVET_VERSION=3.1.5 \ # -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.4 +ARG JAVET_VERSION=3.1.5 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 a4efe69b9..84571f8b7 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.4 -f docker/linux-x86_64/base_all_in_one.Dockerfile . +# Usage: docker build -t sjtucaocao/javet:3.1.5 -f docker/linux-x86_64/base_all_in_one.Dockerfile . FROM ubuntu:20.04 WORKDIR / -ARG JAVET_NODE_VERSION=20.15.1 -ARG JAVET_V8_VERSION=12.7.224.16 +ARG JAVET_NODE_VERSION=20.16.0 +ARG JAVET_V8_VERSION=12.8.374.17 # 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 37b0ce6fe..e2dc94195 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.4 \ +# -t sjtucaocao/javet:x86_64-3.1.5 \ # --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 b4f0a2b4c..29552aeab 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.15.1 \ +# -t sjtucaocao/javet:x86_64-base-node_20.16.0 \ # --build-arg JAVET_REPO=sjtucaocao/javet \ -# --build-arg JAVET_NODE_VERSION=20.15.1 \ +# --build-arg JAVET_NODE_VERSION=20.16.0 \ # -f docker/linux-x86_64/base_node.Dockerfile . ARG JAVET_REPO=sjtucaocao/javet -ARG JAVET_NODE_VERSION=20.15.1 +ARG JAVET_NODE_VERSION=20.16.0 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 b3dca7514..040841a77 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.7.224.16 \ +# -t sjtucaocao/javet:x86_64-base-v8_12.8.374.17 \ # --build-arg JAVET_REPO=sjtucaocao/javet \ -# --build-arg JAVET_V8_VERSION=12.7.224.16 \ +# --build-arg JAVET_V8_VERSION=12.8.374.17 \ # -f docker/linux-x86_64/base_v8.Dockerfile . ARG JAVET_REPO=sjtucaocao/javet -ARG JAVET_V8_VERSION=12.7.224.16 +ARG JAVET_V8_VERSION=12.8.374.17 FROM ${JAVET_REPO}:x86_64-base-jvm diff --git a/docker/linux-x86_64/build.env b/docker/linux-x86_64/build.env index e69dc65bf..0e1c6df67 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.4 -JAVET_V8_VERSION=12.7.224.16 -JAVET_NODE_VERSION=20.15.1 +JAVET_VERSION=3.1.5 +JAVET_V8_VERSION=12.8.374.17 +JAVET_NODE_VERSION=20.16.0 diff --git a/docker/linux-x86_64/build_all_in_one.Dockerfile b/docker/linux-x86_64/build_all_in_one.Dockerfile index 934ea5980..62ac18f8f 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.4 +FROM sjtucaocao/javet:3.1.5 WORKDIR / # Copy Javet diff --git a/docker/linux-x86_64/build_artifact.Dockerfile b/docker/linux-x86_64/build_artifact.Dockerfile index 376899eef..bfe1aca96 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.4 \ +# --build-arg JAVET_VERSION=3.1.5 \ # -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.4 +ARG JAVET_VERSION=3.1.5 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 a534fb51e..4684fe1b1 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.4 -m 4G -f docker/windows-x86_64/base.Dockerfile . +# Usage: docker build -t sjtucaocao/javet-windows:3.1.5 -m 4G -f docker/windows-x86_64/base.Dockerfile . -ARG JAVET_NODE_VERSION=20.15.1 -ARG JAVET_V8_VERSION=12.7.224.16 +ARG JAVET_NODE_VERSION=20.16.0 +ARG JAVET_V8_VERSION=12.8.374.17 # 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 59f3c502f..b4e719f27 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.4 +FROM sjtucaocao/javet-windows:3.1.5 SHELL ["cmd", "/S", "/C"] WORKDIR / diff --git a/docs/conf.py b/docs/conf.py index c48402ef2..d026b0cd3 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.4' +release = '3.1.5' # -- General configuration --------------------------------------------------- diff --git a/docs/development/build.rst b/docs/development/build.rst index 9390983cd..5ae3ed682 100644 --- a/docs/development/build.rst +++ b/docs/development/build.rst @@ -62,7 +62,7 @@ Android Environment * Gradle 8.5+ * Python 3.11+ * Latest Android Studio (Optional) -* Android NDK r25b +* Android NDK r27 * Android SDK 30 Environment Variables diff --git a/docs/release_notes/release_notes_3_1.rst b/docs/release_notes/release_notes_3_1.rst index 6273fc02d..7221a47e3 100644 --- a/docs/release_notes/release_notes_3_1.rst +++ b/docs/release_notes/release_notes_3_1.rst @@ -2,6 +2,15 @@ Release Notes 3.1.x =================== +3.1.5 V8 v12.8 +-------------- + +* Upgraded Node.js to ``v20.16.0`` `(2024-07-24) `_ +* Upgraded V8 to ``v12.8.374.17`` (2024-08-19) +* Upgraded Android NDK to r27 +* Fixed a bug of the default export in ``JavetBuiltInModuleResolver`` +* Adjust JS type conversion priority for better performance + 3.1.4 V8 v12.7 -------------- diff --git a/docs/searchindex.js b/docs/searchindex.js deleted file mode 100644 index ade6c7947..000000000 --- a/docs/searchindex.js +++ /dev/null @@ -1 +0,0 @@ -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/basic/installation.rst b/docs/tutorial/basic/installation.rst index 7519bc58c..1bd2a005c 100644 --- a/docs/tutorial/basic/installation.rst +++ b/docs/tutorial/basic/installation.rst @@ -16,21 +16,21 @@ Maven com.caoccao.javet javet - 3.1.4 + 3.1.5 com.caoccao.javet javet-linux-arm64 - 3.1.4 + 3.1.5 com.caoccao.javet javet-macos - 3.1.4 + 3.1.5 .. tab:: Complete @@ -38,7 +38,7 @@ Maven .. code-block:: xml - 3.1.4 + 3.1.5 @@ -115,11 +115,11 @@ Gradle Kotlin DSL .. code-block:: kotlin - 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) + implementation("com.caoccao.javet:javet:3.1.5") // Linux and Windows (x86_64) + implementation("com.caoccao.javet:javet-linux-arm64:3.1.5") // Linux (arm64) + implementation("com.caoccao.javet:javet-macos:3.1.5") // Mac OS (x86_64 and arm64) + implementation("com.caoccao.javet:javet-android-node:3.1.5") // Android Node (arm, arm64, x86 and x86_64) + implementation("com.caoccao.javet:javet-android-v8:3.1.5") // 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.4") + implementation("com.caoccao.javet:javet:3.1.5") } else if (os.isLinux && (cpuArch == "aarch64" || cpuArch == "arm64")) { - implementation("com.caoccao.javet:javet-linux-arm64:3.1.4") + implementation("com.caoccao.javet:javet-linux-arm64:3.1.5") } else { - implementation("com.caoccao.javet:javet-macos:3.1.4") + implementation("com.caoccao.javet:javet-macos:3.1.5") } Gradle Groovy DSL @@ -142,11 +142,11 @@ Gradle Groovy DSL .. code-block:: groovy - 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) + implementation 'com.caoccao.javet:javet:3.1.5' // Linux and Windows (x86_64) + implementation 'com.caoccao.javet:javet-linux-arm64:3.1.5' // Linux (arm64) + implementation 'com.caoccao.javet:javet-macos:3.1.5' // Mac OS (x86_64 and arm64) + implementation 'com.caoccao.javet:javet-android-node:3.1.5' // Android Node (arm, arm64, x86 and x86_64) + implementation 'com.caoccao.javet:javet-android-v8:3.1.5' // Android V8 (arm, arm64, x86 and x86_64) OS Compatibility ================ diff --git a/scripts/node/javet-rebuild/rebuild.cmd b/scripts/node/javet-rebuild/rebuild.cmd index f9c06b242..5c0ae5b19 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.4.lib" +SET NODE_LIB_FILE="..\..\..\..\..\..\build\libs\libjavet-node-windows-x86_64.v.3.1.5.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 81ecedd06..1e65adbab 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.4.so ${NODE_MODULE_FILE} +patchelf --add-needed libjavet-node-linux-x86_64.v.3.1.5.so ${NODE_MODULE_FILE} diff --git a/scripts/python/change_javet_version.py b/scripts/python/change_javet_version.py index 8e2d2e157..fe215eee9 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.4') + change_javet_version = ChangeJavetVersion('3.1.5') 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 d61456485..86867a94c 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.15.1') + change_node_version = ChangeNodeVersion('20.16.0') change_node_version.update() - change_v8_version = ChangeV8Version('12.7.224.16') + change_v8_version = ChangeV8Version('12.8.374.17') 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 6fa000b81..d0c258274 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.7.224.16", + "12.8.374.17", V8RuntimeOptions::new, o -> o instanceof V8RuntimeOptions); diff --git a/src/main/java/com/caoccao/javet/interop/callback/JavetBuiltInModuleResolver.java b/src/main/java/com/caoccao/javet/interop/callback/JavetBuiltInModuleResolver.java index 127c71daa..79787ecf5 100644 --- a/src/main/java/com/caoccao/javet/interop/callback/JavetBuiltInModuleResolver.java +++ b/src/main/java/com/caoccao/javet/interop/callback/JavetBuiltInModuleResolver.java @@ -49,13 +49,16 @@ public IV8Module resolve(V8Runtime v8Runtime, String resourceName, IV8Module v8M IV8Module iV8Module = null; // It only works for Node.js runtime and module names starting with "node:". if (v8Runtime.getJSRuntimeType().isNode() && resourceName != null && resourceName.startsWith(PREFIX_NODE)) { - String moduleName = resourceName.substring(PREFIX_NODE.length()); NodeRuntime nodeRuntime = (NodeRuntime) v8Runtime; - NodeModuleAny nodeModuleAny = nodeRuntime.getNodeModule(moduleName, NodeModuleAny.class); + NodeModuleAny nodeModuleAny = nodeRuntime.getNodeModule(resourceName, NodeModuleAny.class); V8ValueObject v8ValueObject = nodeModuleAny.getModuleObject(); - if (!v8ValueObject.has(DEFAULT)) { - v8ValueObject.set(DEFAULT, v8ValueObject); - } + /* + * https://github.com/caoccao/Javet/issues/376 + * + * Sometimes the module object has 'default' property, but that property seems to be weird. + * Resetting the 'default' property resolves the issue. + */ + v8ValueObject.set(DEFAULT, v8ValueObject); iV8Module = v8Runtime.createV8Module(resourceName, v8ValueObject); } return iV8Module; diff --git a/src/main/java/com/caoccao/javet/interop/callback/V8FunctionCallback.java b/src/main/java/com/caoccao/javet/interop/callback/V8FunctionCallback.java index 5f6e1a611..d12c2d532 100644 --- a/src/main/java/com/caoccao/javet/interop/callback/V8FunctionCallback.java +++ b/src/main/java/com/caoccao/javet/interop/callback/V8FunctionCallback.java @@ -21,10 +21,7 @@ import com.caoccao.javet.interop.V8Runtime; import com.caoccao.javet.interop.converters.IJavetConverter; import com.caoccao.javet.interop.converters.JavetConverterConfig; -import com.caoccao.javet.utils.JavetReflectionUtils; -import com.caoccao.javet.utils.JavetResourceUtils; -import com.caoccao.javet.utils.JavetTypeUtils; -import com.caoccao.javet.utils.SimpleMap; +import com.caoccao.javet.utils.*; import com.caoccao.javet.values.IV8Value; import com.caoccao.javet.values.V8Value; @@ -189,7 +186,7 @@ private static Object convert(IJavetConverter converter, Class expectedClass, return ((Character) convertedObject).charValue(); } else if (convertedObjectClass == String.class) { String convertedString = (String) convertedObject; - return convertedString.length() > 0 ? + return StringUtils.isNotEmpty(convertedString) ? convertedString.charAt(0) : converter.getConfig().getDefaultChar(); } } @@ -252,7 +249,7 @@ private static Object convert(IJavetConverter converter, Class expectedClass, } else if (expectedClass == Character.class) { if (convertedObjectClass == String.class) { String convertedString = (String) convertedObject; - return convertedString.length() > 0 ? + return StringUtils.isNotEmpty(convertedString) ? convertedString.charAt(0) : converter.getConfig().getDefaultChar(); } } else if (expectedClass == Optional.class) { 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 ea326a253..4fe648605 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.4"; + public static final String LIB_VERSION = "3.1.5"; 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/utils/JavetTypeUtils.java b/src/main/java/com/caoccao/javet/utils/JavetTypeUtils.java index aa0d60c62..de25b7080 100644 --- a/src/main/java/com/caoccao/javet/utils/JavetTypeUtils.java +++ b/src/main/java/com/caoccao/javet/utils/JavetTypeUtils.java @@ -122,7 +122,7 @@ public static Object toApproximatePrimitive(Class expectedClass, Object objec return object; } else if (object instanceof String) { String objectString = (String) object; - if (objectString.length() > 0) { + if (StringUtils.isNotEmpty(objectString)) { return objectString.charAt(0); } } diff --git a/src/main/java/com/caoccao/javet/values/reference/IV8ValueFunction.java b/src/main/java/com/caoccao/javet/values/reference/IV8ValueFunction.java index 26f32ff59..d0a09f4ec 100644 --- a/src/main/java/com/caoccao/javet/values/reference/IV8ValueFunction.java +++ b/src/main/java/com/caoccao/javet/values/reference/IV8ValueFunction.java @@ -23,6 +23,7 @@ import com.caoccao.javet.enums.V8ValueInternalType; import com.caoccao.javet.exceptions.JavetException; import com.caoccao.javet.interfaces.IJavetClosable; +import com.caoccao.javet.utils.StringUtils; import com.caoccao.javet.values.V8Value; import com.caoccao.javet.values.primitive.V8ValueBigInteger; import com.caoccao.javet.values.primitive.V8ValueZonedDateTime; @@ -971,7 +972,7 @@ public int hashCode() { * @since 2.0.1 */ public ScriptSource setCodeSnippet(String codeSnippet) { - if (codeSnippet != null && codeSnippet.length() > 0) { + if (StringUtils.isNotEmpty(codeSnippet)) { final int originalCodeLength = code.length(); final int codeSnippetLength = codeSnippet.length(); final int newCodeLength = originalCodeLength - (endPosition - startPosition) + codeSnippetLength; diff --git a/src/main/java/com/caoccao/javet/values/reference/V8ValueFunction.java b/src/main/java/com/caoccao/javet/values/reference/V8ValueFunction.java index fc7f031f9..16d6ac2b3 100644 --- a/src/main/java/com/caoccao/javet/values/reference/V8ValueFunction.java +++ b/src/main/java/com/caoccao/javet/values/reference/V8ValueFunction.java @@ -23,6 +23,7 @@ import com.caoccao.javet.exceptions.JavetException; import com.caoccao.javet.interop.V8Internal; import com.caoccao.javet.interop.V8Runtime; +import com.caoccao.javet.utils.StringUtils; import com.caoccao.javet.utils.V8ValueUtils; import com.caoccao.javet.values.V8Value; import com.caoccao.javet.values.virtual.V8VirtualValueList; @@ -208,7 +209,9 @@ public boolean setContext(V8Context v8Context) throws JavetException { @Override public boolean setScriptSource(ScriptSource scriptSource, boolean cloneScript) throws JavetException { boolean success = false; - if (getJSFunctionType().isUserDefined() && getJSScopeType().isFunction() && scriptSource != null) { + if (getJSFunctionType().isUserDefined() + && (getJSScopeType().isFunction() || getJSScopeType().isScript()) + && scriptSource != null) { success = checkV8Runtime().getV8Internal().functionSetScriptSource( this, scriptSource, cloneScript); } @@ -221,8 +224,9 @@ public boolean setSourceCode( SetSourceCodeOptions options) throws JavetException { Objects.requireNonNull(options, "Options cannot be null."); boolean success = false; - if (getJSFunctionType().isUserDefined() && getJSScopeType().isFunction() - && sourceCodeString != null && sourceCodeString.length() > 0) { + if (getJSFunctionType().isUserDefined() + && (getJSScopeType().isFunction() || getJSScopeType().isScript()) + && StringUtils.isNotEmpty(sourceCodeString)) { if (options.isTrimTailingCharacters()) { sourceCodeString = V8ValueUtils.trimAnonymousFunction(sourceCodeString); } @@ -237,7 +241,8 @@ public boolean setSourceCode( } else { ScriptSource originalScriptSource = v8Internal.functionGetScriptSource(this); ScriptSource newScriptSource = originalScriptSource.setCodeSnippet(sourceCodeString); - if (getJSFunctionType().isUserDefined() && getJSScopeType().isFunction()) { + if (getJSFunctionType().isUserDefined() + && (getJSScopeType().isFunction() || getJSScopeType().isScript())) { success = v8Internal.functionSetScriptSource( this, newScriptSource, options.isCloneScript()); } diff --git a/src/test/java/com/caoccao/javet/interop/TestNodeRuntime.java b/src/test/java/com/caoccao/javet/interop/TestNodeRuntime.java index 3035f5d70..a707e89bc 100644 --- a/src/test/java/com/caoccao/javet/interop/TestNodeRuntime.java +++ b/src/test/java/com/caoccao/javet/interop/TestNodeRuntime.java @@ -210,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.15.1", nodeModuleProcess.getVersion()); + assertEquals("v20.16.0", nodeModuleProcess.getVersion()); } @Test diff --git a/src/test/java/com/caoccao/javet/interop/proxy/JavetReflectionObjectFactory.java b/src/test/java/com/caoccao/javet/interop/proxy/JavetReflectionObjectFactory.java index a49313435..f6e60e982 100644 --- a/src/test/java/com/caoccao/javet/interop/proxy/JavetReflectionObjectFactory.java +++ b/src/test/java/com/caoccao/javet/interop/proxy/JavetReflectionObjectFactory.java @@ -19,6 +19,7 @@ import com.caoccao.javet.interfaces.IJavetLogger; import com.caoccao.javet.utils.JavetDefaultLogger; import com.caoccao.javet.utils.JavetResourceUtils; +import com.caoccao.javet.utils.StringUtils; import com.caoccao.javet.values.V8Value; import com.caoccao.javet.values.reference.V8ValueFunction; import com.caoccao.javet.values.reference.V8ValueObject; @@ -225,7 +226,7 @@ public Object intercept( } else if (methodName.startsWith(V8ValueObject.METHOD_PREFIX_GET)) { propertyName = methodName.substring(V8ValueObject.METHOD_PREFIX_GET.length()); } - if (propertyName != null && propertyName.length() > 0) { + if (StringUtils.isNotEmpty(propertyName)) { propertyName = propertyName.substring(0, 1).toLowerCase(Locale.ROOT) + propertyName.substring(1); if (v8ValueObject.has(propertyName)) { @@ -238,7 +239,7 @@ public Object intercept( if (methodName.startsWith(V8ValueObject.METHOD_PREFIX_SET)) { propertyName = methodName.substring(V8ValueObject.METHOD_PREFIX_SET.length()); } - if (propertyName != null && propertyName.length() > 0) { + if (StringUtils.isNotEmpty(propertyName)) { propertyName = propertyName.substring(0, 1).toLowerCase(Locale.ROOT) + propertyName.substring(1); if (v8ValueObject.has(propertyName)) { diff --git a/src/test/java/com/caoccao/javet/values/reference/TestV8Module.java b/src/test/java/com/caoccao/javet/values/reference/TestV8Module.java index b907dfe4f..33694f830 100644 --- a/src/test/java/com/caoccao/javet/values/reference/TestV8Module.java +++ b/src/test/java/com/caoccao/javet/values/reference/TestV8Module.java @@ -282,9 +282,13 @@ public void testJavetBuiltInModuleResolverWithDefault() throws JavetException { v8Runtime.setV8ModuleResolver(new JavetBuiltInModuleResolver()); v8Runtime.getExecutor( "import fs from 'node:fs';\n" + + "import events from 'node:events';\n" + + "import stream from 'node:stream';\n" + + "globalThis.b = events === stream;\n" + "globalThis.a = fs.existsSync('/path-not-found');") .setModule(true).executeVoid(); assertFalse(v8Runtime.getGlobalObject().getBoolean("a")); + assertFalse(v8Runtime.getGlobalObject().getBoolean("b")); } } diff --git a/src/test/java/com/caoccao/javet/values/reference/TestV8ValueFunction.java b/src/test/java/com/caoccao/javet/values/reference/TestV8ValueFunction.java index f8712f882..32a4dba2f 100644 --- a/src/test/java/com/caoccao/javet/values/reference/TestV8ValueFunction.java +++ b/src/test/java/com/caoccao/javet/values/reference/TestV8ValueFunction.java @@ -828,9 +828,17 @@ public void testContextScope(int optionId) throws JavetException { @V8Function public Integer contextScope(V8ValueFunction v8ValueFunction) throws JavetException { assertTrue(v8ValueFunction.getJSFunctionType().isUserDefined()); - assertTrue(v8ValueFunction.getJSScopeType().isFunction()); - if (v8ValueFunction.setSourceCode("() => a + 2", options)) { + if (v8Runtime.getJSRuntimeType().isNode()) { assertTrue(v8ValueFunction.getJSScopeType().isFunction()); + } else { + assertTrue(v8ValueFunction.getJSScopeType().isScript()); + } + if (v8ValueFunction.setSourceCode("() => a + 2", options)) { + if (v8Runtime.getJSRuntimeType().isNode()) { + assertTrue(v8ValueFunction.getJSScopeType().isFunction()); + } else { + assertTrue(v8ValueFunction.getJSScopeType().isScript()); + } return v8ValueFunction.callInteger(null); } else { return 0; @@ -1226,7 +1234,11 @@ public void testGetAndSetContext() throws JavetException { assertEquals("() => a + b + 1", originalScriptSource.getCodeSnippet(), "The code snippet should match."); assertTrue(originalV8ValueFunction.getJSScopeType().isClass(), "The context is not ready."); assertEquals(5, originalV8ValueFunction.callInteger(null), "Populate the context."); - assertTrue(originalV8ValueFunction.getJSScopeType().isFunction(), "The context is ready."); + if (v8Runtime.getJSRuntimeType().isNode()) { + assertTrue(originalV8ValueFunction.getJSScopeType().isFunction(), "The context is ready."); + } else { + assertTrue(originalV8ValueFunction.getJSScopeType().isScript(), "The context is ready."); + } try (V8ValueFunction crackedV8ValueFunction = v8Runtime.createV8ValueFunction(crackedCodeString); V8Context v8Context = originalV8ValueFunction.getContext()) { assertNotNull(v8Context); @@ -1274,12 +1286,20 @@ public Integer intercept(V8ValueFunction v8ValueFunction) throws JavetException if (v8ValueFunction.getJSScopeType().isClass()) { v8ValueFunction.callInteger(null, 0); } - assertTrue(v8ValueFunction.getJSScopeType().isFunction()); + if (v8Runtime.getJSRuntimeType().isNode()) { + assertTrue(v8ValueFunction.getJSScopeType().isFunction()); + } else { + assertTrue(v8ValueFunction.getJSScopeType().isScript()); + } String originalCodeString = v8ValueFunction.getSourceCode(); String newCodeString = originalCodeString + " /*\n測試\nI am longer\n*/ + 1"; v8ValueFunction.setSourceCode(newCodeString, options); int result = v8ValueFunction.callInteger(null, 1); - assertTrue(v8ValueFunction.getJSScopeType().isFunction()); + if (v8Runtime.getJSRuntimeType().isNode()) { + assertTrue(v8ValueFunction.getJSScopeType().isFunction()); + } else { + assertTrue(v8ValueFunction.getJSScopeType().isScript()); + } v8ValueFunction.setSourceCode(originalCodeString, options); ++callCount; return result; @@ -1441,23 +1461,38 @@ public void testGetAndSetRegularSourceCode(int optionId) throws JavetException { "The cache is not ready and the scope type should be [Class]."); assertEquals(i, v8ValueFunction.callInteger(null), "Calling the function to build the cache and the result should match."); - assertTrue(v8ValueFunction.getJSScopeType().isFunction(), - "The cache is ready and the scope type should be [Function]."); + if (v8Runtime.getJSRuntimeType().isNode()) { + assertTrue(v8ValueFunction.getJSScopeType().isFunction(), + "The cache is ready and the scope type should be [Function]."); + } else { + assertTrue(v8ValueFunction.getJSScopeType().isScript(), + "The cache is ready and the scope type should be [Script]."); + } assertTrue(v8ValueFunction.setSourceCode(MessageFormat.format(functionBodyTemplate[1], i), options), "Updating the source code should pass."); assertEquals(i + 1, v8ValueFunction.callInteger(null), "Calling the new function and the result should match."); assertTrue(v8ValueFunction.setSourceCode(functionBodies.get(i), options), "Restoring the source code should pass."); - assertTrue(v8ValueFunction.getJSScopeType().isFunction(), - "The cache is refreshed and the scope type should be [Function]."); + if (v8Runtime.getJSRuntimeType().isNode()) { + assertTrue(v8ValueFunction.getJSScopeType().isFunction(), + "The cache is refreshed and the scope type should be [Function]."); + } else { + assertTrue(v8ValueFunction.getJSScopeType().isScript(), + "The cache is refreshed and the scope type should be [Script]."); + } } // Verify the cache. try (V8ValueFunction v8ValueFunction = v8Runtime.getGlobalObject().get(functionNames.get(i))) { assertTrue(v8ValueFunction.getJSFunctionType().isUserDefined(), "Function type should be user defined."); - assertTrue(v8ValueFunction.getJSScopeType().isFunction(), - "The cache is restored and the scope type should be [Function]."); + if (v8Runtime.getJSRuntimeType().isNode()) { + assertTrue(v8ValueFunction.getJSScopeType().isFunction(), + "The cache is restored and the scope type should be [Function]."); + } else { + assertTrue(v8ValueFunction.getJSScopeType().isScript(), + "The cache is restored and the scope type should be [Script]."); + } assertEquals(i, v8ValueFunction.callInteger(null), "Calling the function from the cache and the result should match."); } @@ -1786,7 +1821,7 @@ public void testOptional() throws JavetException { public Optional test(Optional optionalString) { if (optionalString.isPresent()) { String str = optionalString.get(); - if (str.length() > 0) { + if (StringUtils.isNotEmpty(str)) { return Optional.of(str.substring(1)); } }