< prev index next >

src/hotspot/share/opto/matcher.hpp

Print this page

247   // Push a projection node onto the projection list
248   void push_projection(Node* node) {
249     _projection_list.push(node);
250   }
251 
252   Node* pop_projection() {
253     return _projection_list.pop();
254   }
255 
256   // Number of nodes in the projection list
257   uint number_of_projections() const {
258     return _projection_list.size();
259   }
260 
261   // Select instructions for entire method
262   void match();
263 
264   // Helper for match
265   OptoReg::Name warp_incoming_stk_arg( VMReg reg );
266 


267   // Transform, then walk.  Does implicit DCE while walking.
268   // Name changed from "transform" to avoid it being virtual.
269   Node *xform( Node *old_space_node, int Nodes );
270 
271   // Match a single Ideal Node - turn it into a 1-Node tree; Label & Reduce.
272   MachNode *match_tree( const Node *n );
273   MachNode *match_sfpt( SafePointNode *sfpt );
274   // Helper for match_sfpt
275   OptoReg::Name warp_outgoing_stk_arg( VMReg reg, OptoReg::Name begin_out_arg_area, OptoReg::Name &out_arg_limit_per_call );
276 
277   // Initialize first stack mask and related masks.
278   void init_first_stack_mask();
279 
280   // If we should save-on-entry this register
281   bool is_save_on_entry( int reg );
282 
283   // Fixup the save-on-entry registers
284   void Fixup_Save_On_Entry( );
285 
286   // --- Frame handling ---

396 
397   // Alignment of stack in bytes, standard Intel word alignment is 4.
398   // Sparc probably wants at least double-word (8).
399   static uint stack_alignment_in_bytes();
400   // Alignment of stack, measured in stack slots.
401   // The size of stack slots is defined by VMRegImpl::stack_slot_size.
402   static uint stack_alignment_in_slots() {
403     return stack_alignment_in_bytes() / (VMRegImpl::stack_slot_size);
404   }
405 
406   // Convert a sig into a calling convention register layout
407   // and find interesting things about it.
408   static OptoReg::Name  find_receiver();
409   // Return address register.  On Intel it is a stack-slot.  On PowerPC
410   // it is the Link register.  On Sparc it is r31?
411   virtual OptoReg::Name return_addr() const;
412   RegMask              _return_addr_mask;
413   // Return value register.  On Intel it is EAX.
414   static OptoRegPair   return_value(uint ideal_reg);
415   static OptoRegPair c_return_value(uint ideal_reg);
416   RegMask                     _return_value_mask;
417   // Inline Cache Register
418   static OptoReg::Name  inline_cache_reg();
419   static int            inline_cache_reg_encode();
420 
421   // Register for DIVI projection of divmodI
422   static const RegMask& divI_proj_mask();
423   // Register for MODI projection of divmodI
424   static const RegMask& modI_proj_mask();
425 
426   // Register for DIVL projection of divmodL
427   static const RegMask& divL_proj_mask();
428   // Register for MODL projection of divmodL
429   static const RegMask& modL_proj_mask();
430 
431   // Java-Interpreter calling convention
432   // (what you use when calling between compiled-Java and Interpreted-Java
433 
434   // Number of callee-save + always-save registers
435   // Ignores frame pointer and "special" registers
436   static int  number_of_saved_registers();

247   // Push a projection node onto the projection list
248   void push_projection(Node* node) {
249     _projection_list.push(node);
250   }
251 
252   Node* pop_projection() {
253     return _projection_list.pop();
254   }
255 
256   // Number of nodes in the projection list
257   uint number_of_projections() const {
258     return _projection_list.size();
259   }
260 
261   // Select instructions for entire method
262   void match();
263 
264   // Helper for match
265   OptoReg::Name warp_incoming_stk_arg( VMReg reg );
266 
267   RegMask* return_values_mask(const TypeFunc* tf);
268 
269   // Transform, then walk.  Does implicit DCE while walking.
270   // Name changed from "transform" to avoid it being virtual.
271   Node *xform( Node *old_space_node, int Nodes );
272 
273   // Match a single Ideal Node - turn it into a 1-Node tree; Label & Reduce.
274   MachNode *match_tree( const Node *n );
275   MachNode *match_sfpt( SafePointNode *sfpt );
276   // Helper for match_sfpt
277   OptoReg::Name warp_outgoing_stk_arg( VMReg reg, OptoReg::Name begin_out_arg_area, OptoReg::Name &out_arg_limit_per_call );
278 
279   // Initialize first stack mask and related masks.
280   void init_first_stack_mask();
281 
282   // If we should save-on-entry this register
283   bool is_save_on_entry( int reg );
284 
285   // Fixup the save-on-entry registers
286   void Fixup_Save_On_Entry( );
287 
288   // --- Frame handling ---

398 
399   // Alignment of stack in bytes, standard Intel word alignment is 4.
400   // Sparc probably wants at least double-word (8).
401   static uint stack_alignment_in_bytes();
402   // Alignment of stack, measured in stack slots.
403   // The size of stack slots is defined by VMRegImpl::stack_slot_size.
404   static uint stack_alignment_in_slots() {
405     return stack_alignment_in_bytes() / (VMRegImpl::stack_slot_size);
406   }
407 
408   // Convert a sig into a calling convention register layout
409   // and find interesting things about it.
410   static OptoReg::Name  find_receiver();
411   // Return address register.  On Intel it is a stack-slot.  On PowerPC
412   // it is the Link register.  On Sparc it is r31?
413   virtual OptoReg::Name return_addr() const;
414   RegMask              _return_addr_mask;
415   // Return value register.  On Intel it is EAX.
416   static OptoRegPair   return_value(uint ideal_reg);
417   static OptoRegPair c_return_value(uint ideal_reg);
418   RegMask*            _return_values_mask;
419   // Inline Cache Register
420   static OptoReg::Name  inline_cache_reg();
421   static int            inline_cache_reg_encode();
422 
423   // Register for DIVI projection of divmodI
424   static const RegMask& divI_proj_mask();
425   // Register for MODI projection of divmodI
426   static const RegMask& modI_proj_mask();
427 
428   // Register for DIVL projection of divmodL
429   static const RegMask& divL_proj_mask();
430   // Register for MODL projection of divmodL
431   static const RegMask& modL_proj_mask();
432 
433   // Java-Interpreter calling convention
434   // (what you use when calling between compiled-Java and Interpreted-Java
435 
436   // Number of callee-save + always-save registers
437   // Ignores frame pointer and "special" registers
438   static int  number_of_saved_registers();
< prev index next >