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

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