323 static void format_helper( PhaseRegAlloc *regalloc, outputStream* st, Node *n, const char *msg, uint i, GrowableArray<SafePointScalarObjectNode*> *scobjs ) { 324 if (n == NULL) { st->print(" NULL"); return; } 325 if (n->is_SafePointScalarObject()) { 326 // Scalar replacement. 327 SafePointScalarObjectNode* spobj = n->as_SafePointScalarObject(); 328 scobjs->append_if_missing(spobj); 329 int sco_n = scobjs->find(spobj); 330 assert(sco_n >= 0, ""); 331 st->print(" %s%d]=#ScObj" INT32_FORMAT, msg, i, sco_n); 332 return; 333 } 334 if (regalloc->node_regs_max_index() > 0 && 335 OptoReg::is_valid(regalloc->get_reg_first(n))) { // Check for undefined 336 char buf[50]; 337 regalloc->dump_register(n,buf); 338 st->print(" %s%d]=%s",msg,i,buf); 339 } else { // No register, but might be constant 340 const Type *t = n->bottom_type(); 341 switch (t->base()) { 342 case Type::Int: 343 st->print(" %s%d]=#"INT32_FORMAT,msg,i,t->is_int()->get_con()); 344 break; 345 case Type::AnyPtr: 346 assert( t == TypePtr::NULL_PTR || n->in_dump(), "" ); 347 st->print(" %s%d]=#NULL",msg,i); 348 break; 349 case Type::AryPtr: 350 case Type::InstPtr: 351 st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,p2i(t->isa_oopptr()->const_oop())); 352 break; 353 case Type::KlassPtr: 354 st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,p2i(t->make_ptr()->isa_klassptr()->klass())); 355 break; 356 case Type::MetadataPtr: 357 st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,p2i(t->make_ptr()->isa_metadataptr()->metadata())); 358 break; 359 case Type::NarrowOop: 360 st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,p2i(t->make_ptr()->isa_oopptr()->const_oop())); 361 break; 362 case Type::RawPtr: 363 st->print(" %s%d]=#Raw" INTPTR_FORMAT,msg,i,p2i(t->is_rawptr())); 364 break; 365 case Type::DoubleCon: 366 st->print(" %s%d]=#%fD",msg,i,t->is_double_constant()->_d); 367 break; 368 case Type::FloatCon: 369 st->print(" %s%d]=#%fF",msg,i,t->is_float_constant()->_f); 370 break; 371 case Type::Long: 372 st->print(" %s%d]=#"INT64_FORMAT,msg,i,(int64_t)(t->is_long()->get_con())); 373 break; 374 case Type::Half: 375 case Type::Top: 376 st->print(" %s%d]=_",msg,i); 377 break; 378 default: ShouldNotReachHere(); 379 } 380 } 381 } 382 383 //------------------------------format----------------------------------------- 384 void JVMState::format(PhaseRegAlloc *regalloc, const Node *n, outputStream* st) const { 385 st->print(" #"); 386 if (_method) { 387 _method->print_short_name(st); 388 st->print(" @ bci:%d ",_bci); 389 } else { 390 st->print_cr(" runtime stub "); 391 return; 392 } | 323 static void format_helper( PhaseRegAlloc *regalloc, outputStream* st, Node *n, const char *msg, uint i, GrowableArray<SafePointScalarObjectNode*> *scobjs ) { 324 if (n == NULL) { st->print(" NULL"); return; } 325 if (n->is_SafePointScalarObject()) { 326 // Scalar replacement. 327 SafePointScalarObjectNode* spobj = n->as_SafePointScalarObject(); 328 scobjs->append_if_missing(spobj); 329 int sco_n = scobjs->find(spobj); 330 assert(sco_n >= 0, ""); 331 st->print(" %s%d]=#ScObj" INT32_FORMAT, msg, i, sco_n); 332 return; 333 } 334 if (regalloc->node_regs_max_index() > 0 && 335 OptoReg::is_valid(regalloc->get_reg_first(n))) { // Check for undefined 336 char buf[50]; 337 regalloc->dump_register(n,buf); 338 st->print(" %s%d]=%s",msg,i,buf); 339 } else { // No register, but might be constant 340 const Type *t = n->bottom_type(); 341 switch (t->base()) { 342 case Type::Int: 343 st->print(" %s%d]=#" INT32_FORMAT,msg,i,t->is_int()->get_con()); 344 break; 345 case Type::AnyPtr: 346 assert( t == TypePtr::NULL_PTR || n->in_dump(), "" ); 347 st->print(" %s%d]=#NULL",msg,i); 348 break; 349 case Type::AryPtr: 350 case Type::InstPtr: 351 st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,p2i(t->isa_oopptr()->const_oop())); 352 break; 353 case Type::KlassPtr: 354 st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,p2i(t->make_ptr()->isa_klassptr()->klass())); 355 break; 356 case Type::MetadataPtr: 357 st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,p2i(t->make_ptr()->isa_metadataptr()->metadata())); 358 break; 359 case Type::NarrowOop: 360 st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,p2i(t->make_ptr()->isa_oopptr()->const_oop())); 361 break; 362 case Type::RawPtr: 363 st->print(" %s%d]=#Raw" INTPTR_FORMAT,msg,i,p2i(t->is_rawptr())); 364 break; 365 case Type::DoubleCon: 366 st->print(" %s%d]=#%fD",msg,i,t->is_double_constant()->_d); 367 break; 368 case Type::FloatCon: 369 st->print(" %s%d]=#%fF",msg,i,t->is_float_constant()->_f); 370 break; 371 case Type::Long: 372 st->print(" %s%d]=#" INT64_FORMAT,msg,i,(int64_t)(t->is_long()->get_con())); 373 break; 374 case Type::Half: 375 case Type::Top: 376 st->print(" %s%d]=_",msg,i); 377 break; 378 default: ShouldNotReachHere(); 379 } 380 } 381 } 382 383 //------------------------------format----------------------------------------- 384 void JVMState::format(PhaseRegAlloc *regalloc, const Node *n, outputStream* st) const { 385 st->print(" #"); 386 if (_method) { 387 _method->print_short_name(st); 388 st->print(" @ bci:%d ",_bci); 389 } else { 390 st->print_cr(" runtime stub "); 391 return; 392 } |