Top Description Constructors Methods
org.jruby.ir.interpreter

public Class ExitableInterpreterEngine

extends InterpreterEngine
Class Inheritance
Imports
org.jruby.RubyModule, org.jruby.internal.runtime.methods.ExitableReturn, org.jruby.ir.Operation, org.jruby.ir.instructions.*, org.jruby.ir.runtime.IRRuntimeHelpers, org.jruby.parser.StaticScope, org.jruby.runtime.Block, .DynamicScope, .Helpers, .ThreadContext, org.jruby.runtime.builtin.IRubyObject

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

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public ExitableReturn
interpret(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)

Inherited from org.jruby.ir.interpreter.InterpreterEngine:
extractToMethodToAvoidC2CrashinterpretinterpretinterpretinterpretinterpretinterpretinterpretFloatOpinterpretIntOpprocessBookKeepingOpprocessCallprocessOtherOpprocessReturnOpreceiveArgretrieveOpsetResultsetResult

Constructor Detail

ExitableInterpreterEngineback to summary
public ExitableInterpreterEngine()

Method Detail

interpretback to summary
public ExitableReturn interpret(ThreadContext context, Block block, IRubyObject self, ExitableInterpreterContext interpreterContext, ExitableInterpreterEngineState state, RubyModule implClass, String name, IRubyObject[] args, Block blockArg)
processOtherOpback to summary
protected static void processOtherOp(ThreadContext context, Block block, Instr instr, Operation operation, DynamicScope currDynScope, StaticScope currScope, Object[] temp, IRubyObject self)