Skip to content

Commit 540a80d

Browse files
committed
Move CoreStrings to RubyLanguage
1 parent e68afb3 commit 540a80d

35 files changed

+96
-91
lines changed

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ public class RubyContext {
111111
private final SharedObjects sharedObjects = new SharedObjects(this);
112112
private final AtExitManager atExitManager = new AtExitManager(this);
113113
private final CallStackManager callStack = new CallStackManager(this);
114-
private final CoreStrings coreStrings = new CoreStrings(this);
115114
private final FrozenStringLiterals frozenStringLiterals = new FrozenStringLiterals(this);
116115
private final CoreExceptions coreExceptions = new CoreExceptions(this);
117116
private final EncodingManager encodingManager = new EncodingManager(this);
@@ -623,7 +622,7 @@ public CallStackManager getCallStack() {
623622
}
624623

625624
public CoreStrings getCoreStrings() {
626-
return coreStrings;
625+
return language.coreStrings;
627626
}
628627

629628
public RubyString getFrozenStringLiteral(Rope rope) {

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.truffleruby.core.objectspace.ObjectSpaceManager;
2121
import org.truffleruby.core.rope.Rope;
2222
import org.truffleruby.core.rope.RopeCache;
23+
import org.truffleruby.core.string.CoreStrings;
2324
import org.truffleruby.core.string.StringUtils;
2425
import org.truffleruby.core.symbol.RubySymbol;
2526
import org.truffleruby.core.symbol.SymbolTable;
@@ -92,6 +93,7 @@ public class RubyLanguage extends TruffleLanguage<RubyContext> {
9293
private final CyclicAssumption tracingCyclicAssumption = new CyclicAssumption("object-space-tracing");
9394
@CompilationFinal private volatile Assumption tracingAssumption = tracingCyclicAssumption.getAssumption();
9495

96+
public final CoreStrings coreStrings;
9597
public final RopeCache ropeCache;
9698
public final SymbolTable symbolTable;
9799

@@ -100,6 +102,7 @@ public class RubyLanguage extends TruffleLanguage<RubyContext> {
100102
private final AtomicLong nextObjectID = new AtomicLong(ObjectSpaceManager.INITIAL_LANGUAGE_OBJECT_ID);
101103

102104
public RubyLanguage() {
105+
coreStrings = new CoreStrings(this);
103106
ropeCache = new RopeCache();
104107
symbolTable = new SymbolTable(ropeCache);
105108
}

src/main/java/org/truffleruby/core/array/ArrayNodes.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1212,7 +1212,8 @@ public boolean respondToToAry(Object object) {
12121212
CompilerDirectives.transferToInterpreterAndInvalidate();
12131213
respondToToAryNode = insert(KernelNodesFactory.RespondToNodeFactory.create(null, null, null));
12141214
}
1215-
return respondToToAryNode.executeDoesRespondTo(null, object, coreStrings().TO_ARY.createInstance(), true);
1215+
return respondToToAryNode
1216+
.executeDoesRespondTo(null, object, coreStrings().TO_ARY.createInstance(getContext()), true);
12161217
}
12171218

12181219
protected Object callToAry(Object object) {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ protected Object instanceEval(
378378
callerFrame,
379379
receiver,
380380
string,
381-
coreStrings().EVAL_FILENAME_STRING.createInstance(),
381+
coreStrings().EVAL_FILENAME_STRING.createInstance(getContext()),
382382
1,
383383
callNode);
384384
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ public RubyException noMemoryError(Node currentNode, OutOfMemoryError javaThrowa
308308
return ExceptionOperations.createRubyException(
309309
context,
310310
exceptionClass,
311-
coreStrings().FAILED_TO_ALLOCATE_MEMORY.createInstance(),
311+
coreStrings().FAILED_TO_ALLOCATE_MEMORY.createInstance(context),
312312
currentNode,
313313
javaThrowable);
314314
}
@@ -1037,7 +1037,7 @@ public RubyException encodingUndefinedConversionError(Node currentNode) {
10371037
return ExceptionOperations.createRubyException(
10381038
context,
10391039
exceptionClass,
1040-
coreStrings().REPLACEMENT_CHARACTER_SETUP_FAILED.createInstance(),
1040+
coreStrings().REPLACEMENT_CHARACTER_SETUP_FAILED.createInstance(context),
10411041
currentNode,
10421042
null);
10431043
}

src/main/java/org/truffleruby/core/kernel/TraceManager.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public synchronized void setTraceFunc(RubyProc traceFunc) {
9393
context,
9494
eventContext,
9595
traceFunc,
96-
context.getCoreStrings().LINE.createInstance())));
96+
context.getCoreStrings().LINE.createInstance(context))));
9797

9898
instruments.add(
9999
instrumenter.attachExecutionEventFactory(
@@ -106,7 +106,7 @@ public synchronized void setTraceFunc(RubyProc traceFunc) {
106106
context,
107107
eventContext,
108108
traceFunc,
109-
context.getCoreStrings().CLASS.createInstance())));
109+
context.getCoreStrings().CLASS.createInstance(context))));
110110

