comparison src/share/vm/adlc/output_h.cpp @ 293:c3e045194476

6731641: assert(m->adr_type() == mach->adr_type(),"matcher should not change adr type") Summary: fixed few addP node type and narrow oop type problems. Reviewed-by: rasbold, never
author kvn
date Fri, 01 Aug 2008 10:06:45 -0700
parents d1605aabd0a1
children 4d9884b01ba6
comparison
equal deleted inserted replaced
257:40b69ca33f4b 293:c3e045194476
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 }