Skip to content

Commit 940a91d

Browse files
committed
Replace Truffle::Graal.always_split by Primitive.always_split
1 parent a729790 commit 940a91d

29 files changed

+80
-71
lines changed

lib/mri/monitor.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ def mon_owned?
214214
def mon_synchronize(&block)
215215
Primitive.monitor_synchronize(@mon_mutex, block)
216216
end
217-
Truffle::Graal.always_split instance_method(:mon_synchronize)
217+
Primitive.always_split self, :mon_synchronize
218218
alias synchronize mon_synchronize
219219

220220
#

lib/truffle/truffle/cext.rb

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1193,7 +1193,7 @@ def rb_hash_foreach(hash, func, farg)
11931193
end
11941194
end
11951195
end
1196-
Truffle::Graal.always_split instance_method(:rb_hash_foreach)
1196+
Primitive.always_split self, :rb_hash_foreach
11971197

11981198
def rb_path_to_class(path)
11991199
begin
@@ -1264,7 +1264,7 @@ def rb_protect(function, arg, write_status, status)
12641264
Truffle::Interop.execute_without_conversion(write_status, status, pos)
12651265
res
12661266
end
1267-
Truffle::Graal.always_split instance_method(:rb_protect)
1267+
Primitive.always_split self, :rb_protect
12681268

12691269
def rb_jump_tag(pos)
12701270
if pos > 0
@@ -1279,12 +1279,12 @@ def rb_jump_tag(pos)
12791279
def rb_yield(value)
12801280
rb_block_proc.call(value)
12811281
end
1282-
Truffle::Graal.always_split instance_method(:rb_yield)
1282+
Primitive.always_split self, :rb_yield
12831283

12841284
def rb_yield_splat(values)
12851285
rb_block_proc.call(*values)
12861286
end
1287-
Truffle::Graal.always_split instance_method(:rb_yield_splat)
1287+
Primitive.always_split self, :rb_yield_splat
12881288

12891289
def rb_ivar_lookup(object, name, default_value)
12901290
# TODO CS 24-Jul-16 races - needs a new primitive or be defined in Java?
@@ -1649,7 +1649,7 @@ def rb_mutex_synchronize(mutex, func, arg)
16491649
Primitive.interop_execute(POINTER_TO_POINTER_WRAPPER, [func, arg])
16501650
end
16511651
end
1652-
Truffle::Graal.always_split instance_method(:rb_mutex_synchronize)
1652+
Primitive.always_split self, :rb_mutex_synchronize
16531653

16541654
def rb_gc_enable
16551655
GC.enable
@@ -1879,7 +1879,7 @@ def rb_ensure(b_proc, data1, e_proc, data2)
18791879
end
18801880
end
18811881
end
1882-
Truffle::Graal.always_split instance_method(:rb_ensure)
1882+
Primitive.always_split self, :rb_ensure
18831883

18841884
def rb_rescue(b_proc, data1, r_proc, data2)
18851885
begin
@@ -1898,7 +1898,7 @@ def rb_rescue(b_proc, data1, r_proc, data2)
18981898
end
18991899
end
19001900
end
1901-
Truffle::Graal.always_split instance_method(:rb_rescue)
1901+
Primitive.always_split self, :rb_rescue
19021902

19031903
def rb_rescue2(b_proc, data1, r_proc, data2, rescued)
19041904
begin
@@ -1913,7 +1913,7 @@ def rb_rescue2(b_proc, data1, r_proc, data2, rescued)
19131913
end
19141914
end
19151915
end
1916-
Truffle::Graal.always_split instance_method(:rb_rescue2)
1916+
Primitive.always_split self, :rb_rescue2
19171917

19181918
def rb_exec_recursive(func, obj, arg)
19191919
result = nil
@@ -1932,7 +1932,7 @@ def rb_exec_recursive(func, obj, arg)
19321932
result
19331933
end
19341934
end
1935-
Truffle::Graal.always_split instance_method(:rb_exec_recursive)
1935+
Primitive.always_split self, :rb_exec_recursive
19361936

