Skip to content

Commit bdf5b1f

Browse files
committed
Remove TrufflePrimitive.privately
1 parent 58132e3 commit bdf5b1f

File tree

20 files changed

+87
-231
lines changed

20 files changed

+87
-231
lines changed

.rubocop.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ AllCops:
88
- 'lib/truffle/date/delta/parser.rb' # generated code
99
- 'lib/truffle/socket/mri.rb' # taken from MRI
1010
- 'lib/truffle/ffi/**/*.rb' # taken from FFI gem
11-
- 'lib/truffle/truffle/stubs.rb' # has embeded Java which confuses Rubocop
1211
- 'src/test/ruby/types.rb' # deliberately strange code for debugging purposes
1312
- 'src/tck/ruby/lexical-context.rb' # deliberately strange code for debugging purposes
1413

lib/truffle/digest.rb

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,11 @@ def reset
8383

8484
def digest(message = NO_MESSAGE)
8585
if NO_MESSAGE == message
86-
TrufflePrimitive.privately do
87-
clone.finish
88-
end
86+
clone.__send__ :finish
8987
else
9088
reset
9189
update message
92-
digested = TrufflePrimitive.privately { finish }
90+
digested = finish
9391
reset
9492
digested
9593
end

lib/truffle/truffle/cext.rb

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1257,9 +1257,7 @@ def rb_io_puts(out, args)
12571257
end
12581258

12591259
def rb_obj_call_init(obj, args)
1260-
TrufflePrimitive.privately do
1261-
obj.initialize(*args)
1262-
end
1260+
obj.__send__ :initialize, *args
12631261
end
12641262

12651263
def rb_obj_instance_eval(obj, args, block)
@@ -1363,15 +1361,11 @@ def rb_complex_polar(r, theta)
13631361
end
13641362

13651363
def rb_complex_set_real(complex, real)
1366-
TrufflePrimitive.privately do
1367-
complex.real = real
1368-
end
1364+
complex.__send__ :real=, real
13691365
end
13701366

13711367
def rb_complex_set_imag(complex, imag)
1372-
TrufflePrimitive.privately do
1373-
complex.imag = imag
1374-
end
1368+
complex.__send__ :imag=, imag
13751369
end
13761370

13771371
def rb_mutex_new

lib/truffle/truffle/stubs.rb

Lines changed: 0 additions & 8 deletions
This file was deleted.

src/main/java/org/truffleruby/parser/BodyTranslator.java

