214 Node *orig_mem = mem; |
214 Node *orig_mem = mem; |
215 Node *alloc_mem = alloc->in(TypeFunc::Memory); |
215 Node *alloc_mem = alloc->in(TypeFunc::Memory); |
216 const TypeOopPtr *tinst = phase->C->get_adr_type(alias_idx)->isa_oopptr(); |
216 const TypeOopPtr *tinst = phase->C->get_adr_type(alias_idx)->isa_oopptr(); |
217 while (true) { |
217 while (true) { |
218 if (mem == alloc_mem || mem == start_mem ) { |
218 if (mem == alloc_mem || mem == start_mem ) { |
219 return mem; // hit one of our sentinals |
219 return mem; // hit one of our sentinels |
220 } else if (mem->is_MergeMem()) { |
220 } else if (mem->is_MergeMem()) { |
221 mem = mem->as_MergeMem()->memory_at(alias_idx); |
221 mem = mem->as_MergeMem()->memory_at(alias_idx); |
222 } else if (mem->is_Proj() && mem->as_Proj()->_con == TypeFunc::Memory) { |
222 } else if (mem->is_Proj() && mem->as_Proj()->_con == TypeFunc::Memory) { |
223 Node *in = mem->in(0); |
223 Node *in = mem->in(0); |
224 // we can safely skip over safepoints, calls, locks and membars because we |
224 // we can safely skip over safepoints, calls, locks and membars because we |
1666 Node *mem_phi; |
1666 Node *mem_phi; |
1667 Node *slow_path; |
1667 Node *slow_path; |
1668 |
1668 |
1669 if (UseOptoBiasInlining) { |
1669 if (UseOptoBiasInlining) { |
1670 /* |
1670 /* |
1671 * See the full descrition in MacroAssembler::biased_locking_enter(). |
1671 * See the full description in MacroAssembler::biased_locking_enter(). |
1672 * |
1672 * |
1673 * if( (mark_word & biased_lock_mask) == biased_lock_pattern ) { |
1673 * if( (mark_word & biased_lock_mask) == biased_lock_pattern ) { |
1674 * // The object is biased. |
1674 * // The object is biased. |
1675 * proto_node = klass->prototype_header; |
1675 * proto_node = klass->prototype_header; |
1676 * o_node = thread | proto_node; |
1676 * o_node = thread | proto_node; |
1902 Node *region; |
1902 Node *region; |
1903 Node *mem_phi; |
1903 Node *mem_phi; |
1904 |
1904 |
1905 if (UseOptoBiasInlining) { |
1905 if (UseOptoBiasInlining) { |
1906 // Check for biased locking unlock case, which is a no-op. |
1906 // Check for biased locking unlock case, which is a no-op. |
1907 // See the full descrition in MacroAssembler::biased_locking_exit(). |
1907 // See the full description in MacroAssembler::biased_locking_exit(). |
1908 region = new (C, 4) RegionNode(4); |
1908 region = new (C, 4) RegionNode(4); |
1909 // create a Phi for the memory state |
1909 // create a Phi for the memory state |
1910 mem_phi = new (C, 4) PhiNode( region, Type::MEMORY, TypeRawPtr::BOTTOM); |
1910 mem_phi = new (C, 4) PhiNode( region, Type::MEMORY, TypeRawPtr::BOTTOM); |
1911 mem_phi->init_req(3, mem); |
1911 mem_phi->init_req(3, mem); |
1912 |
1912 |