|
|
1 typedef struct {
2 char *name; /* name of object */
3 unsigned short funcoffset; /* function call offset */
4 unsigned short varoffset; /* variable offset */
5 } pcinherit;
6
7 typedef void (*pcfunc) P((frame*));
8
9 typedef struct {
10 uindex oindex; /* precompiled object */
11
12 short ninherits; /* # of inherits */
13 pcinherit *inherits; /* inherits */
14
15 Uint compiled; /* compile time */
16
17 unsigned short progsize; /* program size */
18 char *program; /* program */
19
20 unsigned short nstrings; /* # of strings */
21 dstrconst* sstrings; /* string constants */
22 char *stext; /* string text */
23 Uint stringsz; /* string size */
24
25 unsigned short nfunctions; /* # functions */
26 pcfunc *functions; /* functions */
27
28 short nfuncdefs; /* # function definitions */
29 dfuncdef *funcdefs; /* function definitions */
30
31 short nvardefs; /* # variable definitions */
32 dvardef *vardefs; /* variable definitions */
33
34 uindex nfuncalls; /* # function calls */
35 char *funcalls; /* function calls */
36
37 uindex nsymbols; /* # symbols */
38 dsymbol *symbols; /* symbols */
39
40 unsigned short nvariables; /* # variables */
41 unsigned short nifdefs; /* # int/float definitions */
42 unsigned short nvinit; /* # variables requiring initialization */
43 } precomp;
44
45 extern precomp *precompiled[]; /* table of precompiled objects */
46 extern pcfunc *pcfunctions; /* table of precompiled functions */
47
48
49 bool pc_preload P((char*, char*));
50 array *pc_list P((dataspace*));
51 void pc_control P((control*, object*));
52 bool pc_dump P((int));
53 void pc_restore P((int));
54
55
56 # define PUSH_NUMBER (--f->sp)->type = T_INT, f->sp->u.number =
57 # define push_lvalue(v, t) ((--f->sp)->type = T_LVALUE, \
58 f->sp->oindex = (t), f->sp->u.lval = (v))
59 # define store() (i_store(f), f->sp[1] = f->sp[0], f->sp++)
60 # define store_int() (i_store(f), f->sp += 2, f->sp[-2].u.number)
61 # define i_foffset(n) (&f->ctrl->funcalls[2L * (f->foffset + (n))])
62
63 /*
64 * prototypes for kfuns that might be called directly from precompiled code
65 */
66 int kf_add P((frame*)), kf_add1 P((frame*)), kf_and P((frame*)),
67 kf_div P((frame*)), kf_eq P((frame*)), kf_ge P((frame*)), kf_gt P((frame*)),
68 kf_le P((frame*)), kf_lshift P((frame*)), kf_lt P((frame*)),
69 kf_mod P((frame*)), kf_mult P((frame*)), kf_ne P((frame*)),
70 kf_neg P((frame*)), kf_not P((frame*)), kf_or P((frame*)),
71 kf_rangeft P((frame*)), kf_rangef P((frame*)), kf_ranget P((frame*)),
72 kf_range P((frame*)), kf_rshift P((frame*)), kf_sub P((frame*)),
73 kf_sub1 P((frame*)), kf_tofloat P((frame*)), kf_toint P((frame*)),
74 kf_tst P((frame*)), kf_umin P((frame*)), kf_xor P((frame*)),
75 kf_tostring P((frame*)), kf_ckrangeft P((frame*)), kf_ckrangef P((frame*)),
76 kf_ckranget P((frame*)), kf_sum P((frame*, int));
77
78 int kf_this_object P((frame*)), kf_call_trace P((frame*)),
79 kf_this_user P((frame*)), kf_users P((frame*)), kf_time P((frame*)),
80 kf_swapout P((frame*)), kf_dump_state P((frame*)), kf_shutdown P((frame*));
81
82 void call_kfun P((frame*, int));
83 void call_kfun_arg P((frame*, int, int));
84 Int xdiv P((Int, Int));
85 Int xmod P((Int, Int));
86 Int xlshift P((Int, Int));
87 Int xrshift P((Int, Int));
88 bool poptruthval P((frame*));
89 void new_rlimits P((frame*));
90 int switch_range P((Int, Int*, int));
91 int switch_str P((value*, control*, char*, int));
92
This page was automatically generated by the
LXR engine.
Visit the LXR main site for more
information.