src/hotspot/cpu/arm/interpreterRT_arm.cpp
changeset 52676 2d795829f39f
parent 52351 0ecb4e520110
child 54523 5df03f58d25b
--- a/src/hotspot/cpu/arm/interpreterRT_arm.cpp	Thu Nov 22 17:25:47 2018 +0100
+++ b/src/hotspot/cpu/arm/interpreterRT_arm.cpp	Fri Nov 23 19:45:38 2018 +0300
@@ -82,11 +82,12 @@
   // For ARM, the fast signature handler only needs to know whether
   // the return value must be unboxed. T_OBJECT and T_ARRAY need not
   // be distinguished from each other and all other return values
-  // behave like integers with respect to the handler.
+  // behave like integers with respect to the handler except T_BOOLEAN
+  // which must be mapped to the range 0..1.
   bool unbox = (ret_type == T_OBJECT) || (ret_type == T_ARRAY);
   if (unbox) {
     ret_type = T_OBJECT;
-  } else {
+  } else if (ret_type != T_BOOLEAN) {
     ret_type = T_INT;
   }
   result |= ((uint64_t) ret_type) << shift;
@@ -226,9 +227,6 @@
 
   address result_handler = Interpreter::result_handler(result_type);
 
-  // Check that result handlers are not real handler on ARM (0 or -1).
-  // This ensures the signature handlers do not need symbolic information.
-  assert((result_handler == NULL)||(result_handler==(address)0xffffffff),"");
   __ mov_slow(R0, (intptr_t)result_handler);
 
   __ ret();