[DTrace-devel] [PATCH v2 3/3] Save instruction in dt_cg_alloca_ptr() for the common sreg==dreg case

Kris Van Hees kris.van.hees at oracle.com
Tue Jan 23 04:58:18 UTC 2024


On Sun, Jan 21, 2024 at 01:35:34AM -0500, eugene.loh--- via DTrace-devel wrote:
> From: Eugene Loh <eugene.loh at oracle.com>
> 
> 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
> 
> 
> _______________________________________________
> DTrace-devel mailing list
> DTrace-devel at oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/dtrace-devel



More information about the DTrace-devel mailing list