src/share/vm/opto/output.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
6706829 Cdiff src/share/vm/opto/output.cpp
src/share/vm/opto/output.cpp
Print this page
*** 683,692 ****
--- 683,694 ----
array->append(new_loc_value( _regalloc, regnum, Matcher::float_in_double
? Location::float_in_dbl : Location::normal ));
} else if( t->base() == Type::Int && OptoReg::is_reg(regnum) ) {
array->append(new_loc_value( _regalloc, regnum, Matcher::int_in_long
? Location::int_in_long : Location::normal ));
+ } else if( t->base() == Type::NarrowOop ) {
+ array->append(new_loc_value( _regalloc, regnum, Location::narrowoop ));
} else {
array->append(new_loc_value( _regalloc, regnum, _regalloc->is_oop(local) ? Location::oop : Location::normal ));
}
return;
}
*** 702,711 ****
--- 704,720 ----
case Type::AryPtr:
case Type::InstPtr:
case Type::KlassPtr: // fall through
array->append(new ConstantOopWriteValue(t->isa_oopptr()->const_oop()->encoding()));
break;
+ case Type::NarrowOop:
+ if (t == TypeNarrowOop::NULL_PTR) {
+ array->append(new ConstantOopWriteValue(NULL));
+ } else {
+ array->append(new ConstantOopWriteValue(t->make_ptr()->isa_oopptr()->const_oop()->encoding()));
+ }
+ break;
case Type::Int:
array->append(new ConstantIntValue(t->is_int()->get_con()));
break;
case Type::RawPtr:
// A return address (T_ADDRESS).
*** 876,888 ****
}
scval = sv;
}
} else if( !obj_node->is_Con() ) {
OptoReg::Name obj_reg = _regalloc->get_reg_first(obj_node);
scval = new_loc_value( _regalloc, obj_reg, Location::oop );
} else {
! scval = new ConstantOopWriteValue(obj_node->bottom_type()->is_instptr()->const_oop()->encoding());
}
OptoReg::Name box_reg = BoxLockNode::stack_slot(box_node);
Location basic_lock = Location::new_stk_loc(Location::normal,_regalloc->reg2offset(box_reg));
monarray->append(new MonitorValue(scval, basic_lock, box_node->as_BoxLock()->is_eliminated()));
--- 885,902 ----
}
scval = sv;
}
} else if( !obj_node->is_Con() ) {
OptoReg::Name obj_reg = _regalloc->get_reg_first(obj_node);
+ if( obj_node->bottom_type()->base() == Type::NarrowOop ) {
+ scval = new_loc_value( _regalloc, obj_reg, Location::narrowoop );
+ } else {
scval = new_loc_value( _regalloc, obj_reg, Location::oop );
+ }
} else {
! const TypePtr *tp = obj_node->bottom_type()->make_ptr();
! scval = new ConstantOopWriteValue(tp->is_instptr()->const_oop()->encoding());
}
OptoReg::Name box_reg = BoxLockNode::stack_slot(box_node);
Location basic_lock = Location::new_stk_loc(Location::normal,_regalloc->reg2offset(box_reg));
monarray->append(new MonitorValue(scval, basic_lock, box_node->as_BoxLock()->is_eliminated()));
src/share/vm/opto/output.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File