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:
Kim Barrett 2017-02-15 22:19:13 -05:00
parent 6a5e6f2ae1
commit 28477cf493
37 changed files with 1061 additions and 429 deletions

View file

@ -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