< prev index next >

src/hotspot/os_cpu/linux_ppc/os_linux_ppc.cpp


413       else if (sig == SIGTRAP && TrapBasedICMissChecks &&                                                                            
414                nativeInstruction_at(pc)->is_sigtrap_ic_miss_check()) {                                                               
415         if (TraceTraps) {                                                                                                            
416           tty->print_cr("trap: ic_miss_check at " INTPTR_FORMAT " (SIGTRAP)", p2i(pc));                                              
417         }                                                                                                                            
418         stub = SharedRuntime::get_ic_miss_stub();                                                                                    
419       }                                                                                                                              
420 
421       // SIGTRAP-based implicit null check in compiled code.                                                                         
422       else if (sig == SIGTRAP && TrapBasedNullChecks &&                                                                              
423                nativeInstruction_at(pc)->is_sigtrap_null_check()) {                                                                  
424         if (TraceTraps) {                                                                                                            
425           tty->print_cr("trap: null_check at " INTPTR_FORMAT " (SIGTRAP)", p2i(pc));                                                 
426         }                                                                                                                            
427         stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL);                         
428       }                                                                                                                              
429 
430       // SIGSEGV-based implicit null check in compiled code.                                                                         
431       else if (sig == SIGSEGV && ImplicitNullChecks &&                                                                               
432                CodeCache::contains((void*) pc) &&                                                                                    
433                !MacroAssembler::needs_explicit_null_check((intptr_t) info->si_addr)) {                                               
434         if (TraceTraps) {                                                                                                            
435           tty->print_cr("trap: null_check at " INTPTR_FORMAT " (SIGSEGV)", p2i(pc));                                                 
436         }                                                                                                                            
437         stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL);                         
438       }                                                                                                                              
439 
440 #ifdef COMPILER2                                                                                                                     
441       // SIGTRAP-based implicit range check in compiled code.                                                                        
442       else if (sig == SIGTRAP && TrapBasedRangeChecks &&                                                                             
443                nativeInstruction_at(pc)->is_sigtrap_range_check()) {                                                                 
444         if (TraceTraps) {                                                                                                            
445           tty->print_cr("trap: range_check at " INTPTR_FORMAT " (SIGTRAP)", p2i(pc));                                                
446         }                                                                                                                            
447         stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL);                         
448       }                                                                                                                              
449 #endif                                                                                                                               
450       else if (sig == SIGBUS) {                                                                                                      
451         // BugId 4454115: A read from a MappedByteBuffer can fault here if the                                                       
452         // underlying file has been truncated. Do not crash the VM in such a case.                                                   

413       else if (sig == SIGTRAP && TrapBasedICMissChecks &&
414                nativeInstruction_at(pc)->is_sigtrap_ic_miss_check()) {
415         if (TraceTraps) {
416           tty->print_cr("trap: ic_miss_check at " INTPTR_FORMAT " (SIGTRAP)", p2i(pc));
417         }
418         stub = SharedRuntime::get_ic_miss_stub();
419       }
420 
421       // SIGTRAP-based implicit null check in compiled code.
422       else if (sig == SIGTRAP && TrapBasedNullChecks &&
423                nativeInstruction_at(pc)->is_sigtrap_null_check()) {
424         if (TraceTraps) {
425           tty->print_cr("trap: null_check at " INTPTR_FORMAT " (SIGTRAP)", p2i(pc));
426         }
427         stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL);
428       }
429 
430       // SIGSEGV-based implicit null check in compiled code.
431       else if (sig == SIGSEGV && ImplicitNullChecks &&
432                CodeCache::contains((void*) pc) &&
433                MacroAssembler::uses_implicit_null_check(info->si_addr)) {
434         if (TraceTraps) {
435           tty->print_cr("trap: null_check at " INTPTR_FORMAT " (SIGSEGV)", p2i(pc));
436         }
437         stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL);
438       }
439 
440 #ifdef COMPILER2
441       // SIGTRAP-based implicit range check in compiled code.
442       else if (sig == SIGTRAP && TrapBasedRangeChecks &&
443                nativeInstruction_at(pc)->is_sigtrap_range_check()) {
444         if (TraceTraps) {
445           tty->print_cr("trap: range_check at " INTPTR_FORMAT " (SIGTRAP)", p2i(pc));
446         }
447         stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL);
448       }
449 #endif
450       else if (sig == SIGBUS) {
451         // BugId 4454115: A read from a MappedByteBuffer can fault here if the
452         // underlying file has been truncated. Do not crash the VM in such a case.
< prev index next >