src/cpu/x86/vm/macroAssembler_x86.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/cpu/x86/vm/macroAssembler_x86.cpp Tue Nov 5 11:43:58 2013
--- new/src/cpu/x86/vm/macroAssembler_x86.cpp Tue Nov 5 11:43:58 2013
*** 1379,1390 ****
--- 1379,1393 ----
subptr(tmp, os::vm_page_size());
subl(size, os::vm_page_size());
jcc(Assembler::greater, loop);
// 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 down to and including i=StackShadowPages.
+ for (int i = 1; i <= StackShadowPages; i++) {
// this could be any sized move but this is can be a debugging crumb
// so the bigger the better.
movptr(Address(tmp, (-i*os::vm_page_size())), size );
}
}
src/cpu/x86/vm/macroAssembler_x86.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File