Shenandoah: Enable concurrent class unloading on x86_32

Zhengyu Gu zgu at redhat.com
Wed Oct 16 17:38:48 UTC 2019



On 10/15/19 11:03 AM, Roman Kennke wrote:
> It looks ok to me. Shared changes would need further reviewing upstream
> by Erik, eventually, but feel free to bake it in sh/jdk first.
> 
> I'd probably use rdi and load the thread-base into it using get_thread()
> and keep the interface cleaner. Your call.

I am going to keep current version. What you suggested, generating a lot 
more code, including a runtime call [1], vs. just a single load from 
known address.

Thanks,

-Zhengyu

[1]
  ;; nmethod_entry_barrier {
   0xe70df1ab:   push   %edi
   0xe70df1ac:   push   %eax
   0xe70df1ad:   push   %edx
   0xe70df1ae:   push   %ecx
   0xe70df1af:   call   0xf7159de0                   ;   {runtime_call 
Thread::current()}
   0xe70df1b4:   pop    %ecx
   0xe70df1b5:   pop    %edx
   0xe70df1b6:   mov    %eax,%edi
   0xe70df1b8:   pop    %eax
   ....



> 
> Roman
> 
> 
>> Prerequisites:
>>   1) Shenandoah: SBSA::load_at() should save/restore registers when
>>      calling SATB barrier [1]
>>   2) JDK-8230765: Implement nmethod barrier for x86_32 platforms [2]
>>
>>
>> (2) is upstream CR, should be reviewed here. However, there is no
>> implementation there that can exercise this implementation. I would
>> prefer to bake here for sometime, before upstreaming it.
>>
>>
>> Combined webrev:
>> http://cr.openjdk.java.net/~zgu/shenandoah/conc-class_unloading_x86_32/webrev.00/
>>
>>
>> Test:
>>    hotspot_gc_shenandoah (fastdebug and release) on Linux with x86_32 JVM.
>>
>> [1]
>> https://mail.openjdk.java.net/pipermail/shenandoah-dev/2019-October/010681.html
>>
>> [2] http://cr.openjdk.java.net/~zgu/JDK-8230765/webrev.00/
>>
>>
>> Thanks,
>>
>> -Zhengyu
>>
> 


More information about the shenandoah-dev mailing list