Top Fields Constructors Methods
org.jruby.internal.runtime.methods

public Class MixedModeIRMethod

extends AbstractIRMethod
implements Compilable<DynamicMethod>
Class Inheritance
All Implemented Interfaces
org.jruby.compiler.Compilable
Known Direct Subclasses
org.jruby.internal.runtime.methods.DefineMethodMethod
Imports
java.io.ByteArrayOutputStream, org.jruby.RubyModule, org.jruby.compiler.Compilable, org.jruby.internal.runtime.AbstractIRMethod, .SplitSuperState, org.jruby.ir.IRMethod, .IRScope, org.jruby.ir.interpreter.ExitableInterpreterContext, .InterpreterContext, org.jruby.ir.persistence.IRDumper, org.jruby.ir.runtime.IRRuntimeHelpers, org.jruby.runtime.Block, .DynamicScope, .ThreadContext, .Visibility, org.jruby.runtime.builtin.IRubyObject, org.jruby.util.log.Logger, .LoggerFactory

Field Summary

Modifier and TypeField and Description
private volatile DynamicMethod
private boolean
private static final Logger
Inherited from org.jruby.internal.runtime.AbstractIRMethod:
callCountinterpreterContextlinemethodsignaturestaticScope

Constructor Summary

AccessConstructor and Description
public
MixedModeIRMethod(IRScope method, Visibility visibility, RubyModule implementationClass)

Method Summary

Modifier and TypeMethod and Description
public IRubyObject
call(ThreadContext
The thread context for the currently executing thread
context
,
IRubyObject
The 'self' or 'receiver' object to use for this call
self
,
RubyModule
The Ruby class against which this method is binding
clazz
,
String
The incoming name used to invoke this method
name
,
IRubyObject[]
The argument list to this invocation
args
,
Block
The block passed to this invocation
block
)

Implements abstract org.jruby.internal.runtime.methods.DynamicMethod.call.

The minimum 'call' method required for a dynamic method handle.

public IRubyObject
public IRubyObject
public IRubyObject
public IRubyObject
public void
private void
public DynamicMethod
dup()

Overrides org.jruby.internal.runtime.AbstractIRMethod.dup.

Duplicate this method, returning DynamicMethod referencing the same code and with the same attributes.

public void
public boolean
forceBuild(ThreadContext
the current thread context
context
)

Overrides default org.jruby.compiler.Compilable.forceBuild.

Force this Compilable to finish its build process.

public DynamicMethod
private IRubyObject
private IRubyObject
private IRubyObject
private IRubyObject
private IRubyObject
private ExitableReturn
protected void
protected void
pre(InterpreterContext ic, ThreadContext context, IRubyObject self, String name, Block block, RubyModule implClass)

protected void
preSplit(InterpreterContext ic, ThreadContext context, IRubyObject self, String name, Block block, RubyModule implClass, DynamicScope scope)

protected void
public SplitSuperState<MethodSplitState>
Inherited from org.jruby.internal.runtime.AbstractIRMethod:
buildcloneensureInstrsReadygetArgumentDescriptorsgetAritygetFilegetInstanceVariableNamesgetIRScopegetLinegetMethodDatagetRuby2KeywordsgetSignaturegetStaticScopeisBuildCompleteneedsToFindImplementersetCallCountsetRuby2KeywordstoStringtryJit

Field Detail

actualMethodback to summary
private volatile DynamicMethod actualMethod
displayedCFGback to summary
private boolean displayedCFG
LOGback to summary
private static final Logger LOG

Constructor Detail

MixedModeIRMethodback to summary
public MixedModeIRMethod(IRScope method, Visibility visibility, RubyModule implementationClass)

Method Detail

callback to summary
public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject[] args, Block block)

Implements abstract org.jruby.internal.runtime.methods.DynamicMethod.call.

Doc from org.jruby.internal.runtime.methods.DynamicMethod.call.

The minimum 'call' method required for a dynamic method handle. Subclasses must implement this method, but may implement the other signatures to provide faster, non-boxing call paths. Typically subclasses will implement this method to check variable arity calls, then performing a specific-arity invocation to the appropriate method or performing variable-arity logic in-line.

Parameters
context:ThreadContext

The thread context for the currently executing thread

self:IRubyObject

The 'self' or 'receiver' object to use for this call

clazz:RubyModule

The Ruby class against which this method is binding

