This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldiag.pod patching re: integer overflow
[perl5.git] / pod / perlintern.pod
index e71e3a3..4e6119d 100644 (file)
@@ -4,6 +4,7 @@ perlintern - autogenerated documentation of purely B<internal>
                 Perl functions
 
 =head1 DESCRIPTION
+X<internal Perl functions> X<interpreter functions>
 
 This file is the autogenerated documentation of functions in the
 Perl interpreter that are documented using Perl's internal documentation
@@ -16,6 +17,7 @@ B<they are not for use in extensions>!
 =over 8
 
 =item CvWEAKOUTSIDE
+X<CvWEAKOUTSIDE>
 
 Each CV has a pointer, C<CvOUTSIDE()>, to its lexically enclosing
 CV (if any). Because pointers to anonymous sub prototypes are
@@ -78,6 +80,7 @@ Found in file cv.h
 =over 8
 
 =item CX_CURPAD_SAVE
+X<CX_CURPAD_SAVE>
 
 Save the current pad in the given context block structure.
 
@@ -87,6 +90,7 @@ Save the current pad in the given context block structure.
 Found in file pad.h
 
 =item CX_CURPAD_SV
+X<CX_CURPAD_SV>
 
 Access the SV at offset po in the saved current pad in the given
 context block structure (can be used as an lvalue).
@@ -96,16 +100,18 @@ context block structure (can be used as an lvalue).
 =for hackers
 Found in file pad.h
 
-=item PAD_BASE_SV      
+=item PAD_BASE_SV
+X<PAD_BASE_SV>
 
 Get the value from slot C<po> in the base (DEPTH=1) pad of a padlist
 
-       SV *    PAD_BASE_SV     (PADLIST padlist, PADOFFSET po)
+       SV *    PAD_BASE_SV(PADLIST padlist, PADOFFSET po)
 
 =for hackers
 Found in file pad.h
 
 =item PAD_CLONE_VARS
+X<PAD_CLONE_VARS>
 
 |CLONE_PARAMS* param
 Clone the state variables associated with running and compiling pads.
@@ -116,6 +122,7 @@ Clone the state variables associated with running and compiling pads.
 Found in file pad.h
 
 =item PAD_COMPNAME_FLAGS
+X<PAD_COMPNAME_FLAGS>
 
 Return the flags for the current compiling pad name
 at offset C<po>. Assumes a valid slot entry.
@@ -126,6 +133,7 @@ at offset C<po>. Assumes a valid slot entry.
 Found in file pad.h
 
 =item PAD_COMPNAME_GEN
+X<PAD_COMPNAME_GEN>
 
 The generation number of the name at offset C<po> in the current
 compiling pad (lvalue). Note that C<SvCUR> is hijacked for this purpose.
@@ -136,6 +144,7 @@ compiling pad (lvalue). Note that C<SvCUR> is hijacked for this purpose.
 Found in file pad.h
 
 =item PAD_COMPNAME_GEN_set
+X<PAD_COMPNAME_GEN_set>
 
 Sets the generation number of the name at offset C<po> in the current
 ling pad (lvalue) to C<gen>.  Note that C<SvCUR_set> is hijacked for this purpose.
@@ -146,6 +155,7 @@ ling pad (lvalue) to C<gen>.  Note that C<SvCUR_set> is hijacked for this purpos
 Found in file pad.h
 
 =item PAD_COMPNAME_OURSTASH
+X<PAD_COMPNAME_OURSTASH>
 
 Return the stash associated with an C<our> variable.
 Assumes the slot entry is a valid C<our> lexical.
@@ -156,6 +166,7 @@ Assumes the slot entry is a valid C<our> lexical.
 Found in file pad.h
 
 =item PAD_COMPNAME_PV
+X<PAD_COMPNAME_PV>
 
 Return the name of the current compiling pad name
 at offset C<po>. Assumes a valid slot entry.
@@ -166,6 +177,7 @@ at offset C<po>. Assumes a valid slot entry.
 Found in file pad.h
 
 =item PAD_COMPNAME_TYPE
+X<PAD_COMPNAME_TYPE>
 
 Return the type (stash) of the current compiling pad name at offset
 C<po>. Must be a valid name. Returns null if not typed.
