src/share/vm/adlc/formsopt.cpp

Print this page
rev 2699 : 7090968: Allow adlc register class to depend on runtime conditions
Summary: allow reg_class definition as a function.
Reviewed-by:


 202 }
 203 
 204 // Register number used in machine-independent code
 205 uint32 RegDef::register_num()    const {
 206   return _register_num;
 207 }
 208 
 209 void RegDef::dump() {
 210   output(stderr);
 211 }
 212 
 213 void RegDef::output(FILE *fp) {         // Write info to output files
 214   fprintf(fp,"RegDef: %s (%s) encode as %s  using number %d\n",
 215           _regname, (_callconv?_callconv:""), _register_encode, _register_num);
 216   fprintf(fp,"\n");
 217 }
 218 
 219 
 220 //------------------------------RegClass---------------------------------------
 221 // Construct a register class into which registers will be inserted
 222 RegClass::RegClass(const char *classid) : _stack_or_reg(false), _classid(classid), _regDef(cmpstr,hashstr, Form::arena) {


 223 }
 224 
 225 // record a register in this class
 226 void RegClass::addReg(RegDef *regDef) {
 227   _regDefs.addName(regDef->_regname);
 228   _regDef.Insert((void*)regDef->_regname, regDef);
 229 }
 230 
 231 // Number of registers in class
 232 uint RegClass::size() const {
 233   return _regDef.Size();
 234 }
 235 
 236 const RegDef *RegClass::get_RegDef(const char *rd_name) const {
 237   return  (const RegDef*)_regDef[rd_name];
 238 }
 239 
 240 void RegClass::reset() {
 241   _regDefs.reset();
 242 }




 202 }
 203 
 204 // Register number used in machine-independent code
 205 uint32 RegDef::register_num()    const {
 206   return _register_num;
 207 }
 208 
 209 void RegDef::dump() {
 210   output(stderr);
 211 }
 212 
 213 void RegDef::output(FILE *fp) {         // Write info to output files
 214   fprintf(fp,"RegDef: %s (%s) encode as %s  using number %d\n",
 215           _regname, (_callconv?_callconv:""), _register_encode, _register_num);
 216   fprintf(fp,"\n");
 217 }
 218 
 219 
 220 //------------------------------RegClass---------------------------------------
 221 // Construct a register class into which registers will be inserted
 222 RegClass::RegClass(const char *classid) : _stack_or_reg(false), _classid(classid), _regDef(cmpstr,hashstr, Form::arena),
 223                                           _user_defined(NULL)
 224 {
 225 }
 226 
 227 // record a register in this class
 228 void RegClass::addReg(RegDef *regDef) {
 229   _regDefs.addName(regDef->_regname);
 230   _regDef.Insert((void*)regDef->_regname, regDef);
 231 }
 232 
 233 // Number of registers in class
 234 uint RegClass::size() const {
 235   return _regDef.Size();
 236 }
 237 
 238 const RegDef *RegClass::get_RegDef(const char *rd_name) const {
 239   return  (const RegDef*)_regDef[rd_name];
 240 }
 241 
 242 void RegClass::reset() {
 243   _regDefs.reset();
 244 }