Question about MemNode

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

In C2, every node has a control edge field, specified by input zero or

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

-- Chuck

2009/10/19 Chuck Rasbold <rasbold at>

> Moving this question to hotspot-compiler-dev....
> 2009/10/17 Ramón García <ramon.garcia.f+java at<ramon.garcia.f%2Bjava at>
> >
> 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...

More information about the hotspot-compiler-dev mailing list