[DTrace-devel] [PATCH v4 09/10] cg: move dt_regset_xalloc for consistency
Kris Van Hees
kris.van.hees at oracle.com
Wed Apr 13 16:10:23 UTC 2022
On Tue, Apr 12, 2022 at 11:59:08AM +0100, Nick Alcock wrote:
> Pack it next to BPF_CALL_FUNC where possible.
>
> Signed-off-by: Nick Alcock <nick.alcock at oracle.com>
> Suggested-by: Eugene Loh <eugene.loh at oracle.com>
Reviewed-by: Kris Van Hees <kris.van.hees at oracle.com>
... with sone small change below...
> ---
> libdtrace/dt_cg.c | 16 ++++++++--------
> 1 file changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/libdtrace/dt_cg.c b/libdtrace/dt_cg.c
> index 12b84842d2d4..847860072c7a 100644
> --- a/libdtrace/dt_cg.c
> +++ b/libdtrace/dt_cg.c
> @@ -1289,9 +1289,9 @@ dt_cg_spec_set_drainable(dt_pcb_t *pcb, dt_node_t *dnp, int idreg)
>
> if (dt_regset_xalloc_args(drp) == -1)
> longjmp(yypcb->pcb_jmpbuf, EDT_NOREG);
> - dt_regset_xalloc(drp, BPF_REG_0);
> emit(dlp, BPF_LOAD(BPF_DW, BPF_REG_1, BPF_REG_FP, DT_STK_DCTX));
> emit(dlp, BPF_MOV_REG(BPF_REG_2, idreg));
> + dt_regset_xalloc(drp, BPF_REG_0);
> emite(dlp, BPF_CALL_FUNC(idp->di_id), idp);
> emit(dlp, BPF_BRANCH_IMM(BPF_JEQ, BPF_REG_0, 0, lbl_ok));
> emit(dlp, BPF_RETURN());
> @@ -2215,9 +2215,9 @@ dt_cg_load_var(dt_node_t *dst, dt_irlist_t *dlp, dt_regset_t *drp)
>
> emit(dlp, BPF_LOAD(BPF_DW, BPF_REG_1, BPF_REG_FP, DT_STK_DCTX));
> emit(dlp, BPF_MOV_IMM(BPF_REG_2, idp->di_id));
> - dt_regset_xalloc(drp, BPF_REG_0);
> idp = dt_dlib_get_func(yypcb->pcb_hdl, "dt_get_bvar");
> assert(idp != NULL);
> + dt_regset_xalloc(drp, BPF_REG_0);
> emite(dlp, BPF_CALL_FUNC(idp->di_id), idp);
> dt_regset_free_args(drp);
>
> @@ -3707,9 +3707,9 @@ dt_cg_subr_path_helper(dt_node_t *dnp, dt_irlist_t *dlp, dt_regset_t *drp,
>
> emit(dlp, BPF_MOV_REG(BPF_REG_2, dnp->dn_reg));
>
> - dt_regset_xalloc(drp, BPF_REG_0);
> idp = dt_dlib_get_func(yypcb->pcb_hdl, fname);
> assert(idp != NULL);
> + dt_regset_xalloc(drp, BPF_REG_0);
> emite(dlp, BPF_CALL_FUNC(idp->di_id), idp);
> dt_regset_free_args(drp);
> dt_regset_free(drp, BPF_REG_0);
> @@ -4159,9 +4159,9 @@ dt_cg_subr_strchr(dt_node_t *dnp, dt_irlist_t *dlp, dt_regset_t *drp)
> emit(dlp, BPF_LOAD(BPF_DW, BPF_REG_4, BPF_REG_4, DCTX_MEM));
> emit(dlp, BPF_ALU64_IMM(BPF_ADD, BPF_REG_4, off));
>
> - dt_regset_xalloc(drp, BPF_REG_0);
> idp = dt_dlib_get_func(yypcb->pcb_hdl, "dt_strchr");
> assert(idp != NULL);
> + dt_regset_xalloc(drp, BPF_REG_0);
> emite(dlp, BPF_CALL_FUNC(idp->di_id), idp);
> dt_regset_free_args(drp);
> dt_cg_tstring_xfree(yypcb, off);
> @@ -4210,9 +4210,9 @@ dt_cg_subr_strrchr(dt_node_t *dnp, dt_irlist_t *dlp, dt_regset_t *drp)
> emit(dlp, BPF_ALU64_IMM(BPF_ADD, dnp->dn_reg, dnp->dn_tstring->dn_value));
> emit(dlp, BPF_MOV_REG(BPF_REG_3, dnp->dn_reg));
>
> - dt_regset_xalloc(drp, BPF_REG_0);
> idp = dt_dlib_get_func(yypcb->pcb_hdl, "dt_strrchr");
> assert(idp != NULL);
> + dt_regset_xalloc(drp, BPF_REG_0);
> emite(dlp, BPF_CALL_FUNC(idp->di_id), idp);
> dt_regset_free_args(drp);
>
> @@ -4341,9 +4341,9 @@ dt_cg_subr_strstr(dt_node_t *dnp, dt_irlist_t *dlp, dt_regset_t *drp)
> emit(dlp, BPF_ALU64_IMM(BPF_ADD, BPF_REG_4, off1));
> emit(dlp, BPF_ALU64_IMM(BPF_ADD, BPF_REG_5, off2));
>
> - dt_regset_xalloc(drp, BPF_REG_0);
> idp = dt_dlib_get_func(yypcb->pcb_hdl, "dt_index");
> assert(idp != NULL);
> + dt_regset_xalloc(drp, BPF_REG_0);
> emite(dlp, BPF_CALL_FUNC(idp->di_id), idp);
> dt_regset_free_args(drp);
>
> @@ -4478,10 +4478,10 @@ dt_cg_subr_strtok(dt_node_t *dnp, dt_irlist_t *dlp, dt_regset_t *drp)
> emit(dlp, BPF_MOV_REG(BPF_REG_4, reg));
> emit(dlp, BPF_ALU64_IMM(BPF_ADD, BPF_REG_4, off));
>
> - dt_regset_xalloc(drp, BPF_REG_0);
> emite(dlp, BPF_CALL_FUNC(idp->di_id), idp);
> dt_regset_free_args(drp);
> dt_cg_tstring_xfree(yypcb, off);
> + dt_regset_xalloc(drp, BPF_REG_0);
This hunk needs to be removed. You are moving the allocation of BPF_REG_0
*past* the function call that clobbers it. It should stay where it is.
> emit(dlp, BPF_MOV_REG(dnp->dn_reg, BPF_REG_0));
> dt_regset_free(drp, BPF_REG_0);
>
> @@ -4530,9 +4530,9 @@ dt_cg_subr_substr(dt_node_t *dnp, dt_irlist_t *dlp, dt_regset_t *drp)
> emit(dlp, BPF_MOV_IMM(BPF_REG_4, 0));
> emit(dlp, BPF_MOV_IMM(BPF_REG_5, 2));
> }
> - dt_regset_xalloc(drp, BPF_REG_0);
> idp = dt_dlib_get_func(yypcb->pcb_hdl, "dt_substr");
> assert(idp != NULL);
> + dt_regset_xalloc(drp, BPF_REG_0);
> emite(dlp, BPF_CALL_FUNC(idp->di_id), idp);
>
> /*
> --
> 2.35.1
More information about the DTrace-devel
mailing list