7009849: C1: Incorrect frame size computation

Thu, 30 Dec 2010 23:44:45 -0800

author
iveresov
date
Thu, 30 Dec 2010 23:44:45 -0800
changeset 2416
7514897db238
parent 2415
68c5a4e8881d
child 2417
5a1e52a439fa
child 2432
55f868e91c3b
child 2486
403dc4c1d7f5

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    }

mercurial