comparison src/share/vm/opto/macro.cpp @ 8883:b9a918201d47

Merge with hsx25
author Gilles Duboscq <duboscq@ssw.jku.at>
date Sat, 06 Apr 2013 20:04:06 +0200
parents 8651f608fea4
children 6f3fd5150b67
comparison
equal deleted inserted replaced
8660:d47b52b0ff68 8883:b9a918201d47
1099 Node* i_o = alloc->in(TypeFunc::I_O); 1099 Node* i_o = alloc->in(TypeFunc::I_O);
1100 Node* size_in_bytes = alloc->in(AllocateNode::AllocSize); 1100 Node* size_in_bytes = alloc->in(AllocateNode::AllocSize);
1101 Node* klass_node = alloc->in(AllocateNode::KlassNode); 1101 Node* klass_node = alloc->in(AllocateNode::KlassNode);
1102 Node* initial_slow_test = alloc->in(AllocateNode::InitialTest); 1102 Node* initial_slow_test = alloc->in(AllocateNode::InitialTest);
1103 1103
1104 Node* storestore = alloc->storestore();
1105 if (storestore != NULL) {
1106 // Break this link that is no longer useful and confuses register allocation
1107 storestore->set_req(MemBarNode::Precedent, top());
1108 }
1109
1110 assert(ctrl != NULL, "must have control"); 1104 assert(ctrl != NULL, "must have control");
1111 // We need a Region and corresponding Phi's to merge the slow-path and fast-path results. 1105 // We need a Region and corresponding Phi's to merge the slow-path and fast-path results.
1112 // they will not be used if "always_slow" is set 1106 // they will not be used if "always_slow" is set
1113 enum { slow_result_path = 1, fast_result_path = 2 }; 1107 enum { slow_result_path = 1, fast_result_path = 2 };
1114 Node *result_region; 1108 Node *result_region;
1322 if (init == NULL || (!init->is_complete_with_arraycopy() && !init->does_not_escape())) { 1316 if (init == NULL || (!init->is_complete_with_arraycopy() && !init->does_not_escape())) {
1323 if (init == NULL || init->req() < InitializeNode::RawStores) { 1317 if (init == NULL || init->req() < InitializeNode::RawStores) {
1324 // No InitializeNode or no stores captured by zeroing 1318 // No InitializeNode or no stores captured by zeroing
1325 // elimination. Simply add the MemBarStoreStore after object 1319 // elimination. Simply add the MemBarStoreStore after object
1326 // initialization. 1320 // initialization.
1327 MemBarNode* mb = MemBarNode::make(C, Op_MemBarStoreStore, Compile::AliasIdxBot, fast_oop_rawmem); 1321 MemBarNode* mb = MemBarNode::make(C, Op_MemBarStoreStore, Compile::AliasIdxBot);
1328 transform_later(mb); 1322 transform_later(mb);
1329 1323
1330 mb->init_req(TypeFunc::Memory, fast_oop_rawmem); 1324 mb->init_req(TypeFunc::Memory, fast_oop_rawmem);
1331 mb->init_req(TypeFunc::Control, fast_oop_ctrl); 1325 mb->init_req(TypeFunc::Control, fast_oop_ctrl);
1332 fast_oop_ctrl = new (C) ProjNode(mb,TypeFunc::Control); 1326 fast_oop_ctrl = new (C) ProjNode(mb,TypeFunc::Control);