Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c6973d6

Browse files
committed
[Truffle] Avoid creating a ByteList just to convert it to a Rope for Strings with unknown code ranges.
1 parent fce1e57 commit c6973d6

22 files changed

+42
-42
lines changed

truffle/src/main/java/org/jruby/truffle/nodes/core/ExceptionNodes.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public static DynamicObject backtraceAsRubyStringArray(RubyContext context, Dyna
3838
final Object[] array = new Object[lines.size()];
3939

4040
for (int n = 0;n < lines.size(); n++) {
41-
array[n] = StringOperations.createString(context, StringOperations.encodeByteList(lines.get(n), UTF8Encoding.INSTANCE));
41+
array[n] = StringOperations.createString(context, StringOperations.encodeRope(lines.get(n), UTF8Encoding.INSTANCE));
4242
}
4343

4444
return Layouts.ARRAY.createArray(context.getCoreLibrary().getArrayFactory(), array, array.length);
@@ -135,7 +135,7 @@ public Object message(DynamicObject exception) {
135135
final Object message = Layouts.EXCEPTION.getMessage(exception);
136136
if (message == null) {
137137
final String className = Layouts.MODULE.getFields(Layouts.BASIC_OBJECT.getLogicalClass(exception)).getName();
138-
return createString(StringOperations.encodeByteList(className, UTF8Encoding.INSTANCE));
138+
return createString(StringOperations.encodeRope(className, UTF8Encoding.INSTANCE));
139139
} else {
140140
return message;
141141
}

truffle/src/main/java/org/jruby/truffle/nodes/core/KernelNodes.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ public DynamicObject backtick(VirtualFrame frame, DynamicObject command) {
149149
}
150150

151151
// TODO (nirvdrum 10-Mar-15) This should be using the default external encoding, rather than hard-coded to UTF-8.
152-
return createString(StringOperations.encodeByteList(resultBuilder.toString(), EncodingOperations.getEncoding(EncodingNodes.getEncoding("UTF-8"))));
152+
return createString(StringOperations.encodeRope(resultBuilder.toString(), EncodingOperations.getEncoding(EncodingNodes.getEncoding("UTF-8"))));
153153
}
154154

155155
}
@@ -801,7 +801,7 @@ public String block() throws InterruptedException {
801801
}
802802
});
803803

804-
final DynamicObject rubyLine = createString(StringOperations.encodeByteList(line, UTF8Encoding.INSTANCE));
804+
final DynamicObject rubyLine = createString(StringOperations.encodeRope(line, UTF8Encoding.INSTANCE));
805805

806806
// Set the local variable $_ in the caller
807807

@@ -2063,7 +2063,7 @@ public DynamicObject toS(VirtualFrame frame, Object self) {
20632063
Object id = objectIDNode.executeObjectID(frame, self);
20642064
String hexID = toHexStringNode.executeToHexString(frame, id);
20652065

2066-
return createString(StringOperations.encodeByteList("#<" + className + ":0x" + hexID + ">", UTF8Encoding.INSTANCE));
2066+
return createString(StringOperations.encodeRope("#<" + className + ":0x" + hexID + ">", UTF8Encoding.INSTANCE));
20672067
}
20682068

20692069
}

truffle/src/main/java/org/jruby/truffle/nodes/core/LoadRequiredLibrariesNode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public Object execute(VirtualFrame frame) {
3737
Object self = RubyArguments.getSelf(frame.getArguments());
3838

3939
for (String requiredLibrary : getRequiredLibraries()) {
40-
requireNode.call(frame, self, "require", null, createString(StringOperations.encodeByteList(requiredLibrary, UTF8Encoding.INSTANCE)));
40+
requireNode.call(frame, self, "require", null, createString(StringOperations.encodeRope(requiredLibrary, UTF8Encoding.INSTANCE)));
4141
}
4242

4343
return nil();

truffle/src/main/java/org/jruby/truffle/nodes/core/MethodNodes.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ public Object sourceLocation(DynamicObject method) {
190190
if (sourceSection.getSource() == null) {
191191
return nil();
192192
} else {
193-
DynamicObject file = createString(StringOperations.encodeByteList(sourceSection.getSource().getName(), UTF8Encoding.INSTANCE));
193+
DynamicObject file = createString(StringOperations.encodeRope(sourceSection.getSource().getName(), UTF8Encoding.INSTANCE));
194194
Object[] objects = new Object[]{file, sourceSection.getStartLine()};
195195
return Layouts.ARRAY.createArray(getContext().getCoreLibrary().getArrayFactory(), objects, objects.length);
196196
}

truffle/src/main/java/org/jruby/truffle/nodes/core/ModuleNodes.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1353,7 +1353,7 @@ public Object name(DynamicObject module,
13531353
return nil();
13541354
}
13551355

1356-
return createString(StringOperations.encodeByteList(fields.getName(), UTF8Encoding.INSTANCE));
1356+
return createString(StringOperations.encodeRope(fields.getName(), UTF8Encoding.INSTANCE));
13571357
}
13581358
}
13591359

