summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeif Walsh <leif.walsh@gmail.com>2014-05-23 14:02:53 -0400
committerLeif Walsh <leif.walsh@gmail.com>2014-05-23 14:02:53 -0400
commit598105c433bc55ee0b4fb8fbf5ffaaa2f9a63a35 (patch)
treeda9990cdf0cb4e1fc97b93f54e9ccc70435a5ffd
parent1e9f2f07b987f7ba89a9bb4d9f36d0ed1a07f015 (diff)
downloadmariadb-git-598105c433bc55ee0b4fb8fbf5ffaaa2f9a63a35.tar.gz
vectorized loops in new deserialization code #226
also a typo
-rw-r--r--ft/ft_node-serialize.cc17
1 files changed, 13 insertions, 4 deletions
diff --git a/ft/ft_node-serialize.cc b/ft/ft_node-serialize.cc
index 2eca2891bbc..4e4f231c21d 100644
--- a/ft/ft_node-serialize.cc
+++ b/ft/ft_node-serialize.cc
@@ -1112,7 +1112,7 @@ deserialize_child_buffer_v26(NONLEAF_CHILDINFO bnc, struct rbuf *rbuf,
}
}
-// effect: deserialize a single message from rbuf and enque the result into the given fifo
+// effect: deserialize a single message from rbuf and enqueue the result into the given fifo
static void
fifo_deserialize_msg_from_rbuf(FIFO fifo, struct rbuf *rbuf) {
bytevec key, val;
@@ -1144,16 +1144,25 @@ deserialize_child_buffer(NONLEAF_CHILDINFO bnc, struct rbuf *rbuf) {
// read in each message tree (fresh, stale, broadcast)
nfresh = rbuf_int(rbuf);
+ bytevec fresh_offsets_src_v;
+ rbuf_literal_bytes(rbuf, &fresh_offsets_v, nfresh * (sizeof *fresh_offsets));
+ const int32_t *fresh_offsets_src = (const int32_t *) fresh_offsets_src_v;
for (int i = 0; i < nfresh; i++) {
- fresh_offsets[i] = rbuf_int(rbuf);
+ fresh_offsets[i] = toku_dtoh32(fresh_offsets_src[i]);
}
nstale = rbuf_int(rbuf);
+ bytevec stale_offsets_src_v;
+ rbuf_literal_bytes(rbuf, &stale_offsets_v, nstale * (sizeof *stale_offsets));
+ const int32_t *stale_offsets_src = (const int32_t *) stale_offsets_src_v;
for (int i = 0; i < nstale; i++) {
- stale_offsets[i] = rbuf_int(rbuf);
+ stale_offsets[i] = toku_dtoh32(stale_offsets_src[i]);
}
nbroadcast_offsets = rbuf_int(rbuf);
+ bytevec broadcast_offsets_src_v;
+ rbuf_literal_bytes(rbuf, &broadcast_offsets_v, nbroadcast_offsets * (sizeof *broadcast_offsets));
+ const int32_t *broadcast_offsets_src = (const int32_t *) broadcast_offsets_src_v;
for (int i = 0; i < nbroadcast_offsets; i++) {
- broadcast_offsets[i] = rbuf_int(rbuf);
+ broadcast_offsets[i] = toku_dtoh32(broadcast_offsets_src[i]);
}
// build OMTs out of each offset array