Initial implementation of an edge-labeled instruction flow graph.
authorkmillikin@chromium.org <kmillikin@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 8 Mar 2010 12:53:11 +0000 (12:53 +0000)
committerkmillikin@chromium.org <kmillikin@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 8 Mar 2010 12:53:11 +0000 (12:53 +0000)
commit8528d650d8a21ba4a20c2fa6838d0ce9cae3e0a5
tree227d305208ac8fdae2a63b9ded33fb01ca87d2ad
parent6b47d262171a8212e00e9e602ed14310692fe87a
Initial implementation of an edge-labeled instruction flow graph.

The flow graph is built by walking the AST.  Edges are labeled with
instructions (AST nodes).  Normal nodes have a single predecessor edge and a
single (labeled) successor edge.  Branch nodes are explicit, they have a
single predecessor edge and a pair of (unlabeled) successor edges.  Merge
nodes are explicit, they have a pair of predecessor edges and a single
(unlabeled) successor edge.

There is a distinguished (normal) entry node and a distinguished (special)
exit node with arbitrarily many predecessor edges and no successor edges.

The graph is intended to support graph-based analysis and transformation.

Review URL: http://codereview.chromium.org/660449

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4051 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
src/ast.h
src/compiler.cc
src/data-flow.cc
src/data-flow.h
src/flag-definitions.h
src/prettyprinter.cc