Skip to content

Commit 8818341

Browse files
committed
No need to pass a SingletonClassNode for DeclarationContext#getModuleToDefineMethods()
1 parent 6ea8121 commit 8818341

File tree

2 files changed

+8
-22
lines changed

2 files changed

+8
-22
lines changed

src/main/java/org/truffleruby/language/methods/DeclarationContext.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@
1717
import org.truffleruby.core.module.RubyModule;
1818
import org.truffleruby.language.Visibility;
1919
import org.truffleruby.language.arguments.RubyArguments;
20-
import org.truffleruby.language.objects.SingletonClassNode;
2120

2221
import com.oracle.truffle.api.CompilerDirectives;
2322
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
2423
import com.oracle.truffle.api.frame.Frame;
24+
import org.truffleruby.language.objects.SingletonClassNode;
2525

2626
/** The set of values captured when a method is defined:
2727
* <ul>
@@ -35,7 +35,7 @@ public class DeclarationContext {
3535

3636
/** @see <a href="http://yugui.jp/articles/846">http://yugui.jp/articles/846</a> */
3737
private interface DefaultDefinee {
38-
RubyModule getModuleToDefineMethods(SingletonClassNode singletonClassNode);
38+
RubyModule getModuleToDefineMethods();
3939
}
4040

4141
/** #instance_eval, the default definee is self.singleton_class */
@@ -46,8 +46,8 @@ public SingletonClassOfSelfDefaultDefinee(Object self) {
4646
this.self = self;
4747
}
4848

49-
public RubyModule getModuleToDefineMethods(SingletonClassNode singletonClassNode) {
50-
return singletonClassNode.executeSingletonClass(self);
49+
public RubyModule getModuleToDefineMethods() {
50+
return SingletonClassNode.getUncached().executeSingletonClass(self);
5151
}
5252
}
5353

@@ -59,7 +59,7 @@ public FixedDefaultDefinee(RubyModule module) {
5959
this.module = module;
6060
}
6161

62-
public RubyModule getModuleToDefineMethods(SingletonClassNode singletonClassNode) {
62+
public RubyModule getModuleToDefineMethods() {
6363
return module;
6464
}
6565
}
@@ -159,9 +159,9 @@ public RubyModule[] getRefinementsFor(RubyModule module) {
159159
}
160160

161161
@TruffleBoundary
162-
public RubyModule getModuleToDefineMethods(SingletonClassNode singletonClassNode) {
162+
public RubyModule getModuleToDefineMethods() {
163163
assert defaultDefinee != null : "Trying to find the default definee but this method should not have method definitions inside";
164-
return defaultDefinee.getModuleToDefineMethods(singletonClassNode);
164+
return defaultDefinee.getModuleToDefineMethods();
165165
}
166166

167167
public boolean hasRefinements() {

src/main/java/org/truffleruby/language/methods/GetDefaultDefineeNode.java

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,26 +12,12 @@
1212
import org.truffleruby.core.module.RubyModule;
1313
import org.truffleruby.language.RubyContextSourceNode;
1414
import org.truffleruby.language.arguments.RubyArguments;
15-
import org.truffleruby.language.objects.SingletonClassNode;
1615

17-
import com.oracle.truffle.api.CompilerDirectives;
1816
import com.oracle.truffle.api.frame.VirtualFrame;
1917

2018
public class GetDefaultDefineeNode extends RubyContextSourceNode {
21-
22-
@Child private SingletonClassNode singletonClassNode;
23-
2419
@Override
2520
public RubyModule execute(VirtualFrame frame) {
26-
final DeclarationContext declarationContext = RubyArguments.getDeclarationContext(frame);
27-
return declarationContext.getModuleToDefineMethods(getSingletonClassNode());
28-
}
29-
30-
private SingletonClassNode getSingletonClassNode() {
31-
if (singletonClassNode == null) {
32-
CompilerDirectives.transferToInterpreterAndInvalidate();
33-
singletonClassNode = insert(SingletonClassNode.create());
34-
}
35-
return singletonClassNode;
21+
return RubyArguments.getDeclarationContext(frame).getModuleToDefineMethods();
3622
}
3723
}

0 commit comments

Comments
 (0)