src/share/vm/opto/idealGraphPrinter.hpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/opto/idealGraphPrinter.hpp Mon Jun 23 14:01:08 2008
--- new/src/share/vm/opto/idealGraphPrinter.hpp Mon Jun 23 14:01:07 2008
*** 80,305 ****
--- 80,125 ----
static const char *BYTECODES_ELEMENT;
static const char *METHOD_BCI_PROPERTY;
static const char *METHOD_SHORT_NAME_PROPERTY;
static const char *ASSEMBLY_ELEMENT;
class Property {
+ elapsedTimer _walk_time;
+ elapsedTimer _output_time;
+ elapsedTimer _build_blocks_time;
private:
const char *_name;
const char *_value;
public:
Property();
Property(const Property* p);
~Property();
Property(const char *name, const char *value);
Property(const char *name, int value);
bool equals(Property* p);
void print(IdealGraphPrinter *printer);
void print_as_attribute(IdealGraphPrinter *printer);
bool is_null();
void clean();
const char *name();
static const char* dup(const char *str) {
char * copy = new char[strlen(str)+1];
strcpy(copy, str);
return copy;
}
};
class Properties {
private:
GrowableArray<Property *> *list;
public:
Properties();
~Properties();
void add(Property *p);
void remove(const char *name);
bool equals(Properties* p);
void print(IdealGraphPrinter *printer);
void print_as_attributes(IdealGraphPrinter *printer);
void clean();
};
class Description {
private:
State _state;
public:
Description();
State state();
void set_state(State s);
void print(IdealGraphPrinter *printer);
virtual void print_changed(IdealGraphPrinter *printer) = 0;
virtual void print_removed(IdealGraphPrinter *printer) = 0;
};
class NodeDescription : public Description{
public:
static int count;
private:
GrowableArray<NodeDescription *> _succs;
int _block_index;
uintptr_t _id;
Properties _properties;
Node* _node;
public:
NodeDescription(Node* node);
~NodeDescription();
Node* node();
// void set_node(Node* node);
GrowableArray<NodeDescription *>* succs();
void init_succs();
void clear_succs();
void add_succ(NodeDescription *desc);
int block_index();
void set_block_index(int i);
Properties* properties();
virtual void print_changed(IdealGraphPrinter *printer);
virtual void print_removed(IdealGraphPrinter *printer);
bool equals(NodeDescription *desc);
uint id();
};
class Block {
private:
NodeDescription *_start;
NodeDescription *_proj;
GrowableArray<int> _succs;
GrowableArray<NodeDescription *> _nodes;
GrowableArray<int> _dominates;
GrowableArray<int> _children;
int _semi;
int _parent;
GrowableArray<int> _pred;
GrowableArray<int> _bucket;
int _index;
int _dominator;
int _ancestor;
int _label;
public:
Block();
Block(int index);
void add_node(NodeDescription *n);
GrowableArray<NodeDescription *>* nodes();
GrowableArray<int>* children();
void add_child(int i);
void add_succ(int index);
GrowableArray<int>* succs();
GrowableArray<int>* dominates();
void add_dominates(int i);
NodeDescription *start();
NodeDescription *proj();
void set_start(NodeDescription *n);
void set_proj(NodeDescription *n);
int label();
void set_label(int i);
int ancestor();
void set_ancestor(int i);
int index();
int dominator();
void set_dominator(int i);
int parent();
void set_parent(int i);
int semi();
GrowableArray<int>* bucket();
void add_to_bucket(int i);
void clear_bucket();
GrowableArray<int>* pred();
void set_semi(int i);
void add_pred(int i);
};
class EdgeDescription : public Description {
private:
int _from;
int _to;
int _index;
public:
EdgeDescription(int from, int to, int index);
~EdgeDescription();
virtual void print_changed(IdealGraphPrinter *printer);
virtual void print_removed(IdealGraphPrinter *printer);
bool equals(EdgeDescription *desc);
int from();
int to();
};
static int _file_count;
networkStream *_stream;
+ xmlStream *_xml;
outputStream *_output;
ciMethod *_current_method;
GrowableArray<NodeDescription *> _nodes;
GrowableArray<EdgeDescription *> _edges;
int _depth;
Arena *_arena;
char buffer[128];
bool _should_send_method;
PhaseChaitin* _chaitin;
bool _clear_nodes;
Matcher* _matcher;
bool _traverse_outs;
+ Compile *C;
void start_element_helper(const char *name, Properties *properties, bool endElement, bool print_indent = false, bool print_return = true);
NodeDescription *create_node_description(Node* node);
static void pre_node(Node* node, void *env);
static void post_node(Node* node, void *env);
void schedule_latest(int **common_dominator, GrowableArray<Block>* blocks);
void build_common_dominator(int **common_dominator, int index, GrowableArray<Block>* blocks);
void compress(int index, GrowableArray<Block>* blocks);
int eval(int index, GrowableArray<Block>* blocks);
void link(int index1, int index2, GrowableArray<Block>* blocks);
void build_dominators(GrowableArray<Block>* blocks);
void build_blocks(Node *node);
void walk(Node *n);
void start_element(const char *name, Properties *properties = NULL, bool print_indent = false, bool print_return = true);
void simple_element(const char *name, Properties *properties = NULL, bool print_indent = false);
void end_element(const char *name, bool print_indent = false, bool print_return = true);
void print_edge(int from, int to, int index);
void print_indent();
void print_method(ciMethod *method, int bci, InlineTree *tree);
void print_inline_tree(InlineTree *tree);
! void clear_nodes();
! void visit_node(Node *n, void *param);
+ void walk_nodes(Node *start, void *param);
+ void begin_elem(const char *s);
+ void end_elem();
+ void begin_head(const char *s);
+ void end_head();
+ void print_attr(const char *name, const char *val);
+ void print_attr(const char *name, intptr_t val);
+ void print_prop(const char *name, const char *val);
+ void print_prop(const char *name, int val);
+ void tail(const char *name);
+ void head(const char *name);
+ void text(const char *s);
+ intptr_t get_node_id(Node *n);
IdealGraphPrinter();
~IdealGraphPrinter();
public:
*** 306,316 ****
--- 126,135 ----
static void clean_up();
static IdealGraphPrinter *printer();
bool traverse_outs();
void set_traverse_outs(bool b);
void print_ifg(PhaseIFG* ifg);
outputStream *output();
void print_inlining(Compile* compile);
void begin_method(Compile* compile);
void end_method();
void print_method(Compile* compile, const char *name, int level=1, bool clear_nodes = false);
src/share/vm/opto/idealGraphPrinter.hpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File