changeset 1977:7514897db238

7009849: C1: Incorrect frame size computation Summary: Fix frame size computation Reviewed-by: phh, kvn
author iveresov
date Thu, 30 Dec 2010 23:44:45 -0800
parents 68c5a4e8881d
children 5a1e52a439fa 55f868e91c3b
files src/share/vm/c1/c1_FrameMap.cpp
diffstat 1 files changed, 2 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/c1/c1_FrameMap.cpp	Thu Dec 30 09:36:03 2010 -0800
+++ b/src/share/vm/c1/c1_FrameMap.cpp	Thu Dec 30 23:44:45 2010 -0800
@@ -92,7 +92,7 @@
     if (opr->is_address()) {
       LIR_Address* addr = opr->as_address_ptr();
       assert(addr->disp() == (int)addr->disp(), "out of range value");
-      out_preserve = MAX2(out_preserve, (intptr_t)addr->disp() / 4);
+      out_preserve = MAX2(out_preserve, (intptr_t)(addr->disp() - STACK_BIAS) / 4);
     }
     i += type2size[t];
   }
@@ -143,7 +143,7 @@
     args->append(opr);
     if (opr->is_address()) {
       LIR_Address* addr = opr->as_address_ptr();
-      out_preserve = MAX2(out_preserve, (intptr_t)addr->disp() / 4);
+      out_preserve = MAX2(out_preserve, (intptr_t)(addr->disp() - STACK_BIAS) / 4);
     }
     i += type2size[t];
   }