Mercurial > hg > truffle
diff src/cpu/sparc/vm/macroAssembler_sparc.cpp @ 13047:be525e91f65b
8026775: nsk/jvmti/RedefineClasses/StressRedefine crashes due to EXCEPTION_ACCESS_VIOLATION
Summary: Uncommon trap blob did not bang all the stack shadow pages
Reviewed-by: kvn, twisti, iveresov, jrose
author | mikael |
---|---|
date | Wed, 06 Nov 2013 06:51:24 -0800 |
parents | b4aa8fc5d0d5 |
children | 0bf37f737702 |
line wrap: on
line diff
--- a/src/cpu/sparc/vm/macroAssembler_sparc.cpp Tue Nov 05 02:29:41 2013 -0800 +++ b/src/cpu/sparc/vm/macroAssembler_sparc.cpp Wed Nov 06 06:51:24 2013 -0800 @@ -3526,8 +3526,12 @@ delayed()->sub(Rtsp, Roffset, Rtsp); // Bang down shadow pages too. - // The -1 because we already subtracted 1 page. - for (int i = 0; i< StackShadowPages-1; i++) { + // At this point, (tmp-0) is the last address touched, so don't + // touch it again. (It was touched as (tmp-pagesize) but then tmp + // was post-decremented.) Skip this address by starting at i=1, and + // touch a few more pages below. N.B. It is important to touch all + // the way down to and including i=StackShadowPages. + for (int i = 1; i <= StackShadowPages; i++) { set((-i*offset)+STACK_BIAS, Rscratch); st(G0, Rtsp, Rscratch); }