hotspot/src/share/vm/opto/callnode.cpp
changeset 24424 2658d7834c6e
parent 24018 77b156916bab
child 24923 9631f7d691dc
equal deleted inserted replaced
24358:8528b67f6562 24424:2658d7834c6e
     1 /*
     1 /*
     2  * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
   110 };
   110 };
   111 
   111 
   112 #ifndef PRODUCT
   112 #ifndef PRODUCT
   113 void ParmNode::dump_spec(outputStream *st) const {
   113 void ParmNode::dump_spec(outputStream *st) const {
   114   if( _con < TypeFunc::Parms ) {
   114   if( _con < TypeFunc::Parms ) {
   115     st->print(names[_con]);
   115     st->print("%s", names[_con]);
   116   } else {
   116   } else {
   117     st->print("Parm%d: ",_con-TypeFunc::Parms);
   117     st->print("Parm%d: ",_con-TypeFunc::Parms);
   118     // Verbose and WizardMode dump bottom_type for all nodes
   118     // Verbose and WizardMode dump bottom_type for all nodes
   119     if( !Verbose && !WizardMode )   bottom_type()->dump_on(st);
   119     if( !Verbose && !WizardMode )   bottom_type()->dump_on(st);
   120   }
   120   }
   346       assert( t == TypePtr::NULL_PTR || n->in_dump(), "" );
   346       assert( t == TypePtr::NULL_PTR || n->in_dump(), "" );
   347       st->print(" %s%d]=#NULL",msg,i);
   347       st->print(" %s%d]=#NULL",msg,i);
   348       break;
   348       break;
   349     case Type::AryPtr:
   349     case Type::AryPtr:
   350     case Type::InstPtr:
   350     case Type::InstPtr:
   351       st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,t->isa_oopptr()->const_oop());
   351       st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,p2i(t->isa_oopptr()->const_oop()));
   352       break;
   352       break;
   353     case Type::KlassPtr:
   353     case Type::KlassPtr:
   354       st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,t->make_ptr()->isa_klassptr()->klass());
   354       st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,p2i(t->make_ptr()->isa_klassptr()->klass()));
   355       break;
   355       break;
   356     case Type::MetadataPtr:
   356     case Type::MetadataPtr:
   357       st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,t->make_ptr()->isa_metadataptr()->metadata());
   357       st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,p2i(t->make_ptr()->isa_metadataptr()->metadata()));
   358       break;
   358       break;
   359     case Type::NarrowOop:
   359     case Type::NarrowOop:
   360       st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,t->make_ptr()->isa_oopptr()->const_oop());
   360       st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,p2i(t->make_ptr()->isa_oopptr()->const_oop()));
   361       break;
   361       break;
   362     case Type::RawPtr:
   362     case Type::RawPtr:
   363       st->print(" %s%d]=#Raw" INTPTR_FORMAT,msg,i,t->is_rawptr());
   363       st->print(" %s%d]=#Raw" INTPTR_FORMAT,msg,i,p2i(t->is_rawptr()));
   364       break;
   364       break;
   365     case Type::DoubleCon:
   365     case Type::DoubleCon:
   366       st->print(" %s%d]=#%fD",msg,i,t->is_double_constant()->_d);
   366       st->print(" %s%d]=#%fD",msg,i,t->is_double_constant()->_d);
   367       break;
   367       break;
   368     case Type::FloatCon:
   368     case Type::FloatCon:
   369       st->print(" %s%d]=#%fF",msg,i,t->is_float_constant()->_f);
   369       st->print(" %s%d]=#%fF",msg,i,t->is_float_constant()->_f);
   370       break;
   370       break;
   371     case Type::Long:
   371     case Type::Long:
   372       st->print(" %s%d]=#"INT64_FORMAT,msg,i,t->is_long()->get_con());
   372       st->print(" %s%d]=#"INT64_FORMAT,msg,i,(int64_t)(t->is_long()->get_con()));
   373       break;
   373       break;
   374     case Type::Half:
   374     case Type::Half:
   375     case Type::Top:
   375     case Type::Top:
   376       st->print(" %s%d]=_",msg,i);
   376       st->print(" %s%d]=_",msg,i);
   377       break;
   377       break;
   426       format_helper(regalloc, st, obj, obj_msg, i, &scobjs);
   426       format_helper(regalloc, st, obj, obj_msg, i, &scobjs);
   427     }
   427     }
   428 
   428 
   429     for (i = 0; i < (uint)scobjs.length(); i++) {
   429     for (i = 0; i < (uint)scobjs.length(); i++) {
   430       // Scalar replaced objects.
   430       // Scalar replaced objects.
   431       st->print_cr("");
   431       st->cr();
   432       st->print("        # ScObj" INT32_FORMAT " ", i);
   432       st->print("        # ScObj" INT32_FORMAT " ", i);
   433       SafePointScalarObjectNode* spobj = scobjs.at(i);
   433       SafePointScalarObjectNode* spobj = scobjs.at(i);
   434       ciKlass* cik = spobj->bottom_type()->is_oopptr()->klass();
   434       ciKlass* cik = spobj->bottom_type()->is_oopptr()->klass();
   435       assert(cik->is_instance_klass() ||
   435       assert(cik->is_instance_klass() ||
   436              cik->is_array_klass(), "Not supported allocation.");
   436              cik->is_array_klass(), "Not supported allocation.");
   483         }
   483         }
   484       }
   484       }
   485       st->print(" }");
   485       st->print(" }");
   486     }
   486     }
   487   }
   487   }
   488   st->print_cr("");
   488   st->cr();
   489   if (caller() != NULL) caller()->format(regalloc, n, st);
   489   if (caller() != NULL) caller()->format(regalloc, n, st);
   490 }
   490 }
   491 
   491 
   492 
   492 
   493 void JVMState::dump_spec(outputStream *st) const {
   493 void JVMState::dump_spec(outputStream *st) const {
   979   return CallNode::cmp(call) && !strcmp(_name,call._name);
   979   return CallNode::cmp(call) && !strcmp(_name,call._name);
   980 }
   980 }
   981 #ifndef PRODUCT
   981 #ifndef PRODUCT
   982 void CallRuntimeNode::dump_spec(outputStream *st) const {
   982 void CallRuntimeNode::dump_spec(outputStream *st) const {
   983   st->print("# ");
   983   st->print("# ");
   984   st->print(_name);
   984   st->print("%s", _name);
   985   CallNode::dump_spec(st);
   985   CallNode::dump_spec(st);
   986 }
   986 }
   987 #endif
   987 #endif
   988 
   988 
   989 //------------------------------calling_convention-----------------------------
   989 //------------------------------calling_convention-----------------------------
   997 
   997 
   998 //=============================================================================
   998 //=============================================================================
   999 #ifndef PRODUCT
   999 #ifndef PRODUCT
  1000 void CallLeafNode::dump_spec(outputStream *st) const {
  1000 void CallLeafNode::dump_spec(outputStream *st) const {
  1001   st->print("# ");
  1001   st->print("# ");
  1002   st->print(_name);
  1002   st->print("%s", _name);
  1003   CallNode::dump_spec(st);
  1003   CallNode::dump_spec(st);
  1004 }
  1004 }
  1005 #endif
  1005 #endif
  1006 
  1006 
  1007 //=============================================================================
  1007 //=============================================================================