优化
This commit is contained in:
@@ -37,9 +37,7 @@ import org.mozilla.javascript.RhinoException
|
|||||||
import org.mozilla.javascript.Script
|
import org.mozilla.javascript.Script
|
||||||
import org.mozilla.javascript.Scriptable
|
import org.mozilla.javascript.Scriptable
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import kotlin.coroutines.Continuation
|
|
||||||
import kotlin.coroutines.CoroutineContext
|
import kotlin.coroutines.CoroutineContext
|
||||||
import kotlin.coroutines.intrinsics.suspendCoroutineUninterceptedOrReturn
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents compiled JavaScript code.
|
* Represents compiled JavaScript code.
|
||||||
@@ -102,11 +100,8 @@ internal class RhinoCompiledScript(
|
|||||||
while (true) {
|
while (true) {
|
||||||
try {
|
try {
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
val suspendFunction =
|
val suspendFunction = pending.applicationState as suspend () -> Any?
|
||||||
pending.applicationState as Function1<Continuation<Any?>, Any?>
|
val functionResult = suspendFunction()
|
||||||
val functionResult = suspendCoroutineUninterceptedOrReturn { cout ->
|
|
||||||
suspendFunction.invoke(cout)
|
|
||||||
}
|
|
||||||
val continuation = pending.continuation
|
val continuation = pending.continuation
|
||||||
ret = cx.resumeContinuation(continuation, scope, functionResult)
|
ret = cx.resumeContinuation(continuation, scope, functionResult)
|
||||||
break
|
break
|
||||||
|
|||||||
@@ -57,9 +57,7 @@ import java.security.AccessControlException
|
|||||||
import java.security.AccessController
|
import java.security.AccessController
|
||||||
import java.security.AllPermission
|
import java.security.AllPermission
|
||||||
import java.security.PrivilegedAction
|
import java.security.PrivilegedAction
|
||||||
import kotlin.coroutines.Continuation
|
|
||||||
import kotlin.coroutines.CoroutineContext
|
import kotlin.coroutines.CoroutineContext
|
||||||
import kotlin.coroutines.intrinsics.suspendCoroutineUninterceptedOrReturn
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of `ScriptEngine` using the Mozilla Rhino
|
* Implementation of `ScriptEngine` using the Mozilla Rhino
|
||||||
@@ -145,11 +143,8 @@ object RhinoScriptEngine : AbstractScriptEngine(), Invocable, Compilable {
|
|||||||
while (true) {
|
while (true) {
|
||||||
try {
|
try {
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
val suspendFunction =
|
val suspendFunction = pending.applicationState as suspend () -> Any?
|
||||||
pending.applicationState as Function1<Continuation<Any?>, Any?>
|
val functionResult = suspendFunction()
|
||||||
val functionResult = suspendCoroutineUninterceptedOrReturn { cout ->
|
|
||||||
suspendFunction.invoke(cout)
|
|
||||||
}
|
|
||||||
val continuation = pending.continuation
|
val continuation = pending.continuation
|
||||||
ret = cx.resumeContinuation(continuation, scope, functionResult)
|
ret = cx.resumeContinuation(continuation, scope, functionResult)
|
||||||
break
|
break
|
||||||
|
|||||||
Reference in New Issue
Block a user