# HG changeset patch # User Christian Wimmer # Date 1405467896 25200 # Node ID 6694631668a675d361699096673a20fb38bdb4f2 # Parent f6ac86d3334ea8be8d2d6bbb82668c6ef80a9ac5 Avoid infinite recursion of deep equals checks, but also satisfy the automatic checking that does not allow == on values diff -r f6ac86d3334e -r 6694631668a6 graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/VirtualObject.java --- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/VirtualObject.java Tue Jul 15 16:34:53 2014 -0700 +++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/VirtualObject.java Tue Jul 15 16:44:56 2014 -0700 @@ -187,7 +187,11 @@ return false; } for (int i = 0; i < values.length; i++) { - if (!Objects.equals(values[i], l.values[i])) { + /* + * Virtual objects can form cycles. Calling equals() could therefore lead to + * infinite recursion. + */ + if (!same(values[i], l.values[i])) { return false; } } @@ -195,4 +199,8 @@ } return false; } + + private static boolean same(Object o1, Object o2) { + return o1 == o2; + } }