19371937
def rb_catch_obj(tag, func, data)
19381938
use_cext_lock = Primitive.use_cext_lock?

src/main/java/org/truffleruby/extra/TruffleGraalNodes.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,12 @@
2020
import org.truffleruby.builtins.PrimitiveArrayArgumentsNode;
2121
import org.truffleruby.builtins.PrimitiveNode;
2222
import org.truffleruby.core.cast.ToCallTargetNode;
23+
import org.truffleruby.core.module.ModuleOperations;
24+
import org.truffleruby.core.module.RubyModule;
2325
import org.truffleruby.core.proc.ProcCallTargets;
2426
import org.truffleruby.core.proc.ProcType;
2527
import org.truffleruby.core.proc.RubyProc;
28+
import org.truffleruby.core.symbol.RubySymbol;
2629
import org.truffleruby.interop.ToJavaStringNode;
2730
import org.truffleruby.language.RubyLambdaRootNode;
2831
import org.truffleruby.language.RubyNode;
@@ -51,17 +54,23 @@
5154
@CoreModule("Truffle::Graal")
5255
public abstract class TruffleGraalNodes {
5356

54-
@CoreMethod(names = "always_split", onSingleton = true, required = 1)
55-
public abstract static class AlwaysSplitNode extends CoreMethodArrayArgumentsNode {
57+
@Primitive(name = "always_split")
58+
public abstract static class AlwaysSplitNode extends PrimitiveArrayArgumentsNode {
5659
@TruffleBoundary
5760
@Specialization
58-
Object alwaysSplit(Object executable,
59-
@Cached ToCallTargetNode toCallTargetNode) {
60-
final RootCallTarget callTarget = toCallTargetNode.execute(this, executable);
61+
Object alwaysSplit(RubyModule module, RubySymbol instanceMethod) {
62+
String name = instanceMethod.getString();
63+
var method = ModuleOperations.lookupMethodUncached(module, name, null);
64+
65+
if (method == null || method.isUndefined()) {
66+
throw new RaiseException(getContext(), coreExceptions().nameErrorUndefinedMethod(name, module, this));
67+
}
68+
69+
final RootCallTarget callTarget = method.getCallTarget();
6170
if (getContext().getOptions().ALWAYS_SPLIT_HONOR) {
6271
RubyRootNode.of(callTarget).setSplit(Split.ALWAYS);
6372
}
64-
return executable;
73+
return nil;
6574
}
6675
}
6776

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -567,7 +567,7 @@ def hash
567567

568568
hash_val
569569
end
570-
Truffle::Graal.always_split instance_method(:hash)
570+
Primitive.always_split self, :hash
571571

572572
def find_index(obj = undefined)
573573
super
@@ -591,7 +591,7 @@ def insert(idx, *items)
591591
end
592592
self
593593
end
594-
Truffle::Graal.always_split instance_method(:insert)
594+
Primitive.always_split self, :insert
595595

596596
def inspect
597597
return '[]'.encode(Encoding::US_ASCII) if empty?
@@ -727,7 +727,7 @@ def pack(format, buffer: nil)
727727
buffer.replace string.force_encoding(buffer.encoding)
728728
end
729729
end
730-
Truffle::Graal.always_split instance_method(:pack)
730+
Primitive.always_split self, :pack
731731

732732
def permutation(num = undefined, &block)
733733
unless block_given?

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def eval(code, file = nil, line = nil)
1616
def local_variables
1717
Primitive.local_variable_names(self).dup
1818
end
19-
Truffle::Graal.always_split(instance_method(:local_variables))
19+
Primitive.always_split self, :local_variables
2020

2121
def irb
2222
require 'irb'

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class Configuration
3131
def section(section, &block)
3232
Primitive.vm_get_config_section section, block
3333
end
34-
Truffle::Graal.always_split instance_method(:section)
34+
Primitive.always_split self, :section
3535

3636
def lookup(name)
3737
Primitive.vm_get_config_item name

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ def map(&block)
111111
to_enum(:collect) { enumerator_size }
112112
end
113113
end
114-
Truffle::Graal.always_split instance_method(:map)
114+
Primitive.always_split self, :map
115115
alias_method :collect, :map
116116

117117
def compact
@@ -385,7 +385,7 @@ def each_with_index(*args, &block)
385385
self
386386
end
387387
end
388-
Truffle::Graal.always_split instance_method(:each_with_index)
388+
Primitive.always_split self, :each_with_index
389389

390390
def grep(pattern, &block)
391391
ary = []
@@ -561,7 +561,7 @@ def inject(initial = undefined, sym = undefined, &block)
561561

562562
Primitive.undefined?(initial) ? nil : initial
563563
end
564-
Truffle::Graal.always_split instance_method(:inject)
564+
Primitive.always_split self, :inject
565565
alias_method :reduce, :inject
566566

567567
def all?(pattern = undefined)

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ def **(o)
5555

5656
redo_coerced :**, o
5757
end
58-
Truffle::Graal.always_split instance_method(:**)
58+
Primitive.always_split self, :**
5959

6060
def [](index, len = undefined)
6161
if Primitive.is_a?(index, Range)
@@ -147,7 +147,7 @@ def pow(exponent, modulus = undefined)
147147
Primitive.mod_pow(self, exponent, modulus)
148148
end
149149
end
150-
Truffle::Graal.always_split instance_method(:pow)
150+
Primitive.always_split self, :pow
151151

152152
def times
153153
return to_enum(:times) { self } unless block_given?
@@ -159,7 +159,7 @@ def times
159159
end
160160
self
161161
end
162-
Truffle::Graal.always_split instance_method(:times)
162+
Primitive.always_split self, :times
163163

164164
def truncate(precision = 0)
165165
if precision >= 0
@@ -363,7 +363,7 @@ def self.sqrt(n)
363363
end
364364
self
365365
end
366-
Truffle::Graal.always_split instance_method(:upto_internal)
366+
Primitive.always_split self, :upto_internal
367367

368368
private def downto_internal(val)
369369
return to_enum(:downto, val) { self >= val ? self - val + 1 : 0 } unless block_given?
@@ -375,7 +375,7 @@ def self.sqrt(n)
375375
end
376376
self
377377
end
378-
Truffle::Graal.always_split instance_method(:downto_internal)
378+
Primitive.always_split self, :downto_internal
379379

380380
class << self
381381
undef_method :new

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1687,7 +1687,7 @@ def printf(fmt, *args)
16871687
fmt = StringValue(fmt)
16881688
write sprintf(fmt, *args)
16891689
end
1690-
Truffle::Graal.always_split(instance_method(:printf))
1690+
Primitive.always_split self, :printf
16911691

16921692
def pwrite(object, offset)
16931693
string = Truffle::Type.rb_obj_as_string(object)
@@ -2461,7 +2461,7 @@ def print(*args)
24612461
def printf(fmt, *args)
24622462
@write.printf(fmt, *args)
24632463
end
2464-
Truffle::Graal.always_split(instance_method(:printf))
2464+
Primitive.always_split self, :printf
24652465

24662466
def putc(obj)
24672467
@write.putc(obj)

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -745,8 +745,8 @@ def printf(*args)
745745
nil
746746
end
747747
module_function :printf
748-
Truffle::Graal.always_split(instance_method(:printf))
749-
Truffle::Graal.always_split(method(:printf))
748+
Primitive.always_split self, :printf
749+
Primitive.always_split singleton_class, :printf
750750

751751
private def pp(*args)
752752
require 'pp'
@@ -803,8 +803,8 @@ def clone(freeze: nil)
803803

804804
Primitive.kernel_clone self, freeze
805805
end
806-
Truffle::Graal.always_split instance_method(:clone)
807-
Truffle::Graal.always_split method(:clone)
806+
Primitive.always_split self, :clone
807+
Primitive.always_split singleton_class, :clone
808808

809809
def initialize_clone(from, freeze: nil)
810810
initialize_copy(from)

0 commit comments

Comments
 (0)