mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 23:04:50 +02:00
8166188: G1 Needs pre barrier on dereference of weak JNI handles
Add low tag to jweaks and G1 barrier for jweak loads. Co-authored-by: Martin Doerr <martin.doerr@sap.com> Co-authored-by: Volker Simonis <volker.simonis@sap.com> Reviewed-by: mgerdin, mdoerr, pliden, dlong, dcubed, coleenp, aph, tschatzl
This commit is contained in:
parent
6a5e6f2ae1
commit
28477cf493
37 changed files with 1061 additions and 429 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright 2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
|
@ -406,10 +406,12 @@ int CppInterpreter::native_entry(Method* method, intptr_t UNUSED, TRAPS) {
|
|||
// oop_temp where the garbage collector can see it before
|
||||
// we release the handle it might be protected by.
|
||||
if (handler->result_type() == &ffi_type_pointer) {
|
||||
if (result[0])
|
||||
istate->set_oop_temp(*(oop *) result[0]);
|
||||
else
|
||||
if (result[0] == 0) {
|
||||
istate->set_oop_temp(NULL);
|
||||
} else {
|
||||
jobject handle = reinterpret_cast<jobject>(result[0]);
|
||||
istate->set_oop_temp(JNIHandles::resolve(handle));
|
||||
}
|
||||
}
|
||||
|
||||
// Reset handle block
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue