Lines Matching refs:rp

319 dt_type_promote(dt_node_t *lp, dt_node_t *rp, ctf_file_t **ofp, ctf_id_t *otype)
324 ctf_file_t *rfp = rp->dn_ctfp;
325 ctf_id_t rtype = rp->dn_type;
390 dt_node_promote(dt_node_t *lp, dt_node_t *rp, dt_node_t *dnp)
392 dt_type_promote(lp, rp, &dnp->dn_ctfp, &dnp->dn_type);
394 dt_node_attr_assign(dnp, dt_attr_min(lp->dn_attr, rp->dn_attr));
1010 dt_node_is_ptrcompat(const dt_node_t *lp, const dt_node_t *rp,
1014 ctf_file_t *rfp = rp->dn_ctfp;
1025 assert(rp->dn_flags & DT_NF_COOKED);
1027 if (dt_node_is_dynamic(lp) || dt_node_is_dynamic(rp))
1031 rp_is_int = dt_node_is_integer(rp);
1039 if (rp_is_int && (rp->dn_kind != DT_NODE_INT || rp->dn_value != 0))
1040 return (0); /* fail if rp is an integer that isn't 0 constant */
1043 (lp->dn_flags & DT_NF_USERLAND) ^ (rp->dn_flags & DT_NF_USERLAND)))
1065 rbase = ctf_type_resolve(rfp, rp->dn_type);
1122 dt_node_is_argcompat(const dt_node_t *lp, const dt_node_t *rp)
1125 ctf_file_t *rfp = rp->dn_ctfp;
1128 assert(rp->dn_flags & DT_NF_COOKED);
1130 if (dt_node_is_integer(lp) && dt_node_is_integer(rp))
1133 if (dt_node_is_strcompat(lp) && dt_node_is_strcompat(rp))
1136 if (dt_node_is_stack(lp) && dt_node_is_stack(rp))
1139 if (dt_node_is_symaddr(lp) && dt_node_is_symaddr(rp))
1142 if (dt_node_is_usymaddr(lp) && dt_node_is_usymaddr(rp))
1149 return (ctf_type_compat(lfp, lp->dn_type, rfp, rp->dn_type));
1151 return (dt_node_is_ptrcompat(lp, rp, NULL, NULL));
1871 * changing signed-ness. If so, we first shift rp's bits bits high (losing
1876 dt_cast(dt_node_t *lp, dt_node_t *rp)
1878 size_t srcsize = dt_node_type_size(rp);
1883 rp->dn_value <<= n;
1884 rp->dn_value >>= n;
1889 rp->dn_value <<= n;
1890 if (rp->dn_flags & DT_NF_SIGNED) {
1891 rp->dn_value = (intmax_t)rp->dn_value >> s;
1892 rp->dn_value >>= n - s;
1894 rp->dn_value >>= n;
1900 dt_node_op2(int op, dt_node_t *lp, dt_node_t *rp)
1909 if (rp->dn_kind == DT_NODE_INT && rp->dn_value == 0 &&
1918 if (lp->dn_kind == DT_NODE_INT && rp->dn_kind == DT_NODE_INT) {
1920 uintmax_t r = rp->dn_value;
1942 dt_node_promote(lp, rp, dnp);
1946 dt_node_promote(lp, rp, dnp);
1950 dt_node_promote(lp, rp, dnp);
1963 dt_node_promote(lp, rp, dnp);
1972 dt_node_promote(lp, rp, dnp);
1981 dt_node_promote(lp, rp, dnp);
1990 dt_node_promote(lp, rp, dnp);
2001 dt_node_attr_assign(rp,
2002 dt_attr_min(lp->dn_attr, rp->dn_attr));
2007 dt_node_attr_assign(rp,
2008 dt_attr_min(lp->dn_attr, rp->dn_attr));
2012 dt_node_promote(lp, rp, dnp);
2016 dt_node_promote(lp, rp, dnp);
2020 dt_node_promote(lp, rp, dnp);
2023 dt_node_promote(lp, rp, dnp);
2030 dt_node_promote(lp, rp, dnp);
2043 dt_node_free(rp);
2048 if (op == DT_TOK_LPAR && rp->dn_kind == DT_NODE_INT &&
2050 dt_cast(lp, rp);
2051 dt_node_type_propagate(lp, rp);
2052 dt_node_attr_assign(rp, dt_attr_min(lp->dn_attr, rp->dn_attr));
2055 return (rp);
2066 dnp->dn_right = rp;
2072 dt_node_op3(dt_node_t *expr, dt_node_t *lp, dt_node_t *rp)
2077 return (expr->dn_value != 0 ? lp : rp);
2083 dnp->dn_right = rp;
3096 dt_node_t *rp = dnp->dn_right;
3099 if (rp->dn_kind == DT_NODE_INT)
3100 dt_cast(lp, rp);
3114 dt_node_attr_assign(dnp, dt_attr_min(lp->dn_attr, rp->dn_attr));
3122 dt_node_t *rp = dnp->dn_right;
3187 rp = dnp->dn_right = dt_node_cook(rp, DT_IDFLG_REF);
3189 if (!dt_node_is_integer(lp) || !dt_node_is_integer(rp)) {
3194 dt_node_promote(lp, rp, dnp); /* see K&R[A7.11-13] */
3200 rp = dnp->dn_right = dt_node_cook(rp, DT_IDFLG_REF);
3202 if (!dt_node_is_integer(lp) || !dt_node_is_integer(rp)) {
3208 dt_node_attr_assign(dnp, dt_attr_min(lp->dn_attr, rp->dn_attr));
3213 rp = dnp->dn_right = dt_node_cook(rp, DT_IDFLG_REF);
3215 if (!dt_node_is_integer(lp) || !dt_node_is_integer(rp)) {
3220 dt_node_promote(lp, rp, dnp); /* see K&R[A7.6] */
3226 rp = dnp->dn_right = dt_node_cook(rp, DT_IDFLG_REF);
3228 if (!dt_node_is_arith(lp) || !dt_node_is_arith(rp)) {
3233 dt_node_promote(lp, rp, dnp); /* see K&R[A7.6] */
3240 rp = dnp->dn_right = dt_node_cook(rp, DT_IDFLG_REF);
3242 if (!dt_node_is_scalar(lp) || !dt_node_is_scalar(rp)) {
3248 dt_node_attr_assign(dnp, dt_attr_min(lp->dn_attr, rp->dn_attr));
3270 if (kind == CTF_K_ENUM && rp->dn_kind == DT_NODE_IDENT &&
3271 strchr(rp->dn_string, '`') == NULL && ctf_enum_value(
3272 lp->dn_ctfp, lp->dn_type, rp->dn_string, &val) == 0) {
3275 rp->dn_string)) != NULL) {
3279 opstr(op), rp->dn_string,
3284 free(rp->dn_string);
3285 rp->dn_string = NULL;
3286 rp->dn_kind = DT_NODE_INT;
3287 rp->dn_flags |= DT_NF_COOKED;
3288 rp->dn_op = DT_TOK_INT;
3289 rp->dn_value = (intmax_t)val;
3291 dt_node_type_assign(rp, lp->dn_ctfp, lp->dn_type);
3292 dt_node_attr_assign(rp, _dtrace_symattr);
3295 rp = dnp->dn_right = dt_node_cook(rp, DT_IDFLG_REF);
3309 rp->dn_ctfp, rp->dn_type))
3311 else if (dt_node_is_integer(lp) && dt_node_is_integer(rp))
3313 else if (dt_node_is_strcompat(lp) && dt_node_is_strcompat(rp) &&
3314 (dt_node_is_string(lp) || dt_node_is_string(rp)))
3316 else if (dt_node_is_ptrcompat(lp, rp, NULL, NULL) == 0) {
3320 dt_node_type_name(rp, n2, sizeof (n2)));
3324 dt_node_attr_assign(dnp, dt_attr_min(lp->dn_attr, rp->dn_attr));
3338 rp = dnp->dn_right = dt_node_cook(rp, DT_IDFLG_REF);
3344 rp_is_ptr = dt_node_is_string(rp) ||
3345 (dt_node_is_pointer(rp) && !dt_node_is_vfptr(rp));
3346 rp_is_int = dt_node_is_integer(rp);
3349 dt_type_promote(lp, rp, &ctfp, &type);
3356 ctfp = rp->dn_ctfp;
3357 type = rp->dn_type;
3358 uref = rp->dn_flags & DT_NF_USERLAND;
3360 dt_node_is_ptrcompat(lp, rp, NULL, NULL)) {
3368 dt_node_type_name(rp, n2, sizeof (n2)));
3372 dt_node_attr_assign(dnp, dt_attr_min(lp->dn_attr, rp->dn_attr));
3393 rp = dnp->dn_right =
3394 dt_node_cook(rp, DT_IDFLG_REF | DT_IDFLG_MOD);
3396 if (!dt_node_is_integer(lp) || !dt_node_is_integer(rp)) {
3412 rp = dnp->dn_right =
3413 dt_node_cook(rp, DT_IDFLG_REF | DT_IDFLG_MOD);
3415 if (!dt_node_is_arith(lp) || !dt_node_is_arith(rp)) {
3439 rp = dnp->dn_right = dt_node_cook(rp, DT_IDFLG_REF);
3454 if (rp->dn_kind != DT_NODE_FUNC ||
3455 rp->dn_ident->di_kind != DT_IDENT_AGGFUNC) {
3461 if (oid != NULL && oid != rp->dn_ident) {
3466 rp->dn_ident->di_name, aname, oid->di_name,
3469 lp->dn_ident->di_iarg = rp->dn_ident;
3482 lp->dn_aggfun = rp;
3495 if ((idp = dt_node_resolve(rp, DT_IDENT_XLSOU)) != NULL) {
3500 ctfp = rp->dn_ctfp;
3501 type = rp->dn_type;
3502 uref = rp->dn_flags & DT_NF_USERLAND;
3545 if (dt_node_is_argcompat(lp, rp))
3551 dt_node_type_name(rp, n2, sizeof (n2)));
3564 rp = dnp->dn_right =
3565 dt_node_cook(rp, DT_IDFLG_REF | DT_IDFLG_MOD);
3567 if (dt_node_is_string(lp) || dt_node_is_string(rp)) {
3571 dt_node_type_name(rp, n2, sizeof (n2)));
3580 dt_node_is_integer(rp) == 0) {
3585 } else if (dt_node_is_integer(rp) == 0 &&
3586 dt_node_is_ptrcompat(lp, rp, NULL, NULL) == 0) {
3591 dt_node_type_name(rp, n2, sizeof (n2)));
3605 if (rp->dn_kind != DT_NODE_VAR) {
3606 dt_xcook_ident(rp, dtp->dt_tls,
3611 rp = dt_node_cook(rp, idflags);
3613 dnp->dn_right = dnp->dn_left; /* avoid freeing rp */
3615 return (rp);
3624 if (rp->dn_kind != DT_NODE_VAR) {
3625 dt_xcook_ident(rp, yypcb->pcb_locals,
3630 rp = dt_node_cook(rp, idflags);
3632 dnp->dn_right = dnp->dn_left; /* avoid freeing rp */
3634 return (rp);
3642 if (rp->dn_kind != DT_NODE_IDENT) {
3655 if (dt_xlator_member(dxp, rp->dn_string) == NULL) {
3658 "for member: %s\n", rp->dn_string);
3717 if (ctf_member_info(ctfp, type, rp->dn_string, &m) == CTF_ERR) {
3719 "%s is not a member of %s\n", rp->dn_string,
3766 lp->dn_aggtup = rp;
3809 * where dn_args for the VAR node is the right-hand 'rp' tree,
3815 * / \ +- dn_args -> [ ??? ]=rp
3816 * [ VAR ]=lp [ ??? ]=rp
3830 dnp->dn_args = rp;
3841 rp = dnp->dn_right = dt_node_cook(rp, DT_IDFLG_REF);
3842 dxp = dt_xlator_lookup(dtp, rp, lp, DT_XLATE_FUZZY);
3847 dt_node_type_name(rp, n1, sizeof (n1)),
3854 dt_attr_min(rp->dn_attr, dnp->dn_ident->di_attr));
3863 rp = dnp->dn_right = dt_node_cook(rp, DT_IDFLG_REF);
3868 rtype = ctf_type_resolve(rp->dn_ctfp, rp->dn_type);
3869 rkind = ctf_type_kind(rp->dn_ctfp, rtype);
3879 rp->dn_ctfp, rp->dn_type))
3882 (dt_node_is_scalar(rp) || rkind == CTF_K_FUNCTION))
3886 else if (lkind == CTF_K_POINTER && dt_node_is_pointer(rp))
3888 else if (dt_node_is_string(lp) && (dt_node_is_scalar(rp) ||
3889 dt_node_is_pointer(rp) || dt_node_is_strcompat(rp)))
3894 dt_node_type_name(rp, n1, sizeof (n1)),
3899 dt_node_attr_assign(dnp, dt_attr_min(lp->dn_attr, rp->dn_attr));
3913 rp = dnp->dn_right = dt_node_cook(rp, DT_IDFLG_REF);
3915 if (dt_node_is_dynamic(lp) || dt_node_is_dynamic(rp)) {
3920 if (dt_node_is_actfunc(lp) || dt_node_is_actfunc(rp)) {
3925 dt_node_type_propagate(rp, dnp); /* see K&R[A7.18] */
3926 dt_node_attr_assign(dnp, dt_attr_min(lp->dn_attr, rp->dn_attr));
3943 if (rp->dn_list != NULL) {
3974 dt_node_t *lp, *rp;
3980 rp = dnp->dn_right = dt_node_cook(dnp->dn_right, DT_IDFLG_REF);
3987 if (dt_node_is_dynamic(lp) || dt_node_is_dynamic(rp)) {
3998 rp->dn_ctfp, rp->dn_type)) {
4001 } else if (dt_node_is_integer(lp) && dt_node_is_integer(rp)) {
4002 dt_type_promote(lp, rp, &ctfp, &type);
4003 } else if (dt_node_is_strcompat(lp) && dt_node_is_strcompat(rp) &&
4004 (dt_node_is_string(lp) || dt_node_is_string(rp))) {
4007 } else if (dt_node_is_ptrcompat(lp, rp, &ctfp, &type) == 0) {
4012 if (dt_node_is_actfunc(lp) || dt_node_is_actfunc(rp)) {
4019 dt_attr_min(lp->dn_attr, rp->dn_attr)));
4530 dt_node_link(dt_node_t *lp, dt_node_t *rp)
4535 return (rp);
4536 else if (rp == NULL)
4542 dnp->dn_list = rp;