0
  $   	ˆl—Ðz¾”Êe¶…6 ¸ÛWyLZ7ÿÂ„y–ÜoÅÄ ?÷     	-*- buffer-read-only: t -*-
!!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
This file is built by autodoc.pl extracting documentation from the C source
files.
Any changes made here will be lost!

=head1 NAME

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
format but are not marked as part of the Perl API.  In other words,
B<they are not for use in extensions>!


=head1 Array Manipulation Functions

=over 8

=item AvFILLp
X<AvFILLp>

	int	AvFILLp(AV* av)

=for hackers
Found in file av.h


=back

=head1 Compile-time scope hooks

=over 8

=item BhkENTRY
X<BhkENTRY>


NOTE: this function is experimental and may change or be
removed without notice.


Return an entry from the BHK structure.  C<which> is a preprocessor token
indicating which entry to return.  If the appropriate flag is not set
this will return C<NULL>.  The type of the return value depends on which
entry you ask for.

	void *	BhkENTRY(BHK *hk, which)

=for hackers
Found in file op.h

=item BhkFLAGS
X<BhkFLAGS>


NOTE: this function is experimental and may change or be
removed without notice.


Return the BHK's flags.

	U32	BhkFLAGS(BHK *hk)

=for hackers
Found in file op.h

=item CALL_BLOCK_HOOKS
X<CALL_BLOCK_HOOKS>


NOTE: this function is experimental and may change or be
removed without notice.


Call all the registered block hooks for type C<which>.  C<which> is a
preprocessing token; the type of C<arg> depends on C<which>.

	void	CALL_BLOCK_HOOKS(which, arg)

=for hackers
Found in file op.h


=back

=head1 Custom Operators

=over 8

=item core_prototype
X<core_prototype>

This function assigns the prototype of the named core function to C<sv>, or
to a new mortal SV if C<sv> is C<NULL>.  It returns the modified C<sv>, or
C<NULL> if the core function has no prototype.  C<code> is a code as returned
by C<keyword()>.  It must not be equal to 0.

	SV *	core_prototype(SV *sv, const char *name,
		               const int code,
		               int * const opnum)

=for hackers
Found in file op.c


=back

=head1 CV Manipulation Functions

=over 8

=item docatch
X<docatch>

Check for the cases 0 or 3 of cur_env.je_ret, only used inside an eval context.

0 is used as continue inside eval,

3 is used for a die caught by an inner eval - continue inner loop

See F<cop.h>: je_mustcatch, when set at any runlevel to TRUE, means eval ops must
establish a local jmpenv to handle exception traps.

	OP*	docatch(Perl_ppaddr_t firstpp)

=for hackers
Found in file pp_ctl.c


=back

=head1 CV reference counts and CvOUTSIDE

=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
stored in C<&> pad slots, it is a possible to get a circular reference,
with the parent pointing to the child and vice-versa.  To avoid the
ensuing memory leak, we do not increment the reference count of the CV
pointed to by C<CvOUTSIDE> in the I<one specific instance> that the parent
has a C<&> pad slot pointing back to us.  In this case, we set the
C<CvWEAKOUTSIDE> flag in the child.  This allows us to determine under what
circumstances we should decrement the refcount of the parent when freeing
the child.

There is a further complication with non-closure anonymous subs (i.e. those
that do not refer to any lexicals outside that sub).  In this case, the
anonymous prototype is shared rather than being cloned.  This has the
consequence that the parent may be freed while there are still active
children, I<e.g.>,

    BEGIN { $a = sub { eval '$x' } }

In this case, the BEGIN is freed immediately after execution since there
are no active references to it: the anon sub prototype has
C<CvWEAKOUTSIDE> set since it's not a closure, and $a points to the same
CV, so it doesn't contribute to BEGIN's refcount eithe