RFR: Adapt upstream object pinning API

Zhengyu Gu zgu at redhat.com
Wed Apr 4 18:28:05 UTC 2018


>>>> *) Since you are renaming the RT stubs, should you also rename the 
>>>> MacroAssembler entries? Does it
>>>> do something special for arrays, or is it just the stub for the call to
>>>> SharedRuntime::{pin|unpin}_object?
>>>>
>>>>     MacroAssembler::pin_critical_native_array
>>>>     MacroAssembler::unpin_critical_native_array
>>>
>>> No. SharedRuntime::{pin|unpin}_object are generic. 
>>> MacroAssembler::pin/unpin_critical_native_array
>>> generate code to make RT calls for array arguments.
>>
>> Right. But is there anything special about 
>> MacroAssembler::pin/unpin_critical_native_array so that
>> we need to call them *_array? If not, we should just call them 
>> pin/unpin_object, regardless where
>> they are being called from. This would help to employ these stubs for 
>> future use cases.
> 
> I see.
> 
> However, this method is not that generic, it follows 
> unpack_array_argument(), uses rax as temporary register, and does not 
> support all object sizes.

Nevermind of object size, I don't think we will see narrowOop here.

But I still do see a good way to make it generic, other usages might not 
need to save all those registers, and need stack slot to save the value, 
etc.

Thanks,

-Zhengyu




> 
> Thanks,
> 
> -Zhengyu
> 
> 
> 
>>
>> -Aleksey
>>


More information about the shenandoah-dev mailing list