Lines changed: 11 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -274,8 +274,6 @@ public class BodyTranslator extends Translator {
274274
private boolean translatingWhile = false;
275275
protected String currentCallMethodName = null;
276276

277-
private boolean privately = false;
278-
279277
public BodyTranslator(
280278
Node currentNode,
281279
RubyContext context,
@@ -535,68 +533,16 @@ private RubyNode translateInvokePrimitive(SourceIndexLength sourceSection, CallP
535533

536534
final String primitiveName = node.getName();
537535

538-
if ("privately".equals(primitiveName)) {
539-
final RubyNode ret = translatePrivately(node);
540-
return addNewlineIfNeeded(node, ret);
541-
} else {
542-
final PrimitiveNodeConstructor primitive = context.getPrimitiveManager().getPrimitive(primitiveName);
543-
544-
final ArrayParseNode args = (ArrayParseNode) node.getArgsNode();
545-
final int size = args != null ? args.size() : 0;
546-
final RubyNode[] arguments = new RubyNode[size];
547-
for (int n = 0; n < size; n++) {
548-
arguments[n] = args.get(n).accept(this);
549-
}
550-
551-
return primitive.createInvokePrimitiveNode(context, source, sourceSection, arguments);
552-
}
553-
}
554-
555-
private RubyNode translatePrivately(CallParseNode node) {
556-
/*
557-
* Translates something that looks like
558-
*
559-
* TrufflePrimitive.privately { foo }
560-
*
561-
* into just
562-
*
563-
* foo
564-
*
565-
* While we translate foo we'll mark all call sites as ignoring visibility.
566-
*/
567-
568-
if (!(node.getIterNode() instanceof IterParseNode)) {
569-
throw new UnsupportedOperationException("TrufflePrimitive.privately needs a literal block");
570-
}
536+
final PrimitiveNodeConstructor primitive = context.getPrimitiveManager().getPrimitive(primitiveName);
571537

572-
final ArrayParseNode argsNode = (ArrayParseNode) node.getArgsNode();
573-
if (argsNode != null && argsNode.size() > 0) {
574-
throw new UnsupportedOperationException("TrufflePrimitive.privately should not have any arguments");
538+
final ArrayParseNode args = (ArrayParseNode) node.getArgsNode();
539+
final int size = args != null ? args.size() : 0;
540+
final RubyNode[] arguments = new RubyNode[size];
541+
for (int n = 0; n < size; n++) {
542+
arguments[n] = args.get(n).accept(this);
575543
}
576544

577-
/*
578-
* Normally when you visit an 'iter' (block) node it will set the method name for you, so that we can name the
579-
* block something like 'times-block'. Here we bypass the iter node and translate its child. So we set the
580-
* name here.
581-
*/
582-
583-
currentCallMethodName = "privately";
584-
585-
/*
586-
* While we translate the body of the iter we want to create all call nodes with the ignore-visibility flag.
587-
* This flag is checked in visitCallNode.
588-
*/
589-
590-
final boolean previousPrivately = privately;
591-
privately = true;
592-
593-
try {
594-
return (((IterParseNode) node.getIterNode()).getBodyNode()).accept(this);
595-
} finally {
596-
// Restore the previous value of the privately flag - allowing for nesting
597-
598-
privately = previousPrivately;
599-
}
545+
return primitive.createInvokePrimitiveNode(context, source, sourceSection, arguments);
600546
}
601547

602548
private RubyNode translateCallNode(CallParseNode node, boolean ignoreVisibility, boolean isVCall,
@@ -638,7 +584,7 @@ private RubyNode translateCallNode(CallParseNode node, boolean ignoreVisibility,
638584
argumentsAndBlock.getBlock(),
639585
argumentsAndBlock.getArguments(),
640586
argumentsAndBlock.isSplatted(),
641-
privately || ignoreVisibility,
587+
ignoreVisibility,
642588
isVCall,
643589
node.isLazy(),
644590
isAttrAssign);
@@ -2790,7 +2736,7 @@ public RubyNode visitBigRationalNode(BigRationalParseNode node) {
27902736
}
27912737

27922738
private RubyNode translateRationalComplex(SourceIndexLength sourceSection, String name, RubyNode a, RubyNode b) {
2793-
// Translate as TrufflePrimitive.privately { Rational.convert(a, b) }
2739+
// Translate as Rational.convert(a, b) # ignoring visibility
27942740

27952741
final RubyNode moduleNode = new ObjectLiteralNode(context.getCoreLibrary().getObjectClass());
27962742
ReadConstantNode receiver = new ReadConstantNode(moduleNode, name);
@@ -2891,9 +2837,7 @@ public RubyNode visitRescueNode(RescueParseNode node) {
28912837
boolean canOmitBacktrace = false;
28922838

28932839
if (context.getOptions().BACKTRACES_OMIT_UNUSED && rescueBody != null &&
2894-
rescueBody.getBodyNode() instanceof SideEffectFree
2895-
// allow `expression rescue $!` pattern
2896-
&&
2840+
rescueBody.getBodyNode() instanceof SideEffectFree /* allow `expression rescue $!` pattern */ &&
28972841
(!(rescueBody.getBodyNode() instanceof GlobalVarParseNode) ||
28982842
!((GlobalVarParseNode) rescueBody.getBodyNode()).getName().equals("$!")) &&
28992843
rescueBody.getOptRescueNode() == null) {
@@ -3137,6 +3081,7 @@ public RubyNode visitUntilNode(UntilParseNode node) {
31373081

31383082
@Override
31393083
public RubyNode visitVCallNode(VCallParseNode node) {
3084+
// TODO (pitr-ch 02-Dec-2019): replace with a primitive
31403085
if (node.getName().equals("undefined") && inCore()) { // translate undefined
31413086
final RubyNode ret = new ObjectLiteralNode(NotProvided.INSTANCE);
31423087
ret.unsafeSetSourceSection(node.getPosition());

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

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -725,9 +725,7 @@ def permutation(num=undefined, &block)
725725
if block
726726
# offensive (both definitions) copy.
727727
offensive = dup
728-
TrufflePrimitive.privately do
729-
offensive.__permute__(num, perm, 0, used, &block)
730-
end
728+
offensive.__send__ :__permute__, num, perm, 0, used, &block
731729
else
732730
__permute__(num, perm, 0, used, &block)
733731
end
@@ -844,9 +842,7 @@ def repeated_combination(combination_size, &block)
844842
if combination_size < 0
845843
# yield nothing
846844
else
847-
TrufflePrimitive.privately do
848-
dup.compile_repeated_combinations(combination_size, [], 0, combination_size, &block)
849-
end
845+
dup.__send__ :compile_repeated_combinations, combination_size, [], 0, combination_size, &block
850846
end
851847

852848
self
@@ -878,9 +874,7 @@ def repeated_permutation(combination_size, &block)
878874
elsif combination_size == 0
879875
yield []
880876
else
881-
TrufflePrimitive.privately do
882-
dup.compile_repeated_permutations(combination_size, [], 0, &block)
883-
end
877+
dup.__send__ :compile_repeated_permutations, combination_size, [], 0, &block
884878
end
885879

886880
self
@@ -1105,7 +1099,7 @@ def sample_many(count, rng)
11051099
result = Array.new(self)
11061100

11071101
count.times do |c|
1108-
Truffle.privately { result.swap c, rng.rand(size) }
1102+
result.__send__ :swap, c, rng.rand(size)
11091103
end
11101104

11111105
count == size ? result : result[0, count]
@@ -1345,13 +1339,10 @@ def recursively_flatten(array, out, max_levels = -1)
13451339
private def sort_fallback(&block)
13461340
# Use this instead of #dup as we want an instance of Array
13471341
sorted = Array.new(self)
1348-
1349-
TrufflePrimitive.privately do
1350-
if block
1351-
sorted.mergesort_block!(block)
1352-
else
1353-
sorted.mergesort!
1354-
end
1342+
if block
1343+
sorted.__send__ :mergesort_block!, block
1344+
else
1345+
sorted.__send__ :mergesort!
13551346
end
13561347
sorted
13571348
end

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,7 @@ def receive
5050
end
5151

5252
def receive_timeout(duration)
53-
TrufflePrimitive.privately do
54-
@queue.receive_timeout(duration)
55-
end
53+
@queue.__send__ :receive_timeout, duration
5654
end
5755

5856
def try_receive

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

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -87,16 +87,10 @@ def each(*args)
8787
new_args = @args.empty? ? args : (@args + args)
8888
end
8989

90-
TrufflePrimitive.privately do
91-
enumerator.args = new_args
92-
end
90+
enumerator.__send__ :args=, new_args
9391

9492
if block_given?
95-
TrufflePrimitive.privately do
96-
enumerator.each_with_block do |*yield_args|
97-
yield(*yield_args)
98-
end
99-
end
93+
enumerator.__send__(:each_with_block) { |*yield_args| yield(*yield_args) }
10094
else
10195
enumerator
10296
end
@@ -160,9 +154,7 @@ def next
160154
end
161155

162156
exception = StopIteration.new 'iteration reached end'
163-
TrufflePrimitive.privately do
164-
exception.result = @generator.result
165-
end
157+
exception.__send__ :result=, @generator.result
166158

167159
raise exception
168160
end
@@ -282,9 +274,7 @@ def to_enum(method_name=:each, *method_args, &block)
282274
size = block_given? ? block : nil
283275
ret = Lazy.allocate
284276

285-
TrufflePrimitive.privately do
286-
ret.initialize_enumerator self, size, method_name, *method_args
287-
end
277+
ret.__send__ :initialize_enumerator, self, size, method_name, *method_args
288278

289279
ret
290280
end

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,7 @@ def exception(message=nil)
137137
# Exception#initialize (via __initialize__) is exactly what MRI
138138
# does.
139139
e = clone
140-
TrufflePrimitive.privately do
141-
e.__initialize__(message)
142-
end
140+
e.__send__ :__initialize__, message
143141
return e
144142
end
145143
end

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,7 @@ def klass.__allocate__
3535
raise TypeError, "allocator undefined for #{self}"
3636
end
3737

38-
TrufflePrimitive.privately do
39-
klass.singleton_class.undef_method(:new)
40-
end
38+
klass.singleton_class.__send__ :undef_method, :new
4139
end
4240

4341
def singleton_methods(all=true)

0 commit comments

Comments
 (0)