Lines Matching +full:sub +full:- +full:node

24  * referred to as a "super-clause", and its transformation typically entails
25 * creating several "sub-clauses" to implement it. For diagnosability, the
26 * sub-clauses will be printed if the "-xtree=8" flag is specified.
30 * statements before and after) is turned into its own sub-clause, with a
68 * Return a node for "self->%error".
71 * this variable name can not collide with any user-specified variable.
74 * in any of the sub-clauses, and is used to prevent execution of subsequent
75 * sub-clauses following an error.
90 dp->dtsp_clause_list = dt_node_link(dp->dtsp_clause_list, clause); in dt_sugar_append_clause()
99 dp->dtsp_clause_list = dt_node_link(clause, dp->dtsp_clause_list); in dt_sugar_prepend_clause()
103 * Return a node for "this->%condition_<condid>", or NULL if condid==0.
106 * this variable name can not collide with any user-specified variable.
128 * /!self->%error/
130 * this->%condition_<newcond> =
131 * (this->%condition_<condid> && pred);
139 * variables back to 0 when the super-clause completes.
147 /* predicate is !self->%error */ in dt_sugar_new_condition_impl()
154 * Note, D doesn't allow a probe-local "this" variable to in dt_sugar_new_condition_impl()
158 * in a different meta-clause. in dt_sugar_new_condition_impl()
162 /* value is (this->%condition_<condid> && pred) */ in dt_sugar_new_condition_impl()
167 /* body is "this->%condition_<retval> = <value>;" */ in dt_sugar_new_condition_impl()
171 return (dt_node_clause(dp->dtsp_pdescs, newpred, body)); in dt_sugar_new_condition_impl()
182 dp->dtsp_num_conditions++; in dt_sugar_new_condition()
184 pred, condid, dp->dtsp_num_conditions)); in dt_sugar_new_condition()
185 return (dp->dtsp_num_conditions); in dt_sugar_new_condition()
189 * Visit the specified node and all of its descendants. Currently this is only
197 switch (dnp->dn_kind) { in dt_sugar_visit_all()
209 for (arg = dnp->dn_args; arg != NULL; arg = arg->dn_list) in dt_sugar_visit_all()
214 dt_sugar_visit_all(dp, dnp->dn_child); in dt_sugar_visit_all()
218 dt_sugar_visit_all(dp, dnp->dn_left); in dt_sugar_visit_all()
219 dt_sugar_visit_all(dp, dnp->dn_right); in dt_sugar_visit_all()
220 if (dnp->dn_op == DT_TOK_LBRAC) { in dt_sugar_visit_all()
221 dt_node_t *ln = dnp->dn_right; in dt_sugar_visit_all()
222 while (ln->dn_list != NULL) { in dt_sugar_visit_all()
223 dt_sugar_visit_all(dp, ln->dn_list); in dt_sugar_visit_all()
224 ln = ln->dn_list; in dt_sugar_visit_all()
230 dt_sugar_visit_all(dp, dnp->dn_expr); in dt_sugar_visit_all()
231 dt_sugar_visit_all(dp, dnp->dn_left); in dt_sugar_visit_all()
232 dt_sugar_visit_all(dp, dnp->dn_right); in dt_sugar_visit_all()
237 dt_sugar_visit_all(dp, dnp->dn_expr); in dt_sugar_visit_all()
241 for (arg = dnp->dn_aggtup; arg != NULL; arg = arg->dn_list) in dt_sugar_visit_all()
244 if (dnp->dn_aggfun) in dt_sugar_visit_all()
245 dt_sugar_visit_all(dp, dnp->dn_aggfun); in dt_sugar_visit_all()
249 for (arg = dnp->dn_pdescs; arg != NULL; arg = arg->dn_list) in dt_sugar_visit_all()
252 if (dnp->dn_pred != NULL) in dt_sugar_visit_all()
253 dt_sugar_visit_all(dp, dnp->dn_pred); in dt_sugar_visit_all()
255 for (arg = dnp->dn_acts; arg != NULL; arg = arg->dn_list) in dt_sugar_visit_all()
260 const dt_idnode_t *inp = dnp->dn_ident->di_iarg; in dt_sugar_visit_all()
262 dt_sugar_visit_all(dp, inp->din_root); in dt_sugar_visit_all()
266 if (dnp->dn_membexpr) in dt_sugar_visit_all()
267 dt_sugar_visit_all(dp, dnp->dn_membexpr); in dt_sugar_visit_all()
271 for (arg = dnp->dn_members; arg != NULL; arg = arg->dn_list) in dt_sugar_visit_all()
276 for (arg = dnp->dn_probes; arg != NULL; arg = arg->dn_list) in dt_sugar_visit_all()
281 for (arg = dnp->dn_list; arg != NULL; arg = arg->dn_list) in dt_sugar_visit_all()
286 dp->dtsp_num_ifs++; in dt_sugar_visit_all()
287 dt_sugar_visit_all(dp, dnp->dn_conditional); in dt_sugar_visit_all()
289 for (arg = dnp->dn_body; arg != NULL; arg = arg->dn_list) in dt_sugar_visit_all()
291 for (arg = dnp->dn_alternate_body; arg != NULL; in dt_sugar_visit_all()
292 arg = arg->dn_list) in dt_sugar_visit_all()
298 (void) dnerror(dnp, D_UNKNOWN, "bad node %p, kind %d\n", in dt_sugar_visit_all()
299 (void *)dnp, dnp->dn_kind); in dt_sugar_visit_all()
306 * dp_pdescs{ self->%error = 0; }
308 * This clause will be executed at the beginning of each meta-clause, to
309 * ensure the error variable is unset (in case the previous meta-clause
317 return (dt_node_clause(dp->dtsp_pdescs, NULL, stmt)); in dt_sugar_new_clearerror_clause()
329 assert(if_stmt->dn_kind == DT_NODE_IF); in dt_sugar_do_if()
333 if_stmt->dn_conditional, precondition); in dt_sugar_do_if()
336 dt_sugar_visit_stmts(dp, if_stmt->dn_body, newid); in dt_sugar_do_if()
343 if (if_stmt->dn_alternate_body != NULL) { in dt_sugar_do_if()
346 dt_sugar_visit_stmts(dp, if_stmt->dn_alternate_body, in dt_sugar_do_if()
356 * /!self->%error && this->%condition_<condid>/
372 if (dp->dtsp_num_conditions != 0) { in dt_sugar_new_basic_block()
382 dt_node_clause(dp->dtsp_pdescs, pred, stmts)); in dt_sugar_new_basic_block()
398 next_stmt = stmt->dn_list; in dt_sugar_visit_stmts()
400 if (stmt->dn_kind != DT_NODE_IF) { in dt_sugar_visit_stmts()
412 prev_stmt->dn_list = NULL; in dt_sugar_visit_stmts()
441 * dtrace:::ERROR{ self->%error = 1; }
457 * Transform the super-clause into straight-D, returning the new list of
458 * sub-clauses.
467 dp.dtsp_pdescs = clause->dn_pdescs; in dt_compile_sugar()
469 /* make dt_node_int() generate an "int"-typed integer */ in dt_compile_sugar()
479 * the existing clause as-is, with its predicate intact. This in dt_compile_sugar()
484 dt_sugar_append_clause(&dp, dt_node_clause(clause->dn_pdescs, in dt_compile_sugar()
485 clause->dn_pred, clause->dn_acts)); in dt_compile_sugar()
487 if (clause->dn_pred != NULL) { in dt_compile_sugar()
489 clause->dn_pred, condid); in dt_compile_sugar()
492 if (clause->dn_acts == NULL) { in dt_compile_sugar()
501 dt_sugar_visit_stmts(&dp, clause->dn_acts, condid); in dt_compile_sugar()
511 dp.dtsp_clause_list->dn_list != NULL && !dtp->dt_has_sugar) { in dt_compile_sugar()
512 dtp->dt_has_sugar = B_TRUE; in dt_compile_sugar()