Skip to content

Commit 157d6a9

Browse files
committed
Merge pull request #185 in G/truffle from ~CHRISTIAN.HUMER_ORACLE.COM/truffle:sl_new_dsl_layout to master
* commit '2339890855bdafdccc589c7ae2fd9786308c5504': Add type system reference SLForeignToSLTypeNode to make it use the new layout. Use new DSL layout for SimpleLanguage. Deprecate DSLMetadata and remove it from the generator code.
2 parents d4f595b + 2339890 commit 157d6a9

File tree

7 files changed

+33
-35
lines changed

7 files changed

+33
-35
lines changed

truffle/com.oracle.truffle.api.dsl/src/com/oracle/truffle/api/dsl/internal/DSLMetadata.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,10 @@
2626

2727
/**
2828
* This is NOT public API. Do not use directly. This code may change without notice.
29+
*
30+
* @deprecated will be removed soon
2931
*/
32+
@Deprecated
3033
public final class DSLMetadata {
3134

3235
public static final Class<?>[] EMPTY_CLASS_ARRAY = new Class<?>[]{};

truffle/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/TruffleTypes.java

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,17 @@
2222
*/
2323
package com.oracle.truffle.dsl.processor;
2424

25+
import java.util.ArrayList;
26+
import java.util.List;
27+
28+
import javax.lang.model.element.AnnotationMirror;
29+
import javax.lang.model.element.Element;
30+
import javax.lang.model.element.TypeElement;
31+
import javax.lang.model.type.ArrayType;
32+
import javax.lang.model.type.DeclaredType;
33+
import javax.lang.model.type.TypeMirror;
34+
import javax.tools.Diagnostic.Kind;
35+
2536
import com.oracle.truffle.api.Assumption;
2637
import com.oracle.truffle.api.CompilerAsserts;
2738
import com.oracle.truffle.api.CompilerDirectives;
@@ -30,7 +41,6 @@
3041
import com.oracle.truffle.api.TruffleOptions;
3142
import com.oracle.truffle.api.dsl.GenerateNodeFactory;
3243
import com.oracle.truffle.api.dsl.NodeFactory;
33-
import com.oracle.truffle.api.dsl.internal.DSLMetadata;
3444
import com.oracle.truffle.api.dsl.internal.NodeFactoryBase;
3545
import com.oracle.truffle.api.frame.VirtualFrame;
3646
import com.oracle.truffle.api.nodes.InvalidAssumptionException;
@@ -42,15 +52,6 @@
4252
import com.oracle.truffle.api.nodes.NodeUtil;
4353
import com.oracle.truffle.api.nodes.UnexpectedResultException;
4454
import com.oracle.truffle.api.source.SourceSection;
45-
import java.util.ArrayList;
46-
import java.util.List;
47-
import javax.lang.model.element.AnnotationMirror;
48-
import javax.lang.model.element.Element;
49-
import javax.lang.model.element.TypeElement;
50-
import javax.lang.model.type.ArrayType;
51-
import javax.lang.model.type.DeclaredType;
52-
import javax.lang.model.type.TypeMirror;
53-
import javax.tools.Diagnostic.Kind;
5455

5556
/**
5657
* THIS IS NOT PUBLIC API.
@@ -78,7 +79,6 @@ public final class TruffleTypes {
7879
private final DeclaredType nodeUtil;
7980
private final DeclaredType nodeFactory;
8081
private final DeclaredType nodeFactoryBase;
81-
private final DeclaredType dslMetadata;
8282
private final DeclaredType generateNodeFactory;
8383
private final TypeElement expectError;
8484

@@ -104,7 +104,6 @@ public final class TruffleTypes {
104104
nodeUtil = getRequired(context, NodeUtil.class);
105105
nodeFactory = getRequired(context, NodeFactory.class);
106106
nodeFactoryBase = getRequired(context, NodeFactoryBase.class);
107-
dslMetadata = getRequired(context, DSLMetadata.class);
108107
expectError = getOptional(context, EXPECT_ERROR_CLASS_NAME);
109108
generateNodeFactory = getRequired(context, GenerateNodeFactory.class);
110109
}
@@ -113,10 +112,6 @@ public DeclaredType getGenerateNodeFactory() {
113112
return generateNodeFactory;
114113
}
115114

116-
public DeclaredType getDslMetadata() {
117-
return dslMetadata;
118-
}
119-
120115
public DeclaredType getNodeFactory() {
121116
return nodeFactory;
122117
}

truffle/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeFactoryFactory.java

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@
4646

4747
class NodeFactoryFactory {
4848

49-
static final String EMPTY_CLASS_ARRAY = "EMPTY_CLASS_ARRAY";
50-
5149
private final ProcessorContext context;
5250
private final NodeData node;
5351
private final CodeTypeElement createdFactoryElement;
@@ -95,33 +93,25 @@ private Element createNodeFactoryConstructor() {
9593

9694
// execution signature
9795
builder.startGroup();
98-
if (node.getChildExecutions().isEmpty()) {
99-
builder.staticReference(context.getTruffleTypes().getDslMetadata(), EMPTY_CLASS_ARRAY);
100-
} else {
101-
builder.startNewArray(new ArrayCodeTypeMirror(context.getType(Class.class)), null);
102-
for (NodeExecutionData execution : node.getChildExecutions()) {
103-
builder.typeLiteral(execution.getNodeType());
104-
}
105-
builder.end();
96+
builder.startNewArray(new ArrayCodeTypeMirror(context.getType(Class.class)), null);
97+
for (NodeExecutionData execution : node.getChildExecutions()) {
98+
builder.typeLiteral(execution.getNodeType());
10699
}
107100
builder.end();
101+
builder.end();
108102

109103
// node signatures
110104
builder.startGroup();
111105
builder.startNewArray(new ArrayCodeTypeMirror(new ArrayCodeTypeMirror(context.getType(Class.class))), null);
112106
List<ExecutableElement> constructors = GeneratorUtils.findUserConstructors(createdFactoryElement.asType());
113107
for (ExecutableElement constructor : constructors) {
114108
builder.startGroup();
115-
if (constructor.getParameters().isEmpty()) {
116-
builder.staticReference(context.getTruffleTypes().getDslMetadata(), EMPTY_CLASS_ARRAY);
117-
} else {
118-
builder.startNewArray(new ArrayCodeTypeMirror(context.getType(Class.class)), null);
119-
for (VariableElement var : constructor.getParameters()) {
120-
builder.typeLiteral(var.asType());
121-
}
122-
builder.end();
109+
builder.startNewArray(new ArrayCodeTypeMirror(context.getType(Class.class)), null);
110+
for (VariableElement var : constructor.getParameters()) {
111+
builder.typeLiteral(var.asType());
123112
}
124113
builder.end();
114+
builder.end();
125115
}
126116
builder.end();
127117
builder.end();

truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/SLTypes.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import com.oracle.truffle.api.dsl.TypeCheck;
4949
import com.oracle.truffle.api.dsl.TypeSystem;
5050
import com.oracle.truffle.api.dsl.internal.DSLOptions;
51+
import com.oracle.truffle.api.dsl.internal.DSLOptions.DSLGenerator;
5152
import com.oracle.truffle.sl.SLLanguage;
5253
import com.oracle.truffle.sl.runtime.SLFunction;
5354
import com.oracle.truffle.sl.runtime.SLNull;
@@ -59,7 +60,7 @@
5960
* generated ones would not be sufficient.
6061
*/
6162
@TypeSystem({long.class, BigInteger.class, boolean.class, String.class, SLFunction.class, SLNull.class})
62-
@DSLOptions
63+
@DSLOptions(defaultGenerator = DSLGenerator.FLAT)
6364
public abstract class SLTypes {
6465

6566
/**

truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/access/SLPropertyCacheNode.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,18 @@
4444

4545
import com.oracle.truffle.api.CompilerAsserts;
4646
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
47+
import com.oracle.truffle.api.dsl.TypeSystemReference;
4748
import com.oracle.truffle.api.interop.TruffleObject;
4849
import com.oracle.truffle.api.nodes.Node;
4950
import com.oracle.truffle.api.object.DynamicObject;
5051
import com.oracle.truffle.api.object.Shape;
52+
import com.oracle.truffle.sl.nodes.SLTypes;
5153
import com.oracle.truffle.sl.nodes.expression.SLEqualNode;
5254
import com.oracle.truffle.sl.runtime.SLContext;
5355
import com.oracle.truffle.sl.runtime.SLFunction;
5456
import com.oracle.truffle.sl.runtime.SLNull;
5557

58+
@TypeSystemReference(SLTypes.class)
5659
public abstract class SLPropertyCacheNode extends Node {
5760
protected static final int CACHE_LIMIT = 3;
5861

truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/call/SLDispatchNode.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import com.oracle.truffle.api.dsl.Cached;
4545
import com.oracle.truffle.api.dsl.Fallback;
4646
import com.oracle.truffle.api.dsl.Specialization;
47+
import com.oracle.truffle.api.dsl.TypeSystemReference;
4748
import com.oracle.truffle.api.frame.VirtualFrame;
4849
import com.oracle.truffle.api.interop.ArityException;
4950
import com.oracle.truffle.api.interop.ForeignAccess;
@@ -54,11 +55,13 @@
5455
import com.oracle.truffle.api.nodes.DirectCallNode;
5556
import com.oracle.truffle.api.nodes.IndirectCallNode;
5657
import com.oracle.truffle.api.nodes.Node;
58+
import com.oracle.truffle.sl.nodes.SLTypes;
5759
import com.oracle.truffle.sl.nodes.interop.SLForeignToSLTypeNode;
5860
import com.oracle.truffle.sl.nodes.interop.SLForeignToSLTypeNodeGen;
5961
import com.oracle.truffle.sl.runtime.SLFunction;
6062
import com.oracle.truffle.sl.runtime.SLUndefinedNameException;
6163

64+
@TypeSystemReference(SLTypes.class)
6265
public abstract class SLDispatchNode extends Node {
6366

6467
protected static final int INLINE_CACHE_SIZE = 2;

truffle/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/interop/SLForeignToSLTypeNode.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,21 @@
4242

4343
import com.oracle.truffle.api.CompilerDirectives;
4444
import com.oracle.truffle.api.dsl.Specialization;
45+
import com.oracle.truffle.api.dsl.TypeSystemReference;
4546
import com.oracle.truffle.api.frame.VirtualFrame;
4647
import com.oracle.truffle.api.interop.ForeignAccess;
4748
import com.oracle.truffle.api.interop.Message;
4849
import com.oracle.truffle.api.interop.TruffleObject;
4950
import com.oracle.truffle.api.interop.UnsupportedMessageException;
5051
import com.oracle.truffle.api.nodes.Node;
52+
import com.oracle.truffle.sl.nodes.SLTypes;
5153
import com.oracle.truffle.sl.runtime.SLContext;
5254
import com.oracle.truffle.sl.runtime.SLNull;
5355

5456
/**
5557
* The node for converting a foreign primitive or boxed primitive value to an SL value.
5658
*/
59+
@TypeSystemReference(SLTypes.class)
5760
public abstract class SLForeignToSLTypeNode extends Node {
5861

5962
public abstract Object executeConvert(VirtualFrame frame, Object value);

0 commit comments

Comments
 (0)