private long invokeO1(Function function, byte[] paramBuffer, Object o1, int o1off, int o1len, ObjectParameterInfo o1flags) { return function.getReturnType().size() == 8 ? foreign.invokeArrayO1Int64(function.getContextAddress(), function.getFunctionAddress(), paramBuffer, o1, o1flags.asObjectInfo(), o1off, o1len) : foreign.invokeArrayO1Int32(function.getContextAddress(), function.getFunctionAddress(), paramBuffer, o1, o1flags.asObjectInfo(), o1off, o1len); }
private long invokeO1(Function function, byte[] paramBuffer, Object o1, int o1off, int o1len, ObjectParameterInfo o1flags) { return function.getReturnType().size() == 8 ? foreign.invokeArrayO1Int64(function.getContextAddress(), function.getFunctionAddress(), paramBuffer, o1, o1flags.asObjectInfo(), o1off, o1len) : foreign.invokeArrayO1Int32(function.getContextAddress(), function.getFunctionAddress(), paramBuffer, o1, o1flags.asObjectInfo(), o1off, o1len); }
private long invokeO1(Function function, byte[] paramBuffer, Object o1, int o1off, int o1len, ObjectParameterInfo o1flags) { return function.getReturnType().size() == 8 ? foreign.invokeArrayO1Int64(function.getContextAddress(), function.getFunctionAddress(), paramBuffer, o1, o1flags.asObjectInfo(), o1off, o1len) : foreign.invokeArrayO1Int32(function.getContextAddress(), function.getFunctionAddress(), paramBuffer, o1, o1flags.asObjectInfo(), o1off, o1len); }
/** * Convenience method to pass the objects and object descriptor array down as * normal arguments, so hotspot can optimize it. This is faster than the native * code pulling the objects and descriptors out of arrays. * * @param function The native function to invoke. * @param buffer A buffer containing the arguments to the function. * @param objectBuffer A buffer containing objects to be passed to the native function. * @return A 32 bit integer value. */ private int invokeArrayWithObjectsInt32(long ctx, long function, HeapInvocationBuffer buffer, ObjectBuffer objectBuffer) { Object[] objects = objectBuffer.objects(); int[] info = objectBuffer.info(); int objectCount = objectBuffer.objectCount(); switch (objectCount) { case 1: return Foreign.invokeArrayO1Int32(ctx, function, buffer.array(), objects[0], info[0], info[1], info[2]); case 2: return Foreign.invokeArrayO2Int32(ctx, function, buffer.array(), objects[0], info[0], info[1], info[2], objects[1], info[3], info[4], info[5]); } return Foreign.invokeArrayWithObjectsInt32(ctx, function, buffer.array(), objectCount, info, objects); }
/** * Convenience method to pass the objects and object descriptor array down as * normal arguments, so hotspot can optimize it. This is faster than the native * code pulling the objects and descriptors out of arrays. * * @param function The native function to invoke. * @param buffer A buffer containing the arguments to the function. * @param objectBuffer A buffer containing objects to be passed to the native function. * @return A 32 bit integer value. */ private int invokeArrayWithObjectsInt32(long ctx, long function, HeapInvocationBuffer buffer, ObjectBuffer objectBuffer) { Object[] objects = objectBuffer.objects(); int[] info = objectBuffer.info(); int objectCount = objectBuffer.objectCount(); switch (objectCount) { case 1: return Foreign.invokeArrayO1Int32(ctx, function, buffer.array(), objects[0], info[0], info[1], info[2]); case 2: return Foreign.invokeArrayO2Int32(ctx, function, buffer.array(), objects[0], info[0], info[1], info[2], objects[1], info[3], info[4], info[5]); } return Foreign.invokeArrayWithObjectsInt32(ctx, function, buffer.array(), objectCount, info, objects); }
/** * Convenience method to pass the objects and object descriptor array down as * normal arguments, so hotspot can optimize it. This is faster than the native * code pulling the objects and descriptors out of arrays. * * @param function The native function to invoke. * @param buffer A buffer containing the arguments to the function. * @param objectBuffer A buffer containing objects to be passed to the native function. * @return A 32 bit integer value. */ private int invokeArrayWithObjectsInt32(long ctx, long function, HeapInvocationBuffer buffer, ObjectBuffer objectBuffer) { Object[] objects = objectBuffer.objects(); int[] info = objectBuffer.info(); int objectCount = objectBuffer.objectCount(); switch (objectCount) { case 1: return Foreign.invokeArrayO1Int32(ctx, function, buffer.array(), objects[0], info[0], info[1], info[2]); case 2: return Foreign.invokeArrayO2Int32(ctx, function, buffer.array(), objects[0], info[0], info[1], info[2], objects[1], info[3], info[4], info[5]); } return Foreign.invokeArrayWithObjectsInt32(ctx, function, buffer.array(), objectCount, info, objects); }