hotspot/src/os_cpu/linux_ppc/vm/os_linux_ppc.cpp
changeset 38133 78b95467b9f1
parent 37430 fd743dadef12
child 38174 f611c50b8703
equal deleted inserted replaced
38132:ba888a4f352a 38133:78b95467b9f1
   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();