CallTarget and DirectCallNode in Truffle Languages

Juan Fumero juan.fumero at ed.ac.uk
Thu Jan 19 11:08:53 UTC 2017


Hi guys, 

   I am working with JRuby and R Truffle implementations. I have a few
questions concerning the callTarget and the directCallNode, most
probably I do not fully understand concepts here. 

In R, I directly execute the function as follow:

function.getTarget().call(args);

Running with Graal, the callTarget will be an optimizedCallTarget. 
Till here, everything ok, 


In JRuby the callTarget is not directly executed and instead, a
directCallNode is used.

directCallNode.call(frame, args);

The directCallNode encapsulates the callTarget. However, it is not the
"original" callTarget I see in the signature in CallBlockNode#callBlock
(cachedCallTarget). 
This provokes I see a different object optimizedCallTarget when I
compile ( and I was expecting the same in my implementation). 

The difference is that, directCallNode.getCallTarget() is different to
directCallNode.getCurrentCallTarget().

1. Why two different strategies for calling a function (R vs JRuby) ? 
2. Should not be the same callTarget anyway? 

Thanks a lot

Regards
Juan 

-- 
The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.



More information about the graal-dev mailing list