comparison graal/com.oracle.truffle.api.codegen/src/com/oracle/truffle/api/codegen/NodeChild.java @ 10443:8b2573c8d47f

dsl cleanup.
author Christian Humer <christian.humer@gmail.com>
date Tue, 18 Jun 2013 10:10:54 +0200
parents 90eb4bb7f755
children 3cc5fb59916e
comparison
equal deleted inserted replaced
9849:e876c2a6954f 10443:8b2573c8d47f
24 24
25 import java.lang.annotation.*; 25 import java.lang.annotation.*;
26 26
27 import com.oracle.truffle.api.nodes.*; 27 import com.oracle.truffle.api.nodes.*;
28 28
29 /**
30 * A {@link NodeChild} element defines an executable child for the enclosing {@link Node}. A
31 * {@link Node} contains multiple {@link NodeChildren} specified in linear execution order.
32 */
29 @Retention(RetentionPolicy.CLASS) 33 @Retention(RetentionPolicy.CLASS)
30 @Target({ElementType.TYPE}) 34 @Target({ElementType.TYPE})
31 public @interface NodeChild { 35 public @interface NodeChild {
32 36
33 String value() default ""; 37 String value() default "";
34 38
35 Class<?> type() default NodeClass.InheritNode.class; 39 Class<?> type() default NodeClass.InheritNode.class;
36 40
37 /** 41 /**
38 * Executes the {@link NodeChild} with values from other defined {@link NodeChild} elements. 42 * The {@link #executeWith()} property allows a node to pass the result of one child's
39 * These referenced children must be defined before the current node in the execution order. The 43 * executable as an input to another child's executable. These referenced children must be
40 * current node {@link #type()} attribute must be set to a {@link Node} which supports the 44 * defined before the current node in the execution order. The current node {@link #type()}
41 * evaluated execution with the number of {@link #executeWith()} arguments that are defined. For 45 * attribute must be set to a {@link Node} which supports the evaluated execution with the
42 * example if this child is executed with one argument, the {@link #type()} attribute must 46 * number of {@link #executeWith()} arguments that are defined. For example if this child is
43 * define a node which publicly declares a method with the signature 47 * executed with one argument, the {@link #type()} attribute must define a node which publicly
44 * <code>Object execute*(VirtualFrame, Object)</code>. 48 * declares a method with the signature <code>Object execute*(VirtualFrame, Object)</code>.
45 */ 49 */
46 String[] executeWith() default {}; 50 String[] executeWith() default {};
47 } 51 }