org.jruby.internal.runtime.methods
Class DelegatingDynamicMethod

java.lang.Object
  extended by org.jruby.internal.runtime.methods.DynamicMethod
      extended by org.jruby.internal.runtime.methods.DelegatingDynamicMethod
Direct Known Subclasses:
ProfilingDynamicMethod, SynchronizedDynamicMethod

public abstract class DelegatingDynamicMethod
extends DynamicMethod


Nested Class Summary
 
Nested classes/interfaces inherited from class org.jruby.internal.runtime.methods.DynamicMethod
DynamicMethod.NativeCall
 
Field Summary
protected  DynamicMethod delegate
           
 
Fields inherited from class org.jruby.internal.runtime.methods.DynamicMethod
builtin, callConfig, implementationClass, name, nativeCall, notImplemented, protectedClass, serialNumber, visibility
 
Constructor Summary
DelegatingDynamicMethod(DynamicMethod delegate)
           
 
Method Summary
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule klazz, java.lang.String name)
          Arity 0, no block
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule klazz, java.lang.String name, Block block)
          Arity 0, with block; calls through IRubyObject[] path
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule klazz, java.lang.String name, IRubyObject arg)
          Arity 1, no block
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule klazz, 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 klazz, 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 klazz, java.lang.String name, IRubyObject arg1, Block block)
          Arity 1, with block; calls through IRubyObject[] path
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule klazz, java.lang.String name, IRubyObject arg1, IRubyObject arg2)
          Arity 2, no block
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule klazz, java.lang.String name, IRubyObject arg1, IRubyObject arg2, Block block)
          Arity 2, with block; calls through IRubyObject[] path
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule klazz, java.lang.String name, IRubyObject arg1, IRubyObject arg2, IRubyObject arg3)
          Arity 3, no block
 IRubyObject call(ThreadContext context, IRubyObject self, RubyModule klazz, java.lang.String name, IRubyObject arg1, IRubyObject arg2, IRubyObject arg3, Block block)
          Arity 3, with block; calls through IRubyObject[] path
 Arity getArity()
          Retrieve the arity of this method, used for reporting arity to Ruby code.
 CallConfiguration getCallConfig()
          Get the CallConfiguration used for pre/post logic for this method handle.
 DynamicMethod getDelegate()
           
 RubyModule getImplementationClass()
          Retrieve the class or module on which this method is implemented, used for 'super' logic among others.
 DynamicMethod.NativeCall getNativeCall()
           
protected  RubyModule getProtectedClass()
          Retrieve the pre-calculated "protected class" used for access checks.
 DynamicMethod getRealMethod()
          Get the "real" method contained within this method.
 long getSerialNumber()
          Get the global serial number for this method object
 Visibility getVisibility()
          Get the visibility of this method.
 boolean isBuiltin()
           
 boolean isCallableFrom(IRubyObject caller, CallType callType)
          Determine whether this method is callable from the given object using the given call type.
 boolean isNative()
          Returns true if this method is backed by native (i.e.
 void setCallConfig(CallConfiguration callConfig)
          Set the CallConfiguration used for pre/post logic for this method handle.
 void setImplementationClass(RubyModule implClass)
          Set the class on which this method is implemented, used for 'super' logic, among others.
 void setIsBuiltin(boolean isBuiltin)
           
 void setNativeCall(java.lang.Class nativeTarget, java.lang.String nativeName, java.lang.Class nativeReturn, java.lang.Class[] nativeSignature, boolean statik)
           
 void setVisibility(Visibility visibility)
          Set the visibility of this method.
 
Methods inherited from class org.jruby.internal.runtime.methods.DynamicMethod
calculateProtectedClass, call, call, call, call, call, call, call, call, call, call, call, call, call, call, dup, getName, handleBreak, handleRedo, handleReturn, init, isNotImplemented, isUndefined, setName, setNotImplemented
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

delegate

protected final DynamicMethod delegate
Constructor Detail

DelegatingDynamicMethod

public DelegatingDynamicMethod(DynamicMethod delegate)
Method Detail

getDelegate

public DynamicMethod getDelegate()

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule klazz,
                        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 klazz,
                        java.lang.String name,
                        IRubyObject arg)
