Skip to content

Commit 687ae1f

Browse files
committed
[GR-15990] Remove context from ModuleFields
PullRequest: truffleruby/2405
2 parents 6085151 + 359b74b commit 687ae1f

24 files changed

+77
-83
lines changed

src/main/java/org/truffleruby/RubyContext.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ public RubyContext(RubyLanguage language, TruffleLanguage.Env env) {
169169
this.preInitializing = isPreInitializingContext();
170170
this.preInitialized = preInitializing;
171171

172-
preInitializationManager = preInitializing ? new PreInitializationManager(this) : null;
172+
preInitializationManager = preInitializing ? new PreInitializationManager() : null;
173173

174174
this.language = language;
175175
this.env = env;
@@ -437,7 +437,7 @@ private TruffleNFIPlatform createNativePlatform() {
437437
}
438438

439439
@TruffleBoundary
440-
public Object send(Object object, String methodName, Object... arguments) {
440+
public static Object send(Object object, String methodName, Object... arguments) {
441441
final InternalMethod method = ModuleOperations
442442
.lookupMethodUncached(MetaClassNode.getUncached().execute(object), methodName, null);
443443
if (method == null || method.isUndefined()) {
@@ -450,7 +450,7 @@ public Object send(Object object, String methodName, Object... arguments) {
450450
}
451451

452452
@TruffleBoundary
453-
public Object send(Node currentNode, Object object, String methodName, Object... arguments) {
453+
public static Object send(Node currentNode, Object object, String methodName, Object... arguments) {
454454
final EncapsulatingNodeReference callNodeRef = EncapsulatingNodeReference.getCurrent();
455455
final Node prev = callNodeRef.set(currentNode);
456456
try {

src/main/java/org/truffleruby/RubyLanguage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ protected Object findExportedSymbol(RubyContext context, String symbolName, bool
371371
return null;
372372
}
373373

374-
Object implicit = context.send(
374+
Object implicit = RubyContext.send(
375375
context.getCoreLibrary().truffleInteropModule,
376376
"lookup_symbol",
377377
symbolTable.getSymbol(symbolName));

src/main/java/org/truffleruby/core/CoreLibrary.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -304,11 +304,11 @@ public CoreLibrary(RubyContext context, RubyLanguage language) {
304304

305305
// Create the cyclic classes and modules
306306

307-
classClass = ClassNodes.createClassClass(context);
307+
classClass = ClassNodes.createClassClass(language);
308308

309-
basicObjectClass = ClassNodes.createBootClass(context, classClass, Nil.INSTANCE, "BasicObject");
310-
objectClass = ClassNodes.createBootClass(context, classClass, basicObjectClass, "Object");
311-
moduleClass = ClassNodes.createBootClass(context, classClass, objectClass, "Module");
309+
basicObjectClass = ClassNodes.createBootClass(language, classClass, Nil.INSTANCE, "BasicObject");
310+
objectClass = ClassNodes.createBootClass(language, classClass, basicObjectClass, "Object");
311+
moduleClass = ClassNodes.createBootClass(language, classClass, objectClass, "Module");
312312

313313
// Close the cycles
314314
// Set superclass of Class to Module

src/main/java/org/truffleruby/core/adapters/InputStreamAdapter.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,17 @@
1818
* calling readLine(). */
1919
public class InputStreamAdapter extends NonBlockingInputStream {
2020

21-
private final RubyContext context;
2221
private final RubyIO object;
2322

2423
private int peeked = EOF;
2524

26-
public InputStreamAdapter(RubyContext context, RubyIO object) {
27-
this.context = context;
25+
public InputStreamAdapter(RubyIO object) {
2826
this.object = object;
2927
}
3028

3129
@Override
3230
public int read() {
33-
final Object result = context.send(object, "getbyte");
31+
final Object result = RubyContext.send(object, "getbyte");
3432

3533
if (result == Nil.INSTANCE) {
3634
return EOF;

src/main/java/org/truffleruby/core/adapters/OutputStreamAdapter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public OutputStreamAdapter(RubyContext context, RubyLanguage language, RubyIO ob
3535

3636
@Override
3737
public void write(int bite) {
38-
context.send(
38+
RubyContext.send(
3939
object,
4040
"write",
4141
StringOperations

src/main/java/org/truffleruby/core/exception/CoreExceptions.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public void showExceptionIfDebug(RubyException exception) {
7777
public void showExceptionIfDebug(RubyException rubyException, Backtrace backtrace) {
7878
if (context.getCoreLibrary().getDebug() == Boolean.TRUE) {
7979
final RubyClass rubyClass = rubyException.getLogicalClass();
80-
final Object message = context.send(rubyException, "to_s");
80+
final Object message = RubyContext.send(rubyException, "to_s");
8181
showExceptionIfDebug(rubyClass, message, backtrace);
8282
}
8383
}
@@ -94,12 +94,12 @@ public void showExceptionIfDebug(RubyClass rubyClass, Object message, Backtrace
9494
String output = "Exception `" + exceptionClass + "'" + from + " - " + message + "\n";
9595
RubyString outputString = StringOperations
9696
.createString(context, language, StringOperations.encodeRope(output, UTF8Encoding.INSTANCE));
97-
context.send(stderr, "write", outputString);
97+
RubyContext.send(stderr, "write", outputString);
9898
}
9999
}
100100

101101
public String inspectReceiver(Object receiver) {
102-
Object rubyString = context.send(
102+
Object rubyString = RubyContext.send(
103103
context.getCoreLibrary().truffleExceptionOperationsModule,
104104
"receiver_string",
105105
receiver);
@@ -216,7 +216,9 @@ public RubyException argumentErrorWrongArgumentType(Object object, String expect
216216
public RubyException argumentErrorInvalidStringToInteger(Object object, Node currentNode) {
217217
assert object instanceof RubyString || object instanceof ImmutableRubyString;
218218
// TODO (nirvdrum 19-Apr-18): Guard against String#inspect being redefined to return something other than a String.
219-
final String formattedObject = RubyStringLibrary.getUncached().getJavaString(context.send(object, "inspect"));
219+
final String formattedObject = RubyStringLibrary
220+
.getUncached()
221+
.getJavaString(RubyContext.send(object, "inspect"));
220222
return argumentError(StringUtils.format("invalid value for Integer(): %s", formattedObject), currentNode);
221223
}
222224

@@ -623,7 +625,7 @@ public RubyException typeError(String message, Node currentNode, Throwable javaT
623625
@TruffleBoundary
624626
public RubyException typeErrorUnsupportedTypeException(UnsupportedTypeException exception, Node currentNode) {
625627
RubyArray rubyArray = createArray(context, language, exception.getSuppliedValues());
626-
String formattedValues = RubyStringLibrary.getUncached().getJavaString(context.send(rubyArray, "inspect"));
628+
String formattedValues = RubyStringLibrary.getUncached().getJavaString(RubyContext.send(rubyArray, "inspect"));
627629
return typeError("unsupported type " + formattedValues, currentNode);
628630
}
629631

src/main/java/org/truffleruby/core/exception/ExceptionOperations.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@ private static String messageFieldToString(RubyException exception) {
5151
}
5252

5353
@TruffleBoundary
54-
public static String messageToString(RubyContext context, RubyException exception) {
54+
public static String messageToString(RubyException exception) {
5555
try {
56-
final Object messageObject = context.send(exception, "message");
56+
final Object messageObject = RubyContext.send(exception, "message");
5757

5858
final RubyStringLibrary libString = RubyStringLibrary.getUncached();
5959
if (libString.isRubyString(messageObject)) {

src/main/java/org/truffleruby/core/hash/PreInitializationManager.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,10 @@
2121

2222
public final class PreInitializationManager {
2323

24-
private final RubyContext context;
25-
2624
private final List<ReHashable> reHashables = new ArrayList<>();
2725

2826
private final Set<RubyHash> hashesCreatedDuringPreInit = Collections.newSetFromMap(new WeakHashMap<>());
2927

30-
public PreInitializationManager(RubyContext context) {
31-
this.context = context;
32-
}
33-
3428
public void addReHashable(ReHashable reHashable) {
3529
// This might get called multiple times for the same ReHashable,
3630
// so only add it if it is not already in the List.
@@ -59,7 +53,7 @@ public void rehash() {
5953
private void rehashRubyHashes() {
6054
for (RubyHash hash : hashesCreatedDuringPreInit) {
6155
if (!HashGuards.isCompareByIdentity(hash)) {
62-
context.send(hash, "rehash");
56+
RubyContext.send(hash, "rehash");
6357
}
6458
}
6559
hashesCreatedDuringPreInit.clear();

src/main/java/org/truffleruby/core/klass/ClassNodes.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
import com.oracle.truffle.api.frame.Frame;
1313
import org.truffleruby.RubyContext;
14+
import org.truffleruby.RubyLanguage;
1415
import org.truffleruby.builtins.CoreMethod;
1516
import org.truffleruby.builtins.CoreMethodArrayArgumentsNode;
1617
import org.truffleruby.builtins.CoreModule;
@@ -42,8 +43,8 @@ public abstract class ClassNodes {
4243

4344
/** Special constructor for class Class */
4445
@TruffleBoundary
45-
public static RubyClass createClassClass(RubyContext context) {
46-
final RubyClass rubyClass = new RubyClass(context, context.getLanguageSlow().classShape);
46+
public static RubyClass createClassClass(RubyLanguage language) {
47+
final RubyClass rubyClass = new RubyClass(language, language.classShape);
4748

4849
assert rubyClass.getLogicalClass() == rubyClass;
4950
assert rubyClass.getMetaClass() == rubyClass;
@@ -54,10 +55,11 @@ public static RubyClass createClassClass(RubyContext context) {
5455
/** This constructor supports initialization and solves boot-order problems and should not normally be used from
5556
* outside this class. */
5657
@TruffleBoundary
57-
public static RubyClass createBootClass(RubyContext context, RubyClass classClass, Object superclass, String name) {
58+
public static RubyClass createBootClass(RubyLanguage language, RubyClass classClass, Object superclass,
59+
String name) {
5860
final RubyClass rubyClass = new RubyClass(
5961
classClass,
60-
context,
62+
language,
6163
null,
6264
null,
6365
name,
@@ -122,7 +124,7 @@ public static RubyClass createRubyClass(RubyContext context,
122124
assert superclass != null;
123125
final RubyClass rubyClass = new RubyClass(
124126
classClass,
125-
context,
127+
context.getLanguageSlow(),
126128
sourceSection,
127129
lexicalParent,
128130
name,
@@ -151,7 +153,7 @@ public static RubyClass createUninitializedRubyClass(RubyContext context,
151153

152154
final RubyClass rubyClass = new RubyClass(
153155
classClass,
154-
context,
156+
context.getLanguageSlow(),
155157
sourceSection,
156158
null,
157159
null,

src/main/java/org/truffleruby/core/klass/RubyClass.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import java.util.Set;
1414

1515
import com.oracle.truffle.api.source.SourceSection;
16-
import org.truffleruby.RubyContext;
16+
import org.truffleruby.RubyLanguage;
1717
import org.truffleruby.core.module.RubyModule;
1818
import org.truffleruby.language.RubyDynamicObject;
1919
import org.truffleruby.language.objects.IsANode;
@@ -44,14 +44,14 @@ public final class RubyClass extends RubyModule implements ObjectGraphNode {
4444

4545
public RubyClass(
4646
RubyClass classClass,
47-
RubyContext context,
47+
RubyLanguage language,
4848
SourceSection sourceSection,
4949
RubyModule lexicalParent,
5050
String givenBaseName,
5151
boolean isSingleton,
5252
RubyDynamicObject attached,
5353
Object superclass) {
54-
super(classClass, context.getLanguageSlow().classShape, context, sourceSection, lexicalParent, givenBaseName);
54+
super(classClass, language.classShape, language, sourceSection, lexicalParent, givenBaseName);
5555
assert !isSingleton || givenBaseName == null;
5656
this.isSingleton = isSingleton;
5757
this.attached = attached;
@@ -69,8 +69,8 @@ public RubyClass(
6969

7070

7171
/** Special constructor to build the 'Class' RubyClass itself. The superclass is set later. */
72-
RubyClass(RubyContext context, Shape classShape) {
73-
super(context, classShape, "constructor only for the class Class");
72+
RubyClass(RubyLanguage language, Shape classShape) {
73+
super(language, classShape, "constructor only for the class Class");
7474
this.isSingleton = false;
7575
this.attached = null;
7676
this.superclass = null;

0 commit comments

Comments
 (0)