src/cpu/sparc/vm/macroAssembler_sparc.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
8026775 Cdiff src/cpu/sparc/vm/macroAssembler_sparc.cpp
src/cpu/sparc/vm/macroAssembler_sparc.cpp
Print this page
*** 3524,3535 ****
cmp(Rsize, G0);
br(Assembler::greater, false, Assembler::pn, loop);
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++) {
set((-i*offset)+STACK_BIAS, Rscratch);
st(G0, Rtsp, Rscratch);
}
}
--- 3524,3538 ----
cmp(Rsize, G0);
br(Assembler::greater, false, Assembler::pn, loop);
delayed()->sub(Rtsp, Roffset, Rtsp);
// Bang down shadow pages too.
! // 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 down to and including i=StackShadowPages.
! for (int i = 1; i <= StackShadowPages; i++) {
set((-i*offset)+STACK_BIAS, Rscratch);
st(G0, Rtsp, Rscratch);
}
}
src/cpu/sparc/vm/macroAssembler_sparc.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File