X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlintern.pod;h=198ec5805c431a14c8f9d411a2e3c4af746bebf9;hb=fcbc2cdbfb87f2f022dd44fc82e01764faffaa19;hp=5c901cd47defa28ff0ce3cbfb42c79964d5efc9c;hpb=bd95ae50406ae1b55da3f57111cd4644d9d82c6a;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlintern.pod b/pod/perlintern.pod index 5c901cd..198ec58 100644 --- a/pod/perlintern.pod +++ b/pod/perlintern.pod @@ -142,7 +142,7 @@ Found in file pad.h X The generation number of the name at offset C in the current -compiling pad (lvalue). Note that C is hijacked for this purpose. +compiling pad (lvalue). Note that C is hijacked for this purpose. STRLEN PAD_COMPNAME_GEN(PADOFFSET po) @@ -153,7 +153,7 @@ Found in file pad.h X Sets the generation number of the name at offset C in the current -ling pad (lvalue) to C. Note that C is hijacked for this purpose. +ling pad (lvalue) to C. Note that C is hijacked for this purpose. STRLEN PAD_COMPNAME_GEN_set(PADOFFSET po, int gen) @@ -331,114 +331,6 @@ Found in file pad.h =back -=head1 Functions in file pp_ctl.c - - -=over 8 - -=item find_runcv -X - -Locate the CV corresponding to the currently executing sub or eval. -If db_seqp is non_null, skip CVs that are in the DB package and populate -*db_seqp with the cop sequence number at the point that the DB:: code was -entered. (allows debuggers to eval in the scope of the breakpoint rather -than in the scope of the debugger itself). - - CV* find_runcv(U32 *db_seqp) - -=for hackers -Found in file pp_ctl.c - - -=back - -=head1 Global Variables - -=over 8 - -=item PL_DBsingle -X - -When Perl is run in debugging mode, with the B<-d> switch, this SV is a -boolean which indicates whether subs are being single-stepped. -Single-stepping is automatically turned on after every step. This is the C -variable which corresponds to Perl's $DB::single variable. See -C. - - SV * PL_DBsingle - -=for hackers -Found in file intrpvar.h - -=item PL_DBsub -X - -When Perl is run in debugging mode, with the B<-d> switch, this GV contains -the SV which holds the name of the sub being debugged. This is the C -variable which corresponds to Perl's $DB::sub variable. See -C. - - GV * PL_DBsub - -=for hackers -Found in file intrpvar.h - -=item PL_DBtrace -X - -Trace variable used when Perl is run in debugging mode, with the B<-d> -switch. This is the C variable which corresponds to Perl's $DB::trace -variable. See C. - - SV * PL_DBtrace - -=for hackers -Found in file intrpvar.h - -=item PL_dowarn -X - -The C variable which corresponds to Perl's $^W warning variable. - - bool PL_dowarn - -=for hackers -Found in file intrpvar.h - -=item PL_last_in_gv -X - -The GV which was last used for a filehandle input operation. (C<< >>) - - GV* PL_last_in_gv - -=for hackers -Found in file thrdvar.h - -=item PL_ofs_sv -X - -The output field separator - C<$,> in Perl space. - - SV* PL_ofs_sv - -=for hackers -Found in file thrdvar.h - -=item PL_rs -X - -The input record separator - C<$/> in Perl space. - - SV* PL_rs - -=for hackers -Found in file thrdvar.h - - -=back - =head1 GV Functions =over 8 @@ -483,7 +375,7 @@ Found in file gv.c =item refcounted_he_chain_2hv X -Generates an returns a C by walking up the tree starting at the passed +Generates and returns a C by walking up the tree starting at the passed in C. HV * refcounted_he_chain_2hv(const struct refcounted_he *c) @@ -568,6 +460,63 @@ Found in file mg.c =back +=head1 MRO Functions + +=over 8 + +=item mro_get_linear_isa_c3 +X + +Returns the C3 linearization of @ISA +the given stash. The return value is a read-only AV*. +C should be 0 (it is used internally in this +function's recursion). + +You are responsible for C on the +return value if you plan to store it anywhere +semi-permanently (otherwise it might be deleted +out from under you the next time the cache is +invalidated). + + AV* mro_get_linear_isa_c3(HV* stash, I32 level) + +=for hackers +Found in file mro.c + +=item mro_get_linear_isa_dfs +X + +Returns the Depth-First Search linearization of @ISA +the given stash. The return value is a read-only AV*. +C should be 0 (it is used internally in this +function's recursion). + +You are responsible for C on the +return value if you plan to store it anywhere +semi-permanently (otherwise it might be deleted +out from under you the next time the cache is +invalidated). + + AV* mro_get_linear_isa_dfs(HV* stash, I32 level) + +=for hackers +Found in file mro.c + +=item mro_isa_changed_in +X + +Takes the necessary steps (cache invalidations, mostly) +when the @ISA of the given package has changed. Invoked +by the C magic, should not need to invoke directly. + + void mro_isa_changed_in(HV* stash) + +=for hackers +Found in file mro.c + + +=back + =head1 Pad Data Structures =over 8 @@ -619,19 +568,19 @@ but only by their index allocated at compile time (which is usually in PL_op->op_targ), wasting a name SV for them doesn't make sense. The SVs in the names AV have their PV being the name of the variable. -NV+1..IV inclusive is a range of cop_seq numbers for which the name is -valid. For typed lexicals name SV is SVt_PVMG and SvSTASH points at the -type. For C lexicals, the type is also SVt_PVGV, with the MAGIC slot -pointing at the stash of the associated global (so that duplicate C -declarations in the same package can be detected). SvCUR is sometimes -hijacked to store the generation number during compilation. +xlow+1..xhigh inclusive in the NV union is a range of cop_seq numbers for +which the name is valid. For typed lexicals name SV is SVt_PVMG and SvSTASH +points at the type. For C lexicals, the type is also SVt_PVMG, with the +SvOURSTASH slot pointing at the stash of the associated global (so that +duplicate C declarations in the same package can be detected). SvUVX is +sometimes hijacked to store the generation number during compilation. If SvFAKE is set on the name SV, then that slot in the frame AV is a REFCNT'ed reference to a lexical from "outside". In this case, -the name SV does not use NVX and IVX to store a cop_seq range, since it is -in scope throughout. Instead IVX stores some flags containing info about +the name SV does not use xlow and xhigh to store a cop_seq range, since it is +in scope throughout. Instead xhigh stores some flags containing info about the real lexical (is it declared in an anon, and is it capable of being -instantiated multiple times?), and for fake ANONs, NVX contains the index +instantiated multiple times?), and for fake ANONs, xlow contains the index within the parent's pad where the lexical's value is stored, to make cloning quicker. @@ -714,7 +663,7 @@ offset. If C is valid, the name is for a typed lexical; set the name's stash to that value. If C is valid, it's an our lexical, set the name's -OURSTASH to that value +SvOURSTASH to that value If fake, it means we're cloning an existing entry @@ -776,7 +725,7 @@ associated with the IVX field of a fake namesv. Note that pad_findlex() is recursive; it recurses up the chain of CVs, then comes back down, adding fake entries as it goes. It has to be this way -because fake namesvs in anon protoypes have to store in NVX the index into +because fake namesvs in anon protoypes have to store in xlow the index into the parent pad. PADOFFSET pad_findlex(const char *name, const CV* cv, U32 seq, int warn, SV** out_capture, SV** out_name_sv, int *out_flags) @@ -924,6 +873,92 @@ Found in file pad.c =back +=head1 Per-Interpreter Variables + +=over 8 + +=item PL_DBsingle +X + +When Perl is run in debugging mode, with the B<-d> switch, this SV is a +boolean which indicates whether subs are being single-stepped. +Single-stepping is automatically turned on after every step. This is the C +variable which corresponds to Perl's $DB::single variable. See +C. + + SV * PL_DBsingle + +=for hackers +Found in file intrpvar.h + +=item PL_DBsub +X + +When Perl is run in debugging mode, with the B<-d> switch, this GV contains +the SV which holds the name of the sub being debugged. This is the C +variable which corresponds to Perl's $DB::sub variable. See +C. + + GV * PL_DBsub + +=for hackers +Found in file intrpvar.h + +=item PL_DBtrace +X + +Trace variable used when Perl is run in debugging mode, with the B<-d> +switch. This is the C variable which corresponds to Perl's $DB::trace +variable. See C. + + SV * PL_DBtrace + +=for hackers +Found in file intrpvar.h + +=item PL_dowarn +X + +The C variable which corresponds to Perl's $^W warning variable. + + bool PL_dowarn + +=for hackers +Found in file intrpvar.h + +=item PL_last_in_gv +X + +The GV which was last used for a filehandle input operation. (C<< >>) + + GV* PL_last_in_gv + +=for hackers +Found in file intrpvar.h + +=item PL_ofs_sv +X + +The output field separator - C<$,> in Perl space. + + SV* PL_ofs_sv + +=for hackers +Found in file intrpvar.h + +=item PL_rs +X + +The input record separator - C<$/> in Perl space. + + SV* PL_rs + +=for hackers +Found in file intrpvar.h + + +=back + =head1 Stack Manipulation Macros =over 8 @@ -1003,6 +1038,25 @@ Found in file sv.c =back +=head1 SV-Body Allocation + +=over 8 + +=item sv_2num +X + +Return an SV with the numeric value of the source SV, doing any necessary +reference or overload conversion. You must use the C macro to +access this function. + + SV* sv_2num(SV* sv) + +=for hackers +Found in file sv.c + + +=back + =head1 Unicode Support =over 8