@@ -176,6 +188,7 @@ C<po>. Must be a valid name. Returns null if not typed.
 Found in file pad.h
 
 =item PAD_DUP
+X<PAD_DUP>
 
 Clone a padlist.
 
@@ -185,6 +198,7 @@ Clone a padlist.
 Found in file pad.h
 
 =item PAD_RESTORE_LOCAL
+X<PAD_RESTORE_LOCAL>
 
 Restore the old pad saved into the local variable opad by PAD_SAVE_LOCAL()
 
@@ -194,6 +208,7 @@ Restore the old pad saved into the local variable opad by PAD_SAVE_LOCAL()
 Found in file pad.h
 
 =item PAD_SAVE_LOCAL
+X<PAD_SAVE_LOCAL>
 
 Save the current pad to the local variable opad, then make the
 current pad equal to npad
@@ -204,6 +219,7 @@ current pad equal to npad
 Found in file pad.h
 
 =item PAD_SAVE_SETNULLPAD
+X<PAD_SAVE_SETNULLPAD>
 
 Save the current pad then set it to null.
 
@@ -212,16 +228,18 @@ Save the current pad then set it to null.
 =for hackers
 Found in file pad.h
 
-=item PAD_SETSV        
+=item PAD_SETSV
+X<PAD_SETSV>
 
 Set the slot at offset C<po> in the current pad to C<sv>
 
-       SV *    PAD_SETSV       (PADOFFSET po, SV* sv)
+       SV *    PAD_SETSV(PADOFFSET po, SV* sv)
 
 =for hackers
 Found in file pad.h
 
-=item PAD_SET_CUR      
+=item PAD_SET_CUR
+X<PAD_SET_CUR>
 
 Set the current pad to be pad C<n> in the padlist, saving
 the previous current pad. NB currently this macro expands to a string too
@@ -231,51 +249,56 @@ long for some compilers, so it's best to replace it with
     PAD_SET_CUR_NOSAVE(padlist,n);
 
 
-       void    PAD_SET_CUR     (PADLIST padlist, I32 n)
+       void    PAD_SET_CUR(PADLIST padlist, I32 n)
 
 =for hackers
 Found in file pad.h
 
-=item PAD_SET_CUR_NOSAVE       
+=item PAD_SET_CUR_NOSAVE
+X<PAD_SET_CUR_NOSAVE>
 
 like PAD_SET_CUR, but without the save
 
-       void    PAD_SET_CUR_NOSAVE      (PADLIST padlist, I32 n)
+       void    PAD_SET_CUR_NOSAVE(PADLIST padlist, I32 n)
 
 =for hackers
 Found in file pad.h
 
-=item PAD_SV   
+=item PAD_SV
+X<PAD_SV>
 
 Get the value at offset C<po> in the current pad
 
-       void    PAD_SV  (PADOFFSET po)
+       void    PAD_SV(PADOFFSET po)
 
 =for hackers
 Found in file pad.h
 
-=item PAD_SVl  
+=item PAD_SVl
+X<PAD_SVl>
 
 Lightweight and lvalue version of C<PAD_SV>.
 Get or set the value at offset C<po> in the current pad.
 Unlike C<PAD_SV>, does not print diagnostics with -DX.
 For internal use only.
 
-       SV *    PAD_SVl (PADOFFSET po)
+       SV *    PAD_SVl(PADOFFSET po)
 
 =for hackers
 Found in file pad.h
 
-=item SAVECLEARSV      
+=item SAVECLEARSV
+X<SAVECLEARSV>
 
 Clear the pointed to pad value on scope exit. (i.e. the runtime action of 'my')
 
-       void    SAVECLEARSV     (SV **svp)
+       void    SAVECLEARSV(SV **svp)
 
 =for hackers
 Found in file pad.h
 
 =item SAVECOMPPAD
+X<SAVECOMPPAD>
 
 save PL_comppad and PL_curpad
 
@@ -288,12 +311,13 @@ save PL_comppad and PL_curpad
 =for hackers
 Found in file pad.h
 
