soot.toolkits.graph

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » Code Analyzer » soot » soot.toolkits.graph 
soot.toolkits.graph
Toolkit to produce and manipulate various types of control flow graphs. While the CFG classes do not impose restrictions on the types of graph nodes, the nodes are typically instances of {@link Unit} or {@link Block}. The latter corresponds to basic blocks of Units. Some of the CFG classes include the control flow corresponding to thrown exceptions, while others abstract away exception-related edges.
Java Source File NameTypeComment
ArrayRefBlockGraph.javaClass A CFG where the nodes are Block instances, and where Unit s which include array references start new blocks.
Block.javaClass Represents BasicBlocks that partition a method body.
BlockGraph.javaClass

Represents the control flow graph of a Body at the basic block level.

BlockGraphConverter.javaClass This utility class can convert any BlockGraph to a single-headed and single-tailed graph by inserting appropriate Start or Stop nodes.
BriefBlockGraph.javaClass

Represents a CFG for a Body where the nodes are Block s and edges are derived from control flow.

BriefUnitGraph.javaClass Represents a CFG where the nodes are Unit instances, and where no edges are included to account for control flow associated with exceptions.
ClassicCompleteBlockGraph.javaClass

Represents a CFG where the nodes are Block s and the edges are derived from control flow.

ClassicCompleteUnitGraph.javaClass

Represents a CFG for a Body instance where the nodes are Unit instances, and where edges are a conservative indication of unexceptional and exceptional control flow.

ClassicCompleteUnitGraph attempts to duplicate the results that would have been produced by Soot's CompleteUnitGraph in releases up to Soot 2.1.0 (the one known discrepancy is that the 2.1.0 CompleteUnitGraph would include two edges joining one node to another Unit s if the first node both branched to and fell through to the second).

CompleteBlockGraph.javaClass

Represents a CFG for a Body instance where the nodes are Block instances, and where control flow associated with exceptions is taken into account.

CompleteUnitGraph.javaClass

Represents a CFG for a Body instance where the nodes are soot.Unit instances, and where control flow associated with exceptions is taken into account.

CytronDominanceFrontier.javaClass Class to compute the DominanceFrontier using Cytron's celebrated efficient algorithm.
DirectedGraph.javaInterface Defines the notion of a directed graph.
DominanceFrontier.javaInterface Interface to compute and/or store the dominance frontiers of nodes in a dominator tree.
DominatorAnalysis.javaClass
DominatorNode.javaClass Represents a dominator node in DominatorTree.
DominatorsFinder.javaInterface General interface for a dominators analysis.
DominatorTree.javaClass Constructs a dominator tree structure from the given DominatorsFinder.
DominatorTreeAdapter.javaClass This adapter provides a DirectedGraph interface to DominatorTree.

This might be useful if e.g.

ExceptionalBlockGraph.javaClass

Represents a CFG where the nodes are Block s and the edges are derived from control flow.

ExceptionalGraph.javaInterface
ExceptionalUnitGraph.javaClass

Represents a control flow graph for a Body instance where the nodes are Unit instances, and where control flow associated with exceptions is taken into account.

To describe precisely the circumstances under which exceptional edges are added to the graph, we need to distinguish the exceptions thrown explicitly by a throw instruction from the exceptions which are thrown implicitly by the VM to signal an error it encounters in the course of executing an instruction, which need not be a throw.

For every ThrowInst or ThrowStmt Unit which may explicitly throw an exception that would be caught by a Trap in the Body, there will be an edge from the throw Unit to the Trap handler's first Unit.

For every Unit which may implicitly throw an exception that could be caught by a Trap in the Body, there will be an edge from each of the excepting Unit's predecessors to the Trap handler's first Unit (since any of those predecessors may have been the last Unit to complete execution before the handler starts execution).

GraphComparer.javaClass
HashMutableDirectedGraph.javaClass HashMap based implementation of a MutableBlockGraph.
HashMutableEdgeLabelledDirectedGraph.javaClass HashMap based implementation of a MutableEdgeLabelledDirectedGraph.
HashReversibleGraph.javaClass
InverseGraph.javaClass An inverted graph of a directed graph.
LoopNestTree.javaClass A loop nesting tree, implemented as a tree-map.
MemoryEfficientGraph.javaClass A memory efficient version of HashMutableDirectedGraph, in the sense that throw-away objects passed as arguments will not be kept in the process of adding edges.
MHGDominatorsFinder.javaClass Calculate dominators for basic blocks.

Uses the algorithm contained in Dragon book, pg.

MHGPostDominatorsFinder.javaClass Post-dominators finder for multi-headed graph. The dominators returned by this finder are postdominators, so e.g.
MutableDirectedGraph.javaInterface Defines a DirectedGraph which is modifiable.
MutableEdgeLabelledDirectedGraph.javaInterface Defines a DirectedGraph which is modifiable and associates a label object with every edge.
Orderer.javaInterface An orderer builds an order on a directed, not necessarily acyclic, graph.
PostDominatorAnalysis.javaClass
PseudoTopologicalOrderer.javaClass Orders in pseudo-topological order, the nodes of a DirectedGraph instance.
ReversePseudoTopologicalOrderer.javaClass Convenience class which returns a PseudoTopologicalOrderer with the mReversed flag set by default.
ReversibleGraph.javaInterface DirectedGraph which can be reversed and re-reversed.
SimpleDominatorsFinder.javaClass Wrapper class for a simple dominators analysis based on a simple flow analysis algorithm.
SlowPseudoTopologicalOrderer.javaClass Provide the pseudo topological order of a graph's nodes.
StronglyConnectedComponents.javaClass Identifies and provides an interface to query the strongly-connected components of DirectedGraph instances.
TrapUnitGraph.javaClass

Represents a CFG for a Body instance where the nodes are Unit instances, and where, in additional to unexceptional control flow edges, edges are added from every trapped Unit to the Trap 's handler Unit, regardless of whether the trapped Units may actually throw the exception caught by the Trap.

There are three distinctions between the exceptional edges added in TrapUnitGraph and the exceptional edges added in ExceptionalUnitGraph :

  1. In ExceptionalUnitGraph, the edges to Traps are associated with Units which may actually throw an exception which the Trap catches (according to the soot.toolkits.exceptions.ThrowAnalysis ThrowAnalysis used in the construction of the graph).
UnitGraph.javaClass
ZonedBlockGraph.javaClass A CFG where the nodes are Block instances, and where exception boundaries are taken into account when finding the Blocks for the provided Body.
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.