[GIT] ppl/ppl(master): Avoid useless boxing of builtins when interfacing the wrap_assign().

Module: ppl/ppl Branch: master Commit: a0e0437138194a515fcdc03024d34f9d08a290cc URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=a0e0437138194...
Author: Enea Zaffanella zaffanella@cs.unipr.it Date: Mon Apr 5 16:28:14 2010 +0200
Avoid useless boxing of builtins when interfacing the wrap_assign(). Got rid of buggy j_boolean_to_bool() helper. Helper bool_to_j_boolean() renamed to bool_to_j_boolean_class() for clarity, as it builds a boxed Java Boolean value.
---
...ppl_interface_generator_java_classes_cc_code.m4 | 18 ++++++++---------- interfaces/Java/jni/ppl_java_common.cc | 10 +--------- interfaces/Java/jni/ppl_java_common.defs.hh | 6 +----- ...l_interface_generator_java_classes_java_code.m4 | 15 +++++++-------- 4 files changed, 17 insertions(+), 32 deletions(-)
diff --git a/interfaces/Java/jni/ppl_interface_generator_java_classes_cc_code.m4 b/interfaces/Java/jni/ppl_interface_generator_java_classes_cc_code.m4 index 256acec..36f8938 100644 --- a/interfaces/Java/jni/ppl_interface_generator_java_classes_cc_code.m4 +++ b/interfaces/Java/jni/ppl_interface_generator_java_classes_cc_code.m4 @@ -528,7 +528,7 @@ Java_parma_1polyhedra_1library_@1CLASS@_@1MAXMIN@__Lparma_1polyhedra_1library_Li if (this_ptr->@MAXMIN@(le, num, den, b_value)) { set_coefficient(env, j_num, build_java_coeff(env, num)); set_coefficient(env, j_den, build_java_coeff(env, den)); - jobject j_boolean = bool_to_j_boolean(env, b_value); + jobject j_boolean = bool_to_j_boolean_class(env, b_value); set_by_reference(env, j_ref_boolean, j_boolean); return true; } @@ -559,7 +559,7 @@ Java_parma_1polyhedra_1library_@1CLASS@_@1MAXMIN@__Lparma_1polyhedra_1library_Li if (this_ptr->@MAXMIN@(le, num, den, b_value, g)) { set_coefficient(env, j_num, build_java_coeff(env, num)); set_coefficient(env, j_den, build_java_coeff(env, den)); - jobject j_boolean = bool_to_j_boolean(env, b_value); + jobject j_boolean = bool_to_j_boolean_class(env, b_value); set_by_reference(env, j_ref_boolean, j_boolean); jobject j_g_result = build_java_generator(env, g); set_generator(env, j_g, j_g_result); @@ -882,9 +882,9 @@ m4_define(`ppl_@CLASS@_wrap_assign_code', `dnl JNIEXPORT void JNICALL Java_parma_1polyhedra_1library_@1CLASS@_wrap_1assign -(JNIEnv* env, jobject j_this, - jobject j_vars, jobject j_w, jobject j_r, jobject j_o, jobject j_cs, - jobject j_cx, jobject j_ind) try { +(JNIEnv* env, jobject j_this, jobject j_vars, + jobject j_w, jobject j_r, jobject j_o, jobject j_cs, + jlong j_cx, jboolean j_wrap_individually) try { @CPP_CLASS@* this_ptr = reinterpret_cast<@CPP_CLASS@*>(get_ptr(env, j_this)); Variables_Set vars = build_cxx_variables_set(env, j_vars); @@ -892,10 +892,8 @@ Java_parma_1polyhedra_1library_@1CLASS@_wrap_1assign Bounded_Integer_Type_Representation r = build_cxx_bounded_rep(env, j_r); Bounded_Integer_Type_Overflow o = build_cxx_bounded_overflow(env, j_o); Constraint_System cs = build_cxx_constraint_system(env, j_cs); - unsigned cx = jtype_to_unsigned<unsigned>(j_integer_to_j_int(env, j_cx)); - bool ind = (j_boolean_to_bool(env, j_ind)); - - this_ptr->wrap_assign(vars, w, r, o, &cs, cx, ind); + unsigned cx = jtype_to_unsigned<unsigned int>(j_cx); + this_ptr->wrap_assign(vars, w, r, o, &cs, cx, j_wrap_individually); } CATCH_ALL
@@ -1368,7 +1366,7 @@ Java_parma_1polyhedra_1library_@1CLASS@_approximate_1@PARTITION@ set_ptr(env, j_obj_r2, r2); set_pair_element(env, j_pair_obj, 0, j_obj_r1); set_pair_element(env, j_pair_obj, 1, j_obj_r2); - jobject j_finite_bool = bool_to_j_boolean(env, b_finite_val); + jobject j_finite_bool = bool_to_j_boolean_class(env, b_finite_val); set_by_reference(env, j_ref_finite_bool, j_finite_bool); return j_pair_obj; } diff --git a/interfaces/Java/jni/ppl_java_common.cc b/interfaces/Java/jni/ppl_java_common.cc index 0b61539..1829283 100644 --- a/interfaces/Java/jni/ppl_java_common.cc +++ b/interfaces/Java/jni/ppl_java_common.cc @@ -407,7 +407,7 @@ build_cxx_artificial_parameter(JNIEnv* env, jobject j_artificial_parameter) { }
jobject -bool_to_j_boolean(JNIEnv* env, const bool value) { +bool_to_j_boolean_class(JNIEnv* env, const bool value) { jobject ret = env->CallStaticObjectMethod(cached_classes.Boolean, cached_FMIDs.Boolean_valueOf_ID, value); @@ -415,14 +415,6 @@ bool_to_j_boolean(JNIEnv* env, const bool value) { return ret; }
-/* FIXME: Code is buggy - needs fixing. */ -bool -j_boolean_to_bool(JNIEnv* env, jobject j_boolean) { - bool b = env->CallIntMethod(j_boolean, cached_FMIDs.Boolean_boolValue_ID); - CHECK_EXCEPTION_ASSERT(env); - return b; -} - jobject j_long_to_j_long_class(JNIEnv* env, jlong jlong_value) { jobject ret = env->CallStaticObjectMethod(cached_classes.Long, diff --git a/interfaces/Java/jni/ppl_java_common.defs.hh b/interfaces/Java/jni/ppl_java_common.defs.hh index deda755..d064642 100644 --- a/interfaces/Java/jni/ppl_java_common.defs.hh +++ b/interfaces/Java/jni/ppl_java_common.defs.hh @@ -434,11 +434,7 @@ jtype_to_unsigned(const V& value);
//! Builds a Java Boolean from C++ bool \p value. jobject -bool_to_j_boolean(JNIEnv* env, const bool value); - -//! Returns the Java bool stored in Java Boolean \p j_boolean. -bool -j_boolean_to_bool(JNIEnv* env, jobject j_boolean); +bool_to_j_boolean_class(JNIEnv* env, const bool value);
//! Returns the Java int stored in Java Integer \p j_integer. jint diff --git a/interfaces/Java/parma_polyhedra_library/ppl_interface_generator_java_classes_java_code.m4 b/interfaces/Java/parma_polyhedra_library/ppl_interface_generator_java_classes_java_code.m4 index 9db9a17..e4c7f55 100644 --- a/interfaces/Java/parma_polyhedra_library/ppl_interface_generator_java_classes_java_code.m4 +++ b/interfaces/Java/parma_polyhedra_library/ppl_interface_generator_java_classes_java_code.m4 @@ -424,12 +424,12 @@ m4_define(`ppl_@CLASS@_wrap_assign_code', ___END_OF_FILE___ ___BEGIN_OF_FILE___ @CLASS@.java << ___END_OF_FILE___ public native void wrap_assign(Variables_Set vars, - Bounded_Integer_Type_Width w, - Bounded_Integer_Type_Representation r, - Bounded_Integer_Type_Overflow o, - Constraint_System cs, - Integer complexity_threshold, - Boolean wrap_individually); + Bounded_Integer_Type_Width w, + Bounded_Integer_Type_Representation r, + Bounded_Integer_Type_Overflow o, + Constraint_System cs, + long complexity_threshold, + boolean wrap_individually);
')
@@ -501,8 +501,7 @@ m4_define(`ppl_@CLASS@_remove_higher_space_dimensions_code', `dnl ___END_OF_FILE___ ___BEGIN_OF_FILE___ @CLASS@.java << ___END_OF_FILE___ - public native void remove_higher_space_dimensions(long - new_dimension); + public native void remove_higher_space_dimensions(long new_dimension);
')
participants (1)
-
Enea Zaffanella