Skip to content

Commit b33adb0

Browse files
committed
Always split Kernel#{sprintf,printf}, Array#pack, String#{unpack,unpack1}, IO#printf core methods and rb_tr_sprintf C function
1 parent ca599b0 commit b33adb0

File tree

6 files changed

+13
-6
lines changed

6 files changed

+13
-6
lines changed

src/main/java/org/truffleruby/cext/CExtNodes.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.truffleruby.annotations.CoreMethod;
3535
import org.truffleruby.annotations.CoreModule;
3636
import org.truffleruby.annotations.Primitive;
37+
import org.truffleruby.annotations.Split;
3738
import org.truffleruby.annotations.Visibility;
3839
import org.truffleruby.builtins.CoreMethodArrayArgumentsNode;
3940
import org.truffleruby.builtins.PrimitiveArrayArgumentsNode;
@@ -2029,8 +2030,7 @@ protected RubyArray compileArgTypes(AbstractTruffleString format, RubyEncoding e
20292030
}
20302031
}
20312032

2032-
@CoreMethod(names = "rb_tr_sprintf", onSingleton = true, required = 3)
2033-
@ReportPolymorphism
2033+
@CoreMethod(names = "rb_tr_sprintf", onSingleton = true, required = 3, split = Split.ALWAYS)
20342034
public abstract static class RBSprintfNode extends CoreMethodArrayArgumentsNode {
20352035

20362036
@Specialization(guards = "libFormat.isRubyString(format)", limit = "1")
@@ -2069,6 +2069,7 @@ static RubyString format(Object format, Object stringReader, RubyArray argArray,
20692069

20702070
@GenerateInline
20712071
@GenerateCached(false)
2072+
@ReportPolymorphism
20722073
public abstract static class RBSprintfInnerNode extends RubyBaseNode {
20732074

20742075
public abstract BytesResult execute(Node node, AbstractTruffleString format, RubyEncoding encoding,

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1491,8 +1491,7 @@ public void accept(Node node, CallBlockNode yieldNode, RubyArray array, Object s
14911491

14921492
}
14931493

1494-
@CoreMethod(names = "pack", required = 1)
1495-
@ReportPolymorphism
1494+
@CoreMethod(names = "pack", required = 1, split = Split.ALWAYS)
14961495
public abstract static class ArrayPackNode extends CoreMethodArrayArgumentsNode {
14971496

14981497
@Specialization
@@ -1506,6 +1505,7 @@ RubyString pack(RubyArray array, Object format,
15061505

15071506
@GenerateCached(false)
15081507
@GenerateInline
1508+
@ReportPolymorphism
15091509
public abstract static class PackNode extends RubyBaseNode {
15101510

15111511
public abstract RubyString execute(Node node, RubyArray array, Object format);

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1616,8 +1616,8 @@ public static long sleepFor(RubyContext context, RubyThread thread, long duratio
16161616

16171617
}
16181618

1619-
@CoreMethod(names = { "format", "sprintf" }, isModuleFunction = true, rest = true, required = 1)
1620-
@ReportPolymorphism
1619+
@CoreMethod(names = { "format", "sprintf" }, isModuleFunction = true, rest = true, required = 1,
1620+
split = Split.ALWAYS)
16211621
public abstract static class SprintfNode extends CoreMethodArrayArgumentsNode {
16221622

16231623
static final String GVAR_DEBUG = "$DEBUG";

src/main/ruby/truffleruby/core/io.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1664,6 +1664,7 @@ def printf(fmt, *args)
16641664
fmt = StringValue(fmt)
16651665
write sprintf(fmt, *args)
16661666
end
1667+
Truffle::Graal.always_split(instance_method(:printf))
16671668

16681669
def read(length = nil, buffer = nil)
16691670
ensure_open_and_readable
@@ -2485,6 +2486,7 @@ def print(*args)
24852486
def printf(fmt, *args)
24862487
@write.printf(fmt, *args)
24872488
end
2489+
Truffle::Graal.always_split(instance_method(:printf))
24882490

24892491
def putc(obj)
24902492
@write.putc(obj)

src/main/ruby/truffleruby/core/kernel.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -721,6 +721,8 @@ def printf(*args)
721721
nil
722722
end
723723
module_function :printf
724+
Truffle::Graal.always_split(instance_method(:printf))
725+
Truffle::Graal.always_split(method(:printf))
724726

725727
private def pp(*args)
726728
require 'pp'

src/main/ruby/truffleruby/core/string.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1392,10 +1392,12 @@ def unpack(format, offset: undefined)
13921392
end
13931393
Primitive.string_unpack(self, format, offset)
13941394
end
1395+
Truffle::Graal.always_split(instance_method(:unpack))
13951396

13961397
def unpack1(format, offset: undefined)
13971398
unpack(format, offset: offset).first
13981399
end
1400+
Truffle::Graal.always_split(instance_method(:unpack1))
13991401

14001402
def unicode_normalize(form = :nfc)
14011403
require 'unicode_normalize/normalize.rb' unless defined? UnicodeNormalize

0 commit comments

Comments
 (0)