-=item SAVEPADSV        
+=item SAVEPADSV
+X<SAVEPADSV>
 
 Save a pad slot (used to restore after an iteration)
 
 XXX DAPM it would make more sense to make the arg a PADOFFSET
-       void    SAVEPADSV       (PADOFFSET po)
+       void    SAVEPADSV(PADOFFSET po)
 
 =for hackers
 Found in file pad.h
@@ -307,6 +331,7 @@ Found in file pad.h
 =over 8
 
 =item find_runcv
+X<find_runcv>
 
 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
@@ -327,6 +352,7 @@ Found in file pp_ctl.c
 =over 8
 
 =item PL_DBsingle
+X<PL_DBsingle>
 
 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.
@@ -340,6 +366,7 @@ C<PL_DBsub>.
 Found in file intrpvar.h
 
 =item PL_DBsub
+X<PL_DBsub>
 
 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
@@ -352,6 +379,7 @@ C<PL_DBsingle>.
 Found in file intrpvar.h
 
 =item PL_DBtrace
+X<PL_DBtrace>
 
 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
@@ -363,6 +391,7 @@ variable.  See C<PL_DBsingle>.
 Found in file intrpvar.h
 
 =item PL_dowarn
+X<PL_dowarn>
 
 The C variable which corresponds to Perl's $^W warning variable.
 
@@ -372,6 +401,7 @@ The C variable which corresponds to Perl's $^W warning variable.
 Found in file intrpvar.h
 
 =item PL_last_in_gv
+X<PL_last_in_gv>
 
 The GV which was last used for a filehandle input operation. (C<< <FH> >>)
 
@@ -381,6 +411,7 @@ The GV which was last used for a filehandle input operation. (C<< <FH> >>)
 Found in file thrdvar.h
 
 =item PL_ofs_sv
+X<PL_ofs_sv>
 
 The output field separator - C<$,> in Perl space.
 
@@ -390,6 +421,7 @@ The output field separator - C<$,> in Perl space.
 Found in file thrdvar.h
 
 =item PL_rs
+X<PL_rs>
 
 The input record separator - C<$/> in Perl space.
 
@@ -406,6 +438,7 @@ Found in file thrdvar.h
 =over 8
 
 =item is_gv_magical
+X<is_gv_magical>
 
 Returns C<TRUE> if given the name of a magical GV.
 
@@ -425,6 +458,7 @@ pointers returned by SvPV.
 Found in file gv.c
 
 =item is_gv_magical_sv
+X<is_gv_magical_sv>
 
 Returns C<TRUE> if given the name of a magical GV. Calls is_gv_magical.
 
@@ -441,6 +475,7 @@ Found in file gv.c
 =over 8
 
 =item start_glob
+X<start_glob>
 
 Function called by C<do_readline> to spawn a glob (or do the glob inside
 perl on VMS). This code used to be inline, but now perl uses C<File::Glob>
@@ -460,6 +495,7 @@ Found in file doio.c
 =over 8
 
 =item mg_localize
+X<mg_localize>
 
 Copy some of the magic from an existing SV to new localized version of
 that SV. Container magic (eg %ENV, $1, tie) gets copied, value magic
@@ -478,6 +514,7 @@ Found in file mg.c
 =over 8
 
 =item CvPADLIST
+X<CvPADLIST>
 
 CV's can have CvPADLIST(cv) set to point to an AV.
 
@@ -559,6 +596,7 @@ to be generated in evals, such as
 Found in file pad.c
 
 =item cv_clone
+X<cv_clone>
 
 Clone a CV: make a new CV which points to the same code etc, but which
 has a newly-created pad built by copying the prototype pad and capturing
@@ -570,6 +608,7 @@ any outer lexicals.
 Found in file pad.c
 
 =item cv_dump
+X<cv_dump>
 
 dump the contents of a CV
 
@@ -579,6 +618,7 @@ dump the contents of a CV
 Found in file pad.c
 
 =item do_dump_pad
+X<do_dump_pad>
 
 Dump the contents of a padlist
 
@@ -588,6 +628,7 @@ Dump the contents of a padlist
 Found in file pad.c
 
 =item intro_my
+X<intro_my>
 
 "Introduce" my variables to visible status.
 
