|
- //go:build !appengine && !noasm && gc
- // +build !appengine,!noasm,gc
-
- package s2
-
- // encodeBlock encodes a non-empty src to a guaranteed-large-enough dst. It
- // assumes that the varint-encoded length of the decompressed bytes has already
- // been written.
- //
- // It also assumes that:
- // len(dst) >= MaxEncodedLen(len(src)) &&
- // minNonLiteralBlockSize <= len(src) && len(src) <= maxBlockSize
- func encodeBlock(dst, src []byte) (d int) {
- const (
- // Use 12 bit table when less than...
- limit12B = 16 << 10
- // Use 10 bit table when less than...
- limit10B = 4 << 10
- // Use 8 bit table when less than...
- limit8B = 512
- )
-
- if len(src) >= 4<<20 {
- return encodeBlockAsm(dst, src)
- }
- if len(src) >= limit12B {
- return encodeBlockAsm4MB(dst, src)
- }
- if len(src) >= limit10B {
- return encodeBlockAsm12B(dst, src)
- }
- if len(src) >= limit8B {
- return encodeBlockAsm10B(dst, src)
- }
- if len(src) < minNonLiteralBlockSize {
- return 0
- }
- return encodeBlockAsm8B(dst, src)
- }
-
- // encodeBlockBetter encodes a non-empty src to a guaranteed-large-enough dst. It
- // assumes that the varint-encoded length of the decompressed bytes has already
- // been written.
- //
- // It also assumes that:
- // len(dst) >= MaxEncodedLen(len(src)) &&
- // minNonLiteralBlockSize <= len(src) && len(src) <= maxBlockSize
- func encodeBlockBetter(dst, src []byte) (d int) {
- const (
- // Use 12 bit table when less than...
- limit12B = 16 << 10
- // Use 10 bit table when less than...
- limit10B = 4 << 10
- // Use 8 bit table when less than...
- limit8B = 512
- )
-
- if len(src) > 4<<20 {
- return encodeBetterBlockAsm(dst, src)
- }
- if len(src) >= limit12B {
- return encodeBetterBlockAsm4MB(dst, src)
- }
- if len(src) >= limit10B {
- return encodeBetterBlockAsm12B(dst, src)
- }
- if len(src) >= limit8B {
- return encodeBetterBlockAsm10B(dst, src)
- }
- if len(src) < minNonLiteralBlockSize {
- return 0
- }
- return encodeBetterBlockAsm8B(dst, src)
- }
-
- // encodeBlockSnappy encodes a non-empty src to a guaranteed-large-enough dst. It
- // assumes that the varint-encoded length of the decompressed bytes has already
- // been written.
- //
- // It also assumes that:
- // len(dst) >= MaxEncodedLen(len(src)) &&
- // minNonLiteralBlockSize <= len(src) && len(src) <= maxBlockSize
- func encodeBlockSnappy(dst, src []byte) (d int) {
- const (
- // Use 12 bit table when less than...
- limit12B = 16 << 10
- // Use 10 bit table when less than...
- limit10B = 4 << 10
- // Use 8 bit table when less than...
- limit8B = 512
- )
- if len(src) >= 64<<10 {
- return encodeSnappyBlockAsm(dst, src)
- }
- if len(src) >= limit12B {
- return encodeSnappyBlockAsm64K(dst, src)
- }
- if len(src) >= limit10B {
- return encodeSnappyBlockAsm12B(dst, src)
- }
- if len(src) >= limit8B {
- return encodeSnappyBlockAsm10B(dst, src)
- }
- if len(src) < minNonLiteralBlockSize {
- return 0
- }
- return encodeSnappyBlockAsm8B(dst, src)
- }
-
- // encodeBlockSnappy encodes a non-empty src to a guaranteed-large-enough dst. It
- // assumes that the varint-encoded length of the decompressed bytes has already
- // been written.
- //
- // It also assumes that:
- // len(dst) >= MaxEncodedLen(len(src)) &&
- // minNonLiteralBlockSize <= len(src) && len(src) <= maxBlockSize
- func encodeBlockBetterSnappy(dst, src []byte) (d int) {
- const (
- // Use 12 bit table when less than...
- limit12B = 16 << 10
- // Use 10 bit table when less than...
- limit10B = 4 << 10
- // Use 8 bit table when less than...
- limit8B = 512
- )
- if len(src) >= 64<<10 {
- return encodeSnappyBetterBlockAsm(dst, src)
- }
- if len(src) >= limit12B {
- return encodeSnappyBetterBlockAsm64K(dst, src)
- }
- if len(src) >= limit10B {
- return encodeSnappyBetterBlockAsm12B(dst, src)
- }
- if len(src) >= limit8B {
- return encodeSnappyBetterBlockAsm10B(dst, src)
- }
- if len(src) < minNonLiteralBlockSize {
- return 0
- }
- return encodeSnappyBetterBlockAsm8B(dst, src)
- }
|