Question about MemNode (original) (raw)

Chuck Rasbold rasbold at google.com
Mon Oct 19 11:17:41 PDT 2009


In C2, every node has a control edge field, specified by input zero or in(0).

The control edge is used to specify control dependencies, that is, a dependency on a node where a data dependency can not adequately represent all of the input constraints on a node. A control edge will restrict the placement of a node when the sea of nodes is reduced a more conventional CFG. Typical examples of possible control inputs are SafePointNodes (CallNodes are a subclass of these), CProjNodes (IfTrue, IfFalse and CatchProj) and RegionNodes.

For pure dataflow nodes, such as an AddNode, the control edge is always null since data constraints properly fix the operation in the sea of nodes.

As a special case, RegionNodes always point to themselves on the control edge.

-- Chuck

2009/10/19 Chuck Rasbold <rasbold at google.com>

Moving this question to hotspot-compiler-dev....

2009/10/17 Ramón García <ramon.garcia.f+java at gmail.com<ramon.garcia.f%2Bjava at gmail.com> > I am trying to understand the code in memnode.hpp

What is the meaning of the nodes Control, Memory and Address that a MemNode has? I understand more or less that a MemNode defines a memory reference, Memory defines the base and Address defines the offset. But the meaning of Control is still unclear to me (a comment describes it as "// When is it safe to do this load?"). -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20091019/15552fe9/attachment.html



More information about the hotspot-compiler-dev mailing list