source: trunk/third/perl/thrdvar.h @ 14545

Revision 14545, 9.1 KB checked in by ghudson, 25 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r14544, which included commits to RCS files with non-trunk default branches.
Line 
1/***********************************************/
2/* Global only to current thread               */
3/***********************************************/
4
5/* Don't forget to re-run embed.pl to propagate changes! */
6
7/* The 'T' prefix is only needed for vars that need appropriate #defines
8 * generated when built with or without USE_THREADS.  It is also used
9 * to generate the appropriate export list for win32.
10 *
11 * When building without USE_THREADS, these variables will be truly global.
12 * When building without USE_THREADS but with MULTIPLICITY, these variables
13 * will be global per-interpreter. */
14
15/* Important ones in the first cache line (if alignment is done right) */
16
17#ifdef USE_THREADS
18PERLVAR(interp,         PerlInterpreter*)       /* thread owner */
19#endif
20
21PERLVAR(Tstack_sp,      SV **)          /* top of the stack */
22#ifdef OP_IN_REGISTER
23PERLVAR(Topsave,        OP *)
24#else
25PERLVAR(Top,            OP *)           /* currently executing op */
26#endif
27PERLVAR(Tcurpad,        SV **)          /* active pad (lexicals+tmps) */
28
29PERLVAR(Tstack_base,    SV **)
30PERLVAR(Tstack_max,     SV **)
31
32PERLVAR(Tscopestack,    I32 *)          /* scopes we've ENTERed */
33PERLVAR(Tscopestack_ix, I32)
34PERLVAR(Tscopestack_max,I32)
35
36PERLVAR(Tsavestack,     ANY *)          /* items that need to be restored
37                                           when LEAVEing scopes we've ENTERed */
38PERLVAR(Tsavestack_ix,  I32)
39PERLVAR(Tsavestack_max, I32)
40
41PERLVAR(Ttmps_stack,    SV **)          /* mortals we've made */
42PERLVARI(Ttmps_ix,      I32,    -1)
43PERLVARI(Ttmps_floor,   I32,    -1)
44PERLVAR(Ttmps_max,      I32)
45
46PERLVAR(Tmarkstack,     I32 *)          /* stack_sp locations we're remembering */
47PERLVAR(Tmarkstack_ptr, I32 *)
48PERLVAR(Tmarkstack_max, I32 *)
49
50PERLVAR(Tretstack,      OP **)          /* OPs we have postponed executing */
51PERLVAR(Tretstack_ix,   I32)
52PERLVAR(Tretstack_max,  I32)
53
54PERLVAR(TSv,            SV *)           /* used to hold temporary values */
55PERLVAR(TXpv,           XPV *)          /* used to hold temporary values */
56
57/*
58=for apidoc Amn|STRLEN|PL_na
59
60A convenience variable which is typically used with C<SvPV> when one
61doesn't care about the length of the string.  It is usually more efficient
62to either declare a local variable and use that instead or to use the
63C<SvPV_nolen> macro.
64
65=cut
66*/
67
68PERLVAR(Tna,            STRLEN)         /* for use in SvPV when length is
69                                           Not Applicable */
70
71/* stat stuff */
72PERLVAR(Tstatbuf,       Stat_t)
73PERLVAR(Tstatcache,     Stat_t)         /* _ */
74PERLVAR(Tstatgv,        GV *)
75PERLVARI(Tstatname,     SV *,   Nullsv)
76
77#ifdef HAS_TIMES
78PERLVAR(Ttimesbuf,      struct tms)
79#endif
80
81/* Fields used by magic variables such as $@, $/ and so on */
82PERLVAR(Ttainted,       bool)           /* using variables controlled by $< */
83PERLVAR(Tcurpm,         PMOP *)         /* what to do \ interps in REs from */
84PERLVAR(Tnrs,           SV *)
85PERLVAR(Trs,            SV *)           /* input record separator $/ */
86PERLVAR(Tlast_in_gv,    GV *)           /* GV used in last <FH> */
87PERLVAR(Tofs,           char *)         /* output field separator $, */
88PERLVAR(Tofslen,        STRLEN)
89PERLVAR(Tdefoutgv,      GV *)           /* default FH for output */
90PERLVARI(Tchopset,      char *, " \n-") /* $: */
91PERLVAR(Tformtarget,    SV *)
92PERLVAR(Tbodytarget,    SV *)
93PERLVAR(Ttoptarget,     SV *)
94
95/* Stashes */
96PERLVAR(Tdefstash,      HV *)           /* main symbol table */
97PERLVAR(Tcurstash,      HV *)           /* symbol table for current package */
98
99PERLVAR(Trestartop,     OP *)           /* propagating an error from croak? */
100PERLVARI(Tcurcop,       COP * VOL,      &PL_compiling)
101PERLVAR(Tin_eval,       VOL int)        /* trap "fatal" errors? */
102PERLVAR(Tdelaymagic,    int)            /* ($<,$>) = ... */
103PERLVARI(Tdirty,        bool, FALSE)    /* in the middle of tearing things down? */
104PERLVAR(Tlocalizing,    int)            /* are we processing a local() list? */
105
106PERLVAR(Tcurstack,      AV *)           /* THE STACK */
107PERLVAR(Tcurstackinfo,  PERL_SI *)      /* current stack + context */
108PERLVAR(Tmainstack,     AV *)           /* the stack when nothing funny is happening */
109
110PERLVAR(Ttop_env,       JMPENV *)       /* ptr. to current sigjmp() environment */
111PERLVAR(Tstart_env,     JMPENV)         /* empty startup sigjmp() environment */
112#ifdef PERL_FLEXIBLE_EXCEPTIONS
113PERLVARI(Tprotect,      protect_proc_t, MEMBER_TO_FPTR(Perl_default_protect))
114#endif
115PERLVARI(Terrors,       SV *, Nullsv)   /* outstanding queued errors */
116
117/* statics "owned" by various functions */
118PERLVAR(Tav_fetch_sv,   SV *)           /* owned by av_fetch() */
119PERLVAR(Thv_fetch_sv,   SV *)           /* owned by hv_fetch() */
120PERLVAR(Thv_fetch_ent_mh, HE)           /* owned by hv_fetch_ent() */
121
122PERLVAR(Tmodcount,      I32)            /* how much mod()ification in assignment? */
123
124PERLVAR(Tlastgotoprobe, OP*)            /* from pp_ctl.c */
125PERLVARI(Tdumpindent,   I32, 4)         /* # of blanks per dump indentation level */
126
127/* sort stuff */
128PERLVAR(Tsortcop,       OP *)           /* user defined sort routine */
129PERLVAR(Tsortstash,     HV *)           /* which is in some package or other */
130PERLVAR(Tfirstgv,       GV *)           /* $a */
131PERLVAR(Tsecondgv,      GV *)           /* $b */
132PERLVAR(Tsortcxix,      I32)            /* from pp_ctl.c */
133
134/* float buffer */
135PERLVAR(Tefloatbuf,     char*)
136PERLVAR(Tefloatsize,    STRLEN)
137
138/* regex stuff */
139
140PERLVAR(Tscreamfirst,   I32 *)
141PERLVAR(Tscreamnext,    I32 *)
142PERLVARI(Tmaxscream,    I32,    -1)
143PERLVAR(Tlastscream,    SV *)
144
145PERLVAR(Tregdummy,      regnode)        /* from regcomp.c */
146PERLVAR(Tregcomp_parse, char*)          /* Input-scan pointer. */
147PERLVAR(Tregxend,       char*)          /* End of input for compile */
148PERLVAR(Tregcode,       regnode*)       /* Code-emit pointer; &regdummy = don't */
149PERLVAR(Tregnaughty,    I32)            /* How bad is this pattern? */
150PERLVAR(Tregsawback,    I32)            /* Did we see \1, ...? */
151PERLVAR(Tregprecomp,    char *)         /* uncompiled string. */
152PERLVAR(Tregnpar,       I32)            /* () count. */
153PERLVAR(Tregsize,       I32)            /* Code size. */
154PERLVAR(Tregflags,      U16)            /* are we folding, multilining? */
155PERLVAR(Tregseen,       U32)            /* from regcomp.c */
156PERLVAR(Tseen_zerolen,  I32)            /* from regcomp.c */
157PERLVAR(Tseen_evals,    I32)            /* from regcomp.c */
158PERLVAR(Tregcomp_rx,    regexp *)       /* from regcomp.c */
159PERLVAR(Textralen,      I32)            /* from regcomp.c */
160PERLVAR(Tcolorset,      int)            /* from regcomp.c */
161PERLVARA(Tcolors,6,     char *)         /* from regcomp.c */
162PERLVAR(Treg_whilem_seen, I32)          /* number of WHILEM in this expr */
163PERLVAR(Treginput,      char *)         /* String-input pointer. */
164PERLVAR(Tregbol,        char *)         /* Beginning of input, for ^ check. */
165PERLVAR(Tregeol,        char *)         /* End of input, for $ check. */
166PERLVAR(Tregstartp,     I32 *)          /* Pointer to startp array. */
167PERLVAR(Tregendp,       I32 *)          /* Ditto for endp. */
168PERLVAR(Treglastparen,  U32 *)          /* Similarly for lastparen. */
169PERLVAR(Tregtill,       char *)         /* How far we are required to go. */
170PERLVAR(Tregprev,       char)           /* char before regbol, \n if none */
171PERLVAR(Treg_start_tmp, char **)        /* from regexec.c */
172PERLVAR(Treg_start_tmpl,U32)            /* from regexec.c */
173PERLVAR(Tregdata,       struct reg_data *)
174                                        /* from regexec.c renamed was data */
175PERLVAR(Tbostr,         char *)         /* from regexec.c */
176PERLVAR(Treg_flags,     U32)            /* from regexec.c */
177PERLVAR(Treg_eval_set,  I32)            /* from regexec.c */
178PERLVAR(Tregnarrate,    I32)            /* from regexec.c */
179PERLVAR(Tregprogram,    regnode *)      /* from regexec.c */
180PERLVARI(Tregindent,    int,        0)  /* from regexec.c */
181PERLVAR(Tregcc,         CURCUR *)       /* from regexec.c */
182PERLVAR(Treg_call_cc,   struct re_cc_state *)   /* from regexec.c */
183PERLVAR(Treg_re,        regexp *)       /* from regexec.c */
184PERLVAR(Treg_ganch,     char *)         /* position of \G */
185PERLVAR(Treg_sv,        SV *)           /* what we match against */
186PERLVAR(Treg_magic,     MAGIC *)        /* pos-magic of what we match */
187PERLVAR(Treg_oldpos,    I32)            /* old pos of what we match */
188PERLVARI(Treg_oldcurpm, PMOP*, NULL)    /* curpm before match */
189PERLVARI(Treg_curpm,    PMOP*, NULL)    /* curpm during match */
190PERLVAR(Treg_oldsaved,  char*)          /* old saved substr during match */
191PERLVAR(Treg_oldsavedlen, STRLEN)       /* old length of saved substr during match */
192PERLVAR(Treg_maxiter,   I32)            /* max wait until caching pos */
193PERLVAR(Treg_leftiter,  I32)            /* wait until caching pos */
194PERLVARI(Treg_poscache, char *, Nullch) /* cache of pos of WHILEM */
195PERLVAR(Treg_poscache_size, STRLEN)     /* size of pos cache of WHILEM */
196
197PERLVARI(Tregcompp,     regcomp_t, MEMBER_TO_FPTR(Perl_pregcomp))
198                                        /* Pointer to REx compiler */
199PERLVARI(Tregexecp,     regexec_t, MEMBER_TO_FPTR(Perl_regexec_flags))
200                                        /* Pointer to REx executer */
201PERLVARI(Tregint_start, re_intuit_start_t, MEMBER_TO_FPTR(Perl_re_intuit_start))
202                                        /* Pointer to optimized REx executer */
203PERLVARI(Tregint_string,re_intuit_string_t, MEMBER_TO_FPTR(Perl_re_intuit_string))
204                                        /* Pointer to optimized REx string */
205PERLVARI(Tregfree,      regfree_t, MEMBER_TO_FPTR(Perl_pregfree))
206                                        /* Pointer to REx free()er */
207
208PERLVARI(Treginterp_cnt,int,        0)  /* Whether `Regexp'
209                                                   was interpolated. */
210PERLVARI(Treg_starttry, char *,     0)  /* -Dr: where regtry was called. */
211PERLVARI(Twatchaddr,    char **,    0)
212PERLVAR(Twatchok,       char *)
213
214/* Note that the variables below are all explicitly referenced in the code
215 * as thr->whatever and therefore don't need the 'T' prefix. */
216
217#ifdef USE_THREADS
218
219PERLVAR(oursv,          SV *)
220PERLVAR(cvcache,        HV *)
221PERLVAR(self,           perl_os_thread) /* Underlying thread object */
222PERLVAR(flags,          U32)
223PERLVAR(threadsv,       AV *)           /* Per-thread SVs ($_, $@ etc.) */
224PERLVAR(threadsvp,      SV **)          /* AvARRAY(threadsv) */
225PERLVAR(specific,       AV *)           /* Thread-specific user data */
226PERLVAR(errsv,          SV *)           /* Backing SV for $@ */
227PERLVAR(mutex,          perl_mutex)     /* For the fields others can change */
228PERLVAR(tid,            U32)
229PERLVAR(prev,           struct perl_thread *)
230PERLVAR(next,           struct perl_thread *)
231                                        /* Circular linked list of threads */
232
233#ifdef HAVE_THREAD_INTERN
234PERLVAR(i,              struct thread_intern)
235                                        /* Platform-dependent internals */
236#endif
237
238PERLVAR(trailing_nul,   char)           /* For the sake of thrsv and oursv */
239
240#endif /* USE_THREADS */
Note: See TracBrowser for help on using the repository browser.