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));
1003 dt_node_is_ptrcompat(const dt_node_t *lp, const dt_node_t *rp,
1007 ctf_file_t *rfp = rp->dn_ctfp;
1018 assert(rp->dn_flags & DT_NF_COOKED);
1020 if (dt_node_is_dynamic(lp) || dt_node_is_dynamic(rp))
1024 rp_is_int = dt_node_is_integer(rp);
1032 if (rp_is_int && (rp->dn_kind != DT_NODE_INT || rp->dn_value != 0))
1033 return (0); /* fail if rp is an integer that isn't 0 constant */
1036 (lp->dn_flags & DT_NF_USERLAND) ^ (rp->dn_flags & DT_NF_USERLAND)))
1058 rbase = ctf_type_resolve(rfp, rp->dn_type);
1115 dt_node_is_argcompat(const dt_node_t *lp, const dt_node_t *rp)
1118 ctf_file_t *rfp = rp->dn_ctfp;
1121 assert(rp->dn_flags & DT_NF_COOKED);
1123 if (dt_node_is_integer(lp) && dt_node_is_integer(rp))
1126 if (dt_node_is_strcompat(lp) && dt_node_is_strcompat(rp))
1129 if (dt_node_is_stack(lp) && dt_node_is_stack(rp))
1132 if (dt_node_is_symaddr(lp) && dt_node_is_symaddr(rp))
1135 if (dt_node_is_usymaddr(lp) && dt_node_is_usymaddr(rp))
1142 return (ctf_type_compat(lfp, lp->dn_type, rfp, rp->dn_type));
1144 return (dt_node_is_ptrcompat(lp, rp, NULL, NULL));
1864 dt_node_op2(int op, dt_node_t *lp, dt_node_t *rp)
1873 if (rp->dn_kind == DT_NODE_INT && rp->dn_value == 0 &&
1882 if (lp->dn_kind == DT_NODE_INT && rp->dn_kind == DT_NODE_INT) {
1884 uintmax_t r = rp->dn_value;
1906 dt_node_promote(lp, rp, dnp);
1910 dt_node_promote(lp, rp, dnp);
1914 dt_node_promote(lp, rp, dnp);
1927 dt_node_promote(lp, rp, dnp);
1936 dt_node_promote(lp, rp, dnp);
1945 dt_node_promote(lp, rp, dnp);
1954 dt_node_promote(lp, rp, dnp);
1965 dt_node_attr_assign(rp,
1966 dt_attr_min(lp->dn_attr, rp->dn_attr));
1971 dt_node_attr_assign(rp,
1972 dt_attr_min(lp->dn_attr, rp->dn_attr));
1976 dt_node_promote(lp, rp, dnp);
1980 dt_node_promote(lp, rp, dnp);
1984 dt_node_promote(lp, rp, dnp);
1987 dt_node_promote(lp, rp, dnp);
1994 dt_node_promote(lp, rp, dnp);
2007 dt_node_free(rp);
2016 * or if it is changing signed-ness. If so, we first shift rp's bits
2020 if (op == DT_TOK_LPAR && rp->dn_kind == DT_NODE_INT &&
2022 size_t srcsize = dt_node_type_size(rp);
2026 (rp->dn_flags & DT_NF_SIGNED))) {
2031 rp->dn_value <<= n;
2033 rp->dn_value = (intmax_t)rp->dn_value >> n;
2035 rp->dn_value = rp->dn_value >> n;
2038 dt_node_type_propagate(lp, rp);
2039 dt_node_attr_assign(rp, dt_attr_min(lp->dn_attr, rp->dn_attr));
2042 return (rp);
2053 dnp->dn_right = rp;
2059 dt_node_op3(dt_node_t *expr, dt_node_t *lp, dt_node_t *rp)
2064 return (expr->dn_value != 0 ? lp : rp);
2070 dnp->dn_right = rp;
3083 dt_node_t *rp = dnp->dn_right;
3148 rp = dnp->dn_right = dt_node_cook(rp, DT_IDFLG_REF);
3150 if (!dt_node_is_integer(lp) || !dt_node_is_integer(rp)) {
3155 dt_node_promote(lp, rp, dnp); /* see K&R[A7.11-13] */
3161 rp = dnp->dn_right = dt_node_cook(rp, DT_IDFLG_REF);
3163 if (!dt_node_is_integer(lp) || !dt_node_is_integer(rp)) {
3169 dt_node_attr_assign(dnp, dt_attr_min(lp->dn_attr, rp->dn_attr));
3174 rp = dnp->dn_right = dt_node_cook(rp, DT_IDFLG_REF);
3176 if (!dt_node_is_integer(lp) || !dt_node_is_integer(rp)) {
3181 dt_node_promote(lp, rp, dnp); /* see K&R[A7.6] */
3187 rp = dnp->dn_right = dt_node_cook(rp, DT_IDFLG_REF);
3189 if (!dt_node_is_arith(lp) || !dt_node_is_arith(rp)) {
3194 dt_node_promote(lp, rp, dnp); /* see K&R[A7.6] */
3201 rp = dnp->dn_right = dt_node_cook(rp, DT_IDFLG_REF);
3203 if (!dt_node_is_scalar(lp) || !dt_node_is_scalar(rp)) {
3209 dt_node_attr_assign(dnp, dt_attr_min(lp->dn_attr, rp->dn_attr));
3231 if (kind == CTF_K_ENUM && rp->dn_kind == DT_NODE_IDENT &&
3232 strchr(rp->dn_string, '`') == NULL && ctf_enum_value(
3233 lp->dn_ctfp, lp->dn_type, rp->dn_string, &val) == 0) {
3236 rp->dn_string)) != NULL) {
3240 opstr(op), rp->dn_string,
3245 free(rp->dn_string);
3246 rp->dn_string = NULL;
3247 rp->dn_kind = DT_NODE_INT;
3248 rp->dn_flags |= DT_NF_COOKED;
3249 rp->dn_op = DT_TOK_INT;
3250 rp->dn_value = (intmax_t)val;
3252 dt_node_type_assign(rp, lp->dn_ctfp, lp->dn_type);
3253 dt_node_attr_assign(rp, _dtrace_symattr);
3256 rp = dnp->dn_right = dt_node_cook(rp, DT_IDFLG_REF);
3270 rp->dn_ctfp, rp->dn_type))
3272 else if (dt_node_is_integer(lp) && dt_node_is_integer(rp))
3274 else if (dt_node_is_strcompat(lp) && dt_node_is_strcompat(rp) &&
3275 (dt_node_is_string(lp) || dt_node_is_string(rp)))
3277 else if (dt_node_is_ptrcompat(lp, rp, NULL, NULL) == 0) {
3281 dt_node_type_name(rp, n2, sizeof (n2)));
3285 dt_node_attr_assign(dnp, dt_attr_min(lp->dn_attr, rp->dn_attr));
3299 rp = dnp->dn_right = dt_node_cook(rp, DT_IDFLG_REF);
3305 rp_is_ptr = dt_node_is_string(rp) ||
3306 (dt_node_is_pointer(rp) && !dt_node_is_vfptr(rp));
3307 rp_is_int = dt_node_is_integer(rp);
3310 dt_type_promote(lp, rp, &ctfp, &type);
3317 ctfp = rp->dn_ctfp;
3318 type = rp->dn_type;
3319 uref = rp->dn_flags & DT_NF_USERLAND;
3321 dt_node_is_ptrcompat(lp, rp, NULL, NULL)) {
3329 dt_node_type_name(rp, n2, sizeof (n2)));
3333 dt_node_attr_assign(dnp, dt_attr_min(lp->dn_attr, rp->dn_attr));
3354 rp = dnp->dn_right =
3355 dt_node_cook(rp, DT_IDFLG_REF | DT_IDFLG_MOD);
3357 if (!dt_node_is_integer(lp) || !dt_node_is_integer(rp)) {
3373 rp = dnp->dn_right =
3374 dt_node_cook(rp, DT_IDFLG_REF | DT_IDFLG_MOD);
3376 if (!dt_node_is_arith(lp) || !dt_node_is_arith(rp)) {
3400 rp = dnp->dn_right = dt_node_cook(rp, DT_IDFLG_REF);
3415 if (rp->dn_kind != DT_NODE_FUNC ||
3416 rp->dn_ident->di_kind != DT_IDENT_AGGFUNC) {
3422 if (oid != NULL && oid != rp->dn_ident) {
3427 rp->dn_ident->di_name, aname, oid->di_name,
3430 lp->dn_ident->di_iarg = rp->dn_ident;
3443 lp->dn_aggfun = rp;
3456 if ((idp = dt_node_resolve(rp, DT_IDENT_XLSOU)) != NULL) {
3461 ctfp = rp->dn_ctfp;
3462 type = rp->dn_type;
3463 uref = rp->dn_flags & DT_NF_USERLAND;
3506 if (dt_node_is_argcompat(lp, rp))
3512 dt_node_type_name(rp, n2, sizeof (n2)));
3525 rp = dnp->dn_right =
3526 dt_node_cook(rp, DT_IDFLG_REF | DT_IDFLG_MOD);
3528 if (dt_node_is_string(lp) || dt_node_is_string(rp)) {
3532 dt_node_type_name(rp, n2, sizeof (n2)));
3541 dt_node_is_integer(rp) == 0) {
3546 } else if (dt_node_is_integer(rp) == 0 &&
3547 dt_node_is_ptrcompat(lp, rp, NULL, NULL) == 0) {
3552 dt_node_type_name(rp, n2, sizeof (n2)));
3568 dt_node_attr_assign(dnp, dt_attr_min(lp->dn_attr, rp->dn_attr));
3578 if (rp->dn_kind != DT_NODE_VAR) {
3579 dt_xcook_ident(rp, dtp->dt_tls,
3584 rp = dt_node_cook(rp, idflags);
3586 dnp->dn_right = dnp->dn_left; /* avoid freeing rp */
3588 return (rp);
3597 if (rp->dn_kind != DT_NODE_VAR) {
3598 dt_xcook_ident(rp, yypcb->pcb_locals,
3603 rp = dt_node_cook(rp, idflags);
3605 dnp->dn_right = dnp->dn_left; /* avoid freeing rp */
3607 return (rp);
3615 if (rp->dn_kind != DT_NODE_IDENT) {
3628 if (dt_xlator_member(dxp, rp->dn_string) == NULL) {
3631 "for member: %s\n", rp->dn_string);
3690 if (ctf_member_info(ctfp, type, rp->dn_string, &m) == CTF_ERR) {
3692 "%s is not a member of %s\n", rp->dn_string,
3739 lp->dn_aggtup = rp;
3782 * where dn_args for the VAR node is the right-hand 'rp' tree,
3788 * / \ +- dn_args -> [ ??? ]=rp
3789 * [ VAR ]=lp [ ??? ]=rp
3803 dnp->dn_args = rp;
3814 rp = dnp->dn_right = dt_node_cook(rp, DT_IDFLG_REF);
3815 dxp = dt_xlator_lookup(dtp, rp, lp, DT_XLATE_FUZZY);
3820 dt_node_type_name(rp, n1, sizeof (n1)),
3827 dt_attr_min(rp->dn_attr, dnp->dn_ident->di_attr));
3836 rp = dnp->dn_right = dt_node_cook(rp, DT_IDFLG_REF);
3841 rtype = ctf_type_resolve(rp->dn_ctfp, rp->dn_type);
3842 rkind = ctf_type_kind(rp->dn_ctfp, rtype);
3852 rp->dn_ctfp, rp->dn_type))
3855 (dt_node_is_scalar(rp) || rkind == CTF_K_FUNCTION))
3859 else if (lkind == CTF_K_POINTER && dt_node_is_pointer(rp))
3861 else if (dt_node_is_string(lp) && (dt_node_is_scalar(rp) ||
3862 dt_node_is_pointer(rp) || dt_node_is_strcompat(rp)))
3867 dt_node_type_name(rp, n1, sizeof (n1)),
3872 dt_node_attr_assign(dnp, dt_attr_min(lp->dn_attr, rp->dn_attr));
3878 rp = dnp->dn_right = dt_node_cook(rp, DT_IDFLG_REF);
3880 if (dt_node_is_dynamic(lp) || dt_node_is_dynamic(rp)) {
3885 if (dt_node_is_actfunc(lp) || dt_node_is_actfunc(rp)) {
3890 dt_node_type_propagate(rp, dnp); /* see K&R[A7.18] */
3891 dt_node_attr_assign(dnp, dt_attr_min(lp->dn_attr, rp->dn_attr));
3908 if (rp->dn_list != NULL) {
3939 dt_node_t *lp, *rp;
3945 rp = dnp->dn_right = dt_node_cook(dnp->dn_right, DT_IDFLG_REF);
3952 if (dt_node_is_dynamic(lp) || dt_node_is_dynamic(rp)) {
3963 rp->dn_ctfp, rp->dn_type)) {
3966 } else if (dt_node_is_integer(lp) && dt_node_is_integer(rp)) {
3967 dt_type_promote(lp, rp, &ctfp, &type);
3968 } else if (dt_node_is_strcompat(lp) && dt_node_is_strcompat(rp) &&
3969 (dt_node_is_string(lp) || dt_node_is_string(rp))) {
3972 } else if (dt_node_is_ptrcompat(lp, rp, &ctfp, &type) == 0) {
3977 if (dt_node_is_actfunc(lp) || dt_node_is_actfunc(rp)) {
3984 dt_attr_min(lp->dn_attr, rp->dn_attr)));
4495 dt_node_link(dt_node_t *lp, dt_node_t *rp)
4500 return (rp);
4501 else if (rp == NULL)
4507 dnp->dn_list = rp;