RFR(XL): 8224675: Late GC barrier insertion for ZGC
Per Liden
per.liden at oracle.com
Tue May 28 12:58:45 UTC 2019
Hi Nils,
We should now also be able to remove the following ugly hacks (yay!):
diff --git a/src/hotspot/share/classfile/vmSymbols.cpp
b/src/hotspot/share/classfile/vmSymbols.cpp
--- a/src/hotspot/share/classfile/vmSymbols.cpp
+++ b/src/hotspot/share/classfile/vmSymbols.cpp
@@ -778,9 +778,6 @@
#endif // COMPILER1
#ifdef COMPILER2
case vmIntrinsics::_clone:
-#if INCLUDE_ZGC
- if (UseZGC) return true;
-#endif
case vmIntrinsics::_copyOf:
case vmIntrinsics::_copyOfRange:
// These intrinsics use both the objectcopy and the arraycopy
diff --git a/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp
b/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp
--- a/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp
+++ b/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp
@@ -462,7 +462,6 @@
}
bool weak = (access.decorators() & ON_WEAK_OOP_REF) != 0;
- assert(access.is_parse_access(), "entry not supported at optimization
time");
if (p->isa_Load()) {
p->as_Load()->set_barrier(weak);
}
diff --git a/src/hotspot/share/runtime/stackValue.cpp
b/src/hotspot/share/runtime/stackValue.cpp
--- a/src/hotspot/share/runtime/stackValue.cpp
+++ b/src/hotspot/share/runtime/stackValue.cpp
@@ -133,11 +133,6 @@
}
#endif
// Deoptimization must make sure all oops have passed load barriers
-#if INCLUDE_ZGC
- if (UseZGC) {
- val =
ZBarrier::load_barrier_on_oop_field_preloaded((oop*)value_addr, val);
- }
-#endif
#if INCLUDE_SHENANDOAHGC
if (UseShenandoahGC) {
val =
ShenandoahBarrierSet::barrier_set()->load_reference_barrier(val);
cheers,
Per
On 5/24/19 11:41 AM, Nils Eliasson wrote:
> Hi Per,
>
> I removed the code and updated the webrev.
>
> Thanks,
>
> Nils
>
> On 2019-05-23 21:32, Per Liden wrote:
>> Hi Nils,
>>
>> On 2019-05-23 16:25, Nils Eliasson wrote:
>> [...]
>>> The wart that was fixup_partial_loads in zHeap has also been made
>>> redundant.
>>
>> We should also be able to remove the function, task and closure for this:
>>
>> 327 class ZFixupPartialLoadsClosure : public ZRootsIteratorClosure {
>> 328 public:
>> 329 virtual void do_oop(oop* p) {
>> 330 ZBarrier::mark_barrier_on_root_oop_field(p);
>> 331 }
>> 332
>> 333 virtual void do_oop(narrowOop* p) {
>> 334 ShouldNotReachHere();
>> 335 }
>> 336 };
>> 337
>> 338 class ZFixupPartialLoadsTask : public ZTask {
>> 339 private:
>> 340 ZThreadRootsIterator _thread_roots;
>> 341
>> 342 public:
>> 343 ZFixupPartialLoadsTask() :
>> 344 ZTask("ZFixupPartialLoadsTask"),
>> 345 _thread_roots() {}
>> 346
>> 347 virtual void work() {
>> 348 ZFixupPartialLoadsClosure cl;
>> 349 _thread_roots.oops_do(&cl);
>> 350 }
>> 351 };
>> 352
>> 353 void ZHeap::fixup_partial_loads() {
>> 354 ZFixupPartialLoadsTask task;
>> 355 _workers.run_parallel(&task);
>> 356 }
>>
>> cheers,
>> Per
>>
>>> Testing:
>>>
>>> Hotspot tier 1-6, CTW, jcstress, micros, runthese, kitchensink, and
>>> then some. All with -XX:+ZVerifyViews.
>>>
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8224675
>>>
>>> Webrev: http://cr.openjdk.java.net/~neliasso/8224675/webrev.01/
>>>
>>>
>>> Please review,
>>>
>>> Regards,
>>>
>>> Nils
>>>
More information about the hotspot-compiler-dev
mailing list