Skip to content

Commit e3d1cc9

Browse files
committed
Cleanups
1 parent ea2429f commit e3d1cc9

File tree

2 files changed

+7
-16
lines changed

2 files changed

+7
-16
lines changed

src/main/java/org/truffleruby/language/dispatch/DispatchMethodMissingNode.java

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.oracle.truffle.api.dsl.Cached;
1515
import com.oracle.truffle.api.dsl.GenerateInline;
1616
import com.oracle.truffle.api.dsl.GenerateUncached;
17+
import com.oracle.truffle.api.dsl.ImportStatic;
1718
import com.oracle.truffle.api.dsl.Specialization;
1819
import com.oracle.truffle.api.frame.Frame;
1920
import com.oracle.truffle.api.nodes.Node;
@@ -22,7 +23,6 @@
2223
import org.truffleruby.core.exception.ExceptionOperations;
2324
import org.truffleruby.core.symbol.RubySymbol;
2425
import org.truffleruby.language.RubyBaseNode;
25-
import org.truffleruby.language.RubyGuards;
2626
import org.truffleruby.language.arguments.RubyArguments;
2727
import org.truffleruby.language.control.RaiseException;
2828
import org.truffleruby.language.methods.CallForeignMethodNode;
@@ -31,14 +31,15 @@
3131

3232
@GenerateInline(false)
3333
@GenerateUncached
34+
@ImportStatic(MissingBehavior.class)
3435
public abstract class DispatchMethodMissingNode extends RubyBaseNode {
3536

3637

3738
public abstract Object execute(Frame frame, Object receiver, String methodName, Object[] rubyArgs,
3839
DispatchConfiguration config, LiteralCallNode literalCallNode);
3940

4041

41-
@Specialization(guards = "isReturnMissing(config)")
42+
@Specialization(guards = "config.missingBehavior == RETURN_MISSING")
4243
protected static Object dispatchReturnMissing(
4344
Frame frame,
4445
Object receiver,
@@ -50,7 +51,7 @@ protected static Object dispatchReturnMissing(
5051
}
5152

5253
@InliningCutoff
53-
@Specialization(guards = "isForeignObject(config, receiver)")
54+
@Specialization(guards = { "config.missingBehavior == CALL_METHOD_MISSING", "isForeignObject(receiver)" })
5455
protected static Object dispatchForeign(
5556
Frame frame,
5657
Object receiver,
@@ -65,7 +66,7 @@ protected static Object dispatchForeign(
6566
}
6667

6768
@InliningCutoff
68-
@Specialization(guards = "isMethodMissing(config, receiver)")
69+
@Specialization(guards = { "config.missingBehavior == CALL_METHOD_MISSING", "!isForeignObject(receiver)" })
6970
protected static Object dispatchMissingMethod(
7071
Frame frame,
7172
Object receiver,
@@ -97,16 +98,4 @@ protected static Object dispatchMissingMethod(
9798

9899
return result;
99100
}
100-
101-
protected static boolean isReturnMissing(DispatchConfiguration config) {
102-
return config.missingBehavior == MissingBehavior.RETURN_MISSING;
103-
}
104-
105-
protected static boolean isForeignObject(DispatchConfiguration config, Object receiver) {
106-
return config.missingBehavior == MissingBehavior.CALL_METHOD_MISSING && RubyGuards.isForeignObject(receiver);
107-
}
108-
109-
protected static boolean isMethodMissing(DispatchConfiguration config, Object receiver) {
110-
return config.missingBehavior == MissingBehavior.CALL_METHOD_MISSING && !RubyGuards.isForeignObject(receiver);
111-
}
112101
}

src/main/java/org/truffleruby/language/dispatch/DispatchNode.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
package org.truffleruby.language.dispatch;
1111

1212
import com.oracle.truffle.api.Assumption;
13+
import com.oracle.truffle.api.CompilerAsserts;
1314
import com.oracle.truffle.api.RootCallTarget;
1415
import com.oracle.truffle.api.dsl.Cached;
1516
import com.oracle.truffle.api.dsl.GenerateUncached;
@@ -303,6 +304,7 @@ protected final Object dispatchInternal(Frame frame, Object receiver, String met
303304
Assumption specialVariableAssumption,
304305
LazyDispatchMethodMissingNode lazyDispatchMethodMissingNode) {
305306
assert RubyArguments.getSelf(rubyArgs) == receiver;
307+
CompilerAsserts.partialEvaluationConstant(config);
306308

307309
final RubyClass metaclass = metaClassNode.execute(this, receiver);
308310
final InternalMethod method = lookupMethodNode.execute(frame, metaclass, methodName, config);

0 commit comments

Comments
 (0)