Mercurial > hg > graal-jvmci-8
comparison src/share/vm/opto/matcher.hpp @ 12355:cefad50507d8
Merge with hs25-b53
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Fri, 11 Oct 2013 10:38:03 +0200 |
parents | c9ccd7b85f20 |
children | 59e8ad757e19 |
comparison
equal
deleted
inserted
replaced
12058:ccb4f2af2319 | 12355:cefad50507d8 |
---|---|
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. |
315 // Register for DIVL projection of divmodL | 335 // Register for DIVL projection of divmodL |
316 static RegMask divL_proj_mask(); | 336 static RegMask divL_proj_mask(); |
317 // Register for MODL projection of divmodL | 337 // Register for MODL projection of divmodL |
318 static RegMask modL_proj_mask(); | 338 static RegMask modL_proj_mask(); |
319 | 339 |
340 static const RegMask mathExactI_result_proj_mask(); | |
341 static const RegMask mathExactI_flags_proj_mask(); | |
342 | |
320 // Use hardware DIV instruction when it is faster than | 343 // Use hardware DIV instruction when it is faster than |
321 // a code which use multiply for division by constant. | 344 // a code which use multiply for division by constant. |
322 static bool use_asm_for_ldiv_by_con( jlong divisor ); | 345 static bool use_asm_for_ldiv_by_con( jlong divisor ); |
323 | 346 |
324 static const RegMask method_handle_invoke_SP_save_mask(); | 347 static const RegMask method_handle_invoke_SP_save_mask(); |