public class NativeMethod extends DynamicMethod
NativeMethod
represents a method handle to a C extension function in JRuby,
to provide entry points into C code. Native methods setup and tear down scope and context
around a native method call and lock the GIL
. Native methods restrict concurrency
in C extensions to avoid threading issues in C code.DynamicMethod.NativeCall
Modifier and Type | Field and Description |
---|---|
protected Arity |
arity |
protected long |
function |
builtin, callConfig, handle, implementationClass, name, nativeCall, nativeCalls, notImplemented, protectedClass, serialNumber, visibility
Constructor and Description |
---|
NativeMethod(RubyModule clazz,
int arity,
long function) |
Modifier and Type | Method and Description |
---|---|
IRubyObject |
call(ThreadContext context,
IRubyObject recv,
RubyModule clazz,
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 recv,
RubyModule clazz,
String name,
IRubyObject[] args,
Block block)
The minimum 'call' method required for a dynamic method handle.
|
DynamicMethod |
dup()
Duplicate this method, returning DynamicMethod referencing the same code
and with the same attributes.
|
Arity |
getArity()
Retrieve the arity of this method, used for reporting arity to Ruby
code.
|
boolean |
isNative()
Returns true if this method is backed by native (i.e.
|
calculateProtectedClass, call, call, call, call, call, call, call, call, getCallConfig, getHandle, getImplementationClass, getMethodData, getName, getNativeCall, getNativeCall, getProtectedClass, getRealMethod, getSerialNumber, getVisibility, handleBreak, handleRedo, handleReturn, init, isBuiltin, isCallableFrom, isNotImplemented, isUndefined, setCallConfig, setHandle, setImplementationClass, setIsBuiltin, setName, setNativeCall, setNativeCall, setNativeCall, setNotImplemented, setVisibility
protected final Arity arity
protected final long function
public NativeMethod(RubyModule clazz, int arity, long function)
public final DynamicMethod dup()
DynamicMethod
dup
in class DynamicMethod
public final Arity getArity()
DynamicMethod
getArity
in class DynamicMethod
public final boolean isNative()
DynamicMethod
isNative
in class DynamicMethod
public IRubyObject call(ThreadContext context, IRubyObject recv, RubyModule clazz, String name, IRubyObject[] args)
DynamicMethod
call
in class DynamicMethod
context
- The thread context for the currently executing threadrecv
- The 'self' or 'receiver' object to use for this callname
- The incoming name used to invoke this methodpublic IRubyObject call(ThreadContext context, IRubyObject recv, RubyModule clazz, String name, IRubyObject[] args, Block block)
DynamicMethod
call
in class DynamicMethod
context
- The thread context for the currently executing threadrecv
- The 'self' or 'receiver' object to use for this callname
- The incoming name used to invoke this methodargs
- The argument list to this invocationblock
- The block passed to this invocationCopyright © 2001-2013 JRuby. All Rights Reserved.