RFR/RFC calling convention change for value types in compiled code

Tobias Hartmann tobias.hartmann at oracle.com
Mon Dec 5 14:03:21 UTC 2016


Hi Roland,

On 05.12.2016 14:54, Roland Westrelin wrote:
> 
> Hi Tobias,
> 
> Thanks for the review. 
> 
>> - callGenerator.cpp:
>>   - I would move the !ValueTypePassFieldsAsArgs condition in line 157
>>   to the outer if
> 
> It doesn't seem possible to move it to either:
> 
> if (!is_static) {
> 
> because it would skip:
> 
> // Mark the call node as virtual, sort of:
> call->set_optimized_virtual(true);
> ...
> 
> or:
> 
> if (kit.argument(0)->is_ValueType()) {
> 
> because it would then null check an non-existing receiver.

Right, I missed that.

>> - There are lots of "domain() -> domain_sig()" changes. Maybe it would make sense to not rename domain() but only add domain_cc().
> 
> Isn't it better to differentiate the two clearly?

Yes, probably it's better to clearly differentiate. I'm fine with that.

>> - I saw that you also fixed the invokedirect problem you've mentioned. Was this problem triggered by one of the tests you added?
> 
> Not by one of my tests but I think any test that uses invokedirect. So
> one of Zoltan's tests should trigger the problem.

Okay, sounds good.

Thanks,
Tobias

> 
> Roland.
> 


More information about the valhalla-dev mailing list