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
