Mercurial > hg > truffle
changeset 16530:6694631668a6
Avoid infinite recursion of deep equals checks, but also satisfy the automatic checking that does not allow == on values
author | Christian Wimmer <christian.wimmer@oracle.com> |
---|---|
date | Tue, 15 Jul 2014 16:44:56 -0700 |
parents | f6ac86d3334e |
children | fb1c21844758 |
files | graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/VirtualObject.java |
diffstat | 1 files changed, 9 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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; + } }