Package org.jruby.ir.interpreter
Class ExitableInterpreterEngine
java.lang.Object
org.jruby.ir.interpreter.InterpreterEngine
org.jruby.ir.interpreter.ExitableInterpreterEngine
InterpreterEngine capable of exiting part way through execution up to a particular instruction. Continued
execution will assign the result of that instruction which we pass in and continue executing from that point.
The mechanism for this interpreter to work is a context object which contains the IPC, the result, and the
temporary variables.
Extra Notes:
- We may need to make all natural split arities here if a JIT calls this directly.
- I dislike replicating this code but we do not want our default interpreter to have an extra stack frame.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioninterpret
(ThreadContext context, Block block, IRubyObject self, ExitableInterpreterContext interpreterContext, ExitableInterpreterEngineState state, RubyModule implClass, String name, IRubyObject[] args, Block blockArg) protected static void
processOtherOp
(ThreadContext context, Block block, Instr instr, Operation operation, DynamicScope currDynScope, StaticScope currScope, Object[] temp, IRubyObject self) Methods inherited from class org.jruby.ir.interpreter.InterpreterEngine
extractToMethodToAvoidC2Crash, interpret, interpret, interpret, interpret, interpret, interpret, interpretFloatOp, interpretIntOp, processBookKeepingOp, processCall, processOtherOp, processReturnOp, receiveArg, retrieveOp, setResult, setResult
-
Constructor Details
-
ExitableInterpreterEngine
public ExitableInterpreterEngine()
-
-
Method Details
-
interpret
public ExitableReturn interpret(ThreadContext context, Block block, IRubyObject self, ExitableInterpreterContext interpreterContext, ExitableInterpreterEngineState state, RubyModule implClass, String name, IRubyObject[] args, Block blockArg) -
processOtherOp
protected static void processOtherOp(ThreadContext context, Block block, Instr instr, Operation operation, DynamicScope currDynScope, StaticScope currScope, Object[] temp, IRubyObject self)
-