< prev index next >

src/hotspot/os_cpu/aix_ppc/os_aix_ppc.cpp


391         if (TraceTraps) {                                                                                                            
392           tty->print_cr("trap: ic_miss_check at " INTPTR_FORMAT " (SIGTRAP)", pc);                                                   
393         }                                                                                                                            
394         stub = SharedRuntime::get_ic_miss_stub();                                                                                    
395         goto run_stub;                                                                                                               
396       }                                                                                                                              
397 
398       // SIGTRAP-based implicit null check in compiled code.                                                                         
399       else if (sig == SIGTRAP && TrapBasedNullChecks &&                                                                              
400                nativeInstruction_at(pc)->is_sigtrap_null_check()) {                                                                  
401         if (TraceTraps) {                                                                                                            
402           tty->print_cr("trap: null_check at " INTPTR_FORMAT " (SIGTRAP)", pc);                                                      
403         }                                                                                                                            
404         stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL);                         
405         goto run_stub;                                                                                                               
406       }                                                                                                                              
407 
408       // SIGSEGV-based implicit null check in compiled code.                                                                         
409       else if (sig == SIGSEGV && ImplicitNullChecks &&                                                                               
410                CodeCache::contains((void*) pc) &&                                                                                    
411                !MacroAssembler::needs_explicit_null_check((intptr_t) info->si_addr)) {                                               
412         if (TraceTraps) {                                                                                                            
413           tty->print_cr("trap: null_check at " INTPTR_FORMAT " (SIGSEGV)", pc);                                                      
414         }                                                                                                                            
415         stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL);                         
416       }                                                                                                                              
417 
418 #ifdef COMPILER2                                                                                                                     
419       // SIGTRAP-based implicit range check in compiled code.                                                                        
420       else if (sig == SIGTRAP && TrapBasedRangeChecks &&                                                                             
421                nativeInstruction_at(pc)->is_sigtrap_range_check()) {                                                                 
422         if (TraceTraps) {                                                                                                            
423           tty->print_cr("trap: range_check at " INTPTR_FORMAT " (SIGTRAP)", pc);                                                     
424         }                                                                                                                            
425         stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL);                         
426         goto run_stub;                                                                                                               
427       }                                                                                                                              
428 #endif                                                                                                                               
429 
430       else if (sig == SIGFPE /* && info->si_code == FPE_INTDIV */) {                                                                 

391         if (TraceTraps) {
392           tty->print_cr("trap: ic_miss_check at " INTPTR_FORMAT " (SIGTRAP)", pc);
393         }
394         stub = SharedRuntime::get_ic_miss_stub();
395         goto run_stub;
396       }
397 
398       // SIGTRAP-based implicit null check in compiled code.
399       else if (sig == SIGTRAP && TrapBasedNullChecks &&
400                nativeInstruction_at(pc)->is_sigtrap_null_check()) {
401         if (TraceTraps) {
402           tty->print_cr("trap: null_check at " INTPTR_FORMAT " (SIGTRAP)", pc);
403         }
404         stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL);
405         goto run_stub;
406       }
407 
408       // SIGSEGV-based implicit null check in compiled code.
409       else if (sig == SIGSEGV && ImplicitNullChecks &&
410                CodeCache::contains((void*) pc) &&
411                MacroAssembler::uses_implicit_null_check(info->si_addr)) {
412         if (TraceTraps) {
413           tty->print_cr("trap: null_check at " INTPTR_FORMAT " (SIGSEGV)", pc);
414         }
415         stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL);
416       }
417 
418 #ifdef COMPILER2
419       // SIGTRAP-based implicit range check in compiled code.
420       else if (sig == SIGTRAP && TrapBasedRangeChecks &&
421                nativeInstruction_at(pc)->is_sigtrap_range_check()) {
422         if (TraceTraps) {
423           tty->print_cr("trap: range_check at " INTPTR_FORMAT " (SIGTRAP)", pc);
424         }
425         stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL);
426         goto run_stub;
427       }
428 #endif
429 
430       else if (sig == SIGFPE /* && info->si_code == FPE_INTDIV */) {

606   int SpinPause() {                                                                                                                  
607     return 0;                                                                                                                        
608   }                                                                                                                                  
609 }                                                                                                                                    
610 
611 #ifndef PRODUCT                                                                                                                      
612 void os::verify_stack_alignment() {                                                                                                  
613   assert(((intptr_t)os::current_stack_pointer() & (StackAlignmentInBytes-1)) == 0, "incorrect stack alignment");                     
614 }                                                                                                                                    
615 #endif                                                                                                                               
616 
617 int os::extra_bang_size_in_bytes() {                                                                                                 
618   // PPC does not require the additional stack bang.                                                                                 
619   return 0;                                                                                                                          
620 }                                                                                                                                    
621 
622 bool os::platform_print_native_stack(outputStream* st, void* context, char *buf, int buf_size) {                                     
623   AixNativeCallstack::print_callstack_for_context(st, (const ucontext_t*)context, true, buf, (size_t) buf_size);                     
624   return true;                                                                                                                       
625 }                                                                                                                                    
626                                                                                                                                      
627                                                                                                                                      

606   int SpinPause() {
607     return 0;
608   }
609 }
610 
611 #ifndef PRODUCT
612 void os::verify_stack_alignment() {
613   assert(((intptr_t)os::current_stack_pointer() & (StackAlignmentInBytes-1)) == 0, "incorrect stack alignment");
614 }
615 #endif
616 
617 int os::extra_bang_size_in_bytes() {
618   // PPC does not require the additional stack bang.
619   return 0;
620 }
621 
622 bool os::platform_print_native_stack(outputStream* st, void* context, char *buf, int buf_size) {
623   AixNativeCallstack::print_callstack_for_context(st, (const ucontext_t*)context, true, buf, (size_t) buf_size);
624   return true;
625 }


< prev index next >