Mercurial > hg > graal-jvmci-8
comparison src/share/vm/opto/callnode.cpp @ 5948:ee138854b3a6
7147744: CTW: assert(false) failed: infinite EA connection graph build
Summary: rewrote Connection graph construction code in EA to reduce time spent there.
Reviewed-by: never
author | kvn |
---|---|
date | Mon, 12 Mar 2012 10:46:47 -0700 |
parents | b0ff910edfc9 |
children | 1d7922586cf6 |
comparison
equal
deleted
inserted
replaced
5933:fde683df4c27 | 5948:ee138854b3a6 |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | 4 * |
5 * This code is free software; you can redistribute it and/or modify it | 5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as | 6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
1536 if (can_reshape && EliminateLocks && !is_non_esc_obj()) { | 1536 if (can_reshape && EliminateLocks && !is_non_esc_obj()) { |
1537 // | 1537 // |
1538 // If we are locking an unescaped object, the lock/unlock is unnecessary | 1538 // If we are locking an unescaped object, the lock/unlock is unnecessary |
1539 // | 1539 // |
1540 ConnectionGraph *cgr = phase->C->congraph(); | 1540 ConnectionGraph *cgr = phase->C->congraph(); |
1541 PointsToNode::EscapeState es = PointsToNode::GlobalEscape; | 1541 if (cgr != NULL && cgr->not_global_escape(obj_node())) { |
1542 if (cgr != NULL) | |
1543 es = cgr->escape_state(obj_node()); | |
1544 if (es != PointsToNode::UnknownEscape && es != PointsToNode::GlobalEscape) { | |
1545 assert(!is_eliminated() || is_coarsened(), "sanity"); | 1542 assert(!is_eliminated() || is_coarsened(), "sanity"); |
1546 // The lock could be marked eliminated by lock coarsening | 1543 // The lock could be marked eliminated by lock coarsening |
1547 // code during first IGVN before EA. Replace coarsened flag | 1544 // code during first IGVN before EA. Replace coarsened flag |
1548 // to eliminate all associated locks/unlocks. | 1545 // to eliminate all associated locks/unlocks. |
1549 this->set_non_esc_obj(); | 1546 this->set_non_esc_obj(); |
1678 if (can_reshape && EliminateLocks && !is_non_esc_obj()) { | 1675 if (can_reshape && EliminateLocks && !is_non_esc_obj()) { |
1679 // | 1676 // |
1680 // If we are unlocking an unescaped object, the lock/unlock is unnecessary. | 1677 // If we are unlocking an unescaped object, the lock/unlock is unnecessary. |
1681 // | 1678 // |
1682 ConnectionGraph *cgr = phase->C->congraph(); | 1679 ConnectionGraph *cgr = phase->C->congraph(); |
1683 PointsToNode::EscapeState es = PointsToNode::GlobalEscape; | 1680 if (cgr != NULL && cgr->not_global_escape(obj_node())) { |
1684 if (cgr != NULL) | |
1685 es = cgr->escape_state(obj_node()); | |
1686 if (es != PointsToNode::UnknownEscape && es != PointsToNode::GlobalEscape) { | |
1687 assert(!is_eliminated() || is_coarsened(), "sanity"); | 1681 assert(!is_eliminated() || is_coarsened(), "sanity"); |
1688 // The lock could be marked eliminated by lock coarsening | 1682 // The lock could be marked eliminated by lock coarsening |
1689 // code during first IGVN before EA. Replace coarsened flag | 1683 // code during first IGVN before EA. Replace coarsened flag |
1690 // to eliminate all associated locks/unlocks. | 1684 // to eliminate all associated locks/unlocks. |
1691 this->set_non_esc_obj(); | 1685 this->set_non_esc_obj(); |