[PPL-devel] [GIT] ppl/ppl(master): Avoid useless boxing of builtins when interfacing the wrap_assign().
Enea Zaffanella
zaffanella at cs.unipr.it
Mon Apr 5 16:33:52 CEST 2010
Module: ppl/ppl
Branch: master
Commit: a0e0437138194a515fcdc03024d34f9d08a290cc
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=a0e0437138194a515fcdc03024d34f9d08a290cc
Author: Enea Zaffanella <zaffanella at 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_ at 1CLASS@_ at 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_ at 1CLASS@_ at 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_ at CLASS@_wrap_assign_code',
`dnl
JNIEXPORT void JNICALL
Java_parma_1polyhedra_1library_ at 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_ at 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_ at 1CLASS@_approximate_1 at 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_ at CLASS@_wrap_assign_code',
___END_OF_FILE___
___BEGIN_OF_FILE___ @CLASS at .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_ at CLASS@_remove_higher_space_dimensions_code',
`dnl
___END_OF_FILE___
___BEGIN_OF_FILE___ @CLASS at .java << ___END_OF_FILE___
- public native void remove_higher_space_dimensions(long
- new_dimension);
+ public native void remove_higher_space_dimensions(long new_dimension);
')
More information about the PPL-devel
mailing list