In perl.git, the branch maint-5.10 has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/e1b53aaa1f5e08a434876bc0734cd65a0ba89857?hp=76753af46229cbc11748f2e2ab7c811fc164f6e9>

- Log -----------------------------------------------------------------
commit e1b53aaa1f5e08a434876bc0734cd65a0ba89857
Author: Nicholas Clark <[email protected]>
Date:   Tue Feb 12 11:52:30 2008 +0000

    In Perl_load_module_nocontext(), ver can actually be NULL.
    In Perl_hv_copy_hints_hv(), ohv can actually be NULL.
    In Perl_sortsv(), Perl_sortsv_flags() and S_qsortsvu(), array can be
    NULL (if the number of elements to sort is <= 1).
    In Perl_save_nogv(), gv can not be NULL.
    In Perl_sv_cmp() and Perl_sv_cmp_locale(), both SVs can be NULL.
    In Perl_ptr_table_fetch(), the sv can be NULL.
    In PerlIO_set_ptrcnt(), ptr can be NULL.
    
    p4raw-id: //depot/p...@33287
    
    (cherry picked from commit 3d4dd4c7b4cdb5c308fe0b83e0f6354a2eb9db12)

M       embed.fnc
M       proto.h

commit 35fd31a571adb1ac589f1659a704b7ac288330a3
Author: Nicholas Clark <[email protected]>
Date:   Mon Feb 11 23:04:12 2008 +0000

    Perl_sv_2iv_flags(), Perl_sv_2uv_flags, Perl_sv_2nv and
    Perl_sv_2pv_flags() all return 0/0/0.0/"" without warning given a
    NULL SV pointer so they ought to be marked as NULLOK in embed.fnc.
    
    p4raw-id: //depot/p...@33285
    
    (cherry-picked from commit 53e8571218130b49fbbc0d8c4b2cc4d3671c550a)

M       embed.fnc
M       proto.h

commit 623effdd3e3a2d3cbbb84e13b8792f3a3fbe2750
Author: David Mitchell <[email protected]>
Date:   Thu Mar 19 13:57:51 2009 +0000

    run regen

M       global.sym
M       pod/perlapi.pod
M       proto.h

commit 63f8647bc287f5c8243018d6eb3d21501c5e72df
Author: Nicholas Clark <[email protected]>
Date:   Mon Feb 11 19:22:18 2008 +0000

    In Perl_sv_catpv(), Perl_sv_catpv_mg() the ptr can be not NULL.
    In Perl_sv_inc() and Perl_sv_dec(), the sv can be not NULL.
    In Perl_parser_dup() the proto parser can be NULL.
    In Perl_ptr_table_find(), the sought-for pointer can be NULL.
    In Perl_save_set_svflags(), the saved SV can't be NULL.
    
    p4raw-id: //depot/p...@33283
    
    (cherry-picked from commit cf684db655607eaaa00d57bcd72585cbdd05a7b4)

M       embed.fnc
M       proto.h

commit b7d0c364617d2e24b0e285fe10a868051974cf96
Author: Nicholas Clark <[email protected]>
Date:   Mon Feb 11 14:46:40 2008 +0000

    In Perl_regfree_internal(), rx is actually not NULL.
    In Perl_regnext(), p can actually be NULL.
    
    p4raw-id: //depot/p...@33279
    
    (cherry-picked from commit 8074533a0c1d5639d1b58108552f1c023528a4a2)

M       embed.fnc
M       proto.h

commit 478b2da75095e5442ab0807d43b9efa1e5094e1a
Author: Nicholas Clark <[email protected]>
Date:   Mon Feb 11 20:07:50 2008 +0000

    Perl_ck_retarget() doesn't even exist, so little point in mentioning
    it.
    
    p4raw-id: //depot/p...@33284
    
    (cherry picked from commit d38c8166c7a174bb58e9adf2d727ebb2ad86be04)

M       embed.fnc
M       embed.h
M       proto.h

commit d68e326b169af5986e9dff6ff78fccf2d507675a
Author: Nicholas Clark <[email protected]>
Date:   Mon Feb 11 08:54:16 2008 +0000

    The "pointer" argument to S_restore_magic() is not not NULL, because
    it's actually an integer index wedged into a pointer. (To fit within
    the existing save stack API.)
    
    p4raw-id: //depot/p...@33276
    
    (cherry picked from commit 251cc6a6633b7581ea0831a6e963c2d37200aaee)

M       embed.fnc
M       proto.h

commit 63d2fa0cda81dd1019b6ec685dcea836a6997e2a
Author: Nicholas Clark <[email protected]>
Date:   Sun Feb 10 15:26:19 2008 +0000

    Correct some names of parameters in embed.fnc.
    
    p4raw-id: //depot/p...@33271
    
    (cherry-picked from commit 9f6cc744b0938e4177a1aff14a9bfc8b8f96c6bc)

M       embed.fnc
M       proto.h

commit 67ea617c2fd9e3047d053053de27f887e8ed1846
Author: Nicholas Clark <[email protected]>
Date:   Sun Feb 10 14:56:53 2008 +0000

    Two parameter names missing in embed.fnc
    
    p4raw-id: //depot/p...@33270
    
    (cherry-picked from commit 734c24512411de658d57d0d7ed5cef5e1bf5af87)

M       embed.fnc
M       proto.h

commit 5e09101cdc61b91cda03341a522bd4209b0faf6f
Author: David Mitchell <[email protected]>
Date:   Thu Mar 19 12:00:40 2009 +0000

    Don't totally eliminate Nullop; naughty code might define PERL_CORE
    (an update to the merge of bcabcc50f85300b3fbf720ece84c2fd14bd909ed)

M       op.h

commit 9104b4c0ea2f05e79ccc75906324fcf43559a48a
Author: Nicholas Clark <[email protected]>
Date:   Sun Feb 10 10:21:04 2008 +0000

    Eliminate use of Nullop in the core code. Dual life uses remain.
    
    p4raw-id: //depot/p...@33269
    
    (cherry-picked from commit bcabcc50f85300b3fbf720ece84c2fd14bd909ed)

M       op.h
M       perly.act
M       perly.y
M       win32/perlhost.h

commit 0dd1a9749ac502e8f2a908316f20bb86c496ba03
Author: Nicholas Clark <[email protected]>
Date:   Fri Jan 4 23:12:01 2008 +0000

    revert the SvOOK re-implementation:
    ------------
    Re-implement the SvOOK() hack to store the offset as a BER encoded
    number in the part of the PVX that is being released. (It will always
    fit, as chopping off 1 byte gives just enough space for recording a
    delta of up to 127). This allows SvOOK() to co-exist with SvIOK_on(),
    which means all the calls to SvOOK_off() [with the possibility of a
    call to sv_backoff()] in SvIOK_on() can be removed. This ought to make
    a lot of straight line code a little bit simpler.
    OOK()d scalars can now be SVt_PV, as the IVX isn't needed.
    
    p4raw-id: //depot/p...@32836
    
    (cherry-picked from commit 7a4bba223aa750dd886fe6a2fddef224e59c717f)
    ------------

M       dump.c
M       embed.fnc
M       embed.h
M       global.sym
M       proto.h
M       sv.c
M       sv.h

commit 7e20f6b640c6e7cd33348abf039f3f85e1e8b474
Author: Nicholas Clark <[email protected]>
Date:   Sat Jan 5 11:30:31 2008 +0000

    Revert the SvOOK reimplementation:
    ----------
    BER is all very well, but it turns out that it's better to store the
    offset as either a byte (if <256), or a 0 byte with a STRLEN before.
    "better" in that the reading can be inlined, and even then the object
    code is smaller (function calls have space overhead). So goodbye
    Perl_sv_read_offset() and hello SvOOK_offset().
    
    p4raw-id: //depot/p...@32838
    
    (cherry-picked from commit 69240efd70fee399a5232ed995c383b154000a08)
    ----------

M       dump.c
M       embed.fnc
M       embed.h
M       global.sym
M       pod/perlapi.pod
M       proto.h
M       sv.c
M       sv.h
-----------------------------------------------------------------------

