equal
deleted
inserted
replaced
313 // (address)info->si_addr == os::get_standard_polling_page() |
313 // (address)info->si_addr == os::get_standard_polling_page() |
314 // doesn't work for us. We use: |
314 // doesn't work for us. We use: |
315 ((NativeInstruction*)pc)->is_safepoint_poll() && |
315 ((NativeInstruction*)pc)->is_safepoint_poll() && |
316 CodeCache::contains((void*) pc) && |
316 CodeCache::contains((void*) pc) && |
317 ((cb = CodeCache::find_blob(pc)) != NULL) && |
317 ((cb = CodeCache::find_blob(pc)) != NULL) && |
318 cb->is_nmethod()) { |
318 cb->is_compiled()) { |
319 if (TraceTraps) { |
319 if (TraceTraps) { |
320 tty->print_cr("trap: safepoint_poll at " INTPTR_FORMAT " (SIGSEGV)", p2i(pc)); |
320 tty->print_cr("trap: safepoint_poll at " INTPTR_FORMAT " (SIGSEGV)", p2i(pc)); |
321 } |
321 } |
322 stub = SharedRuntime::get_poll_stub(pc); |
322 stub = SharedRuntime::get_poll_stub(pc); |
323 } |
323 } |
362 #endif |
362 #endif |
363 else if (sig == SIGBUS) { |
363 else if (sig == SIGBUS) { |
364 // BugId 4454115: A read from a MappedByteBuffer can fault here if the |
364 // BugId 4454115: A read from a MappedByteBuffer can fault here if the |
365 // underlying file has been truncated. Do not crash the VM in such a case. |
365 // underlying file has been truncated. Do not crash the VM in such a case. |
366 CodeBlob* cb = CodeCache::find_blob_unsafe(pc); |
366 CodeBlob* cb = CodeCache::find_blob_unsafe(pc); |
367 nmethod* nm = (cb != NULL && cb->is_nmethod()) ? (nmethod*)cb : NULL; |
367 CompiledMethod* nm = (cb != NULL) ? cb->as_compiled_method_or_null() : NULL; |
368 if (nm != NULL && nm->has_unsafe_access()) { |
368 if (nm != NULL && nm->has_unsafe_access()) { |
369 // We don't really need a stub here! Just set the pending exeption and |
369 // We don't really need a stub here! Just set the pending exeption and |
370 // continue at the next instruction after the faulting read. Returning |
370 // continue at the next instruction after the faulting read. Returning |
371 // garbage from this read is ok. |
371 // garbage from this read is ok. |
372 thread->set_pending_unsafe_access_error(); |
372 thread->set_pending_unsafe_access_error(); |