src/share/vm/opto/node.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/opto

src/share/vm/opto/node.hpp

Print this page
rev 7884 : 8073480: C2 should optimize explicit range checks
Summary: explicit range checks should be recognized by C2
Reviewed-by:


 914   // If we accidentally generate a hash with value NO_HASH the node
 915   // won't go into the table and we'll lose a little optimization.
 916   enum { NO_HASH = 0 };
 917   virtual uint hash() const;
 918   virtual uint cmp( const Node &n ) const;
 919 
 920   // Operation appears to be iteratively computed (such as an induction variable)
 921   // It is possible for this operation to return false for a loop-varying
 922   // value, if it appears (by local graph inspection) to be computed by a simple conditional.
 923   bool is_iteratively_computed();
 924 
 925   // Determine if a node is Counted loop induction variable.
 926   // The method is defined in loopnode.cpp.
 927   const Node* is_loop_iv() const;
 928 
 929   // Return a node with opcode "opc" and same inputs as "this" if one can
 930   // be found; Otherwise return NULL;
 931   Node* find_similar(int opc);
 932 
 933   // Return the unique control out if only one. Null if none or more than one.
 934   Node* unique_ctrl_out();
 935 
 936 //----------------- Code Generation
 937 
 938   // Ideal register class for Matching.  Zero means unmatched instruction
 939   // (these are cloned instead of converted to machine nodes).
 940   virtual uint ideal_reg() const;
 941 
 942   static const uint NotAMachineReg;   // must be > max. machine register
 943 
 944   // Do we Match on this edge index or not?  Generally false for Control
 945   // and true for everything else.  Weird for calls & returns.
 946   virtual uint match_edge(uint idx) const;
 947 
 948   // Register class output is returned in
 949   virtual const RegMask &out_RegMask() const;
 950   // Register class input is expected in
 951   virtual const RegMask &in_RegMask(uint) const;
 952   // Should we clone rather than spill this instruction?
 953   bool rematerialize() const;
 954 




 914   // If we accidentally generate a hash with value NO_HASH the node
 915   // won't go into the table and we'll lose a little optimization.
 916   enum { NO_HASH = 0 };
 917   virtual uint hash() const;
 918   virtual uint cmp( const Node &n ) const;
 919 
 920   // Operation appears to be iteratively computed (such as an induction variable)
 921   // It is possible for this operation to return false for a loop-varying
 922   // value, if it appears (by local graph inspection) to be computed by a simple conditional.
 923   bool is_iteratively_computed();
 924 
 925   // Determine if a node is Counted loop induction variable.
 926   // The method is defined in loopnode.cpp.
 927   const Node* is_loop_iv() const;
 928 
 929   // Return a node with opcode "opc" and same inputs as "this" if one can
 930   // be found; Otherwise return NULL;
 931   Node* find_similar(int opc);
 932 
 933   // Return the unique control out if only one. Null if none or more than one.
 934   Node* unique_ctrl_out() const;
 935 
 936 //----------------- Code Generation
 937 
 938   // Ideal register class for Matching.  Zero means unmatched instruction
 939   // (these are cloned instead of converted to machine nodes).
 940   virtual uint ideal_reg() const;
 941 
 942   static const uint NotAMachineReg;   // must be > max. machine register
 943 
 944   // Do we Match on this edge index or not?  Generally false for Control
 945   // and true for everything else.  Weird for calls & returns.
 946   virtual uint match_edge(uint idx) const;
 947 
 948   // Register class output is returned in
 949   virtual const RegMask &out_RegMask() const;
 950   // Register class input is expected in
 951   virtual const RegMask &in_RegMask(uint) const;
 952   // Should we clone rather than spill this instruction?
 953   bool rematerialize() const;
 954 


src/share/vm/opto/node.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File