org.jruby.internal.runtime.methods
Class DefaultMethod

java.lang.Object
  extended by org.jruby.internal.runtime.methods.DynamicMethod
      extended by org.jruby.internal.runtime.methods.DefaultMethod
All Implemented Interfaces:
JumpTarget, MethodArgs

public class DefaultMethod
extends DynamicMethod
implements JumpTarget, MethodArgs

This is the mixed-mode method type. It will call out to JIT compiler to see if the compiler wants to JIT or not. If the JIT compiler does JIT this it will return the new method to be executed here instead of executing the interpreted version of this method. The next invocation of the method will end up causing the runtime to load and execute the newly JIT'd method.


Field Summary
 
Fields inherited from class org.jruby.internal.runtime.methods.DynamicMethod
callConfig, implementationClass, protectedClass, serialNumber, visibility
 
Constructor Summary
DefaultMethod(RubyModule implementationClass, StaticScope staticScope, Node body, ArgsNode argsNode, Visibility visibility, ISourcePosition position)
           
 
Method Summary
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, java.lang.String name)
          Arity 0, no block
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, java.lang.String name, Block block)
          Arity 0, with block; calls through IRubyObject[] path
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, java.lang.String name, IRubyObject arg0)
          Arity 1, no block
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, java.lang.String name, IRubyObject[] args)
          A default implementation of n-arity, non-block 'call' method, which simply calls the n-arity, block-receiving version with the arg list and Block.NULL_BLOCK.
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, java.lang.String name, IRubyObject[] args, Block block)
          The minimum 'call' method required for a dynamic method handle.
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, java.lang.String name, IRubyObject arg0, Block block)
          Arity 1, with block; calls through IRubyObject[] path
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, java.lang.String name, IRubyObject arg0, IRubyObject arg1)
          Arity 2, no block
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, java.lang.String name, IRubyObject arg0, IRubyObject arg1, Block block)
          Arity 2, with block; calls through IRubyObject[] path
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, java.lang.String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2)
          Arity 3, no block
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, java.lang.String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2, Block block)
          Arity 3, with block; calls through IRubyObject[] path
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, java.lang.String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2, IRubyObject arg3)
          Arity 4, no block
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, java.lang.String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2, IRubyObject arg3, Block block)
          Arity 4, with block; calls through IRubyObject[] path
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, java.lang.String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2, IRubyObject arg3, IRubyObject arg4)
          Arity 5, no block
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, java.lang.String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2, IRubyObject arg3, IRubyObject arg4, Block block)
          Arity 5, with block; calls through IRubyObject[] path
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, java.lang.String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2, IRubyObject arg3, IRubyObject arg4, IRubyObject arg5)
          Arity 6, no block
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, java.lang.String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2, IRubyObject arg3, IRubyObject arg4, IRubyObject arg5, Block block)
          Arity 6, with block; calls through IRubyObject[] path
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, java.lang.String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2, IRubyObject arg3, IRubyObject arg4, IRubyObject arg5, IRubyObject arg6)
          Arity 7, no block
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, java.lang.String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2, IRubyObject arg3, IRubyObject arg4, IRubyObject arg5, IRubyObject arg6, Block block)
          Arity 7, with block; calls through IRubyObject[] path
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, java.lang.String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2, IRubyObject arg3, IRubyObject arg4, IRubyObject arg5, IRubyObject arg6, IRubyObject arg7)
          Arity 8, no block
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, java.lang.String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2, IRubyObject arg3, IRubyObject arg4, IRubyObject arg5, IRubyObject arg6, IRubyObject arg7, Block block)
          Arity 8, with block; calls through IRubyObject[] path
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, java.lang.String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2, IRubyObject arg3, IRubyObject arg4, IRubyObject arg5, IRubyObject arg6, IRubyObject arg7, IRubyObject arg8)
          Arity 9, no block
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, java.lang.String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2, IRubyObject arg3, IRubyObject arg4, IRubyObject arg5, IRubyObject arg6, IRubyObject arg7, IRubyObject arg8, Block block)
          Arity 9, with block; calls through IRubyObject[] path
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, java.lang.String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2, IRubyObject arg3, IRubyObject arg4, IRubyObject arg5, IRubyObject arg6, IRubyObject arg7, IRubyObject arg8, IRubyObject arg9)
          Arity 10, no block
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, java.lang.String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2, IRubyObject arg3, IRubyObject arg4, IRubyObject arg5, IRubyObject arg6, IRubyObject arg7, IRubyObject arg8, IRubyObject arg9, Block block)
          Arity 10, with block; calls through IRubyObject[] path
 DynamicMethod dup()
          Duplicate this method, returning DynamicMethod referencing the same code and with the same attributes.
 ArgsNode getArgsNode()
           
 Arity getArity()
          Retrieve the arity of this method, used for reporting arity to Ruby code.
 Node getBodyNode()
           
 int getCallCount()
           
 DynamicMethod getMethodForCaching()
           
 ISourcePosition getPosition()
           
 StaticScope getStaticScope()
           
 int incrementCallCount()
           
 void setCallCount(int callCount)
           
 void setVisibility(Visibility visibility)
          Set the visibility of this method.
 void switchToJitted(Script jitCompiledScript, CallConfiguration jitCallConfig)
           
 
