diff --git a/benchmark/src/main/java/org/capnproto/benchmark/CarSales.java b/benchmark/src/main/java/org/capnproto/benchmark/CarSales.java index 9ba72cb..5e9041e 100644 --- a/benchmark/src/main/java/org/capnproto/benchmark/CarSales.java +++ b/benchmark/src/main/java/org/capnproto/benchmark/CarSales.java @@ -59,9 +59,7 @@ public class CarSales car.setSeats((byte)(2 + rng.nextLessThan(6))); car.setDoors((byte)(2 + rng.nextLessThan(3))); - StructList.Builder wheels = car.initWheels(4); - for (int i = 0; i < wheels.size(); ++i) { - Wheel.Builder wheel = wheels.get(i); + for (Wheel.Builder wheel : car.initWheels(4)) { wheel.setDiameter((short)(25 + rng.nextLessThan(15))); wheel.setAirPressure((float)(30.0 + rng.nextDouble(20.0))); wheel.setSnowTires(rng.nextLessThan(16) == 0); diff --git a/runtime/src/main/java/org/capnproto/WireHelpers.java b/runtime/src/main/java/org/capnproto/WireHelpers.java index 7348d39..33b292b 100644 --- a/runtime/src/main/java/org/capnproto/WireHelpers.java +++ b/runtime/src/main/java/org/capnproto/WireHelpers.java @@ -313,10 +313,11 @@ final class WireHelpers { Text.Reader value) { Text.Builder builder = initTextPointer(refOffset, segment, value.size); - // TODO is there a way to do this with bulk methods? - for (int i = 0; i < builder.size; ++i) { - builder.buffer.put(builder.offset + i, value.buffer.get(value.offset + i)); - } + ByteBuffer slice = value.buffer.duplicate(); + slice.position(value.offset); + slice.limit(value.offset + value.size); + builder.buffer.position(builder.offset); + builder.buffer.put(slice); return builder; }