Improve jvppgen object array member instantiation 81/6881/3
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 25 May 2017 17:03:18 +0000 (19:03 +0200)
committerDamjan Marion <dmarion.lists@gmail.com>
Fri, 26 May 2017 18:14:20 +0000 (18:14 +0000)
Since all objects of the array have the same type, the object
constructor is a loop invariant. Move the lookup out of the loop,
making things faster.

Change-Id: I631c72b59c6c63eccd49ede41c6dc0541c325db9
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Signed-off-by: Robert Varga <nite@hq.sk>
src/vpp-api/java/jvpp/gen/jvppgen/types_gen.py

index 22018e6..858ea8b 100644 (file)
@@ -91,9 +91,9 @@ object_array_dto_field_setter_template = Template("""
     {
         jclass ${field_reference_name}Class = (*env)->FindClass(env, "${class_FQN}");
         jobjectArray ${field_reference_name} = (*env)->NewObjectArray(env, ${field_length}, ${field_reference_name}Class, 0);
+        jmethodID ${field_reference_name}Constructor = (*env)->GetMethodID(env, ${field_reference_name}Class, "<init>", "()V");
         unsigned int _i;
         for (_i = 0; _i < ${field_length}; _i++) {
-            jmethodID ${field_reference_name}Constructor = (*env)->GetMethodID(env, ${field_reference_name}Class, "<init>", "()V");
             jobject ${field_reference_name}ArrayElement = (*env)->NewObject(env, ${field_reference_name}Class,  ${field_reference_name}Constructor);
             ${type_initialization}
             (*env)->SetObjectArrayElement(env, ${field_reference_name}, _i, ${field_reference_name}ArrayElement);