Question about MemNode
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