Summary of changes:
 dump.c           |   17 ++------
 embed.fnc        |   78 ++++++++++++++++++------------------
 embed.h          |    2 -
 global.sym       |    1 -
 op.h             |    2 +-
 perly.act        |   64 +++++++++++++++---------------
 perly.y          |   64 +++++++++++++++---------------
 pod/perlapi.pod  |   34 ++++-----------
 proto.h          |  118 ++++++++++++++++++-----------------------------------
 sv.c             |   83 ++++++++++++++++++--------------------
 sv.h             |   82 ++++---------------------------------
 win32/perlhost.h |    4 +-
 12 files changed, 207 insertions(+), 342 deletions(-)

diff --git a/dump.c b/dump.c
index 73acea0..ef7a303 100644
--- a/dump.c
+++ b/dump.c
@@ -1535,6 +1535,8 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, 
I32 nest, I32 maxnest, bo
            Perl_dump_indent(aTHX_ level, file, "  UV = %"UVuf, (UV)SvUVX(sv));
        else
            Perl_dump_indent(aTHX_ level, file, "  IV = %"IVdf, (IV)SvIVX(sv));
+       if (SvOOK(sv))
+           PerlIO_printf(file, "  (OFFSET)");
 #ifdef PERL_OLD_COPY_ON_WRITE
        if (SvIsCOW_shared_hash(sv))
            PerlIO_printf(file, "  (HASH)");
