RFR(S): 8147844: new method j.l.Runtime.onSpinWait() and the corresponding x86 hotspot instrinsic

Igor Veresov igor.veresov at oracle.com
Fri Feb 12 00:20:35 UTC 2016


That looks good to me.

igor

> On Feb 11, 2016, at 3:55 PM, Ivan Krylov <ivan at azulsystems.com> wrote:
> 
> Hi Igor,
> 
> Thanks both for your help and your reviews.
> Here is a new version, tested on mac for c1 and c2:
> 
> http://cr.openjdk.java.net/~ikrylov/8147844.hs.03
> 
> Thanks,
> 
> Ivan
> 
> 
> On 11/02/2016 09:51, Igor Veresov wrote:
>> The C2 part looks good to me. Thanks for making the changes.
>> 
>> As for C1…
>> 1. There is already an HIR node to model intrinsics (“Intrinsic”), so unless there is a compelling reason to introduce a new node type I would just use that. That should get rid of many changes to HIR visitors, etc. Follow the existing examples, look for example at how vmIntrinsics::_fullFence works, your case should be the same.
>> 2. It’d be nice to minimize the platform specific changes. There is Compiler::is_intrinsic_supported() method that determines if something should be intensified. Follow the existing examples and add “static bool supports_spin_wait() { return false; }" to Abstract_VM_Version, overload it to true in the VM_Version for x86, then use it to determine whether to intensify the call. You’ll still need a LIR instruction and the LIR_Assembler::on_spin_wait() method, but you can define it on on x86 only. It’s ok to not define a method if you don’t use it, and you won’t, because the intrinsic will be used only on x86.
>> 
>> igor
>> 
>>> On Feb 10, 2016, at 3:47 PM, Ivan Krylov <ivan at azulsystems.com> wrote:
>>> 
>>> I have prepared a new webrev:
>>> http://cr.openjdk.java.net/~ikrylov/8147844.hs.02/
>>> 
>>> Hopefully it addresses the comments that were said before.
>>> Per Vladimir's suggestion I added the c1 intrinsic.
>>> I could not test non-x86 platforms but hopefully nothing is broken there.
>>> 
>>> Thanks,
>>> 
>>> Ivan
> 



More information about the hotspot-compiler-dev mailing list