src/os/bsd/vm/os_bsd.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/os/bsd/vm/os_bsd.cpp Mon Nov 12 10:52:08 2012
--- new/src/os/bsd/vm/os_bsd.cpp Mon Nov 12 10:52:08 2012
*** 168,178 ****
--- 168,177 ----
////////////////////////////////////////////////////////////////////////////////
// utility functions
static int SR_initialize();
static int SR_finalize();
julong os::available_memory() {
return Bsd::available_memory();
}
*** 2766,2779 ****
--- 2765,2774 ----
// Save signal flag
os::Bsd::set_our_sigflags(SR_signum, act.sa_flags);
return 0;
}
static int SR_finalize() {
return 0;
}
// returns true on success and false on error - really an error is fatal
// but this seems the normal response to library errors
static bool do_suspend(OSThread* osthread) {
// mark as suspended and send signal
*** 3576,3595 ****
--- 3571,3580 ----
}
////////////////////////////////////////////////////////////////////////////////
// debug support
static address same_page(address x, address y) {
int page_bits = -os::vm_page_size();
if ((intptr_t(x) & page_bits) == (intptr_t(y) & page_bits))
return x;
else if (x > y)
return (address)(intptr_t(y) | ~page_bits) + 1;
else
return (address)(intptr_t(y) & page_bits);
}
bool os::find(address addr, outputStream* st) {
Dl_info dlinfo;
memset(&dlinfo, 0, sizeof(dlinfo));
if (dladdr(addr, &dlinfo)) {
st->print(PTR_FORMAT ": ", addr);
*** 3609,3620 ****
--- 3594,3605 ----
}
st->cr();
if (Verbose) {
// decode some bytes around the PC
! address begin = same_page(addr-40, addr);
! address end = same_page(addr+40, addr);
! address begin = clamp_address_in_page(addr-40, addr);
! address end = clamp_address_in_page(addr+40, addr);
address lowest = (address) dlinfo.dli_sname;
if (!lowest) lowest = (address) dlinfo.dli_fbase;
if (begin < lowest) begin = lowest;
Dl_info dlinfo2;
if (dladdr(end, &dlinfo2) && dlinfo2.dli_saddr != dlinfo.dli_saddr
src/os/bsd/vm/os_bsd.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File