Mercurial > hg > truffle
diff truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/Message.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 | 3b2ae36a942f |
children | e70b20f4bb00 |
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/Message.java Tue Aug 25 15:10:36 2015 +0200 +++ b/truffle/com.oracle.truffle.api.interop/src/com/oracle/truffle/api/interop/Message.java Wed Aug 26 12:51:55 2015 +0200 @@ -68,7 +68,7 @@ * @return execute message */ public static Message createExecute(int argumentsLength) { - return Execute.create(false, argumentsLength); + return Execute.create(Execute.EXECUTE, argumentsLength); } /** @@ -89,7 +89,21 @@ * @return read & execute message */ public static Message createInvoke(int argumentsLength) { - return Execute.create(true, argumentsLength); + return Execute.create(Execute.INVOKE, argumentsLength); + } + + /** + * Creates an allocation message. All messages created by this method are + * {@link Object#equals(java.lang.Object) equal} to each other regardless of the value of + * <code>argumentsLength</code>. The expected behavior of this message is to allocate a new + * instance of the {@link ForeignAccess#getReceiver(com.oracle.truffle.api.frame.Frame) + * receiver} and then perform its constructor with appropriate number of arguments. + * + * @param argumentsLength number of parameters to pass to the target + * @return read & execute message + */ + public static Message createNew(int argumentsLength) { + return Execute.create(Execute.NEW, argumentsLength); } /**