Methods inherited from class org.jruby.internal.runtime.methods.DynamicMethod
calculateProtectedClass, getCallConfig, getImplementationClass, getProtectedClass, getRealMethod, getSerialNumber, getVisibility, handleRedo, handleReturn, init, isCallableFrom, isNative, isUndefined, setCallConfig, setImplementationClass
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DefaultMethod

public DefaultMethod(RubyModule implementationClass,
                     StaticScope staticScope,
                     Node body,
                     ArgsNode argsNode,
                     Visibility visibility,
                     ISourcePosition position)
Method Detail

getCallCount

public int getCallCount()

incrementCallCount

public int incrementCallCount()

setCallCount

public void setCallCount(int callCount)

getBodyNode

public Node getBodyNode()

getArgsNode

public ArgsNode getArgsNode()
Specified by:
getArgsNode in interface MethodArgs

getStaticScope

public StaticScope getStaticScope()

getMethodForCaching

public DynamicMethod getMethodForCaching()

switchToJitted

public void switchToJitted(Script jitCompiledScript,
                           CallConfiguration jitCallConfig)

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule clazz,
                        java.lang.String name,
                        IRubyObject[] args,
                        Block block)
Description copied from class: DynamicMethod
The minimum 'call' method required for a dynamic method handle. Subclasses must impleemnt 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.

Specified by:
call in class DynamicMethod
Parameters:
context - The thread context for the currently executing thread
self - The 'self' or 'receiver' object to use for this call
name - The incoming name used to invoke this method
args - The argument list to this invocation
block - The block passed to this invocation
Returns:
The result of the call

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule clazz,
                        java.lang.String name,
                        IRubyObject[] args)
Description copied from class: DynamicMethod
A default implementation of n-arity, non-block 'call' method, which simply calls the n-arity, block-receiving version with the arg list and Block.NULL_BLOCK.

Overrides:
call in class DynamicMethod
Parameters:
context - The thread context for the currently executing thread
self - The 'self' or 'receiver' object to use for this call
name - The incoming name used to invoke this method
Returns:
The result of the call

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule clazz,
                        java.lang.String name)
Description copied from class: DynamicMethod
Arity 0, no block

Overrides:
call in class DynamicMethod

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule clazz,
                        java.lang.String name,
                        Block block)
Description copied from class: DynamicMethod
Arity 0, with block; calls through IRubyObject[] path

Overrides:
call in class DynamicMethod

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule clazz,
                        java.lang.String name,
                        IRubyObject arg0)
Description copied from class: DynamicMethod
Arity 1, no block