111111
if (context.getOptions().TRACE_CALLS) {
112112
instruments.add(
@@ -121,7 +121,7 @@ public synchronized void setTraceFunc(RubyProc traceFunc) {
121121
context,
122122
eventContext,
123123
traceFunc,
124-
context.getCoreStrings().CALL.createInstance())));
124+
context.getCoreStrings().CALL.createInstance(context))));
125125
}
126126
}
127127

src/main/java/org/truffleruby/core/string/CoreString.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
import org.jcodings.specific.ASCIIEncoding;
1414
import org.truffleruby.RubyContext;
15+
import org.truffleruby.RubyLanguage;
1516
import org.truffleruby.core.rope.CodeRange;
1617
import org.truffleruby.core.rope.Rope;
1718

@@ -21,23 +22,23 @@
2122

2223
public class CoreString {
2324

24-
private final RubyContext context;
25+
private final RubyLanguage language;
2526
private final String literal;
2627

2728
@CompilationFinal private volatile Rope rope;
2829

29-
public CoreString(RubyContext context, String literal) {
30-
assert context != null;
30+
public CoreString(RubyLanguage language, String literal) {
31+
assert language != null;
3132
assert is7Bit(literal);
32-
this.context = context;
33+
this.language = language;
3334
this.literal = literal;
3435
}
3536

3637
public Rope getRope() {
3738
if (rope == null) {
3839
CompilerDirectives.transferToInterpreterAndInvalidate();
3940

40-
rope = context.getRopeCache().getRope(
41+
rope = language.ropeCache.getRope(
4142
RopeOperations.encodeAsciiBytes(literal),
4243
// Binary because error message Strings have a ASCII-8BIT encoding on MRI.
4344
// When used for creating a Symbol, the encoding is adapted as needed.
@@ -48,7 +49,7 @@ public Rope getRope() {
4849
return rope;
4950
}
5051

51-
public RubyString createInstance() {
52+
public RubyString createInstance(RubyContext context) {
5253
return StringOperations.createString(context, getRope());
5354
}
5455

src/main/java/org/truffleruby/core/string/CoreStrings.java

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*/
1010
package org.truffleruby.core.string;
1111

12-
import org.truffleruby.RubyContext;
12+
import org.truffleruby.RubyLanguage;
1313

1414
public class CoreStrings {
1515

@@ -50,43 +50,43 @@ public class CoreStrings {
5050
public final CoreString X_OUTSIDE_OF_STRING;
5151
public final CoreString YIELD;
5252

53-
public CoreStrings(RubyContext context) {
54-
ARGUMENT_OUT_OF_RANGE = new CoreString(context, "argument out of range");
55-
ASSIGNMENT = new CoreString(context, "assignment");
56-
CALL = new CoreString(context, "call");
57-
CANT_COMPRESS_NEGATIVE = new CoreString(context, "can't compress negative numbers");
58-
CLASS = new CoreString(context, "class");
59-
CLASS_VARIABLE = new CoreString(context, "class variable");
60-
CONSTANT = new CoreString(context, "constant");
61-
EVAL_FILENAME_STRING = new CoreString(context, "(eval)");
62-
EXPRESSION = new CoreString(context, "expression");
63-
FAILED_TO_ALLOCATE_MEMORY = new CoreString(context, "failed to allocate memory");
64-
FALSE = new CoreString(context, "false");
65-
GLOBAL_VARIABLE = new CoreString(context, "global-variable");
66-
INSTANCE_VARIABLE = new CoreString(context, "instance-variable");
67-
LINE = new CoreString(context, "line");
68-
LOCAL_VARIABLE = new CoreString(context, "local-variable");
69-
METHOD = new CoreString(context, "method");
70-
NEGATIVE_ARRAY_SIZE = new CoreString(context, "negative array size");
71-
NEGATIVE_STRING_SIZE = new CoreString(context, "negative string size (or size too big)");
72-
NIL = new CoreString(context, "nil");
73-
ONE_HASH_REQUIRED = new CoreString(context, "one hash required");
74-
PROC_WITHOUT_BLOCK = new CoreString(context, "tried to create Proc object without a block");
75-
REPLACEMENT_CHARACTER_SETUP_FAILED = new CoreString(context, "replacement character setup failed");
76-
SELF = new CoreString(context, "self");
77-
STACK_LEVEL_TOO_DEEP = new CoreString(context, "stack level too deep");
78-
SUPER = new CoreString(context, "super");
79-
TIME_INTERVAL_MUST_BE_POS = new CoreString(context, "time interval must be positive");
80-
TO_ARY = new CoreString(context, "to_ary");
81-
TO_STR = new CoreString(context, "to_str");
82-
TOO_FEW_ARGUMENTS = new CoreString(context, "too few arguments");
83-
TRUE = new CoreString(context, "true");
84-
TZ = new CoreString(context, "TZ");
85-
UNKNOWN = new CoreString(context, "(unknown)");
86-
UTC = new CoreString(context, "UTC");
87-
WRONG_ARGS_ZERO_PLUS_ONE = new CoreString(context, "wrong number of arguments (0 for 1+)");
88-
X_OUTSIDE_OF_STRING = new CoreString(context, "X outside of string");
89-
YIELD = new CoreString(context, "yield");
53+
public CoreStrings(RubyLanguage language) {
54+
ARGUMENT_OUT_OF_RANGE = new CoreString(language, "argument out of range");
55+
ASSIGNMENT = new CoreString(language, "assignment");
56+
CALL = new CoreString(language, "call");
57+
CANT_COMPRESS_NEGATIVE = new CoreString(language, "can't compress negative numbers");
58+
CLASS = new CoreString(language, "class");
59+
CLASS_VARIABLE = new CoreString(language, "class variable");
60+
CONSTANT = new CoreString(language, "constant");
61+
EVAL_FILENAME_STRING = new CoreString(language, "(eval)");
62+
EXPRESSION = new CoreString(language, "expression");
63+
FAILED_TO_ALLOCATE_MEMORY = new CoreString(language, "failed to allocate memory");
64+
FALSE = new CoreString(language, "false");
65+
GLOBAL_VARIABLE = new CoreString(language, "global-variable");
66+
INSTANCE_VARIABLE = new CoreString(language, "instance-variable");
67+
LINE = new CoreString(language, "line");
68+
LOCAL_VARIABLE = new CoreString(language, "local-variable");
69+
METHOD = new CoreString(language, "method");
70+
NEGATIVE_ARRAY_SIZE = new CoreString(language, "negative array size");
71+
NEGATIVE_STRING_SIZE = new CoreString(language, "negative string size (or size too big)");
72+
NIL = new CoreString(language, "nil");
73+
ONE_HASH_REQUIRED = new CoreString(language, "one hash required");
74+
PROC_WITHOUT_BLOCK = new CoreString(language, "tried to create Proc object without a block");
75+
REPLACEMENT_CHARACTER_SETUP_FAILED = new CoreString(language, "replacement character setup failed");
76+
SELF = new CoreString(language, "self");
77+
STACK_LEVEL_TOO_DEEP = new CoreString(language, "stack level too deep");
78+
SUPER = new CoreString(language, "super");
79+
TIME_INTERVAL_MUST_BE_POS = new CoreString(language, "time interval must be positive");
80+
TO_ARY = new CoreString(language, "to_ary");
81+
TO_STR = new CoreString(language, "to_str");
82+
TOO_FEW_ARGUMENTS = new CoreString(language, "too few arguments");
83+
TRUE = new CoreString(language, "true");
84+
TZ = new CoreString(language, "TZ");
85+
UNKNOWN = new CoreString(language, "(unknown)");
86+
UTC = new CoreString(language, "UTC");
87+
WRONG_ARGS_ZERO_PLUS_ONE = new CoreString(language, "wrong number of arguments (0 for 1+)");
88+
X_OUTSIDE_OF_STRING = new CoreString(language, "X outside of string");
89+
YIELD = new CoreString(language, "yield");
9090
}
9191

9292
}

src/main/java/org/truffleruby/core/string/StringNodes.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,8 @@ protected boolean equal(VirtualFrame frame, RubyString a, Object b) {
443443
respondToNode = insert(KernelNodesFactory.RespondToNodeFactory.create(null, null, null));
444444
}
445445

446-
if (respondToNode.executeDoesRespondTo(frame, b, coreStrings().TO_STR.createInstance(), false)) {
446+
if (respondToNode
447+
.executeDoesRespondTo(frame, b, coreStrings().TO_STR.createInstance(getContext()), false)) {
447448
if (objectEqualNode == null) {
448449
CompilerDirectives.transferToInterpreterAndInvalidate();
449450
objectEqualNode = insert(DispatchNode.create());

src/main/java/org/truffleruby/core/thread/ThreadBacktraceLocationNodes.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ protected RubyString absolutePath(RubyBacktraceLocation threadBacktraceLocation,
5353
final SourceSection sourceSection = getAvailableSourceSection(getContext(), threadBacktraceLocation);
5454

5555
if (sourceSection == null) {
56-
return coreStrings().UNKNOWN.createInstance();
56+
return coreStrings().UNKNOWN.createInstance(getContext());
5757
} else {
5858
final Source source = sourceSection.getSource();
5959
final String path = RubyContext.getPath(source);
@@ -82,7 +82,7 @@ protected RubyString path(RubyBacktraceLocation threadBacktraceLocation,
8282
final SourceSection sourceSection = getAvailableSourceSection(getContext(), threadBacktraceLocation);
8383

8484
if (sourceSection == null) {
85-
return coreStrings().UNKNOWN.createInstance();
85+
return coreStrings().UNKNOWN.createInstance(getContext());
8686
} else {
8787
final Rope path;
8888
if (BacktraceFormatter.isCore(getContext(), sourceSection)) {

0 commit comments

Comments
 (0)