src/share/vm/opto/output.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 8014189 Sdiff src/share/vm/opto

src/share/vm/opto/output.cpp

Print this page




 912                  cik->is_array_klass(), "Not supported allocation.");
 913           ObjectValue* sv = new ObjectValue(spobj->_idx,
 914                                             new ConstantOopWriteValue(cik->java_mirror()->constant_encoding()));
 915           Compile::set_sv_for_object_node(objs, sv);
 916 
 917           uint first_ind = spobj->first_index();
 918           for (uint i = 0; i < spobj->n_fields(); i++) {
 919             Node* fld_node = sfn->in(first_ind+i);
 920             (void)FillLocArray(sv->field_values()->length(), sfn, fld_node, sv->field_values(), objs);
 921           }
 922           scval = sv;
 923         }
 924       } else if( !obj_node->is_Con() ) {
 925         OptoReg::Name obj_reg = _regalloc->get_reg_first(obj_node);
 926         if( obj_node->bottom_type()->base() == Type::NarrowOop ) {
 927           scval = new_loc_value( _regalloc, obj_reg, Location::narrowoop );
 928         } else {
 929           scval = new_loc_value( _regalloc, obj_reg, Location::oop );
 930         }
 931       } else {
 932         const TypePtr *tp = obj_node->bottom_type()->make_ptr();
 933         scval = new ConstantOopWriteValue(tp->is_oopptr()->const_oop()->constant_encoding());
 934       }
 935 
 936       OptoReg::Name box_reg = BoxLockNode::reg(box_node);
 937       Location basic_lock = Location::new_stk_loc(Location::normal,_regalloc->reg2offset(box_reg));
 938       bool eliminated = (box_node->is_BoxLock() && box_node->as_BoxLock()->is_eliminated());
 939       monarray->append(new MonitorValue(scval, basic_lock, eliminated));
 940     }
 941 
 942     // We dump the object pool first, since deoptimization reads it in first.
 943     debug_info()->dump_object_pool(objs);
 944 
 945     // Build first class objects to pass to scope
 946     DebugToken *locvals = debug_info()->create_scope_values(locarray);
 947     DebugToken *expvals = debug_info()->create_scope_values(exparray);
 948     DebugToken *monvals = debug_info()->create_monitor_values(monarray);
 949 
 950     // Make method available for all Safepoints
 951     ciMethod* scope_method = method ? method : _method;
 952     // Describe the scope here




 912                  cik->is_array_klass(), "Not supported allocation.");
 913           ObjectValue* sv = new ObjectValue(spobj->_idx,
 914                                             new ConstantOopWriteValue(cik->java_mirror()->constant_encoding()));
 915           Compile::set_sv_for_object_node(objs, sv);
 916 
 917           uint first_ind = spobj->first_index();
 918           for (uint i = 0; i < spobj->n_fields(); i++) {
 919             Node* fld_node = sfn->in(first_ind+i);
 920             (void)FillLocArray(sv->field_values()->length(), sfn, fld_node, sv->field_values(), objs);
 921           }
 922           scval = sv;
 923         }
 924       } else if( !obj_node->is_Con() ) {
 925         OptoReg::Name obj_reg = _regalloc->get_reg_first(obj_node);
 926         if( obj_node->bottom_type()->base() == Type::NarrowOop ) {
 927           scval = new_loc_value( _regalloc, obj_reg, Location::narrowoop );
 928         } else {
 929           scval = new_loc_value( _regalloc, obj_reg, Location::oop );
 930         }
 931       } else {
 932         const TypePtr *tp = obj_node->get_ptr_type();
 933         scval = new ConstantOopWriteValue(tp->is_oopptr()->const_oop()->constant_encoding());
 934       }
 935 
 936       OptoReg::Name box_reg = BoxLockNode::reg(box_node);
 937       Location basic_lock = Location::new_stk_loc(Location::normal,_regalloc->reg2offset(box_reg));
 938       bool eliminated = (box_node->is_BoxLock() && box_node->as_BoxLock()->is_eliminated());
 939       monarray->append(new MonitorValue(scval, basic_lock, eliminated));
 940     }
 941 
 942     // We dump the object pool first, since deoptimization reads it in first.
 943     debug_info()->dump_object_pool(objs);
 944 
 945     // Build first class objects to pass to scope
 946     DebugToken *locvals = debug_info()->create_scope_values(locarray);
 947     DebugToken *expvals = debug_info()->create_scope_values(exparray);
 948     DebugToken *monvals = debug_info()->create_monitor_values(monarray);
 949 
 950     // Make method available for all Safepoints
 951     ciMethod* scope_method = method ? method : _method;
 952     // Describe the scope here


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