288 |
288 |
289 #define CC (char*) /*cast a literal from (const char*)*/ |
289 #define CC (char*) /*cast a literal from (const char*)*/ |
290 #define FN_PTR(f) CAST_FROM_FN_PTR(void*, &f) |
290 #define FN_PTR(f) CAST_FROM_FN_PTR(void*, &f) |
291 #define BB "Ljava/nio/ByteBuffer;" |
291 #define BB "Ljava/nio/ByteBuffer;" |
292 #define JLS "Ljava/lang/String;" |
292 #define JLS "Ljava/lang/String;" |
293 #define CL_ARGS CC"("JLS"IIJ)"BB |
293 #define CL_ARGS CC "(" JLS "IIJ)" BB |
294 #define CBA_ARGS CC"("JLS"II[BI)"BB |
294 #define CBA_ARGS CC "(" JLS "II[BI)" BB |
295 |
295 |
296 static JNINativeMethod perfmethods[] = { |
296 static JNINativeMethod perfmethods[] = { |
297 |
297 |
298 {CC"attach", CC"("JLS"II)"BB, FN_PTR(Perf_Attach)}, |
298 {CC "attach", CC "(" JLS "II)" BB, FN_PTR(Perf_Attach)}, |
299 {CC"detach", CC"("BB")V", FN_PTR(Perf_Detach)}, |
299 {CC "detach", CC "(" BB ")V", FN_PTR(Perf_Detach)}, |
300 {CC"createLong", CL_ARGS, FN_PTR(Perf_CreateLong)}, |
300 {CC "createLong", CL_ARGS, FN_PTR(Perf_CreateLong)}, |
301 {CC"createByteArray", CBA_ARGS, FN_PTR(Perf_CreateByteArray)}, |
301 {CC "createByteArray", CBA_ARGS, FN_PTR(Perf_CreateByteArray)}, |
302 {CC"highResCounter", CC"()J", FN_PTR(Perf_HighResCounter)}, |
302 {CC "highResCounter", CC "()J", FN_PTR(Perf_HighResCounter)}, |
303 {CC"highResFrequency", CC"()J", FN_PTR(Perf_HighResFrequency)} |
303 {CC "highResFrequency", CC "()J", FN_PTR(Perf_HighResFrequency)} |
304 }; |
304 }; |
305 |
305 |
306 #undef CBA_ARGS |
306 #undef CBA_ARGS |
307 #undef CL_ARGS |
307 #undef CL_ARGS |
308 #undef JLS |
308 #undef JLS |