本文整理了Java中org.jruby.RubyClass.getFFIHandleAccessorField
方法的一些代码示例,展示了RubyClass.getFFIHandleAccessorField
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。RubyClass.getFFIHandleAccessorField
方法的具体详情如下:
包路径:org.jruby.RubyClass
类名称:RubyClass
方法名:getFFIHandleAccessorField
暂无
代码示例来源:origin: org.kill-bill.billing/killbill-osgi-bundles-jruby
public final Pointer getCallback(IRubyObject callable, CachingCallSite callSite) {
if (callable instanceof Pointer) {
return (Pointer) callable;
}
Object ffiHandle = callable.getMetaClass().getRealClass().getFFIHandleAccessorField().getVariableAccessorForRead().get(callable);
NativeCallbackPointer cbptr;
if (ffiHandle instanceof NativeCallbackPointer && ((cbptr = (NativeCallbackPointer) ffiHandle).cbInfo == callbackInfo)) {
return cbptr;
}
return getCallbackPointer(callable, callSite);
}
代码示例来源:origin: org.jruby/jruby-complete
public final Pointer getCallback(IRubyObject callable, CachingCallSite callSite) {
if (callable instanceof Pointer) {
return (Pointer) callable;
}
Object ffiHandle = callable.getMetaClass().getRealClass().getFFIHandleAccessorField().getVariableAccessorForRead().get(callable);
NativeCallbackPointer cbptr;
if (ffiHandle instanceof NativeCallbackPointer && ((cbptr = (NativeCallbackPointer) ffiHandle).cbInfo == callbackInfo)) {
return cbptr;
}
return getCallbackPointer(callable, callSite);
}
代码示例来源:origin: org.jruby/jruby-core
public final Pointer getCallback(IRubyObject callable, CachingCallSite callSite) {
if (callable instanceof Pointer) {
return (Pointer) callable;
}
Object ffiHandle = callable.getMetaClass().getRealClass().getFFIHandleAccessorField().getVariableAccessorForRead().get(callable);
NativeCallbackPointer cbptr;
if (ffiHandle instanceof NativeCallbackPointer && ((cbptr = (NativeCallbackPointer) ffiHandle).cbInfo == callbackInfo)) {
return cbptr;
}
return getCallbackPointer(callable, callSite);
}
代码示例来源:origin: com.ning.billing/killbill-osgi-bundles-jruby
public final Pointer getCallback(IRubyObject callable, CachingCallSite callSite) {
if (callable instanceof Pointer) {
return (Pointer) callable;
}
Object ffiHandle = callable.getMetaClass().getRealClass().getFFIHandleAccessorField().getVariableAccessorForRead().get(callable);
NativeCallbackPointer cbptr;
if (ffiHandle instanceof NativeCallbackPointer && ((cbptr = (NativeCallbackPointer) ffiHandle).cbInfo == callbackInfo)) {
return cbptr;
}
return getCallbackPointer(callable, callSite);
}
代码示例来源:origin: org.kill-bill.billing/killbill-osgi-bundles-jruby
@Override
@JRubyMethod(name = "initialize", visibility = PRIVATE)
public final IRubyObject initialize(ThreadContext context, IRubyObject pointerArg, IRubyObject releaser) {
checkPointer(context.runtime, pointerArg);
setMemoryIO(((Pointer) pointerArg).getMemoryIO());
this.pointer = (Pointer) pointerArg;
this.size = pointer.size;
this.typeSize = pointer.typeSize;
Object ffiHandle = releaser.getMetaClass().getFFIHandleAccessorField().getVariableAccessorForRead().get(releaser);
if (!(ffiHandle instanceof ReleaserData)) {
getMetaClass().setFFIHandle(ffiHandle = new ReleaserData());
}
ReleaserData releaserData = (ReleaserData) ffiHandle;
DynamicMethod releaseMethod = releaserData.releaseCallSite.retrieveCache(releaser.getMetaClass(), releaserData.releaseCallSite.getMethodName()).method;
// If no release method is defined, then memory leaks will result.
if (releaseMethod.isUndefined()) {
throw context.runtime.newRuntimeError("call method undefined");
} else if ((releaseMethod.getArity().isFixed() && releaseMethod.getArity().required() != 1) || releaseMethod.getArity().required() > 1) {
throw context.runtime.newRuntimeError("wrong number of arguments to call method ("
+ 1 + " for " + releaseMethod.getArity().required() + ")");
}
setReaper(new Reaper(pointer, releaser, releaserData.releaseCallSite));
return this;
}
代码示例来源:origin: org.jruby/jruby-complete
@Override
@JRubyMethod(name = "initialize", visibility = PRIVATE)
public final IRubyObject initialize(ThreadContext context, IRubyObject pointerArg, IRubyObject releaser) {
checkPointer(context.runtime, pointerArg);
setMemoryIO(((Pointer) pointerArg).getMemoryIO());
this.pointer = (Pointer) pointerArg;
this.size = pointer.size;
this.typeSize = pointer.typeSize;
Object ffiHandle = releaser.getMetaClass().getFFIHandleAccessorField().getVariableAccessorForRead().get(releaser);
if (!(ffiHandle instanceof ReleaserData)) {
getMetaClass().setFFIHandle(ffiHandle = new ReleaserData());
}
ReleaserData releaserData = (ReleaserData) ffiHandle;
DynamicMethod releaseMethod = releaserData.releaseCallSite.retrieveCache(releaser.getMetaClass(), releaserData.releaseCallSite.getMethodName()).method;
// If no release method is defined, then memory leaks will result.
if (releaseMethod.isUndefined()) {
throw context.runtime.newRuntimeError("call method undefined");
} else if ((releaseMethod.getArity().isFixed() && releaseMethod.getArity().required() != 1) || releaseMethod.getArity().required() > 1) {
throw context.runtime.newRuntimeError("wrong number of arguments to call method ("
+ 1 + " for " + releaseMethod.getArity().required() + ")");
}
setReaper(new Reaper(pointer, releaser, releaserData.releaseCallSite));
return this;
}
代码示例来源:origin: org.jruby/jruby-core
@Override
@JRubyMethod(name = "initialize", visibility = PRIVATE)
public final IRubyObject initialize(ThreadContext context, IRubyObject pointerArg, IRubyObject releaser) {
checkPointer(context.runtime, pointerArg);
setMemoryIO(((Pointer) pointerArg).getMemoryIO());
this.pointer = (Pointer) pointerArg;
this.size = pointer.size;
this.typeSize = pointer.typeSize;
Object ffiHandle = releaser.getMetaClass().getFFIHandleAccessorField().getVariableAccessorForRead().get(releaser);
if (!(ffiHandle instanceof ReleaserData)) {
getMetaClass().setFFIHandle(ffiHandle = new ReleaserData());
}
ReleaserData releaserData = (ReleaserData) ffiHandle;
DynamicMethod releaseMethod = releaserData.releaseCallSite.retrieveCache(releaser.getMetaClass(), releaserData.releaseCallSite.getMethodName()).method;
// If no release method is defined, then memory leaks will result.
if (releaseMethod.isUndefined()) {
throw context.runtime.newRuntimeError("call method undefined");
} else if ((releaseMethod.getArity().isFixed() && releaseMethod.getArity().required() != 1) || releaseMethod.getArity().required() > 1) {
throw context.runtime.newRuntimeError("wrong number of arguments to call method ("
+ 1 + " for " + releaseMethod.getArity().required() + ")");
}
setReaper(new Reaper(pointer, releaser, releaserData.releaseCallSite));
return this;
}
代码示例来源:origin: com.ning.billing/killbill-osgi-bundles-jruby
@Override
@JRubyMethod(name = "initialize", visibility = PRIVATE)
public final IRubyObject initialize(ThreadContext context, IRubyObject pointerArg, IRubyObject releaser) {
checkPointer(context.runtime, pointerArg);
setMemoryIO(((Pointer) pointerArg).getMemoryIO());
this.pointer = (Pointer) pointerArg;
this.size = pointer.size;
this.typeSize = pointer.typeSize;
Object ffiHandle = releaser.getMetaClass().getFFIHandleAccessorField().getVariableAccessorForRead().get(releaser);
if (!(ffiHandle instanceof ReleaserData)) {
getMetaClass().setFFIHandle(ffiHandle = new ReleaserData());
}
ReleaserData releaserData = (ReleaserData) ffiHandle;
DynamicMethod releaseMethod = releaserData.releaseCallSite.retrieveCache(releaser.getMetaClass(), releaserData.releaseCallSite.getMethodName()).method;
// If no release method is defined, then memory leaks will result.
if (releaseMethod.isUndefined()) {
throw context.runtime.newRuntimeError("call method undefined");
} else if ((releaseMethod.getArity().isFixed() && releaseMethod.getArity().required() != 1) || releaseMethod.getArity().required() > 1) {
throw context.runtime.newRuntimeError("wrong number of arguments to call method ("
+ 1 + " for " + releaseMethod.getArity().required() + ")");
}
setReaper(new Reaper(pointer, releaser, releaserData.releaseCallSite));
return this;
}
内容来源于网络,如有侵权,请联系作者删除!