[DTrace-devel] [PATCH v2 3/3] Save instruction in dt_cg_alloca_ptr() for the common sreg==dreg case
Kris Van Hees
kvanhees at kvh-deb-bpf.us.oracle.com
Tue Jan 23 16:52:00 UTC 2024
On Sun, Jan 21, 2024 at 01:35:34AM -0500, eugene.loh at oracle.com wrote:
>
> Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
Reviewed-by: Kris Van Hees <kris.van.hees at oracle.com>
> ---
> libdtrace/dt_cg.c | 16 +++++++---------
> 1 file changed, 7 insertions(+), 9 deletions(-)
>
> diff --git a/libdtrace/dt_cg.c b/libdtrace/dt_cg.c
> index dad5ab58..d312e319 100644
> --- a/libdtrace/dt_cg.c
> +++ b/libdtrace/dt_cg.c
> @@ -1534,19 +1534,17 @@ dt_cg_alloca_access_check(dt_irlist_t *dlp, dt_regset_t *drp, int reg,
> static void
> dt_cg_alloca_ptr(dt_irlist_t *dlp, dt_regset_t *drp, int dreg, int sreg)
> {
> - int reg = dreg;
> -
> if (dreg == sreg) {
> + int reg;
> +
> if ((reg = dt_regset_alloc(drp)) == -1)
> longjmp(yypcb->pcb_jmpbuf, EDT_NOREG);
> - }
> -
> - dt_cg_access_dctx(reg, dlp, drp, DCTX_SCRATCHMEM);
> - emit(dlp, BPF_ALU64_REG(BPF_ADD, reg, sreg));
> -
> - if (dreg == sreg) {
> - emit(dlp, BPF_MOV_REG(dreg, reg));
> + dt_cg_access_dctx(reg, dlp, drp, DCTX_SCRATCHMEM);
> + emit(dlp, BPF_ALU64_REG(BPF_ADD, sreg, reg));
> dt_regset_free(drp, reg);
> + } else {
> + dt_cg_access_dctx(dreg, dlp, drp, DCTX_SCRATCHMEM);
> + emit(dlp, BPF_ALU64_REG(BPF_ADD, dreg, sreg));
> }
> }
>
> --
> 2.18.4
>
>
More information about the DTrace-devel
mailing list