1 /* |
1 /* |
2 * Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved. |
3 * Copyright (c) 2016, 2018 SAP SE. All rights reserved. |
3 * Copyright (c) 2016, 2019 SAP SE. All rights reserved. |
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
5 * |
5 * |
6 * This code is free software; you can redistribute it and/or modify it |
6 * This code is free software; you can redistribute it and/or modify it |
7 * under the terms of the GNU General Public License version 2 only, as |
7 * under the terms of the GNU General Public License version 2 only, as |
8 * published by the Free Software Foundation. |
8 * published by the Free Software Foundation. |
424 tty->print_cr("trap: null_check at " INTPTR_FORMAT " (SIGSEGV)", p2i(pc)); |
424 tty->print_cr("trap: null_check at " INTPTR_FORMAT " (SIGSEGV)", p2i(pc)); |
425 } |
425 } |
426 stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL); |
426 stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL); |
427 } |
427 } |
428 |
428 |
|
429 #ifdef COMPILER2 |
429 // SIGTRAP-based implicit range check in compiled code. |
430 // SIGTRAP-based implicit range check in compiled code. |
430 else if (sig == SIGFPE && TrapBasedRangeChecks && |
431 else if (sig == SIGFPE && TrapBasedRangeChecks && |
431 (trap_pc != NULL) && |
432 (trap_pc != NULL) && |
432 Assembler::is_sigtrap_range_check(trap_pc)) { |
433 Assembler::is_sigtrap_range_check(trap_pc)) { |
433 if (TraceTraps) { |
434 if (TraceTraps) { |
434 tty->print_cr("trap: RANGE_CHECK at " INTPTR_FORMAT " (SIGFPE)", p2i(trap_pc)); |
435 tty->print_cr("trap: RANGE_CHECK at " INTPTR_FORMAT " (SIGFPE)", p2i(trap_pc)); |
435 } |
436 } |
436 stub = SharedRuntime::continuation_for_implicit_exception(thread, trap_pc, SharedRuntime::IMPLICIT_NULL); |
437 stub = SharedRuntime::continuation_for_implicit_exception(thread, trap_pc, SharedRuntime::IMPLICIT_NULL); |
437 } |
438 } |
|
439 #endif |
438 |
440 |
439 else if (sig == SIGFPE && info->si_code == FPE_INTDIV) { |
441 else if (sig == SIGFPE && info->si_code == FPE_INTDIV) { |
440 stub = SharedRuntime::continuation_for_implicit_exception(thread, trap_pc, SharedRuntime::IMPLICIT_DIVIDE_BY_ZERO); |
442 stub = SharedRuntime::continuation_for_implicit_exception(thread, trap_pc, SharedRuntime::IMPLICIT_DIVIDE_BY_ZERO); |
441 } |
443 } |
442 |
444 |