Make deflate.decoder.decode_huffman_fast64 choosy
diff --git a/release/c/wuffs-unsupported-snapshot.c b/release/c/wuffs-unsupported-snapshot.c
index cd10956..4c3b78e 100644
--- a/release/c/wuffs-unsupported-snapshot.c
+++ b/release/c/wuffs-unsupported-snapshot.c
@@ -6966,6 +6966,10 @@
uint32_t p_decode_blocks[1];
uint32_t p_decode_uncompressed[1];
uint32_t p_init_dynamic_huffman[1];
+ wuffs_base__status (*choosy_decode_huffman_fast64)(
+ wuffs_deflate__decoder* self,
+ wuffs_base__io_buffer* a_dst,
+ wuffs_base__io_buffer* a_src);
uint32_t p_decode_huffman_slow[1];
} private_impl;
@@ -25174,6 +25178,12 @@
wuffs_base__io_buffer* a_src);
static wuffs_base__status
+wuffs_deflate__decoder__decode_huffman_fast64__choosy_default(
+ wuffs_deflate__decoder* self,
+ wuffs_base__io_buffer* a_dst,
+ wuffs_base__io_buffer* a_src);
+
+static wuffs_base__status
wuffs_deflate__decoder__decode_huffman_slow(
wuffs_deflate__decoder* self,
wuffs_base__io_buffer* a_dst,
@@ -25234,6 +25244,8 @@
}
}
+ self->private_impl.choosy_decode_huffman_fast64 = &wuffs_deflate__decoder__decode_huffman_fast64__choosy_default;
+
self->private_impl.magic = WUFFS_BASE__MAGIC;
self->private_impl.vtable_for__wuffs_base__io_transformer.vtable_name =
wuffs_base__io_transformer__vtable_name;
@@ -26525,6 +26537,14 @@
wuffs_deflate__decoder* self,
wuffs_base__io_buffer* a_dst,
wuffs_base__io_buffer* a_src) {
+ return (*self->private_impl.choosy_decode_huffman_fast64)(self, a_dst, a_src);
+}
+
+static wuffs_base__status
+wuffs_deflate__decoder__decode_huffman_fast64__choosy_default(
+ wuffs_deflate__decoder* self,
+ wuffs_base__io_buffer* a_dst,
+ wuffs_base__io_buffer* a_src) {
wuffs_base__status status = wuffs_base__make_status(NULL);
uint64_t v_bits = 0;
diff --git a/std/deflate/decode_huffman_fast64.wuffs b/std/deflate/decode_huffman_fast64.wuffs
index 55e72dc..8290b3c 100644
--- a/std/deflate/decode_huffman_fast64.wuffs
+++ b/std/deflate/decode_huffman_fast64.wuffs
@@ -14,7 +14,9 @@
// TODO: describe how the xxx_fastxx version differs from the xxx_slow one, the
// assumptions that xxx_fastxx makes, and how that makes it fast.
-pri func decoder.decode_huffman_fast64!(dst: base.io_writer, src: base.io_reader) base.status {
+pri func decoder.decode_huffman_fast64!(dst: base.io_writer, src: base.io_reader) base.status,
+ choosy,
+{
// When editing this function, consider making the equivalent change to the
// decode_huffman_slow function. Keep the diff between the two
// decode_huffman_*.wuffs files as small as possible, while retaining both