std/jpeg: have fill_bitstream call copy_from_slice
diff --git a/release/c/wuffs-unsupported-snapshot.c b/release/c/wuffs-unsupported-snapshot.c
index 1364331..893a1bd 100644
--- a/release/c/wuffs-unsupported-snapshot.c
+++ b/release/c/wuffs-unsupported-snapshot.c
@@ -39731,7 +39731,6 @@
 wuffs_jpeg__decoder__fill_bitstream(
     wuffs_jpeg__decoder* self,
     wuffs_base__io_buffer* a_src) {
-  uint32_t v_i = 0;
   uint32_t v_wi = 0;
   uint8_t v_c = 0;
   uint32_t v_n = 0;
@@ -39748,22 +39747,16 @@
   }
 
   if (self->private_impl.f_bitstream_ri <= 0) {
-  } else if (self->private_impl.f_bitstream_ri == self->private_impl.f_bitstream_wi) {
+  } else if (self->private_impl.f_bitstream_ri >= self->private_impl.f_bitstream_wi) {
     self->private_impl.f_bitstream_ri = 0;
     self->private_impl.f_bitstream_wi = 0;
   } else {
-    v_i = 0;
-    while (self->private_impl.f_bitstream_ri < self->private_impl.f_bitstream_wi) {
-      self->private_data.f_bitstream_buffer[v_i] = self->private_data.f_bitstream_buffer[self->private_impl.f_bitstream_ri];
-      self->private_impl.f_bitstream_ri += 1;
-      v_i += 1;
-      if (v_i >= self->private_impl.f_bitstream_ri) {
-        goto label__0__break;
-      }
-    }
-    label__0__break:;
+    v_wi = (self->private_impl.f_bitstream_wi - self->private_impl.f_bitstream_ri);
+    wuffs_base__slice_u8__copy_from_slice(wuffs_base__make_slice_u8(self->private_data.f_bitstream_buffer, 2048), wuffs_base__make_slice_u8_ij(self->private_data.f_bitstream_buffer,
+        self->private_impl.f_bitstream_ri,
+        self->private_impl.f_bitstream_wi));
     self->private_impl.f_bitstream_ri = 0;
-    self->private_impl.f_bitstream_wi = v_i;
+    self->private_impl.f_bitstream_wi = v_wi;
   }
   v_wi = self->private_impl.f_bitstream_wi;
   while ((v_wi < 2048) && (((uint64_t)(io2_a_src - iop_a_src)) > 0)) {
@@ -39773,16 +39766,16 @@
       v_wi += 1;
       iop_a_src += 1;
     } else if (((uint64_t)(io2_a_src - iop_a_src)) <= 1) {
-      goto label__1__break;
+      goto label__0__break;
     } else if ((wuffs_base__peek_u16le__no_bounds_check(iop_a_src) >> 8) > 0) {
-      goto label__1__break;
+      goto label__0__break;
     } else {
       self->private_data.f_bitstream_buffer[v_wi] = 255;
       v_wi += 1;
       iop_a_src += 2;
     }
   }
-  label__1__break:;
+  label__0__break:;
   if (((uint64_t)(io2_a_src - iop_a_src)) > 1) {
     if ((wuffs_base__peek_u8be__no_bounds_check(iop_a_src) >= 255) && ((wuffs_base__peek_u16le__no_bounds_check(iop_a_src) >> 8) > 0)) {
       v_n = (wuffs_base__u32__min(v_wi, 2016) + 32);
diff --git a/std/jpeg/decode_jpeg.wuffs b/std/jpeg/decode_jpeg.wuffs
index cdd26fd..c5b5953 100644
--- a/std/jpeg/decode_jpeg.wuffs
+++ b/std/jpeg/decode_jpeg.wuffs
@@ -1233,7 +1233,6 @@
 }
 
 pri func decoder.fill_bitstream!(src: base.io_reader) {
-    var i  : base.u32[..= 0x800]
     var wi : base.u32[..= 0x800]
     var c  : base.u8
     var n  : base.u32[..= 0x800]
@@ -1241,29 +1240,15 @@
     // Compact unread bytes to the start of the buffer.
     if this.bitstream_ri <= 0 {
         // No-op.
-    } else if this.bitstream_ri == this.bitstream_wi {
+    } else if this.bitstream_ri >= this.bitstream_wi {
         this.bitstream_ri = 0
         this.bitstream_wi = 0
     } else {
-        // TODO: have a built-in (calling memmove) to compact a slice?
-        i = 0
-        assert i < this.bitstream_ri via "a < b: a == c; c < b"(c: 0)
-        while this.bitstream_ri < this.bitstream_wi,
-                pre i < this.bitstream_ri,
-        {
-            assert this.bitstream_ri < 0x800 via "a < b: a < c; c <= b"(c: this.bitstream_wi)
-            assert i < 0x800 via "a < b: a < c; c < b"(c: this.bitstream_ri)
-            this.bitstream_buffer[i] = this.bitstream_buffer[this.bitstream_ri]
-            this.bitstream_ri += 1
-            i += 1
-            // TODO: this if statement should be unnecessary. Instead, we
-            // should be able to "assert i < this.bitstream_ri".
-            if i >= this.bitstream_ri {
-                break  // Unreachable.
-            }
-        } endwhile
+        assert this.bitstream_wi > this.bitstream_ri via "a > b: b < a"()
+        wi = this.bitstream_wi - this.bitstream_ri
+        this.bitstream_buffer[..].copy_from_slice!(s: this.bitstream_buffer[this.bitstream_ri .. this.bitstream_wi])
         this.bitstream_ri = 0
-        this.bitstream_wi = i
+        this.bitstream_wi = wi
     }
 
     wi = this.bitstream_wi