Skip to content

Commit b2f7242

Browse files
committed
use bulk copy methods to initialize writable text and data defaults
1 parent cfea947 commit b2f7242

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

runtime/src/main/java/org/capnproto/WireHelpers.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -802,10 +802,12 @@ static Text.Builder getWritableTextPointer(int refOffset,
802802
return new Text.Builder();
803803
} else {
804804
Text.Builder builder = initTextPointer(refOffset, segment, defaultSize);
805-
// TODO is there a way to do this with bulk methods?
806-
for (int i = 0; i < builder.size; ++i) {
807-
builder.buffer.put(builder.offset + i, defaultBuffer.get(defaultOffset * 8 + i));
808-
}
805+
806+
ByteBuffer slice = defaultBuffer.duplicate();
807+
slice.position(defaultOffset * 8);
808+
slice.limit(defaultOffset * 8 + defaultSize);
809+
builder.buffer.position(builder.offset);
810+
builder.buffer.put(slice);
809811
return builder;
810812
}
811813
}
@@ -872,10 +874,12 @@ static Data.Builder getWritableDataPointer(int refOffset,
872874
return new Data.Builder();
873875
} else {
874876
Data.Builder builder = initDataPointer(refOffset, segment, defaultSize);
875-
// TODO is there a way to do this with bulk methods?
876-
for (int i = 0; i < builder.size; ++i) {
877-
builder.buffer.put(builder.offset + i, defaultBuffer.get(defaultOffset * 8 + i));
878-
}
877+
878+
ByteBuffer slice = defaultBuffer.duplicate();
879+
slice.position(defaultOffset * 8);
880+
slice.limit(defaultOffset * 8 + defaultSize);
881+
builder.buffer.position(builder.offset);
882+
builder.buffer.put(slice);
879883
return builder;
880884
}
881885
}

0 commit comments

Comments
 (0)