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




 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->field_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 {




 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->field_count() - 1; i >= 0 ; --i) {
 333     ciType* field_type = vt->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 {


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