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, setVisibilityprotected final Arity arity
protected final long function
public NativeMethod(RubyModule clazz, int arity, long function)
public final DynamicMethod dup()
DynamicMethoddup in class DynamicMethodpublic final Arity getArity()
DynamicMethodgetArity in class DynamicMethodpublic final boolean isNative()
DynamicMethodisNative in class DynamicMethodpublic IRubyObject call(ThreadContext context, IRubyObject recv, RubyModule clazz, String name, IRubyObject[] args)
DynamicMethodcall in class DynamicMethodcontext - 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)
DynamicMethodcall in class DynamicMethodcontext - 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.