]> rtime.felk.cvut.cz Git - orte.git/commitdiff
JORTE: make helper buffer static
authorMartin Vajnar <martin.vajnar@gmail.com>
Sat, 2 May 2015 12:22:21 +0000 (14:22 +0200)
committerMartin Vajnar <martin.vajnar@gmail.com>
Fri, 22 May 2015 11:33:21 +0000 (13:33 +0200)
helper_buffer carries always the same information on a given platform, so
it can be moved to static constructor, where it is initialized only once
during class loading.

orte/include/jorte/org_ocera_orte_types_RecvInfo.h
orte/java/src/org/ocera/orte/types/RecvInfo.java
orte/libjorte/JORTERecvInfoHelpers.c

index cd7e20a5114c87e9c12f42f4010edd0b1533bd4e..971bddd8c683ccb8ef9f536679943ac27e5118a0 100644 (file)
@@ -13,7 +13,7 @@ extern "C" {
  * Signature: (J)Ljava/lang/String;
  */
 JNIEXPORT jstring JNICALL Java_org_ocera_orte_types_RecvInfo_get_1string
-  (JNIEnv *, jobject, jlong);
+  (JNIEnv *, jclass, jlong);
 
 /*
  * Class:     org_ocera_orte_types_RecvInfo
@@ -21,7 +21,7 @@ JNIEXPORT jstring JNICALL Java_org_ocera_orte_types_RecvInfo_get_1string
  * Signature: (Ljava/nio/ByteBuffer;)V
  */
 JNIEXPORT void JNICALL Java_org_ocera_orte_types_RecvInfo_c_1helper
-  (JNIEnv *, jobject, jobject);
+  (JNIEnv *, jclass, jobject);
 
 #ifdef __cplusplus
 }
index 2baddba6d64ccc23b88dde5d6c96f1bedece8fe0..0829b8be30fa7d7e4d35a259396bee94f320f7a1 100644 (file)
@@ -50,15 +50,17 @@ public class RecvInfo
    *     [15]  offsetof(SequenceNumber,high),
    *     [16]  offsetof(SequenceNumber,low)
    */
-  private ByteBuffer      helper_buffer;
+  static ByteBuffer      helper_buffer;
+
+  static {
+    helper_buffer = ByteBuffer.allocateDirect(17*Integer.SIZE/8);
+    helper_buffer.order(ByteOrder.nativeOrder());
+    c_helper(helper_buffer);
+  }
 
   public RecvInfo()
   {
        //System.out.println(":j: instance of RecvInfo created..");
-    this.helper_buffer = ByteBuffer.allocateDirect(17*Integer.SIZE/8);
-    this.helper_buffer.order(ByteOrder.nativeOrder());
-    this.c_helper(helper_buffer);
-
     this.info_buffer = ByteBuffer.allocateDirect(helper_buffer.getInt(0));
     this.info_buffer.order(ByteOrder.nativeOrder());
   }
@@ -191,7 +193,7 @@ public class RecvInfo
   
   /* NATIVE FUNCTIONS */
   
-  private native String get_string(long string_pointer);
-  private native void c_helper(ByteBuffer buffer);
+  static native String get_string(long string_pointer);
+  static native void c_helper(ByteBuffer buffer);
   
 }
index 32740b13f88febb4c845f8aa039f968f4f4e2093..da68b48ddf67cc975c155a89aa5cda0defa61a32 100644 (file)
@@ -19,7 +19,7 @@
  * Signature: (Ljava/nio/ByteBuffer;)V
  */
 JNIEXPORT void JNICALL Java_org_ocera_orte_types_RecvInfo_c_1helper
-  (JNIEnv *env, jobject obj, jobject b_buffer) {
+  (JNIEnv *env, jclass cls, jobject b_buffer) {
 
     int32_t* buffer = (*env)->GetDirectBufferAddress(env, b_buffer);
     
@@ -48,6 +48,6 @@ JNIEXPORT void JNICALL Java_org_ocera_orte_types_RecvInfo_c_1helper
  * Signature: (J)Ljava/lang/String;
  */
 JNIEXPORT jstring JNICALL Java_org_ocera_orte_types_RecvInfo_get_1string
-  (JNIEnv *env, jobject obj, jlong string_ptr) {
+  (JNIEnv *env, jclass cls, jlong string_ptr) {
     return (*env)->NewStringUTF(env, (char*) string_ptr);
   }