equal
deleted
inserted
replaced
1 /* |
1 /* |
2 * Copyright (c) 2016, 2018, 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, 2018 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 |
465 } else if ((sig == SIGFPE) && VM_Version::is_determine_features_test_running()) { |
465 } else if ((sig == SIGFPE) && VM_Version::is_determine_features_test_running()) { |
466 // SIGFPE is known to be caused by trying to execute a vector instruction |
466 // SIGFPE is known to be caused by trying to execute a vector instruction |
467 // when the vector facility is installed, but operating system support is missing. |
467 // when the vector facility is installed, but operating system support is missing. |
468 VM_Version::reset_has_VectorFacility(); |
468 VM_Version::reset_has_VectorFacility(); |
469 stub = pc; // Continue with next instruction. |
469 stub = pc; // Continue with next instruction. |
470 } else if (thread->thread_state() == _thread_in_vm && |
470 } else if ((thread->thread_state() == _thread_in_vm || |
|
471 thread->thread_state() == _thread_in_native) && |
471 sig == SIGBUS && thread->doing_unsafe_access()) { |
472 sig == SIGBUS && thread->doing_unsafe_access()) { |
472 // We don't really need a stub here! Just set the pending exeption and |
473 // We don't really need a stub here! Just set the pending exeption and |
473 // continue at the next instruction after the faulting read. Returning |
474 // continue at the next instruction after the faulting read. Returning |
474 // garbage from this read is ok. |
475 // garbage from this read is ok. |
475 thread->set_pending_unsafe_access_error(); |
476 thread->set_pending_unsafe_access_error(); |