comparison src/share/vm/opto/parseHelper.cpp @ 4739:52b5d32fbfaf

7117052: instanceKlass::_init_state can be u1 type Summary: Change instanceKlass::_init_state field to u1 type. Reviewed-by: bdelsart, coleenp, dholmes, phh, never Contributed-by: Jiangli Zhou <jiangli.zhou@oracle.com>
author coleenp
date Tue, 06 Dec 2011 18:28:51 -0500
parents f95d63e2154a
children 22cee0ee8927
comparison
equal deleted inserted replaced
4738:da4dd142ea01 4739:52b5d32fbfaf
228 set_control(IfTrue(iff)); 228 set_control(IfTrue(iff));
229 merge->set_req(1, IfFalse(iff)); 229 merge->set_req(1, IfFalse(iff));
230 230
231 Node* init_state_offset = _gvn.MakeConX(instanceKlass::init_state_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes()); 231 Node* init_state_offset = _gvn.MakeConX(instanceKlass::init_state_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes());
232 adr_node = basic_plus_adr(kls, kls, init_state_offset); 232 adr_node = basic_plus_adr(kls, kls, init_state_offset);
233 Node* init_state = make_load(NULL, adr_node, TypeInt::INT, T_INT); 233 // Use T_BOOLEAN for instanceKlass::_init_state so the compiler
234 // can generate code to load it as unsigned byte.
235 Node* init_state = make_load(NULL, adr_node, TypeInt::UBYTE, T_BOOLEAN);
234 Node* being_init = _gvn.intcon(instanceKlass::being_initialized); 236 Node* being_init = _gvn.intcon(instanceKlass::being_initialized);
235 tst = Bool( CmpI( init_state, being_init), BoolTest::eq); 237 tst = Bool( CmpI( init_state, being_init), BoolTest::eq);
236 iff = create_and_map_if(control(), tst, PROB_ALWAYS, COUNT_UNKNOWN); 238 iff = create_and_map_if(control(), tst, PROB_ALWAYS, COUNT_UNKNOWN);
237 set_control(IfTrue(iff)); 239 set_control(IfTrue(iff));
238 merge->set_req(2, IfFalse(iff)); 240 merge->set_req(2, IfFalse(iff));