src/share/vm/opto/parseHelper.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File valhalla-experimental Sdiff src/share/vm/opto

src/share/vm/opto/parseHelper.cpp

Print this page




 312     C->set_has_stringbuilder(true);
 313   }
 314 
 315   // Keep track of boxed values for EliminateAutoBox optimizations.
 316   if (C->eliminate_boxing() && klass->is_box_klass()) {
 317     C->set_has_boxed_value(true);
 318   }
 319 }
 320 
 321 //------------------------------do_vnew-----------------------------------------
 322 void Parse::do_vnew() {
 323   kill_dead_locals();
 324   // Fixme additional checks needed? (see InterpreterRuntime::_vnew)
 325 
 326   // Create a new ValueTypeNode
 327   ciValueKlass* vk = iter().method()->holder()->as_value_klass();
 328   ValueTypeNode* vt = ValueTypeNode::make(_gvn, vk)->as_ValueType();
 329 
 330   // Pop values from stack (last argument is first) and
 331   // connect them to the ValueTypeNode in reverse order.
 332   for (int i = vk->param_count() - 1; i >= 0 ; --i) {
 333     ciType* field_type = vt->get_field_type(i);

 334     Node* value = field_type->size() == 1 ? pop() : pop_pair();
 335     vt->set_field_value(i, value);
 336   }
 337   push(_gvn.transform(vt));
 338 }
 339 
 340 #ifndef PRODUCT
 341 //------------------------------dump_map_adr_mem-------------------------------
 342 // Debug dump of the mapping from address types to MergeMemNode indices.
 343 void Parse::dump_map_adr_mem() const {
 344   tty->print_cr("--- Mapping from address types to memory Nodes ---");
 345   MergeMemNode *mem = map() == NULL ? NULL : (map()->memory()->is_MergeMem() ?
 346                                       map()->memory()->as_MergeMem() : NULL);
 347   for (uint i = 0; i < (uint)C->num_alias_types(); i++) {
 348     C->alias_type(i)->print_on(tty);
 349     tty->print("\t");
 350     // Node mapping, if any
 351     if (mem && i < mem->req() && mem->in(i) && mem->in(i) != mem->empty_memory()) {
 352       mem->in(i)->dump();
 353     } else {
 354       tty->cr();
 355     }




 312     C->set_has_stringbuilder(true);
 313   }
 314 
 315   // Keep track of boxed values for EliminateAutoBox optimizations.
 316   if (C->eliminate_boxing() && klass->is_box_klass()) {
 317     C->set_has_boxed_value(true);
 318   }
 319 }
 320 
 321 //------------------------------do_vnew-----------------------------------------
 322 void Parse::do_vnew() {
 323   kill_dead_locals();
 324   // Fixme additional checks needed? (see InterpreterRuntime::_vnew)
 325 
 326   // Create a new ValueTypeNode
 327   ciValueKlass* vk = iter().method()->holder()->as_value_klass();
 328   ValueTypeNode* vt = ValueTypeNode::make(_gvn, vk)->as_ValueType();
 329 
 330   // Pop values from stack (last argument is first) and
 331   // connect them to the ValueTypeNode in reverse order.
 332   for (int arg_index = vk->param_count() - 1; arg_index >= 0 ; --arg_index) {
 333     int field_index = vk->field_index_for_argument(arg_index);
 334     ciType* field_type = vt->get_field_type(field_index);
 335     Node* value = field_type->size() == 1 ? pop() : pop_pair();
 336     vt->set_field_value(field_index, value);
 337   }
 338   push(_gvn.transform(vt));
 339 }
 340 
 341 #ifndef PRODUCT
 342 //------------------------------dump_map_adr_mem-------------------------------
 343 // Debug dump of the mapping from address types to MergeMemNode indices.
 344 void Parse::dump_map_adr_mem() const {
 345   tty->print_cr("--- Mapping from address types to memory Nodes ---");
 346   MergeMemNode *mem = map() == NULL ? NULL : (map()->memory()->is_MergeMem() ?
 347                                       map()->memory()->as_MergeMem() : NULL);
 348   for (uint i = 0; i < (uint)C->num_alias_types(); i++) {
 349     C->alias_type(i)->print_on(tty);
 350     tty->print("\t");
 351     // Node mapping, if any
 352     if (mem && i < mem->req() && mem->in(i) && mem->in(i) != mem->empty_memory()) {
 353       mem->in(i)->dump();
 354     } else {
 355       tty->cr();
 356     }


src/share/vm/opto/parseHelper.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File