GraalIR Virtual nodes

Gilles Duboscq gilles.m.duboscq at oracle.com
Tue Apr 12 12:17:47 UTC 2016


These nodes represent scalar replaced arrays and objects or their content [1, 2].

All the VirtualState nodes (including FrameState and VirtualObjectState) are "floating".
They are not sub-classes of FloatingNode because so far FloatingNode is reserved for floating nodes that return a value. Also, VirtualState node tend to need to be treated differently than other floating node.

The VirtualObjectNodes (including VirtualArray and VirtualBoxing) are also floating and represent the scalar replaced objects and are typically only reachable through VirtualState nodes.
They are not sub-classes of FloatingNode because they don't represent any value that is accessible during execution, are only used as part of the deoptimization metadata (VirtualState).

 Gilles

[1] http://ssw.jku.at/Research/Papers/Stadler14PhD/
[2] http://www.ssw.uni-linz.ac.at/Research/Papers/Stadler14/Stadler2014-CGO-PEA.pdf

On 12/04/16 13:06, Juan Fumero wrote:
> Hi all, 
>     I am working with FastR and I am analyzing the GraalIR after the
> Partial Evaluation. I have a question concerning virtual nodes in the
> Graal IR. What do they represent? Are they considered as
> FloatingNodes? 
> 
> For instance, for a simple R expression:
> 
> <code>
> f <- function(x) x * 2.0;
> </code>
> 
> I see nodes such as VirtualArray, VirtualObjectState or VirtualBoxing.
> 
> Thanks
> Juan
> 


More information about the graal-dev mailing list