< prev index next >

src/share/vm/adlc/archDesc.hpp

Print this page




  96 class ArchDesc {
  97 private:
  98   FormDict      _globalNames;        // Global names
  99   Dict          _idealIndex;         // Map ideal names to index in enumeration
 100   ExprDict      _globalDefs;         // Global definitions, #defines
 101   int           _internalOpCounter;  // Internal Operand Counter
 102 
 103   FormList      _header;             // List of Source Code Forms for hpp file
 104   FormList      _pre_header;         // ditto for the very top of the hpp file
 105   FormList      _source;             // List of Source Code Forms for output
 106   FormList      _instructions;       // List of Instruction Forms for output
 107   FormList      _machnodes;          // List of Node Classes (special for pipelining)
 108   FormList      _operands;           // List of Operand Forms for output
 109   FormList      _opclass;            // List of Operand Class Forms for output
 110   FormList      _attributes;         // List of Attribute Forms for parsing
 111   RegisterForm *_register;           // Only one Register Form allowed
 112   FrameForm    *_frame;              // Describe stack-frame layout
 113   EncodeForm   *_encode;             // Only one Encode Form allowed
 114   PipelineForm *_pipeline;           // Pipeline Form for output
 115 
 116   bool _has_match_rule[_last_opcode];  // found AD rule for ideal node in <arch>.ad
 117 
 118   MatchList    *_mlistab[_last_opcode]; // Array of MatchLists
 119 
 120   // The Architecture Description identifies which user-defined operand can be used
 121   // to access [stack_pointer + offset]
 122   OperandForm  *_cisc_spill_operand;
 123 
 124   // If a Call node uses $constanttablebase, it gets MachConstantBaseNode
 125   // by the matcher and the matcher will modify the jvms. If so, jvm states
 126   // always have to be cloned when a node is cloned.  Adlc generates
 127   // Compile::needs_clone_jvms() accordingly.
 128   bool _needs_clone_jvms;
 129 
 130   // Methods for outputting the DFA
 131   void gen_match(FILE *fp, MatchList &mlist, ProductionState &status, Dict &operands_chained_from);
 132   void chain_rule(FILE *fp, const char *indent, const char *ideal,
 133                   const Expr *icost, const char *irule,
 134                   Dict &operands_chained_from, ProductionState &status);
 135   void expand_opclass(FILE *fp, const char *indent, const Expr *cost,
 136                       const char *result_type, ProductionState &status);
 137   Expr *calc_cost(FILE *fp, const char *spaces, MatchList &mList, ProductionState &status);
 138   void prune_matchlist(Dict &minimize, MatchList &mlist);




  96 class ArchDesc {
  97 private:
  98   FormDict      _globalNames;        // Global names
  99   Dict          _idealIndex;         // Map ideal names to index in enumeration
 100   ExprDict      _globalDefs;         // Global definitions, #defines
 101   int           _internalOpCounter;  // Internal Operand Counter
 102 
 103   FormList      _header;             // List of Source Code Forms for hpp file
 104   FormList      _pre_header;         // ditto for the very top of the hpp file
 105   FormList      _source;             // List of Source Code Forms for output
 106   FormList      _instructions;       // List of Instruction Forms for output
 107   FormList      _machnodes;          // List of Node Classes (special for pipelining)
 108   FormList      _operands;           // List of Operand Forms for output
 109   FormList      _opclass;            // List of Operand Class Forms for output
 110   FormList      _attributes;         // List of Attribute Forms for parsing
 111   RegisterForm *_register;           // Only one Register Form allowed
 112   FrameForm    *_frame;              // Describe stack-frame layout
 113   EncodeForm   *_encode;             // Only one Encode Form allowed
 114   PipelineForm *_pipeline;           // Pipeline Form for output
 115 
 116   bool _has_match_rule[static_cast<uint>(Opcodes::_last_opcode)];  // found AD rule for ideal node in <arch>.ad
 117 
 118   MatchList    *_mlistab[static_cast<uint>(Opcodes::_last_opcode)]; // Array of MatchLists
 119 
 120   // The Architecture Description identifies which user-defined operand can be used
 121   // to access [stack_pointer + offset]
 122   OperandForm  *_cisc_spill_operand;
 123 
 124   // If a Call node uses $constanttablebase, it gets MachConstantBaseNode
 125   // by the matcher and the matcher will modify the jvms. If so, jvm states
 126   // always have to be cloned when a node is cloned.  Adlc generates
 127   // Compile::needs_clone_jvms() accordingly.
 128   bool _needs_clone_jvms;
 129 
 130   // Methods for outputting the DFA
 131   void gen_match(FILE *fp, MatchList &mlist, ProductionState &status, Dict &operands_chained_from);
 132   void chain_rule(FILE *fp, const char *indent, const char *ideal,
 133                   const Expr *icost, const char *irule,
 134                   Dict &operands_chained_from, ProductionState &status);
 135   void expand_opclass(FILE *fp, const char *indent, const Expr *cost,
 136                       const char *result_type, ProductionState &status);
 137   Expr *calc_cost(FILE *fp, const char *spaces, MatchList &mList, ProductionState &status);
 138   void prune_matchlist(Dict &minimize, MatchList &mlist);


< prev index next >