# HG changeset patch # User Jaroslav Tulach # Date 1444156421 -7200 # Node ID af8c8edec0f24703a56b837d7b41d2007b2c9b88 # Parent 0fc995134ff3dd8b447cc062bb6bb953b14dafb4 TruffleObject associated with PolyglotEngine should be more or less opaque. diff -r 0fc995134ff3 -r af8c8edec0f2 truffle/com.oracle.truffle.api.vm/src/com/oracle/truffle/api/vm/EngineTruffleObject.java --- a/truffle/com.oracle.truffle.api.vm/src/com/oracle/truffle/api/vm/EngineTruffleObject.java Tue Oct 06 13:27:47 2015 +0200 +++ b/truffle/com.oracle.truffle.api.vm/src/com/oracle/truffle/api/vm/EngineTruffleObject.java Tue Oct 06 20:33:41 2015 +0200 @@ -34,6 +34,7 @@ import com.oracle.truffle.api.nodes.Node; import com.oracle.truffle.api.nodes.RootNode; import java.io.IOException; +import java.util.Objects; final class EngineTruffleObject implements TruffleObject, ForeignAccess.Factory { private final PolyglotEngine engine; @@ -63,6 +64,31 @@ return Truffle.getRuntime().createCallTarget(new WrappingRoot(TruffleLanguage.class, tree.createNode())); } + @Override + public int hashCode() { + int hash = 7; + hash = 89 * hash + Objects.hashCode(this.engine); + hash = 89 * hash + Objects.hashCode(this.delegate); + return hash; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj instanceof EngineTruffleObject) { + final EngineTruffleObject other = (EngineTruffleObject) obj; + return engine == other.engine && Objects.equals(this.delegate, other.delegate); + } + return false; + } + + @Override + public String toString() { + return delegate.toString(); + } + static class WrappingRoot extends RootNode { @Child private Node foreignAccess;