On Mon, 28 Sep 2020 15:22:55 GMT, Roman Kennke <rken...@openjdk.org> wrote:

>> Erik Österlund has updated the pull request incrementally with one 
>> additional commit since the last revision:
>> 
>>   Review: Albert CR2 and defensive programming
>
> src/hotspot/share/compiler/oopMap.cpp line 319:
> 
>> 317: #ifdef ASSERT
>> 318:         if ((((uintptr_t)loc & (sizeof(oop)-1)) != 0) ||
>> 319:             
>> !Universe::heap()->is_in_or_null((oop)NativeAccess<AS_NO_KEEPALIVE>::oop_load(&val)))
>>  {
> 
> This NativeAccess call causes the troubles with Shenandoah GC. It triggers 
> evacuation of the object referenced by the
> stack location during a safepoint, which we'd rather avoid. Why is it needed?

We call frame::oops_do from the GC to make bad oops good. But the oops_do logic 
assers the oop is good *before* the
closure is applied. Every time I do something, I run i to issues with this 
assert. It seems like an invalid assumption
to me, that oops are meant to always be good, even before they are fixed. I 
vote for removing this assert. It has
caused a lot of pain. Any takers?

-------------

PR: https://git.openjdk.java.net/jdk/pull/296

Reply via email to