Overrides:
call in class DynamicMethod

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule clazz,
                        java.lang.String name,
                        IRubyObject arg0,
                        Block block)
Description copied from class: DynamicMethod
Arity 1, with block; calls through IRubyObject[] path

Overrides:
call in class DynamicMethod

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule clazz,
                        java.lang.String name,
                        IRubyObject arg0,
                        IRubyObject arg1)
Description copied from class: DynamicMethod
Arity 2, no block

Overrides:
call in class DynamicMethod

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule clazz,
                        java.lang.String name,
                        IRubyObject arg0,
                        IRubyObject arg1,
                        Block block)
Description copied from class: DynamicMethod
Arity 2, with block; calls through IRubyObject[] path

Overrides:
call in class DynamicMethod

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule clazz,
                        java.lang.String name,
                        IRubyObject arg0,
                        IRubyObject arg1,
                        IRubyObject arg2)
Description copied from class: DynamicMethod
Arity 3, no block

Overrides:
call in class DynamicMethod

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule clazz,
                        java.lang.String name,
                        IRubyObject arg0,
                        IRubyObject arg1,
                        IRubyObject arg2,
                        Block block)
Description copied from class: DynamicMethod
Arity 3, with block; calls through IRubyObject[] path

Overrides:
call in class DynamicMethod

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule clazz,
                        java.lang.String name,
                        IRubyObject arg0,
                        IRubyObject arg1,
                        IRubyObject arg2,
                        IRubyObject arg3)
Description copied from class: DynamicMethod
Arity 4, no block

Overrides:
call in class DynamicMethod

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule clazz,
                        java.lang.String name,
                        IRubyObject arg0,
                        IRubyObject arg1,
                        IRubyObject arg2,
                        IRubyObject arg3,
                        Block block)
Description copied from class: DynamicMethod
Arity 4, with block; calls through IRubyObject[] path

Overrides:
call in class DynamicMethod

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule clazz,
                        java.lang.String name,
                        IRubyObject arg0,
                        IRubyObject arg1,
                        IRubyObject arg2,
                        IRubyObject arg3,
                        IRubyObject arg4)
Description copied from class: DynamicMethod
Arity 5, no block

Overrides:
call in class DynamicMethod

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule clazz,
                        java.lang.String name,
                        IRubyObject arg0,
                        IRubyObject arg1,
                        IRubyObject arg2,
                        IRubyObject arg3,
                        IRubyObject arg4,
                        Block block)
Description copied from class: DynamicMethod
Arity 5, with block; calls through IRubyObject[] path

Overrides:
call in class DynamicMethod

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule clazz,
                        java.lang.String name,
                        IRubyObject arg0,
                        IRubyObject arg1,
                        IRubyObject arg2,
                        IRubyObject arg3,
                        IRubyObject arg4,
                        IRubyObject arg5)
Description copied from class: DynamicMethod
Arity 6, no block

Overrides:
call in class DynamicMethod

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule clazz,
                        java.lang.String name,
                        IRubyObject arg0,
                        IRubyObject arg1,
                        IRubyObject arg2,
                        IRubyObject arg3,
                        IRubyObject arg4,
                        IRubyObject arg5,
                        Block block)
Description copied from class: DynamicMethod
Arity 6, with block; calls through IRubyObject[] path

Overrides:
call in class DynamicMethod

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule clazz,
                        java.lang.String name,
                        IRubyObject arg0,
                        IRubyObject arg1,
                        IRubyObject arg2,
                        IRubyObject arg3,
                        IRubyObject arg4,
                        IRubyObject arg5,
                        IRubyObject arg6)
Description copied from class: DynamicMethod
Arity 7, no block

Overrides:
call in class DynamicMethod

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule clazz,
                        java.lang.String name,
                        IRubyObject arg0,
                        IRubyObject arg1,
                        IRubyObject arg2,
                        IRubyObject arg3,
                        IRubyObject arg4,
                        IRubyObject arg5,
                        IRubyObject arg6,
                        Block block)
