2173 return buf+strlen(buf);
2174 }
2175
2176 void PhaseChaitin::dump_for_spill_split_recycle() const {
2177 if( WizardMode && (PrintCompilation || PrintOpto) ) {
2178 // Display which live ranges need to be split and the allocator's state
2179 tty->print_cr("Graph-Coloring Iteration %d will split the following live ranges", _trip_cnt);
2180 for (uint bidx = 1; bidx < _lrg_map.max_lrg_id(); bidx++) {
2181 if( lrgs(bidx).alive() && lrgs(bidx).reg() >= LRG::SPILL_REG ) {
2182 tty->print("L%d: ", bidx);
2183 lrgs(bidx).dump();
2184 }
2185 }
2186 tty->cr();
2187 dump();
2188 }
2189 }
2190
2191 void PhaseChaitin::dump_frame() const {
2192 const char *fp = OptoReg::regname(OptoReg::c_frame_pointer);
2193 const TypeTuple *domain = C->tf()->domain();
2194 const int argcnt = domain->cnt() - TypeFunc::Parms;
2195
2196 // Incoming arguments in registers dump
2197 for( int k = 0; k < argcnt; k++ ) {
2198 OptoReg::Name parmreg = _matcher._parm_regs[k].first();
2199 if( OptoReg::is_reg(parmreg)) {
2200 const char *reg_name = OptoReg::regname(parmreg);
2201 tty->print("#r%3.3d %s", parmreg, reg_name);
2202 parmreg = _matcher._parm_regs[k].second();
2203 if( OptoReg::is_reg(parmreg)) {
2204 tty->print(":%s", OptoReg::regname(parmreg));
2205 }
2206 tty->print(" : parm %d: ", k);
2207 domain->field_at(k + TypeFunc::Parms)->dump();
2208 tty->cr();
2209 }
2210 }
2211
2212 // Check for un-owned padding above incoming args
2213 OptoReg::Name reg = _matcher._new_SP;
|
2173 return buf+strlen(buf);
2174 }
2175
2176 void PhaseChaitin::dump_for_spill_split_recycle() const {
2177 if( WizardMode && (PrintCompilation || PrintOpto) ) {
2178 // Display which live ranges need to be split and the allocator's state
2179 tty->print_cr("Graph-Coloring Iteration %d will split the following live ranges", _trip_cnt);
2180 for (uint bidx = 1; bidx < _lrg_map.max_lrg_id(); bidx++) {
2181 if( lrgs(bidx).alive() && lrgs(bidx).reg() >= LRG::SPILL_REG ) {
2182 tty->print("L%d: ", bidx);
2183 lrgs(bidx).dump();
2184 }
2185 }
2186 tty->cr();
2187 dump();
2188 }
2189 }
2190
2191 void PhaseChaitin::dump_frame() const {
2192 const char *fp = OptoReg::regname(OptoReg::c_frame_pointer);
2193 const TypeTuple *domain = C->tf()->domain_cc();
2194 const int argcnt = domain->cnt() - TypeFunc::Parms;
2195
2196 // Incoming arguments in registers dump
2197 for( int k = 0; k < argcnt; k++ ) {
2198 OptoReg::Name parmreg = _matcher._parm_regs[k].first();
2199 if( OptoReg::is_reg(parmreg)) {
2200 const char *reg_name = OptoReg::regname(parmreg);
2201 tty->print("#r%3.3d %s", parmreg, reg_name);
2202 parmreg = _matcher._parm_regs[k].second();
2203 if( OptoReg::is_reg(parmreg)) {
2204 tty->print(":%s", OptoReg::regname(parmreg));
2205 }
2206 tty->print(" : parm %d: ", k);
2207 domain->field_at(k + TypeFunc::Parms)->dump();
2208 tty->cr();
2209 }
2210 }
2211
2212 // Check for un-owned padding above incoming args
2213 OptoReg::Name reg = _matcher._new_SP;
|