@@ -597,6 +638,7 @@ Found in file pad.c
 Found in file pad.c
 
 =item pad_add_anon
+X<pad_add_anon>
 
 Add an anon code entry to the current compiling pad
 
@@ -606,6 +648,7 @@ Add an anon code entry to the current compiling pad
 Found in file pad.c
 
 =item pad_add_name
+X<pad_add_name>
 
 Create a new name and associated PADMY SV in the current pad; return the
 offset.
@@ -622,6 +665,7 @@ If fake, it means we're cloning an existing entry
 Found in file pad.c
 
 =item pad_alloc
+X<pad_alloc>
 
 Allocate a new my or tmp pad entry. For a my, simply push a null SV onto
 the end of PL_comppad, but for a tmp, scan the pad from PL_padix upwards
@@ -633,6 +677,7 @@ for a slot which has no name and no active value.
 Found in file pad.c
 
 =item pad_block_start
+X<pad_block_start>
 
 Update the pad compilation state variables on entry to a new block
 
@@ -642,6 +687,7 @@ Update the pad compilation state variables on entry to a new block
 Found in file pad.c
 
 =item pad_check_dup
+X<pad_check_dup>
 
 Check for duplicate declarations: report any of:
      * a my in the current scope with the same name;
@@ -655,6 +701,7 @@ C<is_our> indicates that the name to check is an 'our' declaration
 Found in file pad.c
 
 =item pad_findlex
+X<pad_findlex>
 
 Find a named lexical anywhere in a chain of nested pads. Add fake entries
 in the inner pads if it's found in an outer one.
@@ -679,6 +726,7 @@ the parent pad.
 Found in file pad.c
 
 =item pad_findmy
+X<pad_findmy>
 
 Given a lexical name, try to find its offset, first in the current pad,
 or failing that, in the pads of any lexically enclosing subs (including
@@ -692,6 +740,7 @@ Returns the offset in the current pad, or NOT_IN_PAD on failure.
 Found in file pad.c
 
 =item pad_fixup_inner_anons
+X<pad_fixup_inner_anons>
 
 For any anon CVs in the pad, change CvOUTSIDE of that CV from
 old_cv to new_cv if necessary. Needed when a newly-compiled CV has to be
@@ -703,6 +752,7 @@ moved to a pre-existing CV struct.
 Found in file pad.c
 
 =item pad_free
+X<pad_free>
 
 Free the SV at offset po in the current pad.
 
@@ -712,6 +762,7 @@ Free the SV at offset po in the current pad.
 Found in file pad.c
 
 =item pad_leavemy
+X<pad_leavemy>
 
 Cleanup at end of scope during compilation: set the max seq number for
 lexicals in this scope and warn of any lexicals that never got introduced.
@@ -722,6 +773,7 @@ lexicals in this scope and warn of any lexicals that never got introduced.
 Found in file pad.c
 
 =item pad_new
+X<pad_new>
 
 Create a new compiling padlist, saving and updating the various global
 vars at the same time as creating the pad itself. The following flags
@@ -737,6 +789,7 @@ can be OR'ed together:
 Found in file pad.c
 
 =item pad_push
+X<pad_push>
 
 Push a new pad frame onto the padlist, unless there's already a pad at
 this depth, in which case don't bother creating a new one.  Then give
@@ -748,6 +801,7 @@ the new pad an @_ in slot zero.
 Found in file pad.c
 
 =item pad_reset
+X<pad_reset>
 
 Mark all the current temporaries for reuse
 
@@ -757,6 +811,7 @@ Mark all the current temporaries for reuse
 Found in file pad.c
 
 =item pad_setsv
+X<pad_setsv>
 
 Set the entry at offset po in the current pad to sv.
 Use the macro PAD_SETSV() rather than calling this function directly.
@@ -767,6 +822,7 @@ Use the macro PAD_SETSV() rather than calling this function directly.
 Found in file pad.c
 
 =item pad_swipe
+X<pad_swipe>
 
 Abandon the tmp in the current pad at offset po and replace with a
 new one.
@@ -777,6 +833,7 @@ new one.
 Found in file pad.c
 
 =item pad_tidy
+X<pad_tidy>
 
 Tidy up a pad after we've finished compiling it:
     * remove most stuff from the pads of anonsub prototypes;
@@ -789,6 +846,7 @@ Tidy up a pad after we've finished compiling it:
 Found in file pad.c
 
 =item pad_undef
+X<pad_undef>
 
 Free the padlist associated with a CV.
 If parts of it happen to be current, we null the relevant
@@ -812,6 +870,7 @@ Found in file pad.c
 =over 8
 
 =item djSP
+X<djSP>
 
 Declare Just C<SP>. This is actually identical to C<dSP>, and declares
 a local copy of perl's stack pointer, available via the C<SP> macro.
@@ -824,6 +883,7 @@ old (Perl 5.005) thread model.)
 Found in file pp.h
 
 =item LVRET