Description copied from class: DynamicMethod
Arity 7, with block; calls through IRubyObject[] path

Overrides:
call in class DynamicMethod

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule clazz,
                        java.lang.String name,
                        IRubyObject arg0,
                        IRubyObject arg1,
                        IRubyObject arg2,
                        IRubyObject arg3,
                        IRubyObject arg4,
                        IRubyObject arg5,
                        IRubyObject arg6,
                        IRubyObject arg7)
Description copied from class: DynamicMethod
Arity 8, no block

Overrides:
call in class DynamicMethod

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule clazz,
                        java.lang.String name,
                        IRubyObject arg0,
                        IRubyObject arg1,
                        IRubyObject arg2,
                        IRubyObject arg3,
                        IRubyObject arg4,
                        IRubyObject arg5,
                        IRubyObject arg6,
                        IRubyObject arg7,
                        Block block)
Description copied from class: DynamicMethod
Arity 8, with block; calls through IRubyObject[] path

Overrides:
call in class DynamicMethod

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule clazz,
                        java.lang.String name,
                        IRubyObject arg0,
                        IRubyObject arg1,
                        IRubyObject arg2,
                        IRubyObject arg3,
                        IRubyObject arg4,
                        IRubyObject arg5,
                        IRubyObject arg6,
                        IRubyObject arg7,
                        IRubyObject arg8)
Description copied from class: DynamicMethod
Arity 9, no block

Overrides:
call in class DynamicMethod

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule clazz,
                        java.lang.String name,
                        IRubyObject arg0,
                        IRubyObject arg1,
                        IRubyObject arg2,
                        IRubyObject arg3,
                        IRubyObject arg4,
                        IRubyObject arg5,
                        IRubyObject arg6,
                        IRubyObject arg7,
                        IRubyObject arg8,
                        Block block)
Description copied from class: DynamicMethod
Arity 9, with block; calls through IRubyObject[] path

Overrides:
call in class DynamicMethod

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule clazz,
                        java.lang.String name,
                        IRubyObject arg0,
                        IRubyObject arg1,
                        IRubyObject arg2,
                        IRubyObject arg3,
                        IRubyObject arg4,
                        IRubyObject arg5,
                        IRubyObject arg6,
                        IRubyObject arg7,
                        IRubyObject arg8,
                        IRubyObject arg9)
Description copied from class: DynamicMethod
Arity 10, no block

Overrides:
call in class DynamicMethod

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule clazz,
                        java.lang.String name,
                        IRubyObject arg0,
                        IRubyObject arg1,
                        IRubyObject arg2,
                        IRubyObject arg3,
                        IRubyObject arg4,
                        IRubyObject arg5,
                        IRubyObject arg6,
                        IRubyObject arg7,
                        IRubyObject arg8,
                        IRubyObject arg9,
                        Block block)
Description copied from class: DynamicMethod
Arity 10, with block; calls through IRubyObject[] path

Overrides:
call in class DynamicMethod

getPosition

public ISourcePosition getPosition()

getArity

public Arity getArity()
Description copied from class: DynamicMethod
Retrieve the arity of this method, used for reporting arity to Ruby code. This arity may or may not reflect the actual specific or variable arities of the referenced method.

Overrides:
getArity in class DynamicMethod
Returns:
The arity of the method, as reported to Ruby consumers.

dup

public DynamicMethod dup()
Description copied from class: DynamicMethod
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.

Specified by:
dup in class DynamicMethod
Returns:
An identical DynamicMethod object to the target.

setVisibility

public void setVisibility(Visibility visibility)
Description copied from class: DynamicMethod
Set the visibility of this method.

Overrides:
setVisibility in class DynamicMethod
Parameters:
visibility - The visibility of this method


Copyright © 2002-2009 JRuby Team. All Rights Reserved.