mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 15:24:43 +02:00
8143897: Weblogic12medrec assert(handler_address == SharedRuntime::compute_compiled_exc_handler(nm, pc, exception, force_unwind, true)) failed: Must be the same
ExceptionCache read is lock-free and assume strong memory ordering in write code. Added storestore memory barrier in write path to handle this. Reviewed-by: kvn, thartmann, dlong
This commit is contained in:
parent
16f749ef45
commit
eb2347dd71
1 changed files with 6 additions and 3 deletions
|
@ -321,9 +321,12 @@ address ExceptionCache::test_address(address addr) {
|
||||||
|
|
||||||
bool ExceptionCache::add_address_and_handler(address addr, address handler) {
|
bool ExceptionCache::add_address_and_handler(address addr, address handler) {
|
||||||
if (test_address(addr) == handler) return true;
|
if (test_address(addr) == handler) return true;
|
||||||
if (count() < cache_size) {
|
|
||||||
set_pc_at(count(),addr);
|
int index = count();
|
||||||
set_handler_at(count(), handler);
|
if (index < cache_size) {
|
||||||
|
set_pc_at(index, addr);
|
||||||
|
set_handler_at(index, handler);
|
||||||
|
OrderAccess::storestore();
|
||||||
increment_count();
|
increment_count();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue