Mercurial > hg > truffle
diff truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/Execute.java @ 22108:f84a7663966d
Adding Message.createNew into standard interop messages so languages like Ruby and Java can use 'new' to instantiate Java classes.
author | Jaroslav Tulach <jaroslav.tulach@oracle.com> |
---|---|
date | Wed, 26 Aug 2015 12:51:55 +0200 |
parents | 9c8c0937da41 |
children | e70b20f4bb00 |
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/Execute.java Tue Aug 25 15:10:36 2015 +0200 +++ b/truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/Execute.java Wed Aug 26 12:51:55 2015 +0200 @@ -25,18 +25,19 @@ package com.oracle.truffle.api.interop; final class Execute extends KnownMessage { - public static final int HASH1 = 423430; - public static final int HASH2 = 423429; + public static final int EXECUTE = 423430; + public static final int INVOKE = 423429; + public static final int NEW = 423428; private final int arity; - private final boolean invoke; + private final int type; - public static Execute create(boolean invoke, int arity) { - return new Execute(invoke, arity); + public static Execute create(int type, int arity) { + return new Execute(type, arity); } - private Execute(boolean invoke, int arity) { - this.invoke = invoke; + private Execute(int type, int arity) { + this.type = type; this.arity = arity; } @@ -51,17 +52,23 @@ } Execute m1 = this; Execute m2 = (Execute) message; - return m1.invoke == m2.invoke; + return m1.type == m2.type; } @Override public int hashCode() { - return invoke ? HASH1 : HASH2; + return type; } @Override public String toString() { - return invoke ? "msgInvoke" : "msgExecute"; + switch (type) { + case EXECUTE: + return "msgExecute"; + case INVOKE: + return "msgInvoke"; + default: + return "msgNew"; + } } - }