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
|