name:String

The incoming name used to invoke this method

args:IRubyObject[]

The argument list to this invocation

block:Block

The block passed to this invocation

Returns:IRubyObject

The result of the call

Annotations
@Override
callback to summary
public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, Block block)

Overrides org.jruby.internal.runtime.methods.DynamicMethod.call.

Annotations
@Override
callback to summary
public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject arg0, Block block)

Overrides org.jruby.internal.runtime.methods.DynamicMethod.call.

Annotations
@Override
callback to summary
public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject arg0, IRubyObject arg1, Block block)

Overrides org.jruby.internal.runtime.methods.DynamicMethod.call.

Annotations
@Override
callback to summary
public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2, Block block)

Overrides org.jruby.internal.runtime.methods.DynamicMethod.call.

Annotations
@Override
completeBuildback to summary
public void completeBuild(ThreadContext context, DynamicMethod newMethod)

Overrides default org.jruby.compiler.Compilable.completeBuild.

Annotations
@Override
doDebugback to summary
private void doDebug()
dupback to summary
public DynamicMethod dup()

Overrides org.jruby.internal.runtime.AbstractIRMethod.dup.

Doc from org.jruby.internal.runtime.methods.DynamicMethod.dup.

Duplicate this method, returning DynamicMethod referencing the same code and with the same attributes. It is not required that this method produce a new object if the semantics of the DynamicMethod subtype do not require such.

Returns:DynamicMethod

An identical DynamicMethod object to the target.

Annotations
@Override
finishSplitCallback to summary
public void finishSplitCall(SplitSuperState<T extends InternalSplitState> state)

Implements abstract org.jruby.internal.runtime.AbstractIRMethod.finishSplitCall.

Annotations
@Override
forceBuildback to summary
public boolean forceBuild(ThreadContext context)

Overrides default org.jruby.compiler.Compilable.forceBuild.

Doc from org.jruby.compiler.Compilable.forceBuild.

Force this Compilable to finish its build process. Override this and isBuildComplete() for implementations that have a build process.

Parameters
context:ThreadContext

the current thread context

Returns:boolean

true if the forced build completed; false otherwise

Annotations
@Override
getActualMethodback to summary
public DynamicMethod getActualMethod()
INTERPRET_METHODback to summary
private IRubyObject INTERPRET_METHOD(ThreadContext context, InterpreterContext ic, RubyModule implClass, IRubyObject self, String name, IRubyObject[] args, Block block)
INTERPRET_METHODback to summary
private IRubyObject INTERPRET_METHOD(ThreadContext context, InterpreterContext ic, RubyModule implClass, IRubyObject self, String name, Block block)
INTERPRET_METHODback to summary
private IRubyObject INTERPRET_METHOD(ThreadContext context, InterpreterContext ic, RubyModule implClass, IRubyObject self, String name, IRubyObject arg1, Block block)
INTERPRET_METHODback to summary
private IRubyObject INTERPRET_METHOD(ThreadContext context, InterpreterContext ic, RubyModule implClass, IRubyObject self, String name, IRubyObject arg1, IRubyObject arg2, Block block)
INTERPRET_METHODback to summary
private IRubyObject INTERPRET_METHOD(ThreadContext context, InterpreterContext ic, RubyModule implClass, IRubyObject self, String name, IRubyObject arg1, IRubyObject arg2, IRubyObject arg3, Block block)
INTERPRET_METHODback to summary
private ExitableReturn INTERPRET_METHOD(MethodSplitState state, IRubyObject[] args, Block block)
postback to summary
protected void post(InterpreterContext ic, ThreadContext context)
preback to summary
protected void pre(InterpreterContext ic, ThreadContext context, IRubyObject self, String name, Block block, RubyModule implClass)
preSplitback to summary
protected void preSplit(InterpreterContext ic, ThreadContext context, IRubyObject self, String name, Block block, RubyModule implClass, DynamicScope scope)
printMethodIRback to summary
protected void printMethodIR()

Implements abstract org.jruby.internal.runtime.AbstractIRMethod.printMethodIR.

Annotations
@Override
startSplitSuperCallback to summary
public SplitSuperState<MethodSplitState> startSplitSuperCall(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject[] args, Block block)

Implements abstract org.jruby.internal.runtime.AbstractIRMethod.startSplitSuperCall.

Annotations
@Override