[Tarantool-patches] [PATCH luajit v2 1/7] utils: introduce leb128 reader and writer
Igor Munkin
imun at tarantool.org
Sat Dec 26 00:42:45 MSK 2020
Sergey,
Thanks for the patch! LGTM, except the several nits below.
On 25.12.20, Sergey Kaplun wrote:
> Most of the numeric data written by the memory profiler is encoded
> via LEB128 compression. This patch introduces the module for encoding
> and decoding 64bit number to LEB128 form.
>
> Part of tarantool/tarantool#5442
> ---
>
> Changes in v2:
> - Removed reader funciton's parameter named guard.
> - Code style fixes.
>
> src/Makefile | 3 +-
> src/Makefile.dep | 7 ++-
> src/lj_utils.h | 58 +++++++++++++++++++
> src/lj_utils_leb128.c | 132 ++++++++++++++++++++++++++++++++++++++++++
> src/ljamalg.c | 1 +
> 5 files changed, 197 insertions(+), 4 deletions(-)
> create mode 100644 src/lj_utils.h
> create mode 100644 src/lj_utils_leb128.c
>
> diff --git a/src/Makefile b/src/Makefile
> index 2786348..dc2ddb6 100644
> --- a/src/Makefile
> +++ b/src/Makefile
> @@ -466,6 +466,7 @@ endif
> DASM_FLAGS= $(DASM_XFLAGS) $(DASM_AFLAGS)
> DASM_DASC= vm_$(DASM_ARCH).dasc
>
> +UTILS_O= lj_utils_leb128.o
Minor: I personally believe this is excess and you can simply move this
object file to LJCORE_O list. BUILDVM_O is built with another toolchain;
LJLIB_O is used for generating auxiliary headers with buildvm.
Everything else is mentioned in LJCORE_O.
> BUILDVM_O= host/buildvm.o host/buildvm_asm.o host/buildvm_peobj.o \
> host/buildvm_lib.o host/buildvm_fold.o
> BUILDVM_T= host/buildvm
<snipped>
> diff --git a/src/lj_utils.h b/src/lj_utils.h
> new file mode 100644
> index 0000000..1671e8e
> --- /dev/null
> +++ b/src/lj_utils.h
> @@ -0,0 +1,58 @@
<snipped>
> +/*
> +** Reads a value from a buffer of bytes to a int64_t output.
Typo: s/a int64_t/an int64_t/g.
<g> flag means the note relates to all comments below.
> +** No bounds checks for the buffer. Returns number of bytes read.
> +*/
<snipped>
> +/*
> +** Writes a value from an signed 64-bit input to a buffer of bytes.
Typo: s/an signed/a signed/.
> +** No bounds checks for the buffer. Returns number of bytes written.
> +*/
<snipped>
> diff --git a/src/lj_utils_leb128.c b/src/lj_utils_leb128.c
> new file mode 100644
> index 0000000..ce8081b
> --- /dev/null
> +++ b/src/lj_utils_leb128.c
> @@ -0,0 +1,132 @@
<snipped>
> +#define LINK_BIT (0x80)
> +#define MIN_TWOBYTE_VALUE (0x80)
> +#define PAYLOAD_MASK (0x7f)
> +#define SHIFT_STEP (7)
> +#define LEB_SIGN_BIT (0x40)
Typo: Why did you change the whitespace here? Everything was OK with it
in the previous version.
> +
<snipped>
> --
> 2.28.0
>
--
Best regards,
IM
More information about the Tarantool-patches
mailing list