This commit is contained in:
Horis
2025-04-07 18:17:38 +08:00
parent c33939e148
commit e053bfd327
2 changed files with 4 additions and 14 deletions

View File

@@ -37,9 +37,7 @@ import org.mozilla.javascript.RhinoException
import org.mozilla.javascript.Script
import org.mozilla.javascript.Scriptable
import java.io.IOException
import kotlin.coroutines.Continuation
import kotlin.coroutines.CoroutineContext
import kotlin.coroutines.intrinsics.suspendCoroutineUninterceptedOrReturn
/**
* Represents compiled JavaScript code.
@@ -102,11 +100,8 @@ internal class RhinoCompiledScript(
while (true) {
try {
@Suppress("UNCHECKED_CAST")
val suspendFunction =
pending.applicationState as Function1<Continuation<Any?>, Any?>
val functionResult = suspendCoroutineUninterceptedOrReturn { cout ->
suspendFunction.invoke(cout)
}
val suspendFunction = pending.applicationState as suspend () -> Any?
val functionResult = suspendFunction()
val continuation = pending.continuation
ret = cx.resumeContinuation(continuation, scope, functionResult)
break

View File

@@ -57,9 +57,7 @@ import java.security.AccessControlException
import java.security.AccessController
import java.security.AllPermission
import java.security.PrivilegedAction
import kotlin.coroutines.Continuation
import kotlin.coroutines.CoroutineContext
import kotlin.coroutines.intrinsics.suspendCoroutineUninterceptedOrReturn
/**
* Implementation of `ScriptEngine` using the Mozilla Rhino
@@ -145,11 +143,8 @@ object RhinoScriptEngine : AbstractScriptEngine(), Invocable, Compilable {
while (true) {
try {
@Suppress("UNCHECKED_CAST")
val suspendFunction =
pending.applicationState as Function1<Continuation<Any?>, Any?>
val functionResult = suspendCoroutineUninterceptedOrReturn { cout ->
suspendFunction.invoke(cout)
}
val suspendFunction = pending.applicationState as suspend () -> Any?
val functionResult = suspendFunction()
val continuation = pending.continuation
ret = cx.resumeContinuation(continuation, scope, functionResult)
break