comparison src/share/vm/opto/node.cpp @ 65:99269dbf4ba8

6674588: (Escape Analysis) Improve Escape Analysis code Summary: Current EA code has several problems which have to be fixed. Reviewed-by: jrose, sgoldman
author kvn
date Fri, 14 Mar 2008 15:26:33 -0700
parents 7c1f32ae4a20
children f3b3fe64f59f ba764ed4b6f2
comparison
equal deleted inserted replaced
64:b8f5ba577b02 65:99269dbf4ba8
810 // %%% Temporary, until we sort out CheckCastPP vs. CastPP. 810 // %%% Temporary, until we sort out CheckCastPP vs. CastPP.
811 // Strip away casting. (It is depth-limited.) 811 // Strip away casting. (It is depth-limited.)
812 Node* Node::uncast() const { 812 Node* Node::uncast() const {
813 // Should be inline: 813 // Should be inline:
814 //return is_ConstraintCast() ? uncast_helper(this) : (Node*) this; 814 //return is_ConstraintCast() ? uncast_helper(this) : (Node*) this;
815 if (is_ConstraintCast() || 815 if (is_ConstraintCast() || is_CheckCastPP())
816 (is_Type() && req() == 2 && Opcode() == Op_CheckCastPP))
817 return uncast_helper(this); 816 return uncast_helper(this);
818 else 817 else
819 return (Node*) this; 818 return (Node*) this;
820 } 819 }
821 820
825 for (uint i = 0; i < max_depth; i++) { 824 for (uint i = 0; i < max_depth; i++) {
826 if (p == NULL || p->req() != 2) { 825 if (p == NULL || p->req() != 2) {
827 break; 826 break;
828 } else if (p->is_ConstraintCast()) { 827 } else if (p->is_ConstraintCast()) {
829 p = p->in(1); 828 p = p->in(1);
830 } else if (p->is_Type() && p->Opcode() == Op_CheckCastPP) { 829 } else if (p->is_CheckCastPP()) {
831 p = p->in(1); 830 p = p->in(1);
832 } else { 831 } else {
833 break; 832 break;
834 } 833 }
835 } 834 }