Lines Matching refs:tp
89 copy_pattern(int pat, TREE *tp)
92 size_t sz = SIZE(tp) / sizeof (uint64_t);
94 uint64_t *datap = (uint64_t *)DATA(tp);
112 TREE *tp;
134 tp = np;
135 SIZE(tp) = size;
136 copy_pattern(FREEPAT, tp);
138 Last[i] = tp;
142 np = NEXT(tp);
144 AFTER(tp) = np;
145 protect(tp);
150 tp = List[i];
151 unprotect(tp);
152 if ((List[i] = AFTER(tp)) == NULL)
154 copy_pattern(LIVEPAT, tp);
155 SETBIT0(SIZE(tp));
156 protect(tp);
157 return (DATA(tp));
174 TREE *tp, *sp, *tmp;
195 tp = Root;
197 unprotect(tp);
198 if (SIZE(tp) >= size) { /* branch left */
199 if (n == 0 || n >= SIZE(tp)) {
200 sp = tp;
201 n = SIZE(tp);
203 if ((tmp = LEFT(tp)) != NULL) {
204 protect(tp);
205 tp = tmp;
207 protect(tp);
211 if ((tmp = RIGHT(tp)) != NULL) {
212 protect(tp);
213 tp = tmp;
215 protect(tp);
224 } else if (tp != Root) {
226 unprotect(tp);
227 t_splay(tp);
228 protect(tp);
229 Root = tp;
265 tp = NEXT(sp);
266 SIZE(tp) = n | BIT0;
267 realfree(DATA(tp));
286 TREE *tp, *np;
314 tp = BLOCK(old);
315 unprotect(tp);
316 ts = SIZE(tp);
321 protect(tp);
327 CLRBITS01(SIZE(tp));
328 if (size == SIZE(tp)) { /* nothing to do */
329 SIZE(tp) = ts;
330 protect(tp);
336 if (size < MINSIZE || SIZE(tp) < MINSIZE) {
338 SETOLD01(SIZE(tp), ts);
347 if (size > SIZE(tp)) {
349 np = NEXT(tp);
357 SIZE(tp) += SIZE(np) + WORDSIZE;
370 if (size > SIZE(tp) && BOTTOM(tp) && GETCORE(0) == Baddr) {
371 Bottom = tp;
373 if ((tp = morecore(size)) == NULL) {
374 tp = Bottom;
376 unprotect(tp);
382 if (size <= SIZE(tp)) {
385 if ((n = (SIZE(tp) - size)) >= MINSIZE + WORDSIZE) {
387 SIZE(tp) = size;
389 np = NEXT(tp);
392 } else if (BOTTOM(tp))
396 SETOLD01(SIZE(tp), ts);
397 protect(tp);
403 SETOLD01(SIZE(tp), ts);
417 * 1. size <= SIZE(tp) < MINSIZE
419 * 2. SIZE(tp) < size < MINSIZE
422 * 3. size < MINSIZE <= SIZE(tp)
426 * 4. MINSIZE <= SIZE(tp) < size
431 CLRBITS01(SIZE(tp));
432 if (SIZE(tp) < MINSIZE) {
433 if (size < SIZE(tp)) /* case 1. */ {
434 SETOLD01(SIZE(tp), ts);
435 protect(tp);
446 np = LAST(tp);
448 if ((SIZE(np) + SIZE(tp) + WORDSIZE) >= size) {
451 SIZE(np) += SIZE(tp) + WORDSIZE;
455 (void) memmove(DATA(np), old, SIZE(tp));
457 tp = np;
463 SETOLD01(SIZE(tp), ts);
464 protect(tp);
483 TREE *tp, *sp, *np, *tmp;
490 tp = BLOCK(old);
491 unprotect(tp);
492 ts = SIZE(tp);
494 protect(tp); /* force a watchpoint trap */
495 CLRBIT0(SIZE(tp));
498 CLRBITS01(SIZE(tp));
499 copy_pattern(FREEPAT, tp);
502 if (SIZE(tp) < MINSIZE) {
503 ASSERT(SIZE(tp) / WORDSIZE >= 1);
504 ts = SIZE(tp) / WORDSIZE - 1;
505 AFTER(tp) = NULL;
506 protect(tp);
508 List[ts] = tp;
509 Last[ts] = tp;
513 AFTER(sp) = tp;
515 Last[ts] = tp;
522 np = NEXT(tp);
529 SIZE(tp) += SIZE(np) + WORDSIZE;
534 np = LAST(tp);
539 SIZE(np) += SIZE(tp) + WORDSIZE;
540 tp = np;
544 PARENT(tp) = LEFT(tp) = RIGHT(tp) = LINKFOR(tp) = NULL;
547 if (BOTTOM(tp))
548 Bottom = tp;
552 size = SIZE(tp);
561 LEFT(np) = tp;
562 PARENT(tp) = np;
571 RIGHT(np) = tp;
572 PARENT(tp) = np;
580 LEFT(sp) = tp;
582 RIGHT(sp) = tp;
583 PARENT(tp) = sp;
586 Root = tp;
591 PARENT(sp) = tp;
594 LEFT(tp) = sp;
598 PARENT(sp) = tp;
601 RIGHT(tp) = sp;
604 LINKFOR(tp) = np;
605 LINKBAK(np) = tp;
613 Root = tp;
622 tmp = NEXT(tp);
625 *(SELFP(tp)) = tp;
629 protect(tp);
638 TREE *tp;
643 tp = Bottom;
657 if (tp)
658 unprotect(tp);
663 if (tp != NULL)
664 n -= SIZE(tp);
673 if (tp)
674 protect(tp);
692 if (tp)
693 protect(tp);
702 if (tp)
703 protect(tp);
710 if (tp) {
711 addr = ((char *)tp);
712 n += SIZE(tp) + 2 * WORDSIZE;
726 tp = ((TREE *)addr);
727 SIZE(tp) = n - 2 * WORDSIZE;
728 ASSERT((SIZE(tp) % ALIGN) == 0);
732 SETBIT0(SIZE(NEXT(tp)));
735 if (Bottom && Bottom != tp) {
740 return (tp);
745 * Return true if tp is in the NULL-terminated array of tree nodes.
748 in_list(TREE *tp, TREE **npp)
753 if (tp == sp)
769 TREE *tp;
787 while ((tp = *npp++) != NULL)
788 if (tp != x && tp != y && !in_list(tp, npp))
789 protect(tp);
797 TREE *tp;
815 while ((tp = *npp++) != NULL)
816 if (tp != x && tp != y && !in_list(tp, npp))
817 protect(tp);
825 TREE *tp;
849 while ((tp = *npp++) != NULL)
850 if (tp != x && tp != y && tp != z && !in_list(tp, npp))
851 protect(tp);
859 TREE *tp;
883 while ((tp = *npp++) != NULL)
884 if (tp != x && tp != y && tp != z && !in_list(tp, npp))
885 protect(tp);
893 TREE *tp;
911 while ((tp = *npp++) != NULL)
912 if (tp != x && tp != y && tp != z && !in_list(tp, npp))
913 protect(tp);
922 TREE *tp;
940 while ((tp = *npp++) != NULL)
941 if (tp != x && tp != y && tp != z && !in_list(tp, npp))
942 protect(tp);
952 TREE *tp, *sp, *gp;
956 tp = LINKBAK(op);
957 unprotect(tp);
960 LINKBAK(sp) = tp;
963 LINKFOR(tp) = sp;
964 protect(tp);
973 if ((tp = LINKFOR(op)) != NULL) {
974 unprotect(tp);
975 PARENT(tp) = NULL;
978 PARENT(sp) = tp;
981 LEFT(tp) = sp;
985 PARENT(sp) = tp;
988 RIGHT(tp) = sp;
990 Root = tp;
991 protect(tp);
996 if ((tp = LEFT(op)) != NULL) {
997 unprotect(tp);
998 PARENT(tp) = NULL;
1001 while ((sp = RIGHT(tp)) != NULL) {
1005 TDLEFT2(tp, sp, gp);
1007 protect(tp);
1008 tp = gp;
1010 LEFT1(tp, sp);
1011 protect(tp);
1012 tp = sp;
1017 RIGHT(tp) = sp = RIGHT(op);
1019 PARENT(sp) = tp;
1022 protect(tp);
1023 } else if ((tp = RIGHT(op)) != NULL) { /* no left subtree */
1024 unprotect(tp);
1025 PARENT(tp) = NULL;
1026 protect(tp);
1029 Root = tp;
1035 * path from Root to tp and make tp the new root.
1038 t_splay(TREE *tp)
1042 /* iterate until tp is the root */
1043 while ((pp = PARENT(tp)) != NULL) {
1045 /* grandparent of tp */
1051 if (LEFT(pp) == tp) {
1053 BURIGHT2(gp, pp, tp);
1058 RIGHT1(pp, tp);
1061 ASSERT(RIGHT(pp) == tp);
1063 BULEFT2(gp, pp, tp);
1068 LEFT1(pp, tp);
1072 unprotect(tp); /* just in case */
1405 protect(TREE *tp)
1412 if (tp == NULL || DATA(tp) == Baddr)
1415 sz = size = SIZE(tp);
1422 ctl.prwatch.pr_vaddr = (uintptr_t)tp;
1429 unprotect(TREE *tp)
1435 if (tp == NULL || DATA(tp) == Baddr)
1439 ctl.prwatch.pr_vaddr = (uintptr_t)tp;