< prev index next >

src/hotspot/os_cpu/aix_ppc/os_aix_ppc.cpp

Print this page
rev 52430 : 8213199: GC abstraction for Assembler::needs_explicit_null_check()


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


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


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


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


< prev index next >