Skip to content

Commit a1071d5

Browse files
committed
Convert CanHaveSingletonClassNode to DSL inlinable
1 parent ff7352a commit a1071d5

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

src/main/java/org/truffleruby/core/basicobject/BasicObjectNodes.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,7 @@ private static LexicalScope prependReceiverClassToScope(LexicalScope callerLexic
365365
// For BasicObject#instance_eval, the new scopes SHOULD affect constant lookup but SHOULD NOT affect class variables lookup
366366
LexicalScope lexicalScope = new LexicalScope(callerLexicalScope, logicalClass, true);
367367

368-
if (CanHaveSingletonClassNode.getUncached().execute(receiver)) {
368+
if (CanHaveSingletonClassNode.executeUncached(receiver)) {
369369
final RubyClass singletonClass = SingletonClassNode.getUncached().execute(receiver);
370370

371371
// For true/false/nil Ruby objects #singleton_class (and SingletonClassNode as well) returns

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

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,42 +10,47 @@
1010
package org.truffleruby.language.objects;
1111

1212
import com.oracle.truffle.api.dsl.Fallback;
13+
import com.oracle.truffle.api.dsl.GenerateCached;
14+
import com.oracle.truffle.api.dsl.GenerateInline;
1315
import com.oracle.truffle.api.dsl.GenerateUncached;
16+
import com.oracle.truffle.api.nodes.Node;
1417
import org.truffleruby.language.ImmutableRubyObject;
1518
import org.truffleruby.language.RubyBaseNode;
1619
import com.oracle.truffle.api.dsl.Specialization;
1720

1821
@GenerateUncached
22+
@GenerateCached(false)
23+
@GenerateInline
1924
public abstract class CanHaveSingletonClassNode extends RubyBaseNode {
2025

21-
public static CanHaveSingletonClassNode getUncached() {
22-
return CanHaveSingletonClassNodeGen.getUncached();
26+
public static boolean executeUncached(Object value) {
27+
return CanHaveSingletonClassNodeGen.getUncached().execute(null, value);
2328
}
2429

25-
public abstract boolean execute(Object value);
30+
public abstract boolean execute(Node node, Object value);
2631

2732
@Specialization
28-
boolean canHaveSingletonClass(int value) {
33+
static boolean canHaveSingletonClass(int value) {
2934
return false;
3035
}
3136

3237
@Specialization
33-
boolean canHaveSingletonClass(long value) {
38+
static boolean canHaveSingletonClass(long value) {
3439
return false;
3540
}
3641

3742
@Specialization
38-
boolean canHaveSingletonClass(double value) {
43+
static boolean canHaveSingletonClass(double value) {
3944
return false;
4045
}
4146

4247
@Specialization(guards = "!isNil(value)")
43-
boolean canHaveSingletonClass(ImmutableRubyObject value) {
48+
static boolean canHaveSingletonClass(ImmutableRubyObject value) {
4449
return false;
4550
}
4651

4752
@Fallback
48-
boolean fallback(Object value) {
53+
static boolean fallback(Object value) {
4954
return true;
5055
}
5156

0 commit comments

Comments
 (0)