hotspot/src/os/aix/vm/vmError_aix.cpp
changeset 29573 2d800e5d575f
parent 28943 679546f0cc1f
child 33105 294e48b4f704
equal deleted inserted replaced
29572:cf3e05e32c13 29573:2d800e5d575f
   107   for (int i = 0; i < NUM_SIGNALS; i++) {
   107   for (int i = 0; i < NUM_SIGNALS; i++) {
   108     sigaddset(&newset, SIGNALS[i]);
   108     sigaddset(&newset, SIGNALS[i]);
   109   }
   109   }
   110   sigthreadmask(SIG_UNBLOCK, &newset, NULL);
   110   sigthreadmask(SIG_UNBLOCK, &newset, NULL);
   111 
   111 
   112   VMError err(NULL, sig, NULL, info, ucVoid);
   112   // support safefetch faults in error handling
       
   113   ucontext_t* const uc = (ucontext_t*) ucVoid;
       
   114   address const pc = uc ? os::Aix::ucontext_get_pc(uc) : NULL;
       
   115   if (uc && pc && StubRoutines::is_safefetch_fault(pc)) {
       
   116     os::Aix::ucontext_set_pc(uc, StubRoutines::continuation_for_safefetch_fault(pc));
       
   117     return;
       
   118   }
       
   119 
       
   120   VMError err(NULL, sig, pc, info, ucVoid);
   113   err.report_and_die();
   121   err.report_and_die();
   114 }
   122 }
   115 
   123 
   116 void VMError::reset_signal_handlers() {
   124 void VMError::reset_signal_handlers() {
   117   sigset_t newset;
   125   sigset_t newset;