From 9d8cc72bbd23f3d0ebe3166a922b66cda43be86f Mon Sep 17 00:00:00 2001 From: Horis <821938089@qq.com> Date: Sun, 28 Jan 2024 21:36:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/script/rhino/ContextElement.kt | 25 ------------------- .../com/script/rhino/RhinoCompiledScript.kt | 3 ++- .../com/script/rhino/RhinoScriptEngine.kt | 3 ++- 3 files changed, 4 insertions(+), 27 deletions(-) delete mode 100644 modules/rhino1.7.3/src/main/java/com/script/rhino/ContextElement.kt diff --git a/modules/rhino1.7.3/src/main/java/com/script/rhino/ContextElement.kt b/modules/rhino1.7.3/src/main/java/com/script/rhino/ContextElement.kt deleted file mode 100644 index e4806155f..000000000 --- a/modules/rhino1.7.3/src/main/java/com/script/rhino/ContextElement.kt +++ /dev/null @@ -1,25 +0,0 @@ -package com.script.rhino - -import kotlinx.coroutines.ThreadContextElement -import kotlin.coroutines.CoroutineContext - -class ContextElement : ThreadContextElement { - - companion object Key : CoroutineContext.Key - - override val key: CoroutineContext.Key - get() = Key - - private val contextHelper: Any? = VMBridgeReflect.contextLocal.get() - - override fun updateThreadContext(context: CoroutineContext): Any? { - val oldState = VMBridgeReflect.contextLocal.get() - VMBridgeReflect.contextLocal.set(contextHelper) - return oldState - } - - override fun restoreThreadContext(context: CoroutineContext, oldState: Any?) { - VMBridgeReflect.contextLocal.set(oldState) - } - -} diff --git a/modules/rhino1.7.3/src/main/java/com/script/rhino/RhinoCompiledScript.kt b/modules/rhino1.7.3/src/main/java/com/script/rhino/RhinoCompiledScript.kt index 073fe6dd5..b617ff231 100644 --- a/modules/rhino1.7.3/src/main/java/com/script/rhino/RhinoCompiledScript.kt +++ b/modules/rhino1.7.3/src/main/java/com/script/rhino/RhinoCompiledScript.kt @@ -28,6 +28,7 @@ import com.script.CompiledScript import com.script.ScriptContext import com.script.ScriptEngine import com.script.ScriptException +import kotlinx.coroutines.asContextElement import kotlinx.coroutines.withContext import org.mozilla.javascript.* import java.io.IOException @@ -98,7 +99,7 @@ internal class RhinoCompiledScript( override suspend fun evalSuspend(scope: Scriptable): Any? { val cx = Context.enter() var ret: Any? - withContext(ContextElement()) { + withContext(VMBridgeReflect.contextLocal.asContextElement()) { try { try { ret = cx.executeScriptWithContinuations(script, scope) diff --git a/modules/rhino1.7.3/src/main/java/com/script/rhino/RhinoScriptEngine.kt b/modules/rhino1.7.3/src/main/java/com/script/rhino/RhinoScriptEngine.kt index 1c436565c..72501377b 100644 --- a/modules/rhino1.7.3/src/main/java/com/script/rhino/RhinoScriptEngine.kt +++ b/modules/rhino1.7.3/src/main/java/com/script/rhino/RhinoScriptEngine.kt @@ -25,6 +25,7 @@ package com.script.rhino import com.script.* +import kotlinx.coroutines.asContextElement import kotlinx.coroutines.withContext import org.mozilla.javascript.* import org.mozilla.javascript.Function @@ -87,7 +88,7 @@ object RhinoScriptEngine : AbstractScriptEngine(), Invocable, Compilable { override suspend fun evalSuspend(reader: Reader, scope: Scriptable): Any? { val cx = Context.enter() var ret: Any? - withContext(ContextElement()) { + withContext(VMBridgeReflect.contextLocal.asContextElement()) { try { var filename = this@RhinoScriptEngine["javax.script.filename"] as? String filename = filename ?: ""