86 // Node labeling iterator for instruction selection |
86 // Node labeling iterator for instruction selection |
87 Node *Label_Root( const Node *n, State *svec, Node *control, const Node *mem ); |
87 Node *Label_Root( const Node *n, State *svec, Node *control, const Node *mem ); |
88 |
88 |
89 Node *transform( Node *dummy ); |
89 Node *transform( Node *dummy ); |
90 |
90 |
91 Node_List &_proj_list; // For Machine nodes killing many values |
91 Node_List _projection_list; // For Machine nodes killing many values |
92 |
92 |
93 Node_Array _shared_nodes; |
93 Node_Array _shared_nodes; |
94 |
94 |
95 debug_only(Node_Array _old2new_map;) // Map roots of ideal-trees to machine-roots |
95 debug_only(Node_Array _old2new_map;) // Map roots of ideal-trees to machine-roots |
96 debug_only(Node_Array _new2old_map;) // Maps machine nodes back to ideal |
96 debug_only(Node_Array _new2old_map;) // Maps machine nodes back to ideal |
181 // List is valid in the post-matching space. |
181 // List is valid in the post-matching space. |
182 Node_List _null_check_tests; |
182 Node_List _null_check_tests; |
183 void collect_null_checks( Node *proj, Node *orig_proj ); |
183 void collect_null_checks( Node *proj, Node *orig_proj ); |
184 void validate_null_checks( ); |
184 void validate_null_checks( ); |
185 |
185 |
186 Matcher( Node_List &proj_list ); |
186 Matcher(); |
|
187 |
|
188 // Get a projection node at position pos |
|
189 Node* get_projection(uint pos) { |
|
190 return _projection_list[pos]; |
|
191 } |
|
192 |
|
193 // Push a projection node onto the projection list |
|
194 void push_projection(Node* node) { |
|
195 _projection_list.push(node); |
|
196 } |
|
197 |
|
198 Node* pop_projection() { |
|
199 return _projection_list.pop(); |
|
200 } |
|
201 |
|
202 // Number of nodes in the projection list |
|
203 uint number_of_projections() const { |
|
204 return _projection_list.size(); |
|
205 } |
187 |
206 |
188 // Select instructions for entire method |
207 // Select instructions for entire method |
189 void match( ); |
208 void match(); |
|
209 |
190 // Helper for match |
210 // Helper for match |
191 OptoReg::Name warp_incoming_stk_arg( VMReg reg ); |
211 OptoReg::Name warp_incoming_stk_arg( VMReg reg ); |
192 |
212 |
193 // Transform, then walk. Does implicit DCE while walking. |
213 // Transform, then walk. Does implicit DCE while walking. |
194 // Name changed from "transform" to avoid it being virtual. |
214 // Name changed from "transform" to avoid it being virtual. |