@@ -1572,20 +1574,9 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, 
I32 nest, I32 maxnest, bo
     }
     if ((type <= SVt_PVLV && !isGV_with_GP(sv)) || type == SVt_PVFM) {
        if (SvPVX_const(sv)) {
-           STRLEN delta;
-           if (SvOOK(sv)) {
-               SvOOK_offset(sv, delta);
-               Perl_dump_indent(aTHX_ level, file,"  OFFSET = %"UVuf"\n",
-                                (UV) delta);
-           } else {
-               delta = 0;
-           }
            Perl_dump_indent(aTHX_ level, file,"  PV = 0x%"UVxf" ", 
PTR2UV(SvPVX_const(sv)));
-           if (SvOOK(sv)) {
-               PerlIO_printf(file, "( %s . ) ",
-                             pv_display(d, SvPVX_const(sv) - delta, delta, 0,
-                                        pvlim));
-           }
+           if (SvOOK(sv))
+               PerlIO_printf(file, "( %s . ) ", pv_display(d, 
SvPVX_const(sv)-SvIVX(sv), SvIVX(sv), 0, pvlim));
            PerlIO_printf(file, "%s", pv_display(d, SvPVX_const(sv), SvCUR(sv), 
SvLEN(sv), pvlim));
            if (SvUTF8(sv)) /* the 6?  \x{....} */
                PerlIO_printf(file, " [UTF8 \"%s\"]", sv_uni_display(d, sv, 6 * 
SvCUR(sv), UNI_DISPLAY_QQ));
diff --git a/embed.fnc b/embed.fnc
index 3639313..3f57047 100644
--- a/embed.fnc
+++ b/embed.fnc
@@ -82,7 +82,7 @@ npR   |MEM_SIZE|malloc_good_size      |size_t nbytes
 #endif
 
 AnpR   |void*  |get_context
-Anp    |void   |set_context    |NN void *thx
+Anp    |void   |set_context    |NN void *t
 
 END_EXTERN_C
 
@@ -140,7 +140,7 @@ Afnrp       |void   |croak_nocontext|NN const char* pat|...
 Afnp   |OP*    |die_nocontext  |NN const char* pat|...
 Afnp   |void   |deb_nocontext  |NN const char* pat|...
 Afnp   |char*  |form_nocontext |NN const char* pat|...
-Anp    |void   |load_module_nocontext|U32 flags|NN SV* name|NN SV* ver|...
+Anp    |void   |load_module_nocontext|U32 flags|NN SV* name|NULLOK SV* ver|...
 Afnp   |SV*    |mess_nocontext |NN const char* pat|...
 Afnp   |void   |warn_nocontext |NN const char* pat|...
 Afnp   |void   |warner_nocontext|U32 err|NN const char* pat|...
@@ -255,7 +255,7 @@ Ap  |void   |dump_packsubs  |NN const HV* stash
 Ap     |void   |dump_sub       |NN const GV* gv
 Apd    |void   |fbm_compile    |NN SV* sv|U32 flags
 ApdR   |char*  |fbm_instr      |NN unsigned char* big|NN unsigned char* bigend 
\
-                               |NN SV* littlesv|U32 flags
+                               |NN SV* littlestr|U32 flags
 p      |char*  |find_script    |NN const char *scriptname|bool dosearch \
                                |NULLOK const char *const *const search_ext|I32 
flags
 p      |OP*    |force_list     |NULLOK OP* arg
@@ -265,7 +265,7 @@ Ap  |char*  |vform          |NN const char* pat|NULLOK 
va_list* args
 Ap     |void   |free_tmps
 p      |OP*    |gen_constant_list|NULLOK OP* o
 #if !defined(HAS_GETENV_LEN)
-p      |char*  |getenv_len     |NN const char* key|NN unsigned long *len
+p      |char*  |getenv_len     |NN const char *env_elem|NN unsigned long *len
 #endif
 pox    |void   |get_db_sub     |NULLOK SV **svp|NN CV *cv
 Ap     |void   |gp_free        |NULLOK GV* gv
@@ -296,7 +296,7 @@ Apd |HV*    |gv_stashpv     |NN const char* name|I32 flags
 Apd    |HV*    |gv_stashpvn    |NN const char* name|U32 namelen|I32 flags
 Apd    |HV*    |gv_stashsv     |NULLOK SV* sv|I32 flags
 Apd    |void   |hv_clear       |NULLOK HV* tb
-poM    |HV *   |hv_copy_hints_hv|NN HV *const ohv
+poM    |HV *   |hv_copy_hints_hv|NULLOK HV *const ohv
 Ap     |void   |hv_delayfree_ent|NN HV* hv|NULLOK HE* entry
 Abmd   |SV*    |hv_delete      |NULLOK HV* tb|NN const char* key|I32 klen \
                                |I32 flags
@@ -491,8 +491,8 @@ p   |char*  |mem_collxfrm   |NN const char* s|STRLEN len|NN 
STRLEN* xlen
 Afp    |SV*    |mess           |NN const char* pat|...
 Ap     |SV*    |vmess          |NN const char* pat|NULLOK va_list* args
 EXp    |void   |qerror         |NN SV* err
-Apd    |void   |sortsv         |NN SV** array|size_t num_elts|NN SVCOMPARE_t 
cmp
-Apd    |void   |sortsv_flags   |NN SV** array|size_t num_elts|NN SVCOMPARE_t 
cmp|U32 flags
+Apd    |void   |sortsv         |NULLOK SV** array|size_t num_elts|NN 
SVCOMPARE_t cmp
+Apd    |void   |sortsv_flags   |NULLOK SV** array|size_t num_elts|NN 
SVCOMPARE_t cmp|U32 flags
 Apd    |int    |mg_clear       |NN SV* sv
 Apd    |int    |mg_copy        |NN SV* sv|NN SV* nsv|NULLOK const char* 
key|I32 klen
 pd     |void   |mg_localize    |NN SV* sv|NN SV* nsv
@@ -503,7 +503,7 @@ Apd |U32    |mg_length      |NN SV* sv
 Apd    |void   |mg_magical     |NN SV* sv
 Apd    |int    |mg_set         |NN SV* sv
 Ap     |I32    |mg_size        |NN SV* sv
-Ap     |void   |mini_mktime    |NN struct tm *pm
+Ap     |void   |mini_mktime    |NN struct tm *ptm
 EXp    |OP*    |mod            |NULLOK OP* o|I32 type
 p      |int    |mode_from_discipline|NULLOK SV* discp
 Ap     |const char*    |moreswitches   |NN const char* s
@@ -610,14 +610,14 @@ Apa       |OP*    |newWHILEOP     |I32 flags|I32 
debuggable|NULLOK LOOP* loop \
                                |I32 has_my
 Apa    |PERL_SI*|new_stackinfo|I32 stitems|I32 cxitems
 Ap     |char*  |scan_vstring   |NN const char *vstr|NN const char *end|NN SV 
*sv
-Apd    |const char*    |scan_version   |NN const char *vstr|NN SV *sv|bool qv
+Apd    |const char*    |scan_version   |NN const char *s|NN SV *rv|bool qv
 Apd    |SV*    |new_version    |NN SV *ver
 Apd    |SV*    |upg_version    |NN SV *ver|bool qv
 Apd    |bool   |vverify        |NN SV *vs
 Apd    |SV*    |vnumify        |NN SV *vs
 Apd    |SV*    |vnormal        |NN SV *vs
 Apd    |SV*    |vstringify     |NN SV *vs
-Apd    |int    |vcmp           |NN SV *lvs|NN SV *rvs
+Apd    |int    |vcmp           |NN SV *lhv|NN SV *rhv
 p      |PerlIO*|nextargv       |NN GV* gv
 ApP    |char*  |ninstr         |NN const char* big|NN const char* bigend \
                                |NN const char* little|NN const char* lend
@@ -692,7 +692,7 @@ Ap  |I32    |pregexec       |NN REGEXP * const prog|NN 
char* stringarg \
                                |NN SV* screamer|U32 nosave
 Ap     |void   |pregfree       |NULLOK REGEXP* r
 EXp    |REGEXP*|reg_temp_copy  |NN REGEXP* r
-Ap     |void   |regfree_internal|NULLOK REGEXP * const r
+Ap     |void   |regfree_internal|NN REGEXP * const rx
 Ap     |char * |reg_stringify  |NN MAGIC *mg|NULLOK STRLEN *lp|NULLOK U32 
*flags|NULLOK I32 *haseval
 #if defined(USE_ITHREADS)
 Ap     |void*  |regdupe_internal|NN REGEXP * const r|NN CLONE_PARAMS* param
@@ -706,7 +706,7 @@ Ap  |SV*    |re_intuit_string|NN REGEXP * const rx
 Ap     |I32    |regexec_flags  |NN REGEXP * const rx|NN char* stringarg \
                                |NN char* strend|NN char* strbeg|I32 minend \
                                |NN SV* screamer|NULLOK void* data|U32 flags
-ApR    |regnode*|regnext       |NN regnode* p
+ApR    |regnode*|regnext       |NULLOK regnode* p
 
 EXp |SV*|reg_named_buff          |NN REGEXP * const rx|NULLOK SV * const key \
                                  |NULLOK SV * const value|const U32 flags
@@ -731,7 +731,7 @@ ApP |char*  |rninstr        |NN const char* big|NN const 
char* bigend \
                                |NN const char* little|NN const char* lend
 Ap     |Sighandler_t|rsignal   |int i|Sighandler_t t
 p      |int    |rsignal_restore|int i|NULLOK Sigsave_t* t
-p      |int    |rsignal_save   |int i|Sighandler_t t1|NN Sigsave_t* t2
+p      |int    |rsignal_save   |int i|Sighandler_t t1|NN Sigsave_t* save
 Ap     |Sighandler_t|rsignal_state|int i
 p      |void   |rxres_free     |NN void** rsp
 p      |void   |rxres_restore  |NN void** rsp|NN REGEXP* prx
@@ -774,7 +774,7 @@ Ap  |void   |save_iv        |NN IV* iv
 Ap     |void   |save_list      |NN SV** sarg|I32 maxsarg
 Ap     |void   |save_long      |NN long* longp
 Ap     |void   |save_mortalizesv|NN SV* sv
-Ap     |void   |save_nogv      |NULLOK GV* gv
+Ap     |void   |save_nogv      |NN GV* gv
 p      |void   |save_op
 Ap     |SV*    |save_scalar    |NN GV* gv
 Ap     |void   |save_pptr      |NN char** pptr
@@ -795,7 +795,7 @@ Ap  |char*  |scan_num       |NN const char* s|NN YYSTYPE 
*lvalp
 Apd    |NV     |scan_oct       |NN const char* start|STRLEN len|NN STRLEN* 
retlen
 p      |OP*    |scope          |NULLOK OP* o
 Ap     |char*  |screaminstr    |NN SV *bigstr|NN SV *littlestr|I32 start_shift 
\
-                               |I32 end_shift|NN I32 *oldposp|I32 last
+                               |I32 end_shift|NN I32 *old_posp|I32 last
 #if !defined(VMS)
 p      |I32    |setenv_getix   |NN const char* nam
 #endif
@@ -818,18 +818,18 @@ Apd       |IO*    |sv_2io         |NN SV* sv
 s      |bool   |glob_2number   |NN GV* const gv
 s      |char*  |glob_2pv       |NN GV* const gv|NULLOK STRLEN * const len
 #endif
-Amb    |IV     |sv_2iv         |NN SV* sv
-Apd    |IV     |sv_2iv_flags   |NN SV* sv|I32 flags
+Amb    |IV     |sv_2iv         |NULLOK SV* sv
+Apd    |IV     |sv_2iv_flags   |NULLOK SV* sv|I32 flags
 Apd    |SV*    |sv_2mortal     |NULLOK SV* sv
-Apd    |NV     |sv_2nv         |NN SV* sv
+Apd    |NV     |sv_2nv         |NULLOK SV* sv
 pMd    |SV*    |sv_2num        |NN SV* sv
-Amb    |char*  |sv_2pv         |NN SV* sv|NULLOK STRLEN* lp
-Apd    |char*  |sv_2pv_flags   |NN SV* sv|NULLOK STRLEN* lp|I32 flags
+Amb    |char*  |sv_2pv         |NULLOK SV* sv|NULLOK STRLEN* lp
+Apd    |char*  |sv_2pv_flags   |NULLOK SV* sv|NULLOK STRLEN* lp|I32 flags
 Apd    |char*  |sv_2pvutf8     |NN SV* sv|NULLOK STRLEN* lp
 Apd    |char*  |sv_2pvbyte     |NN SV* sv|NULLOK STRLEN* lp
 Ap     |char*  |sv_pvn_nomg    |NN SV* sv|NULLOK STRLEN* lp
-Amb    |UV     |sv_2uv         |NN SV* sv
-Apd    |UV     |sv_2uv_flags   |NN SV* sv|I32 flags
+Amb    |UV     |sv_2uv         |NULLOK SV* sv
+Apd    |UV     |sv_2uv_flags   |NULLOK SV* sv|I32 flags
 Apd    |IV     |sv_iv          |NN SV* sv
 Apd    |UV     |sv_uv          |NN SV* sv
 Apd    |NV     |sv_nv          |NN SV* sv
@@ -842,21 +842,21 @@ Apd       |int    |sv_backoff     |NN SV* sv
 Apd    |SV*    |sv_bless       |NN SV* sv|NN HV* stash
 Afpd   |void   |sv_catpvf      |NN SV* sv|NN const char* pat|...
 Apd    |void   |sv_vcatpvf     |NN SV* sv|NN const char* pat|NULLOK va_list* 
args
-Apd    |void   |sv_catpv       |NN SV* sv|NN const char* ptr
+Apd    |void   |sv_catpv       |NN SV* sv|NULLOK const char* ptr
 Amdb   |void   |sv_catpvn      |NN SV* sv|NN const char* ptr|STRLEN len
 Amdb   |void   |sv_catsv       |NN SV* dsv|NULLOK SV* ssv
 Apd    |void   |sv_chop        |NN SV* sv|NULLOK const char* ptr
 pd     |I32    |sv_clean_all
 pd     |void   |sv_clean_objs
 Apd    |void   |sv_clear       |NN SV* sv
-Apd    |I32    |sv_cmp         |NN SV* sv1|NN SV* sv2
-Apd    |I32    |sv_cmp_locale  |NN SV* sv1|NN SV* sv2
+Apd    |I32    |sv_cmp         |NULLOK SV* sv1|NULLOK SV* sv2
+Apd    |I32    |sv_cmp_locale  |NULLOK SV* sv1|NULLOK SV* sv2
 #if defined(USE_LOCALE_COLLATE)
 Apd    |char*  |sv_collxfrm    |NN SV* sv|NN STRLEN* nxp
 #endif
 Ap     |OP*    |sv_compile_2op |NN SV* sv|NN OP** startp|NN const char* 
code|NN PAD** padp
 Apd    |int    |getcwd_sv      |NN SV* sv
-Apd    |void   |sv_dec         |NN SV* sv
+Apd    |void   |sv_dec         |NULLOK SV* sv
 Ap     |void   |sv_dump        |NN SV* sv
 ApdR   |bool   |sv_derived_from|NN SV* sv|NN const char* name
 ApdR   |bool   |sv_does        |NN SV* sv|NN const char* name
@@ -866,7 +866,7 @@ poMX        |void   |sv_free2       |NN SV* sv
 pd     |void   |sv_free_arenas
 Apd    |char*  |sv_gets        |NN SV* sv|NN PerlIO* fp|I32 append
 Apd    |char*  |sv_grow        |NN SV* sv|STRLEN newlen
-Apd    |void   |sv_inc         |NN SV* sv
+Apd    |void   |sv_inc         |NULLOK SV* sv
 Apd    |void   |sv_insert      |NN SV* bigsv|STRLEN offset|STRLEN len \
                                |NN const char* little|STRLEN littlelen
 Apd    |int    |sv_isa         |NULLOK SV* sv|NN const char* name
@@ -998,7 +998,7 @@ p   |void   |write_to_stderr|NN const char* message|int 
msglen
 p      |int    |yyerror        |NN const char* s
 EXp    |int    |yylex
 p      |int    |yyparse
-p      |void   |parser_free    |NN const yy_parser *
+p      |void   |parser_free    |NN const yy_parser *parser
 p      |int    |yywarn         |NN const char* s
 #if defined(MYMALLOC)
 Ap     |void   |dump_mstats    |NN char* s
@@ -1017,7 +1017,7 @@ Ap        |int    |runops_standard
 Ap     |int    |runops_debug
 Afpd   |void   |sv_catpvf_mg   |NN SV *sv|NN const char* pat|...
 Apd    |void   |sv_vcatpvf_mg  |NN SV* sv|NN const char* pat|NULLOK va_list* 
args
-Apd    |void   |sv_catpv_mg    |NN SV *sv|NN const char *ptr
+Apd    |void   |sv_catpv_mg    |NN SV *sv|NULLOK const char *ptr
 Apdbm  |void   |sv_catpvn_mg   |NN SV *sv|NN const char *ptr|STRLEN len
 Apdbm  |void   |sv_catsv_mg    |NN SV *dstr|NULLOK SV *sstr
 Afpd   |void   |sv_setpvf_mg   |NN SV *sv|NN const char* pat|...
@@ -1099,10 +1099,10 @@ ApR     |GP*    |gp_dup         |NULLOK GP* gp|NN 
CLONE_PARAMS* param
 ApR    |MAGIC* |mg_dup         |NULLOK MAGIC* mg|NN CLONE_PARAMS* param
 ApR    |SV*    |sv_dup         |NULLOK const SV* sstr|NN CLONE_PARAMS* param
 Ap     |void   |rvpv_dup       |NN SV* dstr|NN const SV *sstr|NN CLONE_PARAMS* 
param
-Ap     |yy_parser*|parser_dup  |NN const yy_parser *proto|NN CLONE_PARAMS* 
param
+Ap     |yy_parser*|parser_dup  |NULLOK const yy_parser *proto|NN CLONE_PARAMS* 
param
 #endif
 Apa    |PTR_TBL_t*|ptr_table_new
-ApR    |void*  |ptr_table_fetch|NN PTR_TBL_t *tbl|NN const void *sv
+ApR    |void*  |ptr_table_fetch|NN PTR_TBL_t *tbl|NULLOK const void *sv
 Ap     |void   |ptr_table_store|NN PTR_TBL_t *tbl|NULLOK const void *oldsv|NN 
void *newsv
 Ap     |void   |ptr_table_split|NN PTR_TBL_t *tbl
 Ap     |void   |ptr_table_clear|NULLOK PTR_TBL_t *tbl
@@ -1173,7 +1173,7 @@ s |void   |save_magic     |I32 mgs_ix|NN SV *sv
 s      |int    |magic_methpack |NN SV *sv|NN const MAGIC *mg|NN const char 
*meth
 s      |int    |magic_methcall |NN SV *sv|NN const MAGIC *mg|NN const char 
*meth|I32 f \
                                |int n|NULLOK SV *val
-s      |void   |restore_magic  |NN const void *p
+s      |void   |restore_magic  |NULLOK const void *p
 s      |void   |unwind_handler_stack|NN const void *p
 
 #endif
@@ -1206,7 +1206,6 @@ pR        |OP*    |ck_open        |NN OP *o
 pR     |OP*    |ck_readline    |NN OP *o
 pR     |OP*    |ck_repeat      |NN OP *o
 pR     |OP*    |ck_require     |NN OP *o
-pR     |OP*    |ck_retarget    |NN OP *o
 pR     |OP*    |ck_return      |NN OP *o
 pR     |OP*    |ck_rfun        |NN OP *o
 pR     |OP*    |ck_rvconst     |NN OP *o
@@ -1374,7 +1373,7 @@ s |I32    |amagic_cmp_locale|NN SV *a|NN SV *b
 s      |I32    |sortcv         |NN SV *a|NN SV *b
 s      |I32    |sortcv_xsub    |NN SV *a|NN SV *b
 s      |I32    |sortcv_stacked |NN SV *a|NN SV *b
-s      |void   |qsortsvu       |NN SV** array|size_t num_elts|NN SVCOMPARE_t 
compare
+s      |void   |qsortsvu       |NULLOK SV** array|size_t num_elts|NN 
SVCOMPARE_t compare
 #endif
 
 #if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT)
@@ -1392,7 +1391,7 @@ Es        |regnode*|regatom       |NN struct RExC_state_t 
*state|NN I32 *flagp|U32 depth
 Es     |regnode*|regbranch     |NN struct RExC_state_t *state|NN I32 
*flagp|I32 first|U32 depth
 Es     |STRLEN |reguni         |NN const struct RExC_state_t *state|UV uv|NN 
char *s
 Es     |regnode*|regclass      |NN struct RExC_state_t *state|U32 depth
-ERsn   |I32    |regcurly       |NN const char *
+ERsn   |I32    |regcurly       |NN const char *s
 Es     |regnode*|reg_node      |NN struct RExC_state_t *state|U8 op
 Es     |UV     |reg_recode     |const char value|NN SV **encp
 Es     |regnode*|regpiece      |NN struct RExC_state_t *state|NN I32 
*flagp|U32 depth
@@ -1537,7 +1536,7 @@ s |void * |more_bodies    |svtype sv_type
 s      |bool   |sv_2iuv_common |NN SV *sv
 s      |void   |glob_assign_glob|NN SV *dstr|NN SV *sstr|const int dtype
 s      |void   |glob_assign_ref|NN SV *dstr|NN SV *sstr
-sRn    |PTR_TBL_ENT_t *|ptr_table_find|NN PTR_TBL_t *tbl|NN const void *sv
+sRn    |PTR_TBL_ENT_t *|ptr_table_find|NN PTR_TBL_t *tbl|NULLOK const void *sv
 #endif
 
 #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
@@ -1658,7 +1657,8 @@ Ap        |int    |PerlIO_error           |NULLOK PerlIO 
*f
 Ap     |int    |PerlIO_flush           |NULLOK PerlIO *f
 Ap     |void   |PerlIO_clearerr        |NULLOK PerlIO *f
 Ap     |void   |PerlIO_set_cnt         |NULLOK PerlIO *f|int cnt
-Ap     |void   |PerlIO_set_ptrcnt      |NULLOK PerlIO *f|NN STDCHAR *ptr|int 
cnt
+Ap     |void   |PerlIO_set_ptrcnt      |NULLOK PerlIO *f|NULLOK STDCHAR *ptr \
+                                       |int cnt
 Ap     |void   |PerlIO_setlinebuf      |NULLOK PerlIO *f
 Ap     |SSize_t|PerlIO_read            |NULLOK PerlIO *f|NN void *buf|Size_t 
count
 Ap     |SSize_t|PerlIO_write           |NULLOK PerlIO *f|NN const void 
*buf|Size_t count
@@ -1712,7 +1712,7 @@ p |void   |free_tied_hv_pool
 #if defined(DEBUGGING)
 pR     |int    |get_debug_opts |NN const char **s|bool givehelp
 #endif
-Ap     |void   |save_set_svflags|NULLOK SV* sv|U32 mask|U32 val
+Ap     |void   |save_set_svflags|NN SV* sv|U32 mask|U32 val
 Apod   |void   |hv_assert      |NN HV* tb
 
 ApdR   |SV*    |hv_scalar      |NN HV* hv
@@ -1818,7 +1818,7 @@ Ap        |GV*    |gv_fetchpvn_flags|NN const char* 
name|STRLEN len|I32 flags|I32 sv_type
 Ap     |GV*    |gv_fetchsv|NN SV *name|I32 flags|I32 sv_type
 dpR    |bool   |is_gv_magical_sv|NN SV *name|U32 flags
 
-ApR    |bool   |stashpv_hvname_match|NN const COP *cop|NN const HV *hv
+ApR    |bool   |stashpv_hvname_match|NN const COP *c|NN const HV *hv
 
 #ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP
 p      |void   |dump_sv_child  |NN SV *sv
diff --git a/embed.h b/embed.h
index 24100e9..ad151df 100644
--- a/embed.h
+++ b/embed.h
@@ -1199,7 +1199,6 @@
 #define ck_readline            Perl_ck_readline
 #define ck_repeat              Perl_ck_repeat
 #define ck_require             Perl_ck_require
-#define ck_retarget            Perl_ck_retarget
 #define ck_return              Perl_ck_return
 #define ck_rfun                        Perl_ck_rfun
 #define ck_rvconst             Perl_ck_rvconst
@@ -3513,7 +3512,6 @@
 #define ck_readline(a)         Perl_ck_readline(aTHX_ a)
 #define ck_repeat(a)           Perl_ck_repeat(aTHX_ a)
 #define ck_require(a)          Perl_ck_require(aTHX_ a)
-#define ck_retarget(a)         Perl_ck_retarget(aTHX_ a)
 #define ck_return(a)           Perl_ck_return(aTHX_ a)
 #define ck_rfun(a)             Perl_ck_rfun(aTHX_ a)
 #define ck_rvconst(a)          Perl_ck_rvconst(aTHX_ a)
diff --git a/global.sym b/global.sym
index 15c0b78..9785466 100644
--- a/global.sym
+++ b/global.sym
@@ -659,7 +659,6 @@ Perl_sv_pvutf8
 Perl_sv_pvbyte
 Perl_sv_utf8_upgrade
 Perl_sv_utf8_downgrade
-Perl_sv_utf8_upgrade_nomg
 Perl_sv_utf8_encode
 Perl_sv_utf8_decode
 Perl_sv_force_normal
diff --git a/op.h b/op.h
index 2df3185..12d3226 100644
--- a/op.h
+++ b/op.h
@@ -527,7 +527,7 @@ struct loop {
 #define cSVOPo_sv              cSVOPx_sv(o)
 #define kSVOP_sv               cSVOPx_sv(kid)
 
-#define Nullop Null(OP*)
+#define Nullop ((OP*)NULL)
 
 /* Lowest byte-and-a-bit of PL_opargs */
 #define OA_MARK 1
diff --git a/perly.act b/perly.act
index e68dbd2..8df8e3c 100644
--- a/perly.act
+++ b/perly.act
@@ -47,7 +47,7 @@ case 2:
 
   case 9:
 #line 180 "perly.y"
-    { (yyval.opval) = Nullop; ;}
+    { (yyval.opval) = (OP*)NULL; ;}
     break;
 
   case 10:
@@ -97,7 +97,7 @@ case 2:
                          else {
                              (yyval.opval) = IF_MAD(
                                        newOP(OP_NULL, 0),
-                                       Nullop);
+                                       (OP*)NULL);
                               PL_parser->copline = NOLINE;
                              TOKEN_FREE((ps[(1) - (2)].val.p_tkval));
                              TOKEN_GETMAD((ps[(2) - 
(2)].val.i_tkval),(yyval.opval),';');
@@ -127,7 +127,7 @@ case 2:
 
   case 18:
 #line 243 "perly.y"
-    { (yyval.opval) = Nullop; ;}
+    { (yyval.opval) = (OP*)NULL; ;}
     break;
 
   case 19:
@@ -166,14 +166,14 @@ case 2:
   case 24:
 #line 263 "perly.y"
     { (yyval.opval) = newFOROP(0, NULL, (line_t)IVAL((ps[(2) - 
(3)].val.i_tkval)),
-                                       Nullop, (ps[(3) - (3)].val.opval), 
(ps[(1) - (3)].val.opval), Nullop);
+                                       (OP*)NULL, (ps[(3) - (3)].val.opval), 
(ps[(1) - (3)].val.opval), (OP*)NULL);
                          TOKEN_GETMAD((ps[(2) - 
(3)].val.i_tkval),((LISTOP*)(yyval.opval))->op_first->op_sibling,'w');
                        ;}
     break;
 
   case 25:
 #line 271 "perly.y"
-    { (yyval.opval) = Nullop; ;}
+    { (yyval.opval) = (OP*)NULL; ;}
     break;
 
   case 26:
@@ -229,7 +229,7 @@ case 2:
 
   case 32:
 #line 315 "perly.y"
-    { (yyval.opval) = Nullop; ;}
+    { (yyval.opval) = (OP*)NULL; ;}
     break;
 
   case 33:
@@ -245,7 +245,7 @@ case 2:
                          PL_parser->copline = (line_t)(ps[(2) - 
(9)].val.i_tkval);
                            (yyval.opval) = block_end((ps[(4) - (9)].val.ival),
                                   newSTATEOP(0, PVAL((ps[(1) - 
(9)].val.p_tkval)),
-                                    innerop = newWHILEOP(0, 1, (LOOP*)Nullop,
+                                    innerop = newWHILEOP(0, 1, 
(LOOP*)(OP*)NULL,
                                                IVAL((ps[(2) - 
(9)].val.i_tkval)), (ps[(5) - (9)].val.opval), (ps[(8) - (9)].val.opval), 
(ps[(9) - (9)].val.opval), (ps[(7) - (9)].val.ival))));
                          TOKEN_GETMAD((ps[(1) - (9)].val.p_tkval),innerop,'L');
                          TOKEN_GETMAD((ps[(2) - (9)].val.i_tkval),innerop,'W');
@@ -260,7 +260,7 @@ case 2:
                          PL_parser->copline = (line_t)(ps[(2) - 
(9)].val.i_tkval);
                            (yyval.opval) = block_end((ps[(4) - (9)].val.ival),
                                   newSTATEOP(0, PVAL((ps[(1) - 
(9)].val.p_tkval)),
-                                    innerop = newWHILEOP(0, 1, (LOOP*)Nullop,
+                                    innerop = newWHILEOP(0, 1, 
(LOOP*)(OP*)NULL,
                                                IVAL((ps[(2) - 
(9)].val.i_tkval)), (ps[(5) - (9)].val.opval), (ps[(8) - (9)].val.opval), 
(ps[(9) - (9)].val.opval), (ps[(7) - (9)].val.ival))));
                          TOKEN_GETMAD((ps[(1) - (9)].val.p_tkval),innerop,'L');
                          TOKEN_GETMAD((ps[(2) - (9)].val.i_tkval),innerop,'W');
@@ -301,7 +301,7 @@ case 2:
     { OP *innerop;
                          (yyval.opval) = block_end((ps[(4) - (8)].val.ival),
                             innerop = newFOROP(0, PVAL((ps[(1) - 
(8)].val.p_tkval)), (line_t)IVAL((ps[(2) - (8)].val.i_tkval)),
-                                                   Nullop, (ps[(5) - 
(8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval)));
+                                                   (OP*)NULL, (ps[(5) - 
(8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval)));
                          TOKEN_GETMAD((ps[(1) - 
(8)].val.p_tkval),((LISTOP*)innerop)->op_first,'L');
                          TOKEN_GETMAD((ps[(2) - 
(8)].val.i_tkval),((LISTOP*)innerop)->op_first->op_sibling,'W');
                          TOKEN_GETMAD((ps[(3) - 
(8)].val.i_tkval),((LISTOP*)innerop)->op_first->op_sibling,'(');
@@ -314,7 +314,7 @@ case 2:
     { OP *forop;
                          PL_parser->copline = (line_t)IVAL((ps[(2) - 
(12)].val.i_tkval));
                          forop = newSTATEOP(0, PVAL((ps[(1) - 
(12)].val.p_tkval)),
-                                           newWHILEOP(0, 1, (LOOP*)Nullop,
+                                           newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
                                                IVAL((ps[(2) - 
(12)].val.i_tkval)), scalar((ps[(7) - (12)].val.opval)),
                                                (ps[(12) - (12)].val.opval), 
(ps[(10) - (12)].val.opval), (ps[(9) - (12)].val.ival)));
 #ifdef MAD
@@ -345,8 +345,8 @@ case 2:
   case 40:
 #line 412 "perly.y"
     { (yyval.opval) = newSTATEOP(0, PVAL((ps[(1) - (3)].val.p_tkval)),
-                                newWHILEOP(0, 1, (LOOP*)Nullop,
-                                           NOLINE, Nullop, (ps[(2) - 
(3)].val.opval), (ps[(3) - (3)].val.opval), 0));
+                                newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
+                                           NOLINE, (OP*)NULL, (ps[(2) - 
(3)].val.opval), (ps[(3) - (3)].val.opval), 0));
                          TOKEN_GETMAD((ps[(1) - 
(3)].val.p_tkval),((LISTOP*)(yyval.opval))->op_first,'L'); ;}
     break;
 
@@ -368,7 +368,7 @@ case 2:
 
   case 43:
 #line 435 "perly.y"
-    { (yyval.opval) = Nullop; ;}
+    { (yyval.opval) = (OP*)NULL; ;}
     break;
 
   case 45:
@@ -458,7 +458,7 @@ case 2:
                          token_free((ps[(1) - (4)].val.i_tkval));
 #else
                          newFORM((ps[(2) - (4)].val.ival), (ps[(3) - 
(4)].val.opval), (ps[(4) - (4)].val.opval));
-                         (yyval.opval) = Nullop;
+                         (yyval.opval) = (OP*)NULL;
 #endif
                        ;}
     break;
@@ -470,7 +470,7 @@ case 2:
 
   case 62:
 #line 518 "perly.y"
-    { (yyval.opval) = Nullop; ;}
+    { (yyval.opval) = (OP*)NULL; ;}
     break;
 
   case 63:
@@ -481,7 +481,7 @@ case 2:
                          token_getmad((ps[(1) - 
(6)].val.i_tkval),(yyval.opval),'d');
 #else
                          newMYSUB((ps[(2) - (6)].val.ival), (ps[(3) - 
(6)].val.opval), (ps[(4) - (6)].val.opval), (ps[(5) - (6)].val.opval), (ps[(6) 
- (6)].val.opval));
-                         (yyval.opval) = Nullop;
+                         (yyval.opval) = (OP*)NULL;
 #endif
                        ;}
     break;
@@ -504,7 +504,7 @@ case 2:
                            }
 #else
                          newATTRSUB((ps[(2) - (6)].val.ival), (ps[(3) - 
(6)].val.opval), (ps[(4) - (6)].val.opval), (ps[(5) - (6)].val.opval), (ps[(6) 
- (6)].val.opval));
-                         (yyval.opval) = Nullop;
+                         (yyval.opval) = (OP*)NULL;
 #endif
                        ;}
     break;
@@ -539,12 +539,12 @@ case 2:
 
   case 69:
 #line 584 "perly.y"
-    { (yyval.opval) = Nullop; ;}
+    { (yyval.opval) = (OP*)NULL; ;}
     break;
 
   case 71:
 #line 590 "perly.y"
-    { (yyval.opval) = Nullop; ;}
+    { (yyval.opval) = (OP*)NULL; ;}
     break;
 
   case 72:
@@ -558,7 +558,7 @@ case 2:
 #line 596 "perly.y"
     { (yyval.opval) = IF_MAD(
                                    newOP(OP_NULL, 0),
-                                   Nullop
+                                   (OP*)NULL
                                );
                          TOKEN_GETMAD((ps[(1) - 
(1)].val.i_tkval),(yyval.opval),':');
                        ;}
@@ -575,7 +575,7 @@ case 2:
 #line 610 "perly.y"
     { (yyval.opval) = IF_MAD(
                                    newOP(OP_NULL, 0),
-                                   Nullop
+                                   (OP*)NULL
                                );
                          TOKEN_GETMAD((ps[(1) - 
(1)].val.i_tkval),(yyval.opval),':');
                        ;}
@@ -590,7 +590,7 @@ case 2:
 #line 620 "perly.y"
     { (yyval.opval) = IF_MAD(
                                    newOP(OP_NULL,0),
-                                   Nullop
+                                   (OP*)NULL
                                );
                          PL_parser->expect = XSTATE;
                          TOKEN_GETMAD((ps[(1) - 
(1)].val.i_tkval),(yyval.opval),';');
@@ -606,7 +606,7 @@ case 2:
                          token_getmad((ps[(3) - 
(3)].val.i_tkval),(yyval.opval),';');
 #else
                          package((ps[(2) - (3)].val.opval));
-                         (yyval.opval) = Nullop;
+                         (yyval.opval) = (OP*)NULL;
 #endif
                        ;}
     break;
@@ -628,7 +628,7 @@ case 2:
                              append_madprops(newMADPROP('!', MAD_PV, "", 0), 
(yyval.opval), 0);
 #else
                          utilize(IVAL((ps[(1) - (7)].val.i_tkval)), (ps[(2) - 
(7)].val.ival), (ps[(4) - (7)].val.opval), (ps[(5) - (7)].val.opval), (ps[(6) - 
(7)].val.opval));
-                         (yyval.opval) = Nullop;
+                         (yyval.opval) = (OP*)NULL;
 #endif
                        ;}
     break;
@@ -757,7 +757,7 @@ case 2:
   case 96:
 #line 752 "perly.y"
     { SvREFCNT_inc_simple_void(PL_compcv);
-                         (yyval.opval) = newANONATTRSUB((ps[(2) - 
(3)].val.ival), 0, Nullop, (ps[(3) - (3)].val.opval)); ;}
+                         (yyval.opval) = newANONATTRSUB((ps[(2) - 
(3)].val.ival), 0, (OP*)NULL, (ps[(3) - (3)].val.opval)); ;}
     break;
 
   case 97:
@@ -894,7 +894,7 @@ case 2:
 
   case 112:
 #line 859 "perly.y"
-    { (yyval.opval) = newSLICEOP(0, (ps[(4) - (5)].val.opval), Nullop);
+    { (yyval.opval) = newSLICEOP(0, (ps[(4) - (5)].val.opval), (OP*)NULL);
                          TOKEN_GETMAD((ps[(1) - 
(5)].val.i_tkval),(yyval.opval),'(');
                          TOKEN_GETMAD((ps[(2) - 
(5)].val.i_tkval),(yyval.opval),')');
                          TOKEN_GETMAD((ps[(3) - 
(5)].val.i_tkval),(yyval.opval),'[');
@@ -1086,7 +1086,7 @@ case 2:
 
   case 136:
 #line 989 "perly.y"
-    { (yyval.opval) = newANONLIST(Nullop);
+    { (yyval.opval) = newANONLIST((OP*)NULL);
                          TOKEN_GETMAD((ps[(1) - 
(2)].val.i_tkval),(yyval.opval),'[');
                          TOKEN_GETMAD((ps[(2) - 
(2)].val.i_tkval),(yyval.opval),']');
                        ;}
@@ -1103,7 +1103,7 @@ case 2:
 
   case 138:
 #line 1000 "perly.y"
-    { (yyval.opval) = newANONHASH(Nullop);
+    { (yyval.opval) = newANONHASH((OP*)NULL);
                          TOKEN_GETMAD((ps[(1) - 
(3)].val.i_tkval),(yyval.opval),'{');
                          TOKEN_GETMAD((ps[(2) - 
(3)].val.i_tkval),(yyval.opval),';');
                          TOKEN_GETMAD((ps[(3) - 
(3)].val.i_tkval),(yyval.opval),'}');
@@ -1142,7 +1142,7 @@ case 2:
                                scalar(newCVREF(
                                    (OPpENTERSUB_AMPER<<8),
                                    scalar((ps[(2) - (4)].val.opval))
-                               )),Nullop)); dep();
+                               )),(OP*)NULL)); dep();
                          TOKEN_GETMAD((ps[(1) - 
(4)].val.i_tkval),(yyval.opval),'o');
                          TOKEN_GETMAD((ps[(3) - 
(4)].val.i_tkval),(yyval.opval),'(');
                          TOKEN_GETMAD((ps[(4) - 
(4)].val.i_tkval),(yyval.opval),')');
@@ -1169,7 +1169,7 @@ case 2:
 #line 1050 "perly.y"
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
                            prepend_elem(OP_LIST,
-                               scalar(newCVREF(0,scalar((ps[(2) - 
(4)].val.opval)))), Nullop)); dep();
+                               scalar(newCVREF(0,scalar((ps[(2) - 
(4)].val.opval)))), (OP*)NULL)); dep();
                          TOKEN_GETMAD((ps[(1) - 
(4)].val.i_tkval),(yyval.opval),'o');
                          TOKEN_GETMAD((ps[(3) - 
(4)].val.i_tkval),(yyval.opval),'(');
                          TOKEN_GETMAD((ps[(4) - 
(4)].val.i_tkval),(yyval.opval),')');
@@ -1499,7 +1499,7 @@ case 2:
 
   case 194:
 #line 1268 "perly.y"