@@ -1894,7 +1894,7 @@ public ToSNode(RubyContext context, SourceSection sourceSection) {
18941894
@Specialization
18951895
public DynamicObject toS(DynamicObject module) {
18961896
final String name = Layouts.MODULE.getFields(module).getName();
1897-
return createString(StringOperations.encodeByteList(name, UTF8Encoding.INSTANCE));
1897+
return createString(StringOperations.encodeRope(name, UTF8Encoding.INSTANCE));
18981898
}
18991899

19001900
}

truffle/src/main/java/org/jruby/truffle/nodes/core/ProcNodes.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ public Object sourceLocation(DynamicObject proc) {
281281
if (sourceSection.getSource() == null) {
282282
return nil();
283283
} else {
284-
DynamicObject file = createString(StringOperations.encodeByteList(sourceSection.getSource().getName(), UTF8Encoding.INSTANCE));
284+
DynamicObject file = createString(StringOperations.encodeRope(sourceSection.getSource().getName(), UTF8Encoding.INSTANCE));
285285
Object[] objects = new Object[]{file, sourceSection.getStartLine()};
286286
return Layouts.ARRAY.createArray(getContext().getCoreLibrary().getArrayFactory(), objects, objects.length);
287287
}

truffle/src/main/java/org/jruby/truffle/nodes/core/RegexpNodes.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,7 @@ public EscapeNode(RubyContext context, SourceSection sourceSection) {
430430
@TruffleBoundary
431431
@Specialization(guards = "isRubyString(pattern)")
432432
public DynamicObject escape(DynamicObject pattern) {
433-
return createString(StringOperations.encodeByteList(org.jruby.RubyRegexp.quote19(new ByteList(StringOperations.getByteListReadOnly(pattern)), true).toString(), UTF8Encoding.INSTANCE));
433+
return createString(StringOperations.encodeRope(org.jruby.RubyRegexp.quote19(new ByteList(StringOperations.getByteListReadOnly(pattern)), true).toString(), UTF8Encoding.INSTANCE));
434434
}
435435

436436
}
@@ -486,7 +486,7 @@ public DynamicObject quoteString(DynamicObject raw) {
486486

487487
@Specialization(guards = "isRubySymbol(raw)")
488488
public DynamicObject quoteSymbol(DynamicObject raw) {
489-
return quoteString(createString(StringOperations.encodeByteList(Layouts.SYMBOL.getString(raw), UTF8Encoding.INSTANCE)));
489+
return quoteString(createString(StringOperations.encodeRope(Layouts.SYMBOL.getString(raw), UTF8Encoding.INSTANCE)));
490490
}
491491

492492
}

truffle/src/main/java/org/jruby/truffle/nodes/core/ThreadBacktraceLocationNodes.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public DynamicObject absolutePath(DynamicObject threadBacktraceLocation) {
3838
final SourceSection sourceSection = activation.getCallNode().getEncapsulatingSourceSection();
3939

4040
if (sourceSection.getSource() == null) {
41-
return createString(StringOperations.encodeByteList(sourceSection.getShortDescription(), UTF8Encoding.INSTANCE));
41+
return createString(StringOperations.encodeRope(sourceSection.getShortDescription(), UTF8Encoding.INSTANCE));
4242
}
4343

4444
// TODO CS 30-Apr-15: not absolute - not sure how to solve that
@@ -49,7 +49,7 @@ public DynamicObject absolutePath(DynamicObject threadBacktraceLocation) {
4949
path = "(unknown)";
5050
}
5151

52-
return createString(StringOperations.encodeByteList(path, UTF8Encoding.INSTANCE));
52+
return createString(StringOperations.encodeRope(path, UTF8Encoding.INSTANCE));
5353
}
5454

5555
}
@@ -88,10 +88,10 @@ public DynamicObject toS(DynamicObject threadBacktraceLocation) {
8888
final SourceSection sourceSection = activation.getCallNode().getEncapsulatingSourceSection();
8989

9090
if (sourceSection.getSource() == null) {
91-
return createString(StringOperations.encodeByteList(sourceSection.getShortDescription(), UTF8Encoding.INSTANCE));
91+
return createString(StringOperations.encodeRope(sourceSection.getShortDescription(), UTF8Encoding.INSTANCE));
9292
}
9393

94-
return createString(StringOperations.encodeByteList(String.format("%s:%d:in `%s'",
94+
return createString(StringOperations.encodeRope(String.format("%s:%d:in `%s'",
9595
sourceSection.getSource().getName(),
9696
sourceSection.getStartLine(),
9797
sourceSection.getIdentifier()), UTF8Encoding.INSTANCE));

truffle/src/main/java/org/jruby/truffle/nodes/core/TimeNodes.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public DynamicObject localtime(VirtualFrame frame, DynamicObject time, NotProvid
100100
final DynamicObject zoneName = (DynamicObject) readTimeZoneNode.execute(frame);
101101
final DateTimeZone dateTimeZone = TimePrimitiveNodes.TimeZoneParser.parse(this, StringOperations.getString(getContext(), zoneName));
102102
final String shortZoneName = TimePrimitiveNodes.TimeZoneParser.getShortZoneName(time, dateTimeZone);
103-
final DynamicObject zone = createString(StringOperations.encodeByteList(shortZoneName, UTF8Encoding.INSTANCE));
103+
final DynamicObject zone = createString(StringOperations.encodeRope(shortZoneName, UTF8Encoding.INSTANCE));
104104
final DateTime dateTime = Layouts.TIME.getDateTime(time);
105105

106106
Layouts.TIME.setIsUtc(time, false);

truffle/src/main/java/org/jruby/truffle/nodes/core/TrufflePrimitiveNodes.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ public String visitFrame(FrameInstance frameInstance) {
127127
return nil();
128128
}
129129

130-
return createString(StringOperations.encodeByteList(source, UTF8Encoding.INSTANCE));
130+
return createString(StringOperations.encodeRope(source, UTF8Encoding.INSTANCE));
131131
}
132132

133133
}
@@ -200,7 +200,7 @@ public JavaClassOfNode(RubyContext context, SourceSection sourceSection) {
200200

201201
@Specialization
202202
public DynamicObject javaClassOf(Object value) {
203-
return createString(StringOperations.encodeByteList(value.getClass().getSimpleName(), UTF8Encoding.INSTANCE));
203+
return createString(StringOperations.encodeRope(value.getClass().getSimpleName(), UTF8Encoding.INSTANCE));
204204
}
205205

206206
}
@@ -223,7 +223,7 @@ public DynamicObject dumpString(DynamicObject string) {
223223
builder.append(String.format("\\x%02x", byteList.get(i)));
224224
}
225225

226-
return createString(StringOperations.encodeByteList(builder.toString(), UTF8Encoding.INSTANCE));
226+
return createString(StringOperations.encodeRope(builder.toString(), UTF8Encoding.INSTANCE));
227227
}
228228

229229
}
@@ -267,7 +267,7 @@ public GraalVersionNode(RubyContext context, SourceSection sourceSection) {
267267
@TruffleBoundary
268268
@Specialization
269269
public DynamicObject graalVersion() {
270-
return createString(StringOperations.encodeByteList(System.getProperty("graal.version", "unknown"), UTF8Encoding.INSTANCE));
270+
return createString(StringOperations.encodeRope(System.getProperty("graal.version", "unknown"), UTF8Encoding.INSTANCE));
271271
}
272272

273273
}
@@ -309,7 +309,7 @@ public DynamicObject coverageResult() {
309309
final DynamicObject array = Layouts.ARRAY.createArray(getContext().getCoreLibrary().getArrayFactory(), store, store.length);
310310

311311
if (source.getKey().getPath() != null) {
312-
converted.put(createString(StringOperations.encodeByteList(source.getKey().getPath(), UTF8Encoding.INSTANCE)), array);
312+
converted.put(createString(StringOperations.encodeRope(source.getKey().getPath(), UTF8Encoding.INSTANCE)), array);
313313
}
314314
}
315315

@@ -517,7 +517,7 @@ public JRubyHomeDirectoryNode(RubyContext context, SourceSection sourceSection)
517517
@TruffleBoundary
518518
@Specialization
519519
public DynamicObject jrubyHomeDirectory() {
520-
return createString(StringOperations.encodeByteList(getContext().getRuntime().getJRubyHome(), UTF8Encoding.INSTANCE));
520+
return createString(StringOperations.encodeRope(getContext().getRuntime().getJRubyHome(), UTF8Encoding.INSTANCE));
521521
}
522522

523523
}
@@ -531,7 +531,7 @@ public HostOSNode(RubyContext context, SourceSection sourceSection) {
531531

532532
@Specialization
533533
public DynamicObject hostOS() {
534-
return createString(StringOperations.encodeByteList(RbConfigLibrary.getOSName(), UTF8Encoding.INSTANCE));
534+
return createString(StringOperations.encodeRope(RbConfigLibrary.getOSName(), UTF8Encoding.INSTANCE));
535535
}
536536

537537
}

0 commit comments

Comments
 (0)