Description copied from class: DynamicMethod
Arity 1, no block

Overrides:
call in class DynamicMethod

call

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

Overrides:
call in class DynamicMethod

call

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

Overrides:
call in class DynamicMethod

call

public IRubyObject call(ThreadContext context,
                        IRubyObject self,
                        RubyModule klazz,
                        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 klazz,
                        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 klazz,
                        java.lang.String name,
                        IRubyObject arg1,
                        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 klazz,
                        java.lang.String name,
                        IRubyObject arg1,
                        IRubyObject arg2,
                        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 klazz,
                        java.lang.String name,
                        IRubyObject arg1,
                        IRubyObject arg2,
                        IRubyObject arg3,
                        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 klazz,
                        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

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

setNativeCall

public void setNativeCall(java.lang.Class nativeTarget,
                          java.lang.String nativeName,
                          java.lang.Class nativeReturn,
                          java.lang.Class[] nativeSignature,
                          boolean statik)
Overrides:
setNativeCall in class DynamicMethod

setIsBuiltin

public void setIsBuiltin(boolean isBuiltin)
Overrides:
setIsBuiltin in class DynamicMethod

setImplementationClass

public void setImplementationClass(RubyModule implClass)
Description copied from class: DynamicMethod
Set the class on which this method is implemented, used for 'super' logic, among others.

Overrides:
setImplementationClass in class DynamicMethod
Parameters:
implClass - The class on which this method is implemented

setCallConfig

public void setCallConfig(CallConfiguration callConfig)
Description copied from class: DynamicMethod
Set the CallConfiguration used for pre/post logic for this method handle.

Overrides:
setCallConfig in class DynamicMethod
Parameters:
callConfig - The CallConfiguration for this method handle

isNative

public boolean isNative()
Description copied from class: DynamicMethod
Returns true if this method is backed by native (i.e. Java) code.

Overrides:
isNative in class DynamicMethod
Returns:
true If backed by Java code or JVM bytecode; false otherwise

isCallableFrom

public boolean isCallableFrom(IRubyObject caller,
                              CallType callType)
Description copied from class: DynamicMethod
Determine whether this method is callable from the given object using the given call type.

Overrides:
isCallableFrom in class DynamicMethod
Parameters:
caller - The calling object
callType - The type of call
Returns:
true if the call would not violate visibility; false otherwise

isBuiltin

public boolean isBuiltin()
Overrides:
isBuiltin in class DynamicMethod

getVisibility

public Visibility getVisibility()
Description copied from class: DynamicMethod
Get the visibility of this method.

Overrides:
getVisibility in class DynamicMethod
Returns:
The visibility of this method

getSerialNumber

public long getSerialNumber()
Description copied from class: DynamicMethod
Get the global serial number for this method object

Overrides:
getSerialNumber in class DynamicMethod
Returns:
This method object's serial number

getRealMethod

public DynamicMethod getRealMethod()
Description copied from class: DynamicMethod
Get the "real" method contained within this method. This simply returns self except in cases where a method is wrapped to give it a new name or new implementation class (AliasMethod, WrapperMethod, ...).

Overrides:
getRealMethod in class DynamicMethod
Returns:
The "real" method associated with this one

getProtectedClass

protected RubyModule getProtectedClass()
Description copied from class: DynamicMethod
Retrieve the pre-calculated "protected class" used for access checks.

Overrides:
getProtectedClass in class DynamicMethod
Returns:
The "protected class" for access checks.

getNativeCall

public DynamicMethod.NativeCall getNativeCall()
Overrides:
getNativeCall in class DynamicMethod

getImplementationClass

public RubyModule getImplementationClass()
Description copied from class: DynamicMethod
Retrieve the class or module on which this method is implemented, used for 'super' logic among others.

Overrides:
getImplementationClass in class DynamicMethod
Returns:
The class on which this method is implemented

getCallConfig

public CallConfiguration getCallConfig()
Description copied from class: DynamicMethod
Get the CallConfiguration used for pre/post logic for this method handle.

Overrides:
getCallConfig in class DynamicMethod
Returns:
The CallConfiguration for this method handle

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.


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