hotspot/src/share/vm/adlc/output_h.cpp
changeset 1055 f4fb9fb08038
parent 670 ddf3e9583f2f
child 1495 128fe18951ed
equal deleted inserted replaced
965:15aa5abc6628 1055:f4fb9fb08038
  1846       }
  1846       }
  1847       // Special hack for ideal CMoveP; ideal type depends on inputs
  1847       // Special hack for ideal CMoveP; ideal type depends on inputs
  1848       fprintf(fp,"  const Type            *bottom_type() const { const Type *t = in(oper_input_base()+%d)->bottom_type(); return (req() <= oper_input_base()+%d) ? t : t->meet(in(oper_input_base()+%d)->bottom_type()); } // CMoveP\n",
  1848       fprintf(fp,"  const Type            *bottom_type() const { const Type *t = in(oper_input_base()+%d)->bottom_type(); return (req() <= oper_input_base()+%d) ? t : t->meet(in(oper_input_base()+%d)->bottom_type()); } // CMoveP\n",
  1849         offset, offset+1, offset+1);
  1849         offset, offset+1, offset+1);
  1850     }
  1850     }
       
  1851     else if( instr->_matrule && instr->_matrule->_rChild && !strcmp(instr->_matrule->_rChild->_opType,"CMoveN") ) {
       
  1852       int offset = 1;
       
  1853       // Special special hack to see if the Cmp? has been incorporated in the conditional move
       
  1854       MatchNode *rl = instr->_matrule->_rChild->_lChild;
       
  1855       if( rl && !strcmp(rl->_opType, "Binary") ) {
       
  1856           MatchNode *rlr = rl->_rChild;
       
  1857           if (rlr && strncmp(rlr->_opType, "Cmp", 3) == 0)
       
  1858             offset = 2;
       
  1859       }
       
  1860       // Special hack for ideal CMoveN; ideal type depends on inputs
       
  1861       fprintf(fp,"  const Type            *bottom_type() const { const Type *t = in(oper_input_base()+%d)->bottom_type(); return (req() <= oper_input_base()+%d) ? t : t->meet(in(oper_input_base()+%d)->bottom_type()); } // CMoveN\n",
       
  1862         offset, offset+1, offset+1);
       
  1863     }
  1851     else if( instr->needs_base_oop_edge(_globalNames) ) {
  1864     else if( instr->needs_base_oop_edge(_globalNames) ) {
  1852       // Special hack for ideal AddP.  Bottom type is an oop IFF it has a
  1865       // Special hack for ideal AddP.  Bottom type is an oop IFF it has a
  1853       // legal base-pointer input.  Otherwise it is NOT an oop.
  1866       // legal base-pointer input.  Otherwise it is NOT an oop.
  1854       fprintf(fp,"  const Type *bottom_type() const { return AddPNode::mach_bottom_type(this); } // AddP\n");
  1867       fprintf(fp,"  const Type *bottom_type() const { return AddPNode::mach_bottom_type(this); } // AddP\n");
  1855     }
  1868     }