Thu, 30 Dec 2010 23:44:45 -0800
7009849: C1: Incorrect frame size computation
Summary: Fix frame size computation
Reviewed-by: phh, kvn
src/share/vm/c1/c1_FrameMap.cpp | file | annotate | diff | comparison | revisions |
1.1 --- a/src/share/vm/c1/c1_FrameMap.cpp Thu Dec 30 09:36:03 2010 -0800 1.2 +++ b/src/share/vm/c1/c1_FrameMap.cpp Thu Dec 30 23:44:45 2010 -0800 1.3 @@ -92,7 +92,7 @@ 1.4 if (opr->is_address()) { 1.5 LIR_Address* addr = opr->as_address_ptr(); 1.6 assert(addr->disp() == (int)addr->disp(), "out of range value"); 1.7 - out_preserve = MAX2(out_preserve, (intptr_t)addr->disp() / 4); 1.8 + out_preserve = MAX2(out_preserve, (intptr_t)(addr->disp() - STACK_BIAS) / 4); 1.9 } 1.10 i += type2size[t]; 1.11 } 1.12 @@ -143,7 +143,7 @@ 1.13 args->append(opr); 1.14 if (opr->is_address()) { 1.15 LIR_Address* addr = opr->as_address_ptr(); 1.16 - out_preserve = MAX2(out_preserve, (intptr_t)addr->disp() / 4); 1.17 + out_preserve = MAX2(out_preserve, (intptr_t)(addr->disp() - STACK_BIAS) / 4); 1.18 } 1.19 i += type2size[t]; 1.20 }