|
|
1.1 root 1: /* On machines that address memory in segments, reffetch and refstore
2: * can be rewritten to save and store data in a different segment than
3: * the rest of the program uses.
4: */
5:
6: #define XINC 8000
7: #include "ts.h"
8:
9: static unsigned XMAX = 0;
10: static struct refc *x = 0;
11: char *malloc(), *realloc();
12:
13: reffetch(i, rc)
14: unsigned i;
15: struct refc *rc;
16: {
17: struct refc *xi;
18:
19: if (i >= XMAX) scream("i too big in reffetch\n");
20: xi = x + i;
21: rc->rcnext = xi->rcnext;
22: rc->rcref = xi->rcref;
23: }
24:
25: refstore(i, rc)
26: unsigned i;
27: struct refc *rc;
28: {
29: struct refc *xi;
30:
31: if (i >= XMAX) {
32: XMAX += XINC;
33: if (!x) x = (struct refc *) malloc(XINC*sizeof(struct refc));
34: else x = (struct refc *) realloc(x, XMAX*sizeof(struct refc));
35: if (!x) scream("not enough memory for refstore!");
36: }
37: if (i >= XMAX) scream("i too big in refstore\n");
38: xi = x + i;
39: xi->rcnext = rc->rcnext;
40: xi->rcref = rc->rcref;
41: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.