comparison src/share/vm/opto/escape.cpp @ 4777:e9a5e0a812c8

7125896: Eliminate nested locks Summary: Nested locks elimination done before lock nodes expansion by looking for outer locks of the same object. Reviewed-by: never, twisti
author kvn
date Sat, 07 Jan 2012 13:26:43 -0800
parents 1dc233a8c7fe
children 73df3733f2eb
comparison
equal deleted inserted replaced
4776:5da7201222d5 4777:e9a5e0a812c8
1840 int cnt = C->macro_count(); 1840 int cnt = C->macro_count();
1841 for( int i=0; i < cnt; i++ ) { 1841 for( int i=0; i < cnt; i++ ) {
1842 Node *n = C->macro_node(i); 1842 Node *n = C->macro_node(i);
1843 if (n->is_AbstractLock()) { // Lock and Unlock nodes 1843 if (n->is_AbstractLock()) { // Lock and Unlock nodes
1844 AbstractLockNode* alock = n->as_AbstractLock(); 1844 AbstractLockNode* alock = n->as_AbstractLock();
1845 if (!alock->is_eliminated() || alock->is_coarsened()) { 1845 if (!alock->is_non_esc_obj()) {
1846 PointsToNode::EscapeState es = escape_state(alock->obj_node()); 1846 PointsToNode::EscapeState es = escape_state(alock->obj_node());
1847 assert(es != PointsToNode::UnknownEscape, "should know"); 1847 assert(es != PointsToNode::UnknownEscape, "should know");
1848 if (es != PointsToNode::UnknownEscape && es != PointsToNode::GlobalEscape) { 1848 if (es != PointsToNode::UnknownEscape && es != PointsToNode::GlobalEscape) {
1849 if (!alock->is_eliminated()) { 1849 assert(!alock->is_eliminated() || alock->is_coarsened(), "sanity");
1850 // Mark it eliminated to update any counters 1850 // The lock could be marked eliminated by lock coarsening
1851 alock->set_eliminated(); 1851 // code during first IGVN before EA. Replace coarsened flag
1852 } else { 1852 // to eliminate all associated locks/unlocks.
1853 // The lock could be marked eliminated by lock coarsening 1853 alock->set_non_esc_obj();
1854 // code during first IGVN before EA. Clear coarsened flag
1855 // to eliminate all associated locks/unlocks and relock
1856 // during deoptimization.
1857 alock->clear_coarsened();
1858 }
1859 } 1854 }
1860 } 1855 }
1861 } 1856 }
1862 } 1857 }
1863 } 1858 }