64
65 GrowableArray<ciObject *> _dependencies;
66
67 ciMethodBlocks *_methodBlocks;
68
69 BCEscapeAnalyzer* _parent;
70 int _level;
71
72 public:
73 class ArgumentMap;
74 class StateInfo;
75
76 private:
77 // helper functions
78 bool is_argument(int i) { return i >= 0 && i < _arg_size; }
79 void set_returned(ArgumentMap vars);
80 bool is_argument(ArgumentMap vars);
81 bool is_arg_stack(ArgumentMap vars);
82 void clear_bits(ArgumentMap vars, VectorSet &bs);
83 void set_method_escape(ArgumentMap vars);
84 void set_global_escape(ArgumentMap vars);
85 void set_dirty(ArgumentMap vars);
86 void set_modified(ArgumentMap vars, int offs, int size);
87
88 bool is_recursive_call(ciMethod* callee);
89 void add_dependence(ciKlass *klass, ciMethod *meth);
90 void propagate_dependencies(ciMethod *meth);
91 void invoke(StateInfo &state, Bytecodes::Code code, ciMethod* target, ciKlass* holder);
92
93 void iterate_one_block(ciBlock *blk, StateInfo &state, GrowableArray<ciBlock *> &successors);
94 void iterate_blocks(Arena *);
95 void merge_block_states(StateInfo *blockstates, ciBlock *dest, StateInfo *s_state);
96
97 // analysis
98 void initialize();
99 void clear_escape_info();
100 void compute_escape_info();
101 vmIntrinsics::ID known_intrinsic();
102 bool compute_escape_for_intrinsic(vmIntrinsics::ID iid);
103 bool do_analysis();
104
|
64
65 GrowableArray<ciObject *> _dependencies;
66
67 ciMethodBlocks *_methodBlocks;
68
69 BCEscapeAnalyzer* _parent;
70 int _level;
71
72 public:
73 class ArgumentMap;
74 class StateInfo;
75
76 private:
77 // helper functions
78 bool is_argument(int i) { return i >= 0 && i < _arg_size; }
79 void set_returned(ArgumentMap vars);
80 bool is_argument(ArgumentMap vars);
81 bool is_arg_stack(ArgumentMap vars);
82 void clear_bits(ArgumentMap vars, VectorSet &bs);
83 void set_method_escape(ArgumentMap vars);
84 void set_global_escape(ArgumentMap vars, bool merge = false);
85 void set_dirty(ArgumentMap vars);
86 void set_modified(ArgumentMap vars, int offs, int size);
87
88 bool is_recursive_call(ciMethod* callee);
89 void add_dependence(ciKlass *klass, ciMethod *meth);
90 void propagate_dependencies(ciMethod *meth);
91 void invoke(StateInfo &state, Bytecodes::Code code, ciMethod* target, ciKlass* holder);
92
93 void iterate_one_block(ciBlock *blk, StateInfo &state, GrowableArray<ciBlock *> &successors);
94 void iterate_blocks(Arena *);
95 void merge_block_states(StateInfo *blockstates, ciBlock *dest, StateInfo *s_state);
96
97 // analysis
98 void initialize();
99 void clear_escape_info();
100 void compute_escape_info();
101 vmIntrinsics::ID known_intrinsic();
102 bool compute_escape_for_intrinsic(vmIntrinsics::ID iid);
103 bool do_analysis();
104
|