+X<LVRET>
 
 True if this op will be the return value of an lvalue subroutine
 
@@ -837,37 +897,8 @@ Found in file pp.h
 
 =over 8
 
-=item find_uninit_var
-
-Find the name of the undefined variable (if any) that caused the operator o
-to issue a "Use of uninitialized value" warning.
-If match is true, only return a name if it's value matches uninit_sv.
-So roughly speaking, if a unary operator (such as OP_COS) generates a
-warning, then following the direct child of the op may yield an
-OP_PADSV or OP_GV that gives the name of the undefined variable. On the
-other hand, with OP_ADD there are two branches to follow, so we only print
-the variable name if we get an exact match.
-
-The name is returned as a mortal SV.
-
-Assumes that PL_op is the op that originally triggered the error, and that
-PL_comppad/PL_curpad points to the currently executing pad.
-
-       SV*     find_uninit_var(OP* obase, SV* uninit_sv, bool top)
-
-=for hackers
-Found in file sv.c
-
-=item report_uninit
-
-Print appropriate "Use of uninitialized variable" warning
-
-       void    report_uninit(SV* uninit_sv)
-
-=for hackers
-Found in file sv.c
-
 =item sv_add_arena
+X<sv_add_arena>
 
 Given a chunk of memory, link it to the head of the list of arenas,
 and split it into a list of free SVs.
@@ -878,6 +909,7 @@ and split it into a list of free SVs.
 Found in file sv.c
 
 =item sv_clean_all
+X<sv_clean_all>
 
 Decrement the refcnt of each remaining SV, possibly triggering a
 cleanup. This function may have to be called multiple times to free
@@ -889,6 +921,7 @@ SVs which are in complex self-referential hierarchies.
 Found in file sv.c
 
 =item sv_clean_objs
+X<sv_clean_objs>
 
 Attempt to destroy all objects not yet freed
 
@@ -898,6 +931,7 @@ Attempt to destroy all objects not yet freed
 Found in file sv.c
 
 =item sv_free_arenas
+X<sv_free_arenas>
 
 Deallocate the memory used by all arenas. Note that all the individual SV
 heads and bodies within the arenas must already have been freed.
@@ -910,6 +944,45 @@ Found in file sv.c
 
 =back
 
+=head1 Unicode Support
+
+=over 8
+
+=item find_uninit_var
+X<find_uninit_var>
+
+Find the name of the undefined variable (if any) that caused the operator o
+to issue a "Use of uninitialized value" warning.
+If match is true, only return a name if it's value matches uninit_sv.
+So roughly speaking, if a unary operator (such as OP_COS) generates a
+warning, then following the direct child of the op may yield an
+OP_PADSV or OP_GV that gives the name of the undefined variable. On the
+other hand, with OP_ADD there are two branches to follow, so we only print
+the variable name if we get an exact match.
+
+The name is returned as a mortal SV.
+
+Assumes that PL_op is the op that originally triggered the error, and that
+PL_comppad/PL_curpad points to the currently executing pad.
+
+       SV*     find_uninit_var(OP* obase, SV* uninit_sv, bool top)
+
+=for hackers
+Found in file sv.c
+
+=item report_uninit
+X<report_uninit>
+
+Print appropriate "Use of uninitialized variable" warning
+
+       void    report_uninit(SV* uninit_sv)
+
+=for hackers
+Found in file sv.c
+
+
+=back
+
 =head1 AUTHORS
 
 The autodocumentation system was originally added to the Perl core by