Mercurial > hg > truffle
comparison src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp @ 14909:4ca6dc0799b6
Backout jdk9 merge
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Tue, 01 Apr 2014 13:57:07 +0200 |
parents | 2c2a99f6cf83 |
children | 52b4284cb496 |
comparison
equal
deleted
inserted
replaced
14908:8db6e76cb658 | 14909:4ca6dc0799b6 |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 1999, 2013, 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. |
473 else if (sig == SIGBUS && info->si_code == BUS_OBJERR) { | 473 else if (sig == SIGBUS && info->si_code == BUS_OBJERR) { |
474 // BugId 4454115: A read from a MappedByteBuffer can fault | 474 // BugId 4454115: A read from a MappedByteBuffer can fault |
475 // here if the underlying file has been truncated. | 475 // here if the underlying file has been truncated. |
476 // Do not crash the VM in such a case. | 476 // Do not crash the VM in such a case. |
477 CodeBlob* cb = CodeCache::find_blob_unsafe(pc); | 477 CodeBlob* cb = CodeCache::find_blob_unsafe(pc); |
478 if (cb != NULL) { | 478 nmethod* nm = cb->is_nmethod() ? (nmethod*)cb : NULL; |
479 nmethod* nm = cb->is_nmethod() ? (nmethod*)cb : NULL; | 479 if (nm != NULL && nm->has_unsafe_access()) { |
480 if (nm != NULL && nm->has_unsafe_access()) { | 480 stub = StubRoutines::handler_for_unsafe_access(); |
481 stub = StubRoutines::handler_for_unsafe_access(); | |
482 } | |
483 } | 481 } |
484 } | 482 } |
485 else | 483 else |
486 if (sig == SIGFPE && info->si_code == FPE_INTDIV) { | 484 if (sig == SIGFPE && info->si_code == FPE_INTDIV) { |
487 // integer divide by zero | 485 // integer divide by zero |
724 | 722 |
725 VMError err(t, sig, pc, info, ucVoid); | 723 VMError err(t, sig, pc, info, ucVoid); |
726 err.report_and_die(); | 724 err.report_and_die(); |
727 | 725 |
728 ShouldNotReachHere(); | 726 ShouldNotReachHere(); |
729 return false; | |
730 } | 727 } |
731 | 728 |
732 void os::print_context(outputStream *st, void *context) { | 729 void os::print_context(outputStream *st, void *context) { |
733 if (context == NULL) return; | 730 if (context == NULL) return; |
734 | 731 |