-    { (yyval.opval) = Nullop; ;}
+    { (yyval.opval) = (OP*)NULL; ;}
     break;
 
   case 195:
@@ -1509,7 +1509,7 @@ case 2:
 
   case 196:
 #line 1274 "perly.y"
-    { (yyval.opval) = Nullop; ;}
+    { (yyval.opval) = (OP*)NULL; ;}
     break;
 
   case 197:
diff --git a/perly.y b/perly.y
index c488f27..6b8b4e3 100644
--- a/perly.y
+++ b/perly.y
@@ -182,7 +182,7 @@ mremember:  /* NULL */      /* start a partial lexical 
scope */
 
 /* A collection of "lines" in the program */
 lineseq        :       /* NULL */
-                       { $$ = Nullop; }
+                       { $$ = (OP*)NULL; }
        |       lineseq decl
                        {
                        $$ = IF_MAD(
@@ -218,7 +218,7 @@ line        :       label cond
                          else {
                              $$ = IF_MAD(
                                        newOP(OP_NULL, 0),
-                                       Nullop);
+                                       (OP*)NULL);
                               PL_parser->copline = NOLINE;
                              TOKEN_FREE($1);
                              TOKEN_GETMAD($2,$$,';');
@@ -245,7 +245,7 @@ line        :       label cond
 
 /* An expression which may have a side-effect */
 sideff :       error
-                       { $$ = Nullop; }
+                       { $$ = (OP*)NULL; }
        |       expr
                        { $$ = $1; }
        |       expr IF expr
@@ -266,14 +266,14 @@ sideff    :       error
                        }
        |       expr FOR expr
                        { $$ = newFOROP(0, NULL, (line_t)IVAL($2),
-                                       Nullop, $3, $1, Nullop);
+                                       (OP*)NULL, $3, $1, (OP*)NULL);
                          
TOKEN_GETMAD($2,((LISTOP*)$$)->op_first->op_sibling,'w');
                        }
        ;
 
 /* else and elsif blocks */
 else   :       /* NULL */
-                       { $$ = Nullop; }
+                       { $$ = (OP*)NULL; }
        |       ELSE mblock
                        { ($2)->op_flags |= OPf_PARENS; $$ = scope($2);
                          TOKEN_GETMAD($1,$$,'o');
@@ -317,7 +317,7 @@ case        :       WHEN '(' remember mexpr ')' mblock
 
 /* Continue blocks */
 cont   :       /* NULL */
-                       { $$ = Nullop; }
+                       { $$ = (OP*)NULL; }
        |       CONTINUE block
                        { $$ = scope($2);
                          TOKEN_GETMAD($1,$$,'o');
@@ -330,7 +330,7 @@ loop        :       label WHILE '(' remember texpr ')' 
mintro mblock cont
                          PL_parser->copline = (line_t)$2;
                            $$ = block_end($4,
                                   newSTATEOP(0, PVAL($1),
-                                    innerop = newWHILEOP(0, 1, (LOOP*)Nullop,
+                                    innerop = newWHILEOP(0, 1, 
(LOOP*)(OP*)NULL,
                                                IVAL($2), $5, $8, $9, $7)));
                          TOKEN_GETMAD($1,innerop,'L');
                          TOKEN_GETMAD($2,innerop,'W');
@@ -343,7 +343,7 @@ loop        :       label WHILE '(' remember texpr ')' 
mintro mblock cont
                          PL_parser->copline = (line_t)$2;
                            $$ = block_end($4,
                                   newSTATEOP(0, PVAL($1),
-                                    innerop = newWHILEOP(0, 1, (LOOP*)Nullop,
+                                    innerop = newWHILEOP(0, 1, 
(LOOP*)(OP*)NULL,
                                                IVAL($2), $5, $8, $9, $7)));
                          TOKEN_GETMAD($1,innerop,'L');
                          TOKEN_GETMAD($2,innerop,'W');
@@ -375,7 +375,7 @@ loop        :       label WHILE '(' remember texpr ')' 
mintro mblock cont
                        { OP *innerop;
                          $$ = block_end($4,
                             innerop = newFOROP(0, PVAL($1), (line_t)IVAL($2),
-                                                   Nullop, $5, $7, $8));
+                                                   (OP*)NULL, $5, $7, $8));
                          TOKEN_GETMAD($1,((LISTOP*)innerop)->op_first,'L');
                          
TOKEN_GETMAD($2,((LISTOP*)innerop)->op_first->op_sibling,'W');
                          
TOKEN_GETMAD($3,((LISTOP*)innerop)->op_first->op_sibling,'(');
@@ -387,7 +387,7 @@ loop        :       label WHILE '(' remember texpr ')' 
mintro mblock cont
                        { OP *forop;
                          PL_parser->copline = (line_t)IVAL($2);
                          forop = newSTATEOP(0, PVAL($1),
-                                           newWHILEOP(0, 1, (LOOP*)Nullop,
+                                           newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
                                                IVAL($2), scalar($7),
                                                $12, $10, $9));
 #ifdef MAD
@@ -415,8 +415,8 @@ loop        :       label WHILE '(' remember texpr ')' 
mintro mblock cont
                          $$ = block_end($4, forop); }
        |       label block cont  /* a block is a loop that happens once */
                        { $$ = newSTATEOP(0, PVAL($1),
-                                newWHILEOP(0, 1, (LOOP*)Nullop,
-                                           NOLINE, Nullop, $2, $3, 0));
+                                newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
+                                           NOLINE, (OP*)NULL, $2, $3, 0));
                          TOKEN_GETMAD($1,((LISTOP*)$$)->op_first,'L'); }
        ;
 
@@ -437,7 +437,7 @@ mintro      :       /* NULL */
 
 /* Normal expression */
 nexpr  :       /* NULL */
-                       { $$ = Nullop; }
+                       { $$ = (OP*)NULL; }
        |       sideff
        ;
 
@@ -514,13 +514,13 @@ format    :       FORMAT startformsub formname block
                          token_free($1);
 #else
                          newFORM($2, $3, $4);
-                         $$ = Nullop;
+                         $$ = (OP*)NULL;
 #endif
                        }
        ;
 
 formname:      WORD            { $$ = $1; }
-       |       /* NULL */      { $$ = Nullop; }
+       |       /* NULL */      { $$ = (OP*)NULL; }
        ;
 
 /* Unimplemented "my sub foo { }" */
@@ -531,7 +531,7 @@ mysubrout:  MYSUB startsub subname proto subattrlist subbody
                          token_getmad($1,$$,'d');
 #else
                          newMYSUB($2, $3, $4, $5, $6);
-                         $$ = Nullop;
+                         $$ = (OP*)NULL;
 #endif
                        }
        ;
@@ -554,7 +554,7 @@ subrout     :       SUB startsub subname proto subattrlist 
subbody
                            }
 #else
                          newATTRSUB($2, $3, $4, $5, $6);
-                         $$ = Nullop;
+                         $$ = (OP*)NULL;
 #endif
                        }
        ;
@@ -586,13 +586,13 @@ subname   :       WORD    { const char *const name = 
SvPV_nolen_const(((SVOP*)$1)->op_sv);
 
 /* Subroutine prototype */
 proto  :       /* NULL */
-                       { $$ = Nullop; }
+                       { $$ = (OP*)NULL; }
        |       THING
        ;
 
 /* Optional list of subroutine attributes */
 subattrlist:   /* NULL */
-                       { $$ = Nullop; }
+                       { $$ = (OP*)NULL; }
        |       COLONATTR THING
                        { $$ = $2;
                          TOKEN_GETMAD($1,$$,':');
@@ -600,7 +600,7 @@ subattrlist:        /* NULL */
        |       COLONATTR
                        { $$ = IF_MAD(
                                    newOP(OP_NULL, 0),
-                                   Nullop
+                                   (OP*)NULL
                                );
                          TOKEN_GETMAD($1,$$,':');
                        }
@@ -614,7 +614,7 @@ myattrlist: COLONATTR THING
        |       COLONATTR
                        { $$ = IF_MAD(
                                    newOP(OP_NULL, 0),
-                                   Nullop
+                                   (OP*)NULL
                                );
                          TOKEN_GETMAD($1,$$,':');
                        }
@@ -624,7 +624,7 @@ myattrlist: COLONATTR THING
 subbody        :       block   { $$ = $1; }
        |       ';'     { $$ = IF_MAD(
                                    newOP(OP_NULL,0),
-                                   Nullop
+                                   (OP*)NULL
                                );
                          PL_parser->expect = XSTATE;
                          TOKEN_GETMAD($1,$$,';');
@@ -639,7 +639,7 @@ package :   PACKAGE WORD ';'
                          token_getmad($3,$$,';');
 #else
                          package($2);
-                         $$ = Nullop;
+                         $$ = (OP*)NULL;
 #endif
                        }
        ;
@@ -657,7 +657,7 @@ use :       USE startsub
                              append_madprops(newMADPROP('!', MAD_PV, "", 0), 
$$, 0);
 #else
                          utilize(IVAL($1), $2, $4, $5, $6);
-                         $$ = Nullop;
+                         $$ = (OP*)NULL;
 #endif
                        }
        ;
@@ -755,7 +755,7 @@ listop      :       LSTOP indirob argexpr /* map {...} 
@args or print $fh @args */
                        }
        |       LSTOPSUB startanonsub block /* sub f(&@);   f { foo } ... */
                        { SvREFCNT_inc_simple_void(PL_compcv);
-                         $<opval>$ = newANONATTRSUB($2, 0, Nullop, $3); }
+                         $<opval>$ = newANONATTRSUB($2, 0, (OP*)NULL, $3); }
                    listexpr            %prec LSTOP  /* ... @bar */
                        { $$ = newUNOP(OP_ENTERSUB, OPf_STACKED,
                                 append_elem(OP_LIST,
@@ -861,7 +861,7 @@ subscripted:    star '{' expr ';' '}'        /* 
*main::{something} */
                          TOKEN_GETMAD($6,$$,']');
                        }
        |       '(' ')' '[' expr ']'                 /* empty list slice! */
-                       { $$ = newSLICEOP(0, $4, Nullop);
+                       { $$ = newSLICEOP(0, $4, (OP*)NULL);
                          TOKEN_GETMAD($1,$$,'(');
                          TOKEN_GETMAD($2,$$,')');
                          TOKEN_GETMAD($3,$$,'[');
@@ -991,7 +991,7 @@ anonymous:  '[' expr ']'
                          TOKEN_GETMAD($3,$$,']');
                        }
        |       '[' ']'
-                       { $$ = newANONLIST(Nullop);
+                       { $$ = newANONLIST((OP*)NULL);
                          TOKEN_GETMAD($1,$$,'[');
                          TOKEN_GETMAD($2,$$,']');
                        }
@@ -1002,7 +1002,7 @@ anonymous:        '[' expr ']'
                          TOKEN_GETMAD($4,$$,'}');
                        }
        |       HASHBRACK ';' '}'       %prec '(' /* { } (';' by tokener) */
-                       { $$ = newANONHASH(Nullop);
+                       { $$ = newANONHASH((OP*)NULL);
                          TOKEN_GETMAD($1,$$,'{');
                          TOKEN_GETMAD($2,$$,';');
                          TOKEN_GETMAD($3,$$,'}');
@@ -1033,7 +1033,7 @@ termdo    :       DO term %prec UNIOP                     
/* do $filename */
                                scalar(newCVREF(
                                    (OPpENTERSUB_AMPER<<8),
                                    scalar($2)
-                               )),Nullop)); dep();
+                               )),(OP*)NULL)); dep();
                          TOKEN_GETMAD($1,$$,'o');
                          TOKEN_GETMAD($3,$$,'(');
                          TOKEN_GETMAD($4,$$,')');
@@ -1054,7 +1054,7 @@ termdo    :       DO term %prec UNIOP                     
/* do $filename */
        |       DO scalar '(' ')'                      /* do $subref () */
                        { $$ = newUNOP(OP_ENTERSUB, OPf_SPECIAL|OPf_STACKED,
                            prepend_elem(OP_LIST,
-                               scalar(newCVREF(0,scalar($2))), Nullop)); dep();
+                               scalar(newCVREF(0,scalar($2))), (OP*)NULL)); 
dep();
                          TOKEN_GETMAD($1,$$,'o');
                          TOKEN_GETMAD($3,$$,'(');
                          TOKEN_GETMAD($4,$$,')');
@@ -1270,13 +1270,13 @@ myterm  :       '(' expr ')'
 
 /* Basic list expressions */
 listexpr:      /* NULL */ %prec PREC_LOW
-                       { $$ = Nullop; }
+                       { $$ = (OP*)NULL; }
        |       argexpr    %prec PREC_LOW
                        { $$ = $1; }
        ;
 
 listexprcom:   /* NULL */
-                       { $$ = Nullop; }
+                       { $$ = (OP*)NULL; }
        |       expr
                        { $$ = $1; }
        |       expr ','
diff --git a/pod/perlapi.pod b/pod/perlapi.pod
index 78491b9..45f3de6 100644
--- a/pod/perlapi.pod
+++ b/pod/perlapi.pod
@@ -373,7 +373,7 @@ Creates a new AV.  The reference count is set to 1.
        AV*     newAV()
 
 =for hackers
-Found in file av.c
+Found in file av.h
 
 =item sortsv
 X<sortsv>
@@ -1943,7 +1943,7 @@ Creates a new HV.  The reference count is set to 1.
        HV*     newHV()
 
 =for hackers
-Found in file hv.c
+Found in file hv.h
 
 
 =back
@@ -2420,7 +2420,7 @@ C<strend>.  It returns C<NULL> if the string can't be 
found.  The C<sv>
 does not have to be fbm_compiled, but the search will not be as fast
 then.
 
-       char*   fbm_instr(unsigned char* big, unsigned char* bigend, SV* 
littlesv, U32 flags)
+       char*   fbm_instr(unsigned char* big, unsigned char* bigend, SV* 
littlestr, U32 flags)
 
 =for hackers
 Found in file util.c
@@ -2531,7 +2531,7 @@ is an alpha version).  The boolean qv denotes that the 
version
 should be interpreted as if it had multiple decimals, even if
 it doesn't.
 
-       const char*     scan_version(const char *vstr, SV *sv, bool qv)
+       const char*     scan_version(const char *s, SV *rv, bool qv)
 
 =for hackers
 Found in file util.c
@@ -2672,7 +2672,7 @@ X<vcmp>
 Version object aware cmp.  Both operands must already have been 
 converted into version objects.
 
-       int     vcmp(SV *lvs, SV *rvs)
+       int     vcmp(SV *lhv, SV *rhv)
 
 =for hackers
 Found in file util.c
@@ -4366,32 +4366,16 @@ Found in file sv.h
 =item SvOOK
 X<SvOOK>
 
-Returns a U32 indicating whether the pointer to the string buffer is offset.
-This hack is used internally to speed up removal of characters from the
-beginning of a SvPV.  When SvOOK is true, then the start of the
-allocated string buffer is actually C<SvOOK_offset()> bytes before SvPVX.
-This offset used to be stored in SvIVX, but is now stored within the spare
-part of the buffer.
+Returns a U32 indicating whether the SvIVX is a valid offset value for
+the SvPVX.  This hack is used internally to speed up removal of characters
+from the beginning of a SvPV.  When SvOOK is true, then the start of the
+allocated string buffer is really (SvPVX - SvIVX).
 
        U32     SvOOK(SV* sv)
**** PATCH TRUNCATED AT 1000 LINES -- 671 NOT SHOWN ****

--
Perl5 Master Repository

Reply via email to