Skip to content

Commit cb118d3

Browse files
committed
Simplify array helpers
PullRequest: truffleruby/524
2 parents 244b153 + 1710a02 commit cb118d3

File tree

6 files changed

+21
-8
lines changed

6 files changed

+21
-8
lines changed

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import org.truffleruby.Layouts;
1414
import org.truffleruby.RubyContext;
1515

16+
import java.util.Collection;
17+
1618
public abstract class ArrayHelpers {
1719

1820
public static Object getStore(DynamicObject array) {
@@ -46,4 +48,16 @@ public static DynamicObject createArray(RubyContext context, Object store, int s
4648
return Layouts.ARRAY.createArray(context.getCoreLibrary().getArrayFactory(), store, size);
4749
}
4850

51+
public static DynamicObject createArray(RubyContext context, Object[] store) {
52+
return createArray(context, store, store.length);
53+
}
54+
55+
public static DynamicObject createArray(RubyContext context, Collection<Object> store) {
56+
return createArray(context, store.toArray());
57+
}
58+
59+
public static DynamicObject createEmptyArray(RubyContext context) {
60+
return Layouts.ARRAY.createArray(context.getCoreLibrary().getArrayFactory(), null, 0);
61+
}
62+
4963
}

src/main/java/org/truffleruby/core/binding/BindingNodes.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -383,8 +383,7 @@ public static DynamicObject listLocalVariables(RubyContext context, Materialized
383383

384384
frame = RubyArguments.getDeclarationFrame(frame);
385385
}
386-
final int size = names.size();
387-
return ArrayHelpers.createArray(context, names.toArray(new Object[size]), size);
386+
return ArrayHelpers.createArray(context, names);
388387
}
389388

390389
private static void addNamesFromFrame(RubyContext context, Frame frame, final Set<Object> names) {

src/main/java/org/truffleruby/core/exception/CoreExceptions.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,7 @@ public DynamicObject nameErrorFromMethodMissing(DynamicObject formatter, Object
604604
@TruffleBoundary
605605
public DynamicObject noMethodError(String message, Object receiver, String name, Object[] args, Node currentNode) {
606606
final DynamicObject messageString = StringOperations.createString(context, StringOperations.encodeRope(message, UTF8Encoding.INSTANCE));
607-
final DynamicObject argsArray = createArray(context, args, args.length);
607+
final DynamicObject argsArray = createArray(context, args);
608608
final DynamicObject exceptionClass = context.getCoreLibrary().getNoMethodErrorClass();
609609
final Backtrace backtrace = context.getCallStack().getBacktrace(currentNode);
610610
showExceptionIfDebug(exceptionClass, messageString, backtrace);
@@ -620,7 +620,7 @@ public DynamicObject noMethodError(String message, Object receiver, String name,
620620

621621
@TruffleBoundary
622622
public DynamicObject noMethodErrorFromMethodMissing(DynamicObject formatter, Object receiver, String name, Object[] args, Node currentNode) {
623-
final DynamicObject argsArray = createArray(context, args, args.length);
623+
final DynamicObject argsArray = createArray(context, args);
624624

625625
// omit = 1 to skip over the call to `method_missing'. MRI does not show this is the backtrace.
626626
final Backtrace backtrace = context.getCallStack().getBacktrace(currentNode, 1);

src/main/java/org/truffleruby/core/fiber/FiberManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public DynamicObject createFiber(RubyContext context, DynamicObject thread, Dyna
100100
assert RubyGuards.isRubyThread(thread);
101101
CompilerAsserts.partialEvaluationConstant(context);
102102
final DynamicObject fiberLocals = Layouts.BASIC_OBJECT.createBasicObject(context.getCoreLibrary().getObjectFactory());
103-
final DynamicObject catchTags = ArrayHelpers.createArray(context, null, 0);
103+
final DynamicObject catchTags = ArrayHelpers.createEmptyArray(context);
104104

105105
return Layouts.FIBER.createFiber(
106106
factory,

src/main/java/org/truffleruby/language/arguments/ArgumentDescriptorUtils.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public static DynamicObject argumentDescriptorsToParameters(RubyContext context,
2828
params[i] = toArray(context, argsDesc[i], isLambda);
2929
}
3030

31-
return ArrayHelpers.createArray(context, params, params.length);
31+
return ArrayHelpers.createArray(context, params);
3232
}
3333

3434
public static DynamicObject toArray(RubyContext context,
@@ -57,6 +57,6 @@ public static DynamicObject toArray(RubyContext context,
5757
};
5858
}
5959

60-
return ArrayHelpers.createArray(context, store, store.length);
60+
return ArrayHelpers.createArray(context, store);
6161
}
6262
}

src/main/java/org/truffleruby/language/backtrace/BacktraceFormatter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ public DynamicObject formatBacktraceAsRubyStringArray(DynamicObject exception, B
132132
StringOperations.encodeRope(lines[n], UTF8Encoding.INSTANCE));
133133
}
134134

135-
return ArrayHelpers.createArray(context, array, array.length);
135+
return ArrayHelpers.createArray(context, array);
136136
}
137137

138138
@TruffleBoundary

0 commit comments

Comments
 (0)