changeset 8178:5173c028f74c

8169576: aarch32: JDI works incorrectly when handling MethodExitEvent Reviewed-by: enevill
author snazarki
date Mon, 14 Nov 2016 12:46:43 +0300
parents a9b89cd22711
children ad0ce4e6fc1b
files src/cpu/aarch32/vm/frame_aarch32.cpp
diffstat 1 files changed, 3 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/cpu/aarch32/vm/frame_aarch32.cpp	Wed Nov 09 12:38:46 2016 +0300
+++ b/src/cpu/aarch32/vm/frame_aarch32.cpp	Mon Nov 14 12:46:43 2016 +0300
@@ -653,15 +653,13 @@
 
   intptr_t* tos_addr;
   if (method->is_native()) {
-    // TODO : ensure AARCH64 does the same as Intel here i.e. push d0 then r0
-    // Prior to calling into the runtime to report the method_exit the possible
-    // return value is pushed to the native stack. If the result is a jfloat/jdouble
-    // then ST0 is saved before EAX/EDX. See the note in generate_native_result
     tos_addr = (intptr_t*)sp();
     if (type == T_FLOAT || type == T_DOUBLE) {
-      // This is times two because we do a push(ltos) after pushing XMM0
+      // This is times two because we do a push(ltos) after pushing D0
       // and that takes two interpreter stack slots.
+#ifdef HARD_FLOAT_CC
       tos_addr += 2 * Interpreter::stackElementWords;
+#endif
     }
   } else {
     tos_addr = (intptr_t*)interpreter_frame_tos_address();