[DTrace-devel] [PATCH] Remove obsolete (PCB) pcb_dret and (DIFO) dtdo_rtype

Eugene Loh eugene.loh at oracle.com
Wed Sep 16 14:30:41 PDT 2020


Reviewed-by: Eugene Loh <eugene.loh at oracle.com>

On 09/14/2020 12:52 PM, Kris Van Hees wrote:
> Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
> ---
>   include/dtrace/difo.h | 1 -
>   libdtrace/dt_as.c     | 7 ++-----
>   libdtrace/dt_cg.c     | 9 ++-------
>   libdtrace/dt_dof.c    | 2 +-
>   libdtrace/dt_pcb.h    | 1 -
>   5 files changed, 5 insertions(+), 15 deletions(-)
>
> diff --git a/include/dtrace/difo.h b/include/dtrace/difo.h
> index 39894869..4190bc93 100644
> --- a/include/dtrace/difo.h
> +++ b/include/dtrace/difo.h
> @@ -39,7 +39,6 @@ typedef struct dtrace_difo {
>   	uint_t dtdo_len;			/* length of instruction buffer */
>   	uint_t dtdo_strlen;			/* length of string table */
>   	uint_t dtdo_varlen;			/* length of variable table */
> -	dtrace_diftype_t dtdo_rtype;		/* return type */
>   	uint_t dtdo_reclen;			/* length of trace record */
>   	uint_t dtdo_refcnt;			/* owner reference count */
>   	uint_t dtdo_destructive;		/* invokes destructive subroutines */
> diff --git a/libdtrace/dt_as.c b/libdtrace/dt_as.c
> index 24353a43..3169cf66 100644
> --- a/libdtrace/dt_as.c
> +++ b/libdtrace/dt_as.c
> @@ -571,13 +571,10 @@ fail:
>   		dp->dtdo_strtab = NULL;
>   
>   	/*
> -	 * Fill in the DIFO return type from the type associated with the
> -	 * node saved in pcb_dret, and then clear pcb_difo and pcb_dret
> -	 * now that the assembler has completed successfully.
> +	 *
> +	 * Clear pcb_difo * now that the assembler has completed successfully.
>   	 */
> -	dt_node_diftype(dtp, pcb->pcb_dret, &dp->dtdo_rtype);
>   	pcb->pcb_difo = NULL;
> -	pcb->pcb_dret = NULL;
>   
>   	/*
>   	 * Fill in the trace data record length.  This is used to determine the
> diff --git a/libdtrace/dt_cg.c b/libdtrace/dt_cg.c
> index 13ae7e2a..642e746c 100644
> --- a/libdtrace/dt_cg.c
> +++ b/libdtrace/dt_cg.c
> @@ -3123,9 +3123,6 @@ dt_cg(dt_pcb_t *pcb, dt_node_t *dnp)
>   	dt_irlist_create(&pcb->pcb_ir);
>   	pcb->pcb_exitlbl = dt_irlist_label(&pcb->pcb_ir);
>   
> -	assert(pcb->pcb_dret == NULL);
> -	pcb->pcb_dret = dnp;
> -
>   	pcb->pcb_bufoff = 0;
>   
>   	if (dt_node_is_dynamic(dnp))
> @@ -3147,8 +3144,6 @@ dt_cg(dt_pcb_t *pcb, dt_node_t *dnp)
>   		dt_cg_prologue(pcb, dnp->dn_pred);
>   
>   		for (act = dnp->dn_acts; act != NULL; act = act->dn_list) {
> -			pcb->pcb_dret = act->dn_expr;
> -
>   			if (act->dn_kind == DT_NODE_DFUNC) {
>   				const dt_cg_actdesc_t	*actdp;
>   				dt_ident_t		*idp;
> @@ -3161,9 +3156,9 @@ dt_cg(dt_pcb_t *pcb, dt_node_t *dnp)
>   			} else {
>   				dt_cg_node(act->dn_expr, &pcb->pcb_ir,
>   					   pcb->pcb_regs);
> -				assert (pcb->pcb_dret->dn_reg != -1);
> +				assert (act->dn_expr->dn_reg != -1);
>   				dt_regset_free(pcb->pcb_regs,
> -					       pcb->pcb_dret->dn_reg);
> +					       act->dn_expr->dn_reg);
>   			}
>   		}
>   
> diff --git a/libdtrace/dt_dof.c b/libdtrace/dt_dof.c
> index 0b8ad9de..b0962b55 100644
> --- a/libdtrace/dt_dof.c
> +++ b/libdtrace/dt_dof.c
> @@ -251,7 +251,7 @@ dof_add_difo(dt_dof_t *ddo, const dtrace_difo_t *dp)
>   	 */
>   	assert(nsecs <= sizeof (dsecs) / sizeof (dsecs[0]));
>   	dofd = alloca(sizeof (dtrace_diftype_t) + sizeof (dsecs));
> -	memcpy(&dofd->dofd_rtype, &dp->dtdo_rtype, sizeof (dtrace_diftype_t));
> +	memset(&dofd->dofd_rtype, 0, sizeof (dtrace_diftype_t));
>   	memcpy(&dofd->dofd_links, dsecs, sizeof (dof_secidx_t) * nsecs);
>   
>   	hdrsec = dof_add_lsect(ddo, dofd, DOF_SECT_DIFOHDR,
> diff --git a/libdtrace/dt_pcb.h b/libdtrace/dt_pcb.h
> index e19c61fc..cc39a0f3 100644
> --- a/libdtrace/dt_pcb.h
> +++ b/libdtrace/dt_pcb.h
> @@ -53,7 +53,6 @@ typedef struct dt_pcb {
>   	dtrace_datadesc_t *pcb_ddesc; /* data record description */
>   	int pcb_maxrecs;	/* alloc'd number of data record descriptions */
>   	dtrace_attribute_t pcb_amin; /* stability minimum for compilation */
> -	dt_node_t *pcb_dret;	/* node containing return type for assembler */
>   	dtrace_difo_t *pcb_difo; /* intermediate DIF object made by assembler */
>   	dtrace_prog_t *pcb_prog; /* intermediate program made by compiler */
>   	dtrace_stmtdesc_t *pcb_stmt; /* intermediate stmt made by compiler */




More information about the DTrace-devel mailing list