equal
deleted
inserted
replaced
501 stub = VM_Version::cpuinfo_cont_addr(); |
501 stub = VM_Version::cpuinfo_cont_addr(); |
502 } |
502 } |
503 |
503 |
504 if (thread->thread_state() == _thread_in_vm) { |
504 if (thread->thread_state() == _thread_in_vm) { |
505 if (sig == SIGBUS && info->si_code == BUS_OBJERR && thread->doing_unsafe_access()) { |
505 if (sig == SIGBUS && info->si_code == BUS_OBJERR && thread->doing_unsafe_access()) { |
506 stub = StubRoutines::handler_for_unsafe_access(); |
506 address next_pc = Assembler::locate_next_instruction(pc); |
|
507 stub = SharedRuntime::handle_unsafe_access(thread, next_pc); |
507 } |
508 } |
508 } |
509 } |
509 |
510 |
510 if (thread->thread_state() == _thread_in_Java) { |
511 if (thread->thread_state() == _thread_in_Java) { |
511 // Support Safepoint Polling |
512 // Support Safepoint Polling |
518 // Do not crash the VM in such a case. |
519 // Do not crash the VM in such a case. |
519 CodeBlob* cb = CodeCache::find_blob_unsafe(pc); |
520 CodeBlob* cb = CodeCache::find_blob_unsafe(pc); |
520 if (cb != NULL) { |
521 if (cb != NULL) { |
521 CompiledMethod* nm = cb->as_compiled_method_or_null(); |
522 CompiledMethod* nm = cb->as_compiled_method_or_null(); |
522 if (nm != NULL && nm->has_unsafe_access()) { |
523 if (nm != NULL && nm->has_unsafe_access()) { |
523 stub = StubRoutines::handler_for_unsafe_access(); |
524 address next_pc = Assembler::locate_next_instruction(pc); |
|
525 stub = SharedRuntime::handle_unsafe_access(thread, next_pc); |
524 } |
526 } |
525 } |
527 } |
526 } |
528 } |
527 else |
529 else |
528 if (sig == SIGFPE && info->si_code == FPE_INTDIV) { |
530 if (sig == SIGFPE && info->si_code == FPE_INTDIV) { |