private static ObjectParameterInfo getCachedInfo(int objectInfo) { ObjectParameterInfo info = CACHE.get(objectInfo); if (info != null) { return info; } ObjectParameterInfo cachedInfo = CACHE.putIfAbsent(objectInfo, info = new ObjectParameterInfo(objectInfo)); return cachedInfo != null ? cachedInfo : info; }
final int objectInfo(ObjectParameterInfo info) { int objectInfo = info.asObjectInfo(); // Over-ride the type info contained in the parameter info if (typeInfo != 0) { return (objectInfo & ~ObjectBuffer.TYPE_MASK) | typeInfo; } else { return objectInfo; } }
public static ObjectParameterInfo create(int parameterIndex, ObjectType objectType, ComponentType componentType, int ioflags) { return getCachedInfo(ObjectBuffer.makeObjectFlags(ioflags, objectType.value | componentType.value, parameterIndex)); }
private static ObjectParameterInfo getParameterInfo(Signature signature, int i) { if (signature.getParameterCount() <= i) { return null; } Type type = signature.getParameterType(i); int flags = 0; NativeType nativeType = type instanceof MappedType ? ((MappedType) type).getRealType().getNativeType() : type.getNativeType(); switch (nativeType) { case BUFFER_IN: case STRING: case TRANSIENT_STRING: flags |= ObjectParameterInfo.IN | ObjectParameterInfo.NULTERMINATE; break; case BUFFER_OUT: flags |= ObjectParameterInfo.OUT | ObjectParameterInfo.CLEAR; break; case POINTER: case BUFFER_INOUT: flags |= ObjectParameterInfo.IN | ObjectParameterInfo.OUT | ObjectParameterInfo.CLEAR | ObjectParameterInfo.NULTERMINATE; break; default: return null; } return ObjectParameterInfo.create(i, ObjectParameterInfo.ARRAY, ObjectParameterInfo.BYTE, flags); } private static CachingCallSite getParameterCallSite(Signature signature, int parameterIndex) {
public final void putObject(Object o, ObjectParameterStrategy strategy, ObjectParameterInfo info) { if (strategy.isDirect()) { paramOffset = Encoder.getInstance().putAddress(buffer, paramOffset, strategy.address(o)); } else { paramOffset = Encoder.getInstance().skipAddress(paramOffset); getObjectBuffer().putObject(strategy.object(o), strategy.offset(o), strategy.length(o), ObjectBuffer.makeObjectFlags(info.ioflags(), strategy.typeInfo, paramIndex)); } ++paramIndex; }
private static ObjectParameterInfo getParameterInfo(Signature signature, int i) { if (signature.getParameterCount() <= i) { return null; } Type type = signature.getParameterType(i); int flags = 0; NativeType nativeType = type instanceof MappedType ? ((MappedType) type).getRealType().getNativeType() : type.getNativeType(); switch (nativeType) { case BUFFER_IN: case STRING: case TRANSIENT_STRING: flags |= ObjectParameterInfo.IN | ObjectParameterInfo.NULTERMINATE; break; case BUFFER_OUT: flags |= ObjectParameterInfo.OUT | ObjectParameterInfo.CLEAR; break; case POINTER: case BUFFER_INOUT: flags |= ObjectParameterInfo.IN | ObjectParameterInfo.OUT | ObjectParameterInfo.CLEAR | ObjectParameterInfo.NULTERMINATE; break; default: return null; } return ObjectParameterInfo.create(i, ObjectParameterInfo.ARRAY, ObjectParameterInfo.BYTE, flags); } private static CachingCallSite getParameterCallSite(Signature signature, int parameterIndex) {
public final void putObject(Object o, ObjectParameterStrategy strategy, ObjectParameterInfo info) { if (strategy.isDirect()) { paramOffset = Encoder.getInstance().putAddress(buffer, paramOffset, strategy.address(o)); } else { paramOffset = Encoder.getInstance().skipAddress(paramOffset); getObjectBuffer().putObject(strategy.object(o), strategy.offset(o), strategy.length(o), ObjectBuffer.makeObjectFlags(info.ioflags(), strategy.typeInfo, paramIndex)); } ++paramIndex; }
final int objectInfo(ObjectParameterInfo info) { int objectInfo = info.asObjectInfo(); // Over-ride the type info contained in the parameter info if (typeInfo != 0) { return (objectInfo & ~ObjectBuffer.TYPE_MASK) | typeInfo; } else { return objectInfo; } }
private static ObjectParameterInfo getParameterInfo(Signature signature, int i) { if (signature.getParameterCount() <= i) { return null; } Type type = signature.getParameterType(i); int flags = 0; NativeType nativeType = type instanceof MappedType ? ((MappedType) type).getRealType().getNativeType() : type.getNativeType(); switch (nativeType) { case BUFFER_IN: case STRING: case TRANSIENT_STRING: flags |= ObjectParameterInfo.IN | ObjectParameterInfo.NULTERMINATE; break; case BUFFER_OUT: flags |= ObjectParameterInfo.OUT | ObjectParameterInfo.CLEAR; break; case POINTER: case BUFFER_INOUT: flags |= ObjectParameterInfo.IN | ObjectParameterInfo.OUT | ObjectParameterInfo.CLEAR | ObjectParameterInfo.NULTERMINATE; break; default: return null; } return ObjectParameterInfo.create(i, ObjectParameterInfo.ARRAY, ObjectParameterInfo.BYTE, flags); } private static CachingCallSite getParameterCallSite(Signature signature, int parameterIndex) {
public static ObjectParameterInfo create(int parameterIndex, ObjectType objectType, ComponentType componentType, int ioflags) { return getCachedInfo(ObjectBuffer.makeObjectFlags(ioflags, objectType.value | componentType.value, parameterIndex)); }
public final void putObject(Object o, ObjectParameterStrategy strategy, ObjectParameterInfo info) { if (strategy.isDirect()) { paramOffset = Encoder.getInstance().putAddress(buffer, paramOffset, strategy.address(o)); } else { paramOffset = Encoder.getInstance().skipAddress(paramOffset); getObjectBuffer().putObject(strategy.object(o), strategy.offset(o), strategy.length(o), ObjectBuffer.makeObjectFlags(info.ioflags(), strategy.typeInfo, paramIndex)); } ++paramIndex; }
private static ObjectParameterInfo getCachedInfo(int objectInfo) { ObjectParameterInfo info = CACHE.get(objectInfo); if (info != null) { return info; } ObjectParameterInfo cachedInfo = CACHE.putIfAbsent(objectInfo, info = new ObjectParameterInfo(objectInfo)); return cachedInfo != null ? cachedInfo : info; }
final int objectInfo(ObjectParameterInfo info) { int objectInfo = info.asObjectInfo(); // Over-ride the type info contained in the parameter info if (typeInfo != 0) { return (objectInfo & ~ObjectBuffer.TYPE_MASK) | typeInfo; } else { return objectInfo; } }
private static ObjectParameterInfo getParameterInfo(Signature signature, int i) { if (signature.getParameterCount() <= i) { return null; } Type type = signature.getParameterType(i); int flags = 0; NativeType nativeType = type instanceof MappedType ? ((MappedType) type).getRealType().getNativeType() : type.getNativeType(); switch (nativeType) { case BUFFER_IN: case STRING: case TRANSIENT_STRING: flags |= ObjectParameterInfo.IN | ObjectParameterInfo.NULTERMINATE; break; case BUFFER_OUT: flags |= ObjectParameterInfo.OUT | ObjectParameterInfo.CLEAR; break; case POINTER: case BUFFER_INOUT: flags |= ObjectParameterInfo.IN | ObjectParameterInfo.OUT | ObjectParameterInfo.CLEAR | ObjectParameterInfo.NULTERMINATE; break; default: return null; } return ObjectParameterInfo.create(i, ObjectParameterInfo.ARRAY, ObjectParameterInfo.BYTE, flags); } private static CachingCallSite getParameterCallSite(Signature signature, int parameterIndex) {
public static ObjectParameterInfo create(int parameterIndex, ObjectType objectType, ComponentType componentType, int ioflags) { return getCachedInfo(ObjectBuffer.makeObjectFlags(ioflags, objectType.value | componentType.value, parameterIndex)); }
private static ObjectParameterInfo getCachedInfo(int objectInfo) { ObjectParameterInfo info = CACHE.get(objectInfo); if (info != null) { return info; } ObjectParameterInfo cachedInfo = CACHE.putIfAbsent(objectInfo, info = new ObjectParameterInfo(objectInfo)); return cachedInfo != null ? cachedInfo : info; }
/** * Invokes a function with two numeric arguments, and returns a numeric value. * * @param function The <tt>Function</tt> to invoke. */ @Deprecated public final long invokeNNNO2rN(Function function, long n1, long n2, long n3, Object o1, int o1off, int o1len, ObjectParameterInfo o1flags, Object o2, int o2off, int o2len, ObjectParameterInfo o2flags) { return Foreign.invokeN3O2(function.contextAddress, function.functionAddress, n1, n2, n3, o1, o1flags.asObjectInfo(), o1off, o1len, o2, o2flags.asObjectInfo(), o2off, o2len); }
mv.aload(0); ObjectParameterInfo info = ObjectParameterInfo.create(i, AsmUtil.getNativeArrayFlags(parameterTypes[i].annotations()));
public static ObjectParameterInfo create(int parameterIndex, int ioflags) { return getCachedInfo(ObjectBuffer.makeObjectFlags(ioflags, 0, parameterIndex)); }
/** * Invokes a function with two numeric arguments, and returns a numeric value. * * @param function The <tt>Function</tt> to invoke. */ @Deprecated public final long invokeNNNO2rN(Function function, long n1, long n2, long n3, Object o1, int o1off, int o1len, ObjectParameterInfo o1flags, Object o2, int o2off, int o2len, ObjectParameterInfo o2flags) { return Foreign.invokeN3O2(function.contextAddress, function.functionAddress, n1, n2, n3, o1, o1flags.asObjectInfo(), o1off, o1len, o2, o2flags.asObjectInfo(), o2off, o2len); }