src/hotspot/os_cpu/linux_sparc/os_linux_sparc.cpp
changeset 52460 f1bb77833b59
parent 52302 912b79d983d9
child 52462 4ad404da0088
equal deleted inserted replaced
52459:cbe83e9c2100 52460:f1bb77833b59
   437     return true;
   437     return true;
   438   }
   438   }
   439   return false;
   439   return false;
   440 }
   440 }
   441 
   441 
   442 inline static bool checkSerializePage(JavaThread* thread, address addr) {
       
   443   return os::is_memory_serialize_page(thread, addr);
       
   444 }
       
   445 
       
   446 inline static bool checkZombie(sigcontext* uc, address* pc, address* stub) {
   442 inline static bool checkZombie(sigcontext* uc, address* pc, address* stub) {
   447   if (nativeInstruction_at(*pc)->is_zombie()) {
   443   if (nativeInstruction_at(*pc)->is_zombie()) {
   448     // zombie method (ld [%g0],%o7 instruction)
   444     // zombie method (ld [%g0],%o7 instruction)
   449     *stub = SharedRuntime::get_handle_wrong_method_stub();
   445     *stub = SharedRuntime::get_handle_wrong_method_stub();
   450 
   446 
   540   //%note os_trap_1
   536   //%note os_trap_1
   541   if (info != NULL && uc != NULL && thread != NULL) {
   537   if (info != NULL && uc != NULL && thread != NULL) {
   542     pc = address(SIG_PC(uc));
   538     pc = address(SIG_PC(uc));
   543     npc = address(SIG_NPC(uc));
   539     npc = address(SIG_NPC(uc));
   544 
   540 
   545     // Check to see if we caught the safepoint code in the
       
   546     // process of write protecting the memory serialization page.
       
   547     // It write enables the page immediately after protecting it
       
   548     // so we can just return to retry the write.
       
   549     if ((sig == SIGSEGV) && checkSerializePage(thread, (address)info->si_addr)) {
       
   550       // Block current thread until the memory serialize page permission restored.
       
   551       os::block_on_serialize_page_trap();
       
   552       return 1;
       
   553     }
       
   554 
       
   555     if (checkPrefetch(uc, pc)) {
   541     if (checkPrefetch(uc, pc)) {
   556       return 1;
   542       return 1;
   557     }
   543     }
   558 
   544 
   559     // Handle ALL stack overflow variations here
   545     // Handle ALL stack overflow variations here