Skip to content

Commit ba33c30

Browse files
committed
ForeignClassNode supports DSL inlining
1 parent 46e4664 commit ba33c30

File tree

3 files changed

+9
-4
lines changed

3 files changed

+9
-4
lines changed

src/main/java/org/truffleruby/language/objects/ForeignClassNode.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@
1111

1212
import com.oracle.truffle.api.CompilerDirectives;
1313
import com.oracle.truffle.api.dsl.Cached;
14+
import com.oracle.truffle.api.dsl.GenerateCached;
15+
import com.oracle.truffle.api.dsl.GenerateInline;
1416
import com.oracle.truffle.api.dsl.ReportPolymorphism;
17+
import com.oracle.truffle.api.nodes.Node;
1518
import org.truffleruby.core.klass.RubyClass;
1619
import org.truffleruby.core.symbol.RubySymbol;
1720
import org.truffleruby.language.RubyBaseNode;
@@ -27,6 +30,8 @@
2730

2831
@ReportPolymorphism
2932
@GenerateUncached
33+
@GenerateCached(false)
34+
@GenerateInline(inlineByDefault = true)
3035
public abstract class ForeignClassNode extends RubyBaseNode {
3136

3237
// Specs for traits are in
@@ -67,7 +72,7 @@ boolean isSet(int traits) {
6772
}
6873
}
6974

70-
public abstract RubyClass execute(Object value);
75+
public abstract RubyClass execute(Node node, Object value);
7176

7277
@Specialization(guards = "getTraits(object, interop) == cachedTraits", limit = "getInteropCacheLimit()")
7378
protected RubyClass cached(Object object,

src/main/java/org/truffleruby/language/objects/LogicalClassNode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ protected RubyClass logicalClassImmutable(Object value,
5252
@Specialization(guards = "isForeignObject(object)")
5353
protected RubyClass logicalClassForeign(Object object,
5454
@Cached ForeignClassNode foreignClassNode) {
55-
return foreignClassNode.execute(object);
55+
return foreignClassNode.execute(this, object);
5656
}
5757

5858
protected int getCacheLimit() {

src/main/java/org/truffleruby/language/objects/MetaClassNode.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,9 @@ protected static RubyClass immutable(Node node, Object value,
6767

6868
@InliningCutoff
6969
@Specialization(guards = "isForeignObject(object)")
70-
protected RubyClass foreign(Object object,
70+
protected static RubyClass foreign(Node node, Object object,
7171
@Cached ForeignClassNode foreignClassNode) {
72-
return foreignClassNode.execute(object);
72+
return foreignClassNode.execute(node, object);
7373
}
7474

7575
protected int getCacheLimit() {

0 commit comments

Comments
 (0)