equal
deleted
inserted
replaced
500 next_pc = SharedRuntime::handle_unsafe_access(thread, next_pc); |
500 next_pc = SharedRuntime::handle_unsafe_access(thread, next_pc); |
501 os::Linux::ucontext_set_pc(uc, next_pc); |
501 os::Linux::ucontext_set_pc(uc, next_pc); |
502 return true; |
502 return true; |
503 } |
503 } |
504 } |
504 } |
|
505 |
|
506 // jni_fast_Get<Primitive>Field can trap at certain pc's if a GC kicks in |
|
507 // and the heap gets shrunk before the field access. |
|
508 if ((sig == SIGSEGV) || (sig == SIGBUS)) { |
|
509 address addr = JNI_FastGetField::find_slowcase_pc(pc); |
|
510 if (addr != (address)-1) { |
|
511 stub = addr; |
|
512 } |
|
513 } |
505 } |
514 } |
506 |
515 |
507 if (stub != NULL) { |
516 if (stub != NULL) { |
508 // Save all thread context in case we need to restore it. |
517 // Save all thread context in case we need to restore it. |
509 if (thread != NULL) thread->set_saved_exception_pc(pc); |
518 if (thread != NULL) thread->set_saved_exception_pc(pc); |