Mercurial > hg > truffle
comparison src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp @ 18041:52b4284cb496
Merge with jdk8u20-b26
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Wed, 15 Oct 2014 16:02:50 +0200 |
parents | 4ca6dc0799b6 98af1e198e73 |
children |
comparison
equal
deleted
inserted
replaced
17606:45d7b2c7029d | 18041:52b4284cb496 |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | 4 * |
5 * This code is free software; you can redistribute it and/or modify it | 5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as | 6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
457 thread->disable_stack_red_zone(); | 457 thread->disable_stack_red_zone(); |
458 tty->print_raw_cr("An irrecoverable stack overflow has occurred."); | 458 tty->print_raw_cr("An irrecoverable stack overflow has occurred."); |
459 } | 459 } |
460 } | 460 } |
461 | 461 |
462 if ((sig == SIGSEGV) && VM_Version::is_cpuinfo_segv_addr(pc)) { | |
463 // Verify that OS save/restore AVX registers. | |
464 stub = VM_Version::cpuinfo_cont_addr(); | |
465 } | |
466 | |
462 if (thread->thread_state() == _thread_in_vm) { | 467 if (thread->thread_state() == _thread_in_vm) { |
463 if (sig == SIGBUS && info->si_code == BUS_OBJERR && thread->doing_unsafe_access()) { | 468 if (sig == SIGBUS && info->si_code == BUS_OBJERR && thread->doing_unsafe_access()) { |
464 stub = StubRoutines::handler_for_unsafe_access(); | 469 stub = StubRoutines::handler_for_unsafe_access(); |
465 } | 470 } |
466 } | 471 } |
473 else if (sig == SIGBUS && info->si_code == BUS_OBJERR) { | 478 else if (sig == SIGBUS && info->si_code == BUS_OBJERR) { |
474 // BugId 4454115: A read from a MappedByteBuffer can fault | 479 // BugId 4454115: A read from a MappedByteBuffer can fault |
475 // here if the underlying file has been truncated. | 480 // here if the underlying file has been truncated. |
476 // Do not crash the VM in such a case. | 481 // Do not crash the VM in such a case. |
477 CodeBlob* cb = CodeCache::find_blob_unsafe(pc); | 482 CodeBlob* cb = CodeCache::find_blob_unsafe(pc); |
478 nmethod* nm = cb->is_nmethod() ? (nmethod*)cb : NULL; | 483 if (cb != NULL) { |
479 if (nm != NULL && nm->has_unsafe_access()) { | 484 nmethod* nm = cb->is_nmethod() ? (nmethod*)cb : NULL; |
480 stub = StubRoutines::handler_for_unsafe_access(); | 485 if (nm != NULL && nm->has_unsafe_access()) { |
486 stub = StubRoutines::handler_for_unsafe_access(); | |
487 } | |
481 } | 488 } |
482 } | 489 } |
483 else | 490 else |
484 if (sig == SIGFPE && info->si_code == FPE_INTDIV) { | 491 if (sig == SIGFPE && info->si_code == FPE_INTDIV) { |
485 // integer divide by zero | 492 // integer divide by zero |
722 | 729 |
723 VMError err(t, sig, pc, info, ucVoid); | 730 VMError err(t, sig, pc, info, ucVoid); |
724 err.report_and_die(); | 731 err.report_and_die(); |
725 | 732 |
726 ShouldNotReachHere(); | 733 ShouldNotReachHere(); |
734 return false; | |
727 } | 735 } |
728 | 736 |
729 void os::print_context(outputStream *st, void *context) { | 737 void os::print_context(outputStream *st, void *context) { |
730 if (context == NULL) return; | 738 if (context == NULL) return; |
731 | 739 |