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.
|