Skip to content

Commit 6c2faef

Browse files
committed
Simplify ArrayConcatNode
* The assert in the constructor proves it's always 2+ children.
1 parent 388483f commit 6c2faef

File tree

1 file changed

+1
-24
lines changed

1 file changed

+1
-24
lines changed

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

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -32,37 +32,14 @@ public ArrayConcatNode(RubyNode[] children) {
3232
this.children = children;
3333
}
3434

35+
@ExplodeLoop
3536
@Override
3637
public RubyArray execute(VirtualFrame frame) {
3738
if (arrayBuilderNode == null) {
3839
CompilerDirectives.transferToInterpreterAndInvalidate();
3940
arrayBuilderNode = insert(ArrayBuilderNode.create());
4041
}
41-
if (children.length == 1) {
42-
return executeSingle(frame);
43-
} else {
44-
return executeMultiple(frame);
45-
}
46-
}
47-
48-
private RubyArray executeSingle(VirtualFrame frame) {
49-
BuilderState state = arrayBuilderNode.start();
50-
final Object childObject = children[0].execute(frame);
5142

52-
final int size;
53-
if (isArrayProfile.profile(childObject instanceof RubyArray)) {
54-
final RubyArray childArray = (RubyArray) childObject;
55-
size = childArray.size;
56-
arrayBuilderNode.appendArray(state, 0, childArray);
57-
} else {
58-
size = 1;
59-
arrayBuilderNode.appendValue(state, 0, childObject);
60-
}
61-
return createArray(arrayBuilderNode.finish(state, size), size);
62-
}
63-
64-
@ExplodeLoop
65-
private RubyArray executeMultiple(VirtualFrame frame) {
6643
BuilderState state = arrayBuilderNode.start();
6744
int length = 0;
6845

0 commit comments

Comments
 (0)