hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp
changeset 46667 ff7b9f61209e
parent 46644 a5813fb66270
equal deleted inserted replaced
46666:32434b633549 46667:ff7b9f61209e
   379     return true;
   379     return true;
   380   }
   380   }
   381   return false;
   381   return false;
   382 }
   382 }
   383 
   383 
   384 inline static bool checkByteBuffer(address pc, address npc, address* stub) {
   384 inline static bool checkByteBuffer(address pc, address npc, JavaThread * thread, address* stub) {
   385   // BugId 4454115: A read from a MappedByteBuffer can fault
   385   // BugId 4454115: A read from a MappedByteBuffer can fault
   386   // here if the underlying file has been truncated.
   386   // here if the underlying file has been truncated.
   387   // Do not crash the VM in such a case.
   387   // Do not crash the VM in such a case.
   388   CodeBlob* cb = CodeCache::find_blob_unsafe(pc);
   388   CodeBlob* cb = CodeCache::find_blob_unsafe(pc);
   389   CompiledMethod* nm = cb->as_compiled_method_or_null();
   389   CompiledMethod* nm = cb->as_compiled_method_or_null();
   571 
   571 
   572         if ((sig == SIGSEGV) && checkPollingPage(pc, (address)info->si_addr, &stub)) {
   572         if ((sig == SIGSEGV) && checkPollingPage(pc, (address)info->si_addr, &stub)) {
   573           break;
   573           break;
   574         }
   574         }
   575 
   575 
   576         if ((sig == SIGBUS) && checkByteBuffer(pc, npc, &stub)) {
   576         if ((sig == SIGBUS) && checkByteBuffer(pc, npc, thread, &stub)) {
   577           break;
   577           break;
   578         }
   578         }
   579 
   579 
   580         if ((sig == SIGSEGV || sig == SIGBUS) &&
   580         if ((sig == SIGSEGV || sig == SIGBUS) &&
   581             checkVerifyOops(pc, (address)info->si_addr, &stub)) {
   581             checkVerifyOops(pc, (address)info->si_addr, &stub)) {