3 * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
4 * 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by Larry Wall
7 * You may distribute under the terms of either the GNU General Public
8 * License or the Artistic License, as specified in the README file.
13 * 'I wonder what the Entish is for "yes" and "no",' he thought.
16 * [p.480 of _The Lord of the Rings_, III/iv: "Treebeard"]
22 * This file contains the code that creates, manipulates and destroys
23 * scalar values (SVs). The other types (AV, HV, GV, etc.) reuse the
24 * structure of an SV, so their creation and destruction is handled
25 * here; higher-level functions are in av.c, hv.c, and so on. Opcode
26 * level functions (eg. substr, split, join) for each of the types are
36 # if __STDC_VERSION__ >= 199901L && !defined(VMS)
47 /* Missing proto on LynxOS */
48 char *gconvert(double, int, int, char *);
51 #ifdef PERL_UTF8_CACHE_ASSERT
52 /* if adding more checks watch out for the following tests:
53 * t/op/index.t t/op/length.t t/op/pat.t t/op/substr.t
54 * lib/utf8.t lib/Unicode/Collate/t/index.t
57 # define ASSERT_UTF8_CACHE(cache) \
58 STMT_START { if (cache) { assert((cache)[0] <= (cache)[1]); \
59 assert((cache)[2] <= (cache)[3]); \
60 assert((cache)[3] <= (cache)[1]);} \
63 # define ASSERT_UTF8_CACHE(cache) NOOP
66 #ifdef PERL_OLD_COPY_ON_WRITE
67 #define SV_COW_NEXT_SV(sv) INT2PTR(SV *,SvUVX(sv))
68 #define SV_COW_NEXT_SV_SET(current,next) SvUV_set(current, PTR2UV(next))
69 /* This is a pessimistic view. Scalar must be purely a read-write PV to copy-
73 /* ============================================================================
75 =head1 Allocation and deallocation of SVs.
77 An SV (or AV, HV, etc.) is allocated in two parts: the head (struct
78 sv, av, hv...) contains type and reference count information, and for
79 many types, a pointer to the body (struct xrv, xpv, xpviv...), which
80 contains fields specific to each type. Some types store all they need
81 in the head, so don't have a body.
83 In all but the most memory-paranoid configurations (ex: PURIFY), heads
84 and bodies are allocated out of arenas, which by default are
85 approximately 4K chunks of memory parcelled up into N heads or bodies.
86 Sv-bodies are allocated by their sv-type, guaranteeing size
87 consistency needed to allocate safely from arrays.
89 For SV-heads, the first slot in each arena is reserved, and holds a
90 link to the next arena, some flags, and a note of the number of slots.
91 Snaked through each arena chain is a linked list of free items; when
92 this becomes empty, an extra arena is allocated and divided up into N
93 items which are threaded into the free list.
95 SV-bodies are similar, but they use arena-sets by default, which
96 separate the link and info from the arena itself, and reclaim the 1st
97 slot in the arena. SV-bodies are further described later.
99 The following global variables are associated with arenas:
101 PL_sv_arenaroot pointer to list of SV arenas
102 PL_sv_root pointer to list of free SV structures
104 PL_body_arenas head of linked-list of body arenas
105 PL_body_roots[] array of pointers to list of free bodies of svtype
106 arrays are indexed by the svtype needed
108 A few special SV heads are not allocated from an arena, but are
109 instead directly created in the interpreter structure, eg PL_sv_undef.
110 The size of arenas can be changed from the default by setting
111 PERL_ARENA_SIZE appropriately at compile time.
113 The SV arena serves the secondary purpose of allowing still-live SVs
114 to be located and destroyed during final cleanup.
116 At the lowest level, the macros new_SV() and del_SV() grab and free
117 an SV head. (If debugging with -DD, del_SV() calls the function S_del_sv()
118 to return the SV to the free list with error checking.) new_SV() calls
119 more_sv() / sv_add_arena() to add an extra arena if the free list is empty.
120 SVs in the free list have their SvTYPE field set to all ones.
122 At the time of very final cleanup, sv_free_arenas() is called from
123 perl_destruct() to physically free all the arenas allocated since the
124 start of the interpreter.
126 The function visit() scans the SV arenas list, and calls a specified
127 function for each SV it finds which is still live - ie which has an SvTYPE
128 other than all 1's, and a non-zero SvREFCNT. visit() is used by the
129 following functions (specified as [function that calls visit()] / [function
130 called by visit() for each SV]):
132 sv_report_used() / do_report_used()
133 dump all remaining SVs (debugging aid)
135 sv_clean_objs() / do_clean_objs(),do_clean_named_objs(),
136 do_clean_named_io_objs()
137 Attempt to free all objects pointed to by RVs,
138 and try to do the same for all objects indirectly
139 referenced by typeglobs too. Called once from
140 perl_destruct(), prior to calling sv_clean_all()
143 sv_clean_all() / do_clean_all()
144 SvREFCNT_dec(sv) each remaining SV, possibly
145 triggering an sv_free(). It also sets the
146 SVf_BREAK flag on the SV to indicate that the
147 refcnt has been artificially lowered, and thus
148 stopping sv_free() from giving spurious warnings
149 about SVs which unexpectedly have a refcnt
150 of zero. called repeatedly from perl_destruct()
151 until there are no SVs left.
153 =head2 Arena allocator API Summary
155 Private API to rest of sv.c
159 new_XPVNV(), del_XPVGV(),
164 sv_report_used(), sv_clean_objs(), sv_clean_all(), sv_free_arenas()
168 * ========================================================================= */
171 * "A time to plant, and a time to uproot what was planted..."
175 # define MEM_LOG_NEW_SV(sv, file, line, func) \
176 Perl_mem_log_new_sv(sv, file, line, func)
177 # define MEM_LOG_DEL_SV(sv, file, line, func) \
178 Perl_mem_log_del_sv(sv, file, line, func)
180 # define MEM_LOG_NEW_SV(sv, file, line, func) NOOP
181 # define MEM_LOG_DEL_SV(sv, file, line, func) NOOP
184 #ifdef DEBUG_LEAKING_SCALARS
185 # define FREE_SV_DEBUG_FILE(sv) Safefree((sv)->sv_debug_file)
186 # define DEBUG_SV_SERIAL(sv) \
187 DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) del_SV\n", \
188 PTR2UV(sv), (long)(sv)->sv_debug_serial))
190 # define FREE_SV_DEBUG_FILE(sv)
191 # define DEBUG_SV_SERIAL(sv) NOOP
195 # define SvARENA_CHAIN(sv) ((sv)->sv_u.svu_rv)
196 # define SvARENA_CHAIN_SET(sv,val) (sv)->sv_u.svu_rv = MUTABLE_SV((val))
197 /* Whilst I'd love to do this, it seems that things like to check on
199 # define POSION_SV_HEAD(sv) PoisonNew(sv, 1, struct STRUCT_SV)
201 # define POSION_SV_HEAD(sv) PoisonNew(&SvANY(sv), 1, void *), \
202 PoisonNew(&SvREFCNT(sv), 1, U32)
204 # define SvARENA_CHAIN(sv) SvANY(sv)
205 # define SvARENA_CHAIN_SET(sv,val) SvANY(sv) = (void *)(val)
206 # define POSION_SV_HEAD(sv)
209 /* Mark an SV head as unused, and add to free list.
211 * If SVf_BREAK is set, skip adding it to the free list, as this SV had
212 * its refcount artificially decremented during global destruction, so
213 * there may be dangling pointers to it. The last thing we want in that
214 * case is for it to be reused. */
216 #define plant_SV(p) \
218 const U32 old_flags = SvFLAGS(p); \
219 MEM_LOG_DEL_SV(p, __FILE__, __LINE__, FUNCTION__); \
220 DEBUG_SV_SERIAL(p); \
221 FREE_SV_DEBUG_FILE(p); \
223 SvFLAGS(p) = SVTYPEMASK; \
224 if (!(old_flags & SVf_BREAK)) { \
225 SvARENA_CHAIN_SET(p, PL_sv_root); \
231 #define uproot_SV(p) \
234 PL_sv_root = MUTABLE_SV(SvARENA_CHAIN(p)); \
239 /* make some more SVs by adding another arena */
246 char *chunk; /* must use New here to match call to */
247 Newx(chunk,PERL_ARENA_SIZE,char); /* Safefree() in sv_free_arenas() */
248 sv_add_arena(chunk, PERL_ARENA_SIZE, 0);
253 /* new_SV(): return a new, empty SV head */
255 #ifdef DEBUG_LEAKING_SCALARS
256 /* provide a real function for a debugger to play with */
258 S_new_SV(pTHX_ const char *file, int line, const char *func)
265 sv = S_more_sv(aTHX);
269 sv->sv_debug_optype = PL_op ? PL_op->op_type : 0;
270 sv->sv_debug_line = (U16) (PL_parser && PL_parser->copline != NOLINE
276 sv->sv_debug_inpad = 0;
277 sv->sv_debug_parent = NULL;
278 sv->sv_debug_file = PL_curcop ? savepv(CopFILE(PL_curcop)): NULL;
280 sv->sv_debug_serial = PL_sv_serial++;
282 MEM_LOG_NEW_SV(sv, file, line, func);
283 DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) new_SV (from %s:%d [%s])\n",
284 PTR2UV(sv), (long)sv->sv_debug_serial, file, line, func));
288 # define new_SV(p) (p)=S_new_SV(aTHX_ __FILE__, __LINE__, FUNCTION__)
296 (p) = S_more_sv(aTHX); \
300 MEM_LOG_NEW_SV(p, __FILE__, __LINE__, FUNCTION__); \
305 /* del_SV(): return an empty SV head to the free list */
318 S_del_sv(pTHX_ SV *p)
322 PERL_ARGS_ASSERT_DEL_SV;
327 for (sva = PL_sv_arenaroot; sva; sva = MUTABLE_SV(SvANY(sva))) {
328 const SV * const sv = sva + 1;
329 const SV * const svend = &sva[SvREFCNT(sva)];
330 if (p >= sv && p < svend) {
336 Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL),
337 "Attempt to free non-arena SV: 0x%"UVxf
338 pTHX__FORMAT, PTR2UV(p) pTHX__VALUE);
345 #else /* ! DEBUGGING */
347 #define del_SV(p) plant_SV(p)
349 #endif /* DEBUGGING */
353 =head1 SV Manipulation Functions
355 =for apidoc sv_add_arena
357 Given a chunk of memory, link it to the head of the list of arenas,
358 and split it into a list of free SVs.
364 S_sv_add_arena(pTHX_ char *const ptr, const U32 size, const U32 flags)
367 SV *const sva = MUTABLE_SV(ptr);
371 PERL_ARGS_ASSERT_SV_ADD_ARENA;
373 /* The first SV in an arena isn't an SV. */
374 SvANY(sva) = (void *) PL_sv_arenaroot; /* ptr to next arena */
375 SvREFCNT(sva) = size / sizeof(SV); /* number of SV slots */
376 SvFLAGS(sva) = flags; /* FAKE if not to be freed */
378 PL_sv_arenaroot = sva;
379 PL_sv_root = sva + 1;
381 svend = &sva[SvREFCNT(sva) - 1];
384 SvARENA_CHAIN_SET(sv, (sv + 1));
388 /* Must always set typemask because it's always checked in on cleanup
389 when the arenas are walked looking for objects. */
390 SvFLAGS(sv) = SVTYPEMASK;
393 SvARENA_CHAIN_SET(sv, 0);
397 SvFLAGS(sv) = SVTYPEMASK;
400 /* visit(): call the named function for each non-free SV in the arenas
401 * whose flags field matches the flags/mask args. */
404 S_visit(pTHX_ SVFUNC_t f, const U32 flags, const U32 mask)
410 PERL_ARGS_ASSERT_VISIT;
412 for (sva = PL_sv_arenaroot; sva; sva = MUTABLE_SV(SvANY(sva))) {
413 register const SV * const svend = &sva[SvREFCNT(sva)];
415 for (sv = sva + 1; sv < svend; ++sv) {
416 if (SvTYPE(sv) != SVTYPEMASK
417 && (sv->sv_flags & mask) == flags
430 /* called by sv_report_used() for each live SV */
433 do_report_used(pTHX_ SV *const sv)
435 if (SvTYPE(sv) != SVTYPEMASK) {
436 PerlIO_printf(Perl_debug_log, "****\n");
443 =for apidoc sv_report_used
445 Dump the contents of all SVs not yet freed. (Debugging aid).
451 Perl_sv_report_used(pTHX)
454 visit(do_report_used, 0, 0);
460 /* called by sv_clean_objs() for each live SV */
463 do_clean_objs(pTHX_ SV *const ref)
468 SV * const target = SvRV(ref);
469 if (SvOBJECT(target)) {
470 DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning object ref:\n "), sv_dump(ref)));
471 if (SvWEAKREF(ref)) {
472 sv_del_backref(target, ref);
478 SvREFCNT_dec(target);
483 /* XXX Might want to check arrays, etc. */
487 /* clear any slots in a GV which hold objects - except IO;
488 * called by sv_clean_objs() for each live GV */
491 do_clean_named_objs(pTHX_ SV *const sv)
495 assert(SvTYPE(sv) == SVt_PVGV);
496 assert(isGV_with_GP(sv));
500 /* freeing GP entries may indirectly free the current GV;
501 * hold onto it while we mess with the GP slots */
504 if ( ((obj = GvSV(sv) )) && SvOBJECT(obj)) {
505 DEBUG_D((PerlIO_printf(Perl_debug_log,
506 "Cleaning named glob SV object:\n "), sv_dump(obj)));
510 if ( ((obj = MUTABLE_SV(GvAV(sv)) )) && SvOBJECT(obj)) {
511 DEBUG_D((PerlIO_printf(Perl_debug_log,
512 "Cleaning named glob AV object:\n "), sv_dump(obj)));
516 if ( ((obj = MUTABLE_SV(GvHV(sv)) )) && SvOBJECT(obj)) {
517 DEBUG_D((PerlIO_printf(Perl_debug_log,
518 "Cleaning named glob HV object:\n "), sv_dump(obj)));
522 if ( ((obj = MUTABLE_SV(GvCV(sv)) )) && SvOBJECT(obj)) {
523 DEBUG_D((PerlIO_printf(Perl_debug_log,
524 "Cleaning named glob CV object:\n "), sv_dump(obj)));
528 SvREFCNT_dec(sv); /* undo the inc above */
531 /* clear any IO slots in a GV which hold objects (except stderr, defout);
532 * called by sv_clean_objs() for each live GV */
535 do_clean_named_io_objs(pTHX_ SV *const sv)
539 assert(SvTYPE(sv) == SVt_PVGV);
540 assert(isGV_with_GP(sv));
541 if (!GvGP(sv) || sv == (SV*)PL_stderrgv || sv == (SV*)PL_defoutgv)
545 if ( ((obj = MUTABLE_SV(GvIO(sv)) )) && SvOBJECT(obj)) {
546 DEBUG_D((PerlIO_printf(Perl_debug_log,
547 "Cleaning named glob IO object:\n "), sv_dump(obj)));
551 SvREFCNT_dec(sv); /* undo the inc above */
554 /* Void wrapper to pass to visit() */
557 do_curse(pTHX_ SV * const sv) {
558 if ((PL_stderrgv && GvGP(PL_stderrgv) && (SV*)GvIO(PL_stderrgv) == sv)
559 || (PL_defoutgv && GvGP(PL_defoutgv) && (SV*)GvIO(PL_defoutgv) == sv))
566 =for apidoc sv_clean_objs
568 Attempt to destroy all objects not yet freed
574 Perl_sv_clean_objs(pTHX)
578 PL_in_clean_objs = TRUE;
579 visit(do_clean_objs, SVf_ROK, SVf_ROK);
580 /* Some barnacles may yet remain, clinging to typeglobs.
581 * Run the non-IO destructors first: they may want to output
582 * error messages, close files etc */
583 visit(do_clean_named_objs, SVt_PVGV|SVpgv_GP, SVTYPEMASK|SVp_POK|SVpgv_GP);
584 visit(do_clean_named_io_objs, SVt_PVGV|SVpgv_GP, SVTYPEMASK|SVp_POK|SVpgv_GP);
585 /* And if there are some very tenacious barnacles clinging to arrays,
586 closures, or what have you.... */
587 /* XXX This line breaks Tk and Gtk2. See [perl #82542].
588 visit(do_curse, SVs_OBJECT, SVs_OBJECT);
590 olddef = PL_defoutgv;
591 PL_defoutgv = NULL; /* disable skip of PL_defoutgv */
592 if (olddef && isGV_with_GP(olddef))
593 do_clean_named_io_objs(aTHX_ MUTABLE_SV(olddef));
594 olderr = PL_stderrgv;
595 PL_stderrgv = NULL; /* disable skip of PL_stderrgv */
596 if (olderr && isGV_with_GP(olderr))
597 do_clean_named_io_objs(aTHX_ MUTABLE_SV(olderr));
598 SvREFCNT_dec(olddef);
599 PL_in_clean_objs = FALSE;
602 /* called by sv_clean_all() for each live SV */
605 do_clean_all(pTHX_ SV *const sv)
608 if (sv == (const SV *) PL_fdpid || sv == (const SV *)PL_strtab) {
609 /* don't clean pid table and strtab */
612 DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning loops: SV at 0x%"UVxf"\n", PTR2UV(sv)) ));
613 SvFLAGS(sv) |= SVf_BREAK;
618 =for apidoc sv_clean_all
620 Decrement the refcnt of each remaining SV, possibly triggering a
621 cleanup. This function may have to be called multiple times to free
622 SVs which are in complex self-referential hierarchies.
628 Perl_sv_clean_all(pTHX)
632 PL_in_clean_all = TRUE;
633 cleaned = visit(do_clean_all, 0,0);
638 ARENASETS: a meta-arena implementation which separates arena-info
639 into struct arena_set, which contains an array of struct
640 arena_descs, each holding info for a single arena. By separating
641 the meta-info from the arena, we recover the 1st slot, formerly
642 borrowed for list management. The arena_set is about the size of an
643 arena, avoiding the needless malloc overhead of a naive linked-list.
645 The cost is 1 arena-set malloc per ~320 arena-mallocs, + the unused
646 memory in the last arena-set (1/2 on average). In trade, we get
647 back the 1st slot in each arena (ie 1.7% of a CV-arena, less for
648 smaller types). The recovery of the wasted space allows use of
649 small arenas for large, rare body types, by changing array* fields
650 in body_details_by_type[] below.
653 char *arena; /* the raw storage, allocated aligned */
654 size_t size; /* its size ~4k typ */
655 svtype utype; /* bodytype stored in arena */
660 /* Get the maximum number of elements in set[] such that struct arena_set
661 will fit within PERL_ARENA_SIZE, which is probably just under 4K, and
662 therefore likely to be 1 aligned memory page. */
664 #define ARENAS_PER_SET ((PERL_ARENA_SIZE - sizeof(struct arena_set*) \
665 - 2 * sizeof(int)) / sizeof (struct arena_desc))
668 struct arena_set* next;
669 unsigned int set_size; /* ie ARENAS_PER_SET */
670 unsigned int curr; /* index of next available arena-desc */
671 struct arena_desc set[ARENAS_PER_SET];
675 =for apidoc sv_free_arenas
677 Deallocate the memory used by all arenas. Note that all the individual SV
678 heads and bodies within the arenas must already have been freed.
683 Perl_sv_free_arenas(pTHX)
690 /* Free arenas here, but be careful about fake ones. (We assume
691 contiguity of the fake ones with the corresponding real ones.) */
693 for (sva = PL_sv_arenaroot; sva; sva = svanext) {
694 svanext = MUTABLE_SV(SvANY(sva));
695 while (svanext && SvFAKE(svanext))
696 svanext = MUTABLE_SV(SvANY(svanext));
703 struct arena_set *aroot = (struct arena_set*) PL_body_arenas;
706 struct arena_set *current = aroot;
709 assert(aroot->set[i].arena);
710 Safefree(aroot->set[i].arena);
718 i = PERL_ARENA_ROOTS_SIZE;
720 PL_body_roots[i] = 0;
727 Here are mid-level routines that manage the allocation of bodies out
728 of the various arenas. There are 5 kinds of arenas:
730 1. SV-head arenas, which are discussed and handled above
731 2. regular body arenas
732 3. arenas for reduced-size bodies
735 Arena types 2 & 3 are chained by body-type off an array of
736 arena-root pointers, which is indexed by svtype. Some of the
737 larger/less used body types are malloced singly, since a large
738 unused block of them is wasteful. Also, several svtypes dont have
739 bodies; the data fits into the sv-head itself. The arena-root
740 pointer thus has a few unused root-pointers (which may be hijacked
741 later for arena types 4,5)
743 3 differs from 2 as an optimization; some body types have several
744 unused fields in the front of the structure (which are kept in-place
745 for consistency). These bodies can be allocated in smaller chunks,
746 because the leading fields arent accessed. Pointers to such bodies
747 are decremented to point at the unused 'ghost' memory, knowing that
748 the pointers are used with offsets to the real memory.
751 =head1 SV-Body Allocation
753 Allocation of SV-bodies is similar to SV-heads, differing as follows;
754 the allocation mechanism is used for many body types, so is somewhat
755 more complicated, it uses arena-sets, and has no need for still-live
758 At the outermost level, (new|del)_X*V macros return bodies of the
759 appropriate type. These macros call either (new|del)_body_type or
760 (new|del)_body_allocated macro pairs, depending on specifics of the
761 type. Most body types use the former pair, the latter pair is used to
762 allocate body types with "ghost fields".
764 "ghost fields" are fields that are unused in certain types, and
765 consequently don't need to actually exist. They are declared because
766 they're part of a "base type", which allows use of functions as
767 methods. The simplest examples are AVs and HVs, 2 aggregate types
768 which don't use the fields which support SCALAR semantics.
770 For these types, the arenas are carved up into appropriately sized
771 chunks, we thus avoid wasted memory for those unaccessed members.
772 When bodies are allocated, we adjust the pointer back in memory by the
773 size of the part not allocated, so it's as if we allocated the full
774 structure. (But things will all go boom if you write to the part that
775 is "not there", because you'll be overwriting the last members of the
776 preceding structure in memory.)
778 We calculate the correction using the STRUCT_OFFSET macro on the first
779 member present. If the allocated structure is smaller (no initial NV
780 actually allocated) then the net effect is to subtract the size of the NV
781 from the pointer, to return a new pointer as if an initial NV were actually
782 allocated. (We were using structures named *_allocated for this, but
783 this turned out to be a subtle bug, because a structure without an NV
784 could have a lower alignment constraint, but the compiler is allowed to
785 optimised accesses based on the alignment constraint of the actual pointer
786 to the full structure, for example, using a single 64 bit load instruction
787 because it "knows" that two adjacent 32 bit members will be 8-byte aligned.)
789 This is the same trick as was used for NV and IV bodies. Ironically it
790 doesn't need to be used for NV bodies any more, because NV is now at
791 the start of the structure. IV bodies don't need it either, because
792 they are no longer allocated.
794 In turn, the new_body_* allocators call S_new_body(), which invokes
795 new_body_inline macro, which takes a lock, and takes a body off the
796 linked list at PL_body_roots[sv_type], calling Perl_more_bodies() if
797 necessary to refresh an empty list. Then the lock is released, and
798 the body is returned.
800 Perl_more_bodies allocates a new arena, and carves it up into an array of N
801 bodies, which it strings into a linked list. It looks up arena-size
802 and body-size from the body_details table described below, thus
803 supporting the multiple body-types.
805 If PURIFY is defined, or PERL_ARENA_SIZE=0, arenas are not used, and
806 the (new|del)_X*V macros are mapped directly to malloc/free.
808 For each sv-type, struct body_details bodies_by_type[] carries
809 parameters which control these aspects of SV handling:
811 Arena_size determines whether arenas are used for this body type, and if
812 so, how big they are. PURIFY or PERL_ARENA_SIZE=0 set this field to
813 zero, forcing individual mallocs and frees.
815 Body_size determines how big a body is, and therefore how many fit into
816 each arena. Offset carries the body-pointer adjustment needed for
817 "ghost fields", and is used in *_allocated macros.
819 But its main purpose is to parameterize info needed in
820 Perl_sv_upgrade(). The info here dramatically simplifies the function
821 vs the implementation in 5.8.8, making it table-driven. All fields
822 are used for this, except for arena_size.
824 For the sv-types that have no bodies, arenas are not used, so those
825 PL_body_roots[sv_type] are unused, and can be overloaded. In
826 something of a special case, SVt_NULL is borrowed for HE arenas;
827 PL_body_roots[HE_SVSLOT=SVt_NULL] is filled by S_more_he, but the
828 bodies_by_type[SVt_NULL] slot is not used, as the table is not
833 struct body_details {
834 U8 body_size; /* Size to allocate */
835 U8 copy; /* Size of structure to copy (may be shorter) */
837 unsigned int type : 4; /* We have space for a sanity check. */
838 unsigned int cant_upgrade : 1; /* Cannot upgrade this type */
839 unsigned int zero_nv : 1; /* zero the NV when upgrading from this */
840 unsigned int arena : 1; /* Allocated from an arena */
841 size_t arena_size; /* Size of arena to allocate */
849 /* With -DPURFIY we allocate everything directly, and don't use arenas.
850 This seems a rather elegant way to simplify some of the code below. */
851 #define HASARENA FALSE
853 #define HASARENA TRUE
855 #define NOARENA FALSE
857 /* Size the arenas to exactly fit a given number of bodies. A count
858 of 0 fits the max number bodies into a PERL_ARENA_SIZE.block,
859 simplifying the default. If count > 0, the arena is sized to fit
860 only that many bodies, allowing arenas to be used for large, rare
861 bodies (XPVFM, XPVIO) without undue waste. The arena size is
862 limited by PERL_ARENA_SIZE, so we can safely oversize the
865 #define FIT_ARENA0(body_size) \
866 ((size_t)(PERL_ARENA_SIZE / body_size) * body_size)
867 #define FIT_ARENAn(count,body_size) \
868 ( count * body_size <= PERL_ARENA_SIZE) \
869 ? count * body_size \
870 : FIT_ARENA0 (body_size)
871 #define FIT_ARENA(count,body_size) \
873 ? FIT_ARENAn (count, body_size) \
874 : FIT_ARENA0 (body_size)
876 /* Calculate the length to copy. Specifically work out the length less any
877 final padding the compiler needed to add. See the comment in sv_upgrade
878 for why copying the padding proved to be a bug. */
880 #define copy_length(type, last_member) \
881 STRUCT_OFFSET(type, last_member) \
882 + sizeof (((type*)SvANY((const SV *)0))->last_member)
884 static const struct body_details bodies_by_type[] = {
885 /* HEs use this offset for their arena. */
886 { 0, 0, 0, SVt_NULL, FALSE, NONV, NOARENA, 0 },
888 /* The bind placeholder pretends to be an RV for now.
889 Also it's marked as "can't upgrade" to stop anyone using it before it's
891 { 0, 0, 0, SVt_BIND, TRUE, NONV, NOARENA, 0 },
893 /* IVs are in the head, so the allocation size is 0. */
895 sizeof(IV), /* This is used to copy out the IV body. */
896 STRUCT_OFFSET(XPVIV, xiv_iv), SVt_IV, FALSE, NONV,
897 NOARENA /* IVS don't need an arena */, 0
900 /* 8 bytes on most ILP32 with IEEE doubles */
901 { sizeof(NV), sizeof(NV),
902 STRUCT_OFFSET(XPVNV, xnv_u),
903 SVt_NV, FALSE, HADNV, HASARENA, FIT_ARENA(0, sizeof(NV)) },
905 /* 8 bytes on most ILP32 with IEEE doubles */
906 { sizeof(XPV) - STRUCT_OFFSET(XPV, xpv_cur),
907 copy_length(XPV, xpv_len) - STRUCT_OFFSET(XPV, xpv_cur),
908 + STRUCT_OFFSET(XPV, xpv_cur),
909 SVt_PV, FALSE, NONV, HASARENA,
910 FIT_ARENA(0, sizeof(XPV) - STRUCT_OFFSET(XPV, xpv_cur)) },
913 { sizeof(XPVIV) - STRUCT_OFFSET(XPV, xpv_cur),
914 copy_length(XPVIV, xiv_u) - STRUCT_OFFSET(XPV, xpv_cur),
915 + STRUCT_OFFSET(XPV, xpv_cur),
916 SVt_PVIV, FALSE, NONV, HASARENA,
917 FIT_ARENA(0, sizeof(XPVIV) - STRUCT_OFFSET(XPV, xpv_cur)) },
920 { sizeof(XPVNV) - STRUCT_OFFSET(XPV, xpv_cur),
921 copy_length(XPVNV, xnv_u) - STRUCT_OFFSET(XPV, xpv_cur),
922 + STRUCT_OFFSET(XPV, xpv_cur),
923 SVt_PVNV, FALSE, HADNV, HASARENA,
924 FIT_ARENA(0, sizeof(XPVNV) - STRUCT_OFFSET(XPV, xpv_cur)) },
927 { sizeof(XPVMG), copy_length(XPVMG, xnv_u), 0, SVt_PVMG, FALSE, HADNV,
928 HASARENA, FIT_ARENA(0, sizeof(XPVMG)) },
934 SVt_REGEXP, FALSE, NONV, HASARENA,
935 FIT_ARENA(0, sizeof(regexp))
939 { sizeof(XPVGV), sizeof(XPVGV), 0, SVt_PVGV, TRUE, HADNV,
940 HASARENA, FIT_ARENA(0, sizeof(XPVGV)) },
943 { sizeof(XPVLV), sizeof(XPVLV), 0, SVt_PVLV, TRUE, HADNV,
944 HASARENA, FIT_ARENA(0, sizeof(XPVLV)) },
947 copy_length(XPVAV, xav_alloc),
949 SVt_PVAV, TRUE, NONV, HASARENA,
950 FIT_ARENA(0, sizeof(XPVAV)) },
953 copy_length(XPVHV, xhv_max),
955 SVt_PVHV, TRUE, NONV, HASARENA,
956 FIT_ARENA(0, sizeof(XPVHV)) },
962 SVt_PVCV, TRUE, NONV, HASARENA,
963 FIT_ARENA(0, sizeof(XPVCV)) },
968 SVt_PVFM, TRUE, NONV, NOARENA,
969 FIT_ARENA(20, sizeof(XPVFM)) },
971 /* XPVIO is 84 bytes, fits 48x */
975 SVt_PVIO, TRUE, NONV, HASARENA,
976 FIT_ARENA(24, sizeof(XPVIO)) },
979 #define new_body_allocated(sv_type) \
980 (void *)((char *)S_new_body(aTHX_ sv_type) \
981 - bodies_by_type[sv_type].offset)
983 /* return a thing to the free list */
985 #define del_body(thing, root) \
987 void ** const thing_copy = (void **)thing; \
988 *thing_copy = *root; \
989 *root = (void*)thing_copy; \
994 #define new_XNV() safemalloc(sizeof(XPVNV))
995 #define new_XPVNV() safemalloc(sizeof(XPVNV))
996 #define new_XPVMG() safemalloc(sizeof(XPVMG))
998 #define del_XPVGV(p) safefree(p)
1002 #define new_XNV() new_body_allocated(SVt_NV)
1003 #define new_XPVNV() new_body_allocated(SVt_PVNV)
1004 #define new_XPVMG() new_body_allocated(SVt_PVMG)
1006 #define del_XPVGV(p) del_body(p + bodies_by_type[SVt_PVGV].offset, \
1007 &PL_body_roots[SVt_PVGV])
1011 /* no arena for you! */
1013 #define new_NOARENA(details) \
1014 safemalloc((details)->body_size + (details)->offset)
1015 #define new_NOARENAZ(details) \
1016 safecalloc((details)->body_size + (details)->offset, 1)
1019 Perl_more_bodies (pTHX_ const svtype sv_type, const size_t body_size,
1020 const size_t arena_size)
1023 void ** const root = &PL_body_roots[sv_type];
1024 struct arena_desc *adesc;
1025 struct arena_set *aroot = (struct arena_set *) PL_body_arenas;
1029 const size_t good_arena_size = Perl_malloc_good_size(arena_size);
1030 #if defined(DEBUGGING) && !defined(PERL_GLOBAL_STRUCT_PRIVATE)
1031 static bool done_sanity_check;
1033 /* PERL_GLOBAL_STRUCT_PRIVATE cannot coexist with global
1034 * variables like done_sanity_check. */
1035 if (!done_sanity_check) {
1036 unsigned int i = SVt_LAST;
1038 done_sanity_check = TRUE;
1041 assert (bodies_by_type[i].type == i);
1047 /* may need new arena-set to hold new arena */
1048 if (!aroot || aroot->curr >= aroot->set_size) {
1049 struct arena_set *newroot;
1050 Newxz(newroot, 1, struct arena_set);
1051 newroot->set_size = ARENAS_PER_SET;
1052 newroot->next = aroot;
1054 PL_body_arenas = (void *) newroot;
1055 DEBUG_m(PerlIO_printf(Perl_debug_log, "new arenaset %p\n", (void*)aroot));
1058 /* ok, now have arena-set with at least 1 empty/available arena-desc */
1059 curr = aroot->curr++;
1060 adesc = &(aroot->set[curr]);
1061 assert(!adesc->arena);
1063 Newx(adesc->arena, good_arena_size, char);
1064 adesc->size = good_arena_size;
1065 adesc->utype = sv_type;
1066 DEBUG_m(PerlIO_printf(Perl_debug_log, "arena %d added: %p size %"UVuf"\n",
1067 curr, (void*)adesc->arena, (UV)good_arena_size));
1069 start = (char *) adesc->arena;
1071 /* Get the address of the byte after the end of the last body we can fit.
1072 Remember, this is integer division: */
1073 end = start + good_arena_size / body_size * body_size;
1075 /* computed count doesn't reflect the 1st slot reservation */
1076 #if defined(MYMALLOC) || defined(HAS_MALLOC_GOOD_SIZE)
1077 DEBUG_m(PerlIO_printf(Perl_debug_log,
1078 "arena %p end %p arena-size %d (from %d) type %d "
1080 (void*)start, (void*)end, (int)good_arena_size,
1081 (int)arena_size, sv_type, (int)body_size,
1082 (int)good_arena_size / (int)body_size));
1084 DEBUG_m(PerlIO_printf(Perl_debug_log,
1085 "arena %p end %p arena-size %d type %d size %d ct %d\n",
1086 (void*)start, (void*)end,
1087 (int)arena_size, sv_type, (int)body_size,
1088 (int)good_arena_size / (int)body_size));
1090 *root = (void *)start;
1093 /* Where the next body would start: */
1094 char * const next = start + body_size;
1097 /* This is the last body: */
1098 assert(next == end);
1100 *(void **)start = 0;
1104 *(void**) start = (void *)next;
1109 /* grab a new thing from the free list, allocating more if necessary.
1110 The inline version is used for speed in hot routines, and the
1111 function using it serves the rest (unless PURIFY).
1113 #define new_body_inline(xpv, sv_type) \
1115 void ** const r3wt = &PL_body_roots[sv_type]; \
1116 xpv = (PTR_TBL_ENT_t*) (*((void **)(r3wt)) \
1117 ? *((void **)(r3wt)) : Perl_more_bodies(aTHX_ sv_type, \
1118 bodies_by_type[sv_type].body_size,\
1119 bodies_by_type[sv_type].arena_size)); \
1120 *(r3wt) = *(void**)(xpv); \
1126 S_new_body(pTHX_ const svtype sv_type)
1130 new_body_inline(xpv, sv_type);
1136 static const struct body_details fake_rv =
1137 { 0, 0, 0, SVt_IV, FALSE, NONV, NOARENA, 0 };
1140 =for apidoc sv_upgrade
1142 Upgrade an SV to a more complex form. Generally adds a new body type to the
1143 SV, then copies across as much information as possible from the old body.
1144 You generally want to use the C<SvUPGRADE> macro wrapper. See also C<svtype>.
1150 Perl_sv_upgrade(pTHX_ register SV *const sv, svtype new_type)
1155 const svtype old_type = SvTYPE(sv);
1156 const struct body_details *new_type_details;
1157 const struct body_details *old_type_details
1158 = bodies_by_type + old_type;
1159 SV *referant = NULL;
1161 PERL_ARGS_ASSERT_SV_UPGRADE;
1163 if (old_type == new_type)
1166 /* This clause was purposefully added ahead of the early return above to
1167 the shared string hackery for (sort {$a <=> $b} keys %hash), with the
1168 inference by Nick I-S that it would fix other troublesome cases. See
1169 changes 7162, 7163 (f130fd4589cf5fbb24149cd4db4137c8326f49c1 and parent)
1171 Given that shared hash key scalars are no longer PVIV, but PV, there is
1172 no longer need to unshare so as to free up the IVX slot for its proper
1173 purpose. So it's safe to move the early return earlier. */
1175 if (new_type != SVt_PV && SvIsCOW(sv)) {
1176 sv_force_normal_flags(sv, 0);
1179 old_body = SvANY(sv);
1181 /* Copying structures onto other structures that have been neatly zeroed
1182 has a subtle gotcha. Consider XPVMG
1184 +------+------+------+------+------+-------+-------+
1185 | NV | CUR | LEN | IV | MAGIC | STASH |
1186 +------+------+------+------+------+-------+-------+
1187 0 4 8 12 16 20 24 28
1189 where NVs are aligned to 8 bytes, so that sizeof that structure is
1190 actually 32 bytes long, with 4 bytes of padding at the end:
1192 +------+------+------+------+------+-------+-------+------+
1193 | NV | CUR | LEN | IV | MAGIC | STASH | ??? |
1194 +------+------+------+------+------+-------+-------+------+
1195 0 4 8 12 16 20 24 28 32
1197 so what happens if you allocate memory for this structure:
1199 +------+------+------+------+------+-------+-------+------+------+...
1200 | NV | CUR | LEN | IV | MAGIC | STASH | GP | NAME |
1201 +------+------+------+------+------+-------+-------+------+------+...
1202 0 4 8 12 16 20 24 28 32 36
1204 zero it, then copy sizeof(XPVMG) bytes on top of it? Not quite what you
1205 expect, because you copy the area marked ??? onto GP. Now, ??? may have
1206 started out as zero once, but it's quite possible that it isn't. So now,
1207 rather than a nicely zeroed GP, you have it pointing somewhere random.
1210 (In fact, GP ends up pointing at a previous GP structure, because the
1211 principle cause of the padding in XPVMG getting garbage is a copy of
1212 sizeof(XPVMG) bytes from a XPVGV structure in sv_unglob. Right now
1213 this happens to be moot because XPVGV has been re-ordered, with GP
1214 no longer after STASH)
1216 So we are careful and work out the size of used parts of all the
1224 referant = SvRV(sv);
1225 old_type_details = &fake_rv;
1226 if (new_type == SVt_NV)
1227 new_type = SVt_PVNV;
1229 if (new_type < SVt_PVIV) {
1230 new_type = (new_type == SVt_NV)
1231 ? SVt_PVNV : SVt_PVIV;
1236 if (new_type < SVt_PVNV) {
1237 new_type = SVt_PVNV;
1241 assert(new_type > SVt_PV);
1242 assert(SVt_IV < SVt_PV);
1243 assert(SVt_NV < SVt_PV);
1250 /* Because the XPVMG of PL_mess_sv isn't allocated from the arena,
1251 there's no way that it can be safely upgraded, because perl.c
1252 expects to Safefree(SvANY(PL_mess_sv)) */
1253 assert(sv != PL_mess_sv);
1254 /* This flag bit is used to mean other things in other scalar types.
1255 Given that it only has meaning inside the pad, it shouldn't be set
1256 on anything that can get upgraded. */
1257 assert(!SvPAD_TYPED(sv));
1260 if (old_type_details->cant_upgrade)
1261 Perl_croak(aTHX_ "Can't upgrade %s (%" UVuf ") to %" UVuf,
1262 sv_reftype(sv, 0), (UV) old_type, (UV) new_type);
1265 if (old_type > new_type)
1266 Perl_croak(aTHX_ "sv_upgrade from type %d down to type %d",
1267 (int)old_type, (int)new_type);
1269 new_type_details = bodies_by_type + new_type;
1271 SvFLAGS(sv) &= ~SVTYPEMASK;
1272 SvFLAGS(sv) |= new_type;
1274 /* This can't happen, as SVt_NULL is <= all values of new_type, so one of
1275 the return statements above will have triggered. */
1276 assert (new_type != SVt_NULL);
1279 assert(old_type == SVt_NULL);
1280 SvANY(sv) = (XPVIV*)((char*)&(sv->sv_u.svu_iv) - STRUCT_OFFSET(XPVIV, xiv_iv));
1284 assert(old_type == SVt_NULL);
1285 SvANY(sv) = new_XNV();
1290 assert(new_type_details->body_size);
1293 assert(new_type_details->arena);
1294 assert(new_type_details->arena_size);
1295 /* This points to the start of the allocated area. */
1296 new_body_inline(new_body, new_type);
1297 Zero(new_body, new_type_details->body_size, char);
1298 new_body = ((char *)new_body) - new_type_details->offset;
1300 /* We always allocated the full length item with PURIFY. To do this
1301 we fake things so that arena is false for all 16 types.. */
1302 new_body = new_NOARENAZ(new_type_details);
1304 SvANY(sv) = new_body;
1305 if (new_type == SVt_PVAV) {
1309 if (old_type_details->body_size) {
1312 /* It will have been zeroed when the new body was allocated.
1313 Lets not write to it, in case it confuses a write-back
1319 #ifndef NODEFAULT_SHAREKEYS
1320 HvSHAREKEYS_on(sv); /* key-sharing on by default */
1322 HvMAX(sv) = 7; /* (start with 8 buckets) */
1325 /* SVt_NULL isn't the only thing upgraded to AV or HV.
1326 The target created by newSVrv also is, and it can have magic.
1327 However, it never has SvPVX set.
1329 if (old_type == SVt_IV) {
1331 } else if (old_type >= SVt_PV) {
1332 assert(SvPVX_const(sv) == 0);
1335 if (old_type >= SVt_PVMG) {
1336 SvMAGIC_set(sv, ((XPVMG*)old_body)->xmg_u.xmg_magic);
1337 SvSTASH_set(sv, ((XPVMG*)old_body)->xmg_stash);
1339 sv->sv_u.svu_array = NULL; /* or svu_hash */
1345 /* This ensures that SvTHINKFIRST(sv) is true, and hence that
1346 sv_force_normal_flags(sv) is called. */
1349 /* XXX Is this still needed? Was it ever needed? Surely as there is
1350 no route from NV to PVIV, NOK can never be true */
1351 assert(!SvNOKp(sv));
1362 assert(new_type_details->body_size);
1363 /* We always allocated the full length item with PURIFY. To do this
1364 we fake things so that arena is false for all 16 types.. */
1365 if(new_type_details->arena) {
1366 /* This points to the start of the allocated area. */
1367 new_body_inline(new_body, new_type);
1368 Zero(new_body, new_type_details->body_size, char);
1369 new_body = ((char *)new_body) - new_type_details->offset;
1371 new_body = new_NOARENAZ(new_type_details);
1373 SvANY(sv) = new_body;
1375 if (old_type_details->copy) {
1376 /* There is now the potential for an upgrade from something without
1377 an offset (PVNV or PVMG) to something with one (PVCV, PVFM) */
1378 int offset = old_type_details->offset;
1379 int length = old_type_details->copy;
1381 if (new_type_details->offset > old_type_details->offset) {
1382 const int difference
1383 = new_type_details->offset - old_type_details->offset;
1384 offset += difference;
1385 length -= difference;
1387 assert (length >= 0);
1389 Copy((char *)old_body + offset, (char *)new_body + offset, length,
1393 #ifndef NV_ZERO_IS_ALLBITS_ZERO
1394 /* If NV 0.0 is stores as all bits 0 then Zero() already creates a
1395 * correct 0.0 for us. Otherwise, if the old body didn't have an
1396 * NV slot, but the new one does, then we need to initialise the
1397 * freshly created NV slot with whatever the correct bit pattern is
1399 if (old_type_details->zero_nv && !new_type_details->zero_nv
1400 && !isGV_with_GP(sv))
1404 if (new_type == SVt_PVIO) {
1405 IO * const io = MUTABLE_IO(sv);
1406 GV *iogv = gv_fetchpvs("IO::File::", GV_ADD, SVt_PVHV);
1409 /* Clear the stashcache because a new IO could overrule a package
1411 hv_clear(PL_stashcache);
1413 SvSTASH_set(io, MUTABLE_HV(SvREFCNT_inc(GvHV(iogv))));
1414 IoPAGE_LEN(sv) = 60;
1416 if (old_type < SVt_PV) {
1417 /* referant will be NULL unless the old type was SVt_IV emulating
1419 sv->sv_u.svu_rv = referant;
1423 Perl_croak(aTHX_ "panic: sv_upgrade to unknown type %lu",
1424 (unsigned long)new_type);
1427 if (old_type > SVt_IV) {
1431 /* Note that there is an assumption that all bodies of types that
1432 can be upgraded came from arenas. Only the more complex non-
1433 upgradable types are allowed to be directly malloc()ed. */
1434 assert(old_type_details->arena);
1435 del_body((void*)((char*)old_body + old_type_details->offset),
1436 &PL_body_roots[old_type]);
1442 =for apidoc sv_backoff
1444 Remove any string offset. You should normally use the C<SvOOK_off> macro
1451 Perl_sv_backoff(pTHX_ register SV *const sv)
1454 const char * const s = SvPVX_const(sv);
1456 PERL_ARGS_ASSERT_SV_BACKOFF;
1457 PERL_UNUSED_CONTEXT;
1460 assert(SvTYPE(sv) != SVt_PVHV);
1461 assert(SvTYPE(sv) != SVt_PVAV);
1463 SvOOK_offset(sv, delta);
1465 SvLEN_set(sv, SvLEN(sv) + delta);
1466 SvPV_set(sv, SvPVX(sv) - delta);
1467 Move(s, SvPVX(sv), SvCUR(sv)+1, char);
1468 SvFLAGS(sv) &= ~SVf_OOK;
1475 Expands the character buffer in the SV. If necessary, uses C<sv_unref> and
1476 upgrades the SV to C<SVt_PV>. Returns a pointer to the character buffer.
1477 Use the C<SvGROW> wrapper instead.
1483 Perl_sv_grow(pTHX_ register SV *const sv, register STRLEN newlen)
1487 PERL_ARGS_ASSERT_SV_GROW;
1489 if (PL_madskills && newlen >= 0x100000) {
1490 PerlIO_printf(Perl_debug_log,
1491 "Allocation too large: %"UVxf"\n", (UV)newlen);
1493 #ifdef HAS_64K_LIMIT
1494 if (newlen >= 0x10000) {
1495 PerlIO_printf(Perl_debug_log,
1496 "Allocation too large: %"UVxf"\n", (UV)newlen);
1499 #endif /* HAS_64K_LIMIT */
1502 if (SvTYPE(sv) < SVt_PV) {
1503 sv_upgrade(sv, SVt_PV);
1504 s = SvPVX_mutable(sv);
1506 else if (SvOOK(sv)) { /* pv is offset? */
1508 s = SvPVX_mutable(sv);
1509 if (newlen > SvLEN(sv))
1510 newlen += 10 * (newlen - SvCUR(sv)); /* avoid copy each time */
1511 #ifdef HAS_64K_LIMIT
1512 if (newlen >= 0x10000)
1517 s = SvPVX_mutable(sv);
1519 if (newlen > SvLEN(sv)) { /* need more room? */
1520 STRLEN minlen = SvCUR(sv);
1521 minlen += (minlen >> PERL_STRLEN_EXPAND_SHIFT) + 10;
1522 if (newlen < minlen)
1524 #ifndef Perl_safesysmalloc_size
1525 newlen = PERL_STRLEN_ROUNDUP(newlen);
1527 if (SvLEN(sv) && s) {
1528 s = (char*)saferealloc(s, newlen);
1531 s = (char*)safemalloc(newlen);
1532 if (SvPVX_const(sv) && SvCUR(sv)) {
1533 Move(SvPVX_const(sv), s, (newlen < SvCUR(sv)) ? newlen : SvCUR(sv), char);
1537 #ifdef Perl_safesysmalloc_size
1538 /* Do this here, do it once, do it right, and then we will never get
1539 called back into sv_grow() unless there really is some growing
1541 SvLEN_set(sv, Perl_safesysmalloc_size(s));
1543 SvLEN_set(sv, newlen);
1550 =for apidoc sv_setiv
1552 Copies an integer into the given SV, upgrading first if necessary.
1553 Does not handle 'set' magic. See also C<sv_setiv_mg>.
1559 Perl_sv_setiv(pTHX_ register SV *const sv, const IV i)
1563 PERL_ARGS_ASSERT_SV_SETIV;
1565 SV_CHECK_THINKFIRST_COW_DROP(sv);
1566 switch (SvTYPE(sv)) {
1569 sv_upgrade(sv, SVt_IV);
1572 sv_upgrade(sv, SVt_PVIV);
1576 if (!isGV_with_GP(sv))
1583 /* diag_listed_as: Can't coerce %s to %s in %s */
1584 Perl_croak(aTHX_ "Can't coerce %s to integer in %s", sv_reftype(sv,0),
1588 (void)SvIOK_only(sv); /* validate number */
1594 =for apidoc sv_setiv_mg
1596 Like C<sv_setiv>, but also handles 'set' magic.
1602 Perl_sv_setiv_mg(pTHX_ register SV *const sv, const IV i)
1604 PERL_ARGS_ASSERT_SV_SETIV_MG;
1611 =for apidoc sv_setuv
1613 Copies an unsigned integer into the given SV, upgrading first if necessary.
1614 Does not handle 'set' magic. See also C<sv_setuv_mg>.
1620 Perl_sv_setuv(pTHX_ register SV *const sv, const UV u)
1622 PERL_ARGS_ASSERT_SV_SETUV;
1624 /* With these two if statements:
1625 u=1.49 s=0.52 cu=72.49 cs=10.64 scripts=270 tests=20865
1628 u=1.35 s=0.47 cu=73.45 cs=11.43 scripts=270 tests=20865
1630 If you wish to remove them, please benchmark to see what the effect is
1632 if (u <= (UV)IV_MAX) {
1633 sv_setiv(sv, (IV)u);
1642 =for apidoc sv_setuv_mg
1644 Like C<sv_setuv>, but also handles 'set' magic.
1650 Perl_sv_setuv_mg(pTHX_ register SV *const sv, const UV u)
1652 PERL_ARGS_ASSERT_SV_SETUV_MG;
1659 =for apidoc sv_setnv
1661 Copies a double into the given SV, upgrading first if necessary.
1662 Does not handle 'set' magic. See also C<sv_setnv_mg>.
1668 Perl_sv_setnv(pTHX_ register SV *const sv, const NV num)
1672 PERL_ARGS_ASSERT_SV_SETNV;
1674 SV_CHECK_THINKFIRST_COW_DROP(sv);
1675 switch (SvTYPE(sv)) {
1678 sv_upgrade(sv, SVt_NV);
1682 sv_upgrade(sv, SVt_PVNV);
1686 if (!isGV_with_GP(sv))
1693 /* diag_listed_as: Can't coerce %s to %s in %s */
1694 Perl_croak(aTHX_ "Can't coerce %s to number in %s", sv_reftype(sv,0),
1699 (void)SvNOK_only(sv); /* validate number */
1704 =for apidoc sv_setnv_mg
1706 Like C<sv_setnv>, but also handles 'set' magic.
1712 Perl_sv_setnv_mg(pTHX_ register SV *const sv, const NV num)
1714 PERL_ARGS_ASSERT_SV_SETNV_MG;
1720 /* Print an "isn't numeric" warning, using a cleaned-up,
1721 * printable version of the offending string
1725 S_not_a_number(pTHX_ SV *const sv)
1732 PERL_ARGS_ASSERT_NOT_A_NUMBER;
1735 dsv = newSVpvs_flags("", SVs_TEMP);
1736 pv = sv_uni_display(dsv, sv, 10, 0);
1739 const char * const limit = tmpbuf + sizeof(tmpbuf) - 8;
1740 /* each *s can expand to 4 chars + "...\0",
1741 i.e. need room for 8 chars */
1743 const char *s = SvPVX_const(sv);
1744 const char * const end = s + SvCUR(sv);
1745 for ( ; s < end && d < limit; s++ ) {
1747 if (ch & 128 && !isPRINT_LC(ch)) {
1756 else if (ch == '\r') {
1760 else if (ch == '\f') {
1764 else if (ch == '\\') {
1768 else if (ch == '\0') {
1772 else if (isPRINT_LC(ch))
1789 Perl_warner(aTHX_ packWARN(WARN_NUMERIC),
1790 "Argument \"%s\" isn't numeric in %s", pv,
1793 Perl_warner(aTHX_ packWARN(WARN_NUMERIC),
1794 "Argument \"%s\" isn't numeric", pv);
1798 =for apidoc looks_like_number
1800 Test if the content of an SV looks like a number (or is a number).
1801 C<Inf> and C<Infinity> are treated as numbers (so will not issue a
1802 non-numeric warning), even if your atof() doesn't grok them.
1808 Perl_looks_like_number(pTHX_ SV *const sv)
1810 register const char *sbegin;
1813 PERL_ARGS_ASSERT_LOOKS_LIKE_NUMBER;
1816 sbegin = SvPVX_const(sv);
1819 else if (SvPOKp(sv))
1820 sbegin = SvPV_const(sv, len);
1822 return SvFLAGS(sv) & (SVf_NOK|SVp_NOK|SVf_IOK|SVp_IOK);
1823 return grok_number(sbegin, len, NULL);
1827 S_glob_2number(pTHX_ GV * const gv)
1829 const U32 wasfake = SvFLAGS(gv) & SVf_FAKE;
1830 SV *const buffer = sv_newmortal();
1832 PERL_ARGS_ASSERT_GLOB_2NUMBER;
1834 /* FAKE globs can get coerced, so need to turn this off temporarily if it
1837 gv_efullname3(buffer, gv, "*");
1838 SvFLAGS(gv) |= wasfake;
1840 /* We know that all GVs stringify to something that is not-a-number,
1841 so no need to test that. */
1842 if (ckWARN(WARN_NUMERIC))
1843 not_a_number(buffer);
1844 /* We just want something true to return, so that S_sv_2iuv_common
1845 can tail call us and return true. */
1849 /* Actually, ISO C leaves conversion of UV to IV undefined, but
1850 until proven guilty, assume that things are not that bad... */
1855 As 64 bit platforms often have an NV that doesn't preserve all bits of
1856 an IV (an assumption perl has been based on to date) it becomes necessary
1857 to remove the assumption that the NV always carries enough precision to
1858 recreate the IV whenever needed, and that the NV is the canonical form.
1859 Instead, IV/UV and NV need to be given equal rights. So as to not lose
1860 precision as a side effect of conversion (which would lead to insanity
1861 and the dragon(s) in t/op/numconvert.t getting very angry) the intent is
1862 1) to distinguish between IV/UV/NV slots that have cached a valid
1863 conversion where precision was lost and IV/UV/NV slots that have a
1864 valid conversion which has lost no precision
1865 2) to ensure that if a numeric conversion to one form is requested that
1866 would lose precision, the precise conversion (or differently
1867 imprecise conversion) is also performed and cached, to prevent
1868 requests for different numeric formats on the same SV causing
1869 lossy conversion chains. (lossless conversion chains are perfectly
1874 SvIOKp is true if the IV slot contains a valid value
1875 SvIOK is true only if the IV value is accurate (UV if SvIOK_UV true)
1876 SvNOKp is true if the NV slot contains a valid value
1877 SvNOK is true only if the NV value is accurate
1880 while converting from PV to NV, check to see if converting that NV to an
1881 IV(or UV) would lose accuracy over a direct conversion from PV to
1882 IV(or UV). If it would, cache both conversions, return NV, but mark
1883 SV as IOK NOKp (ie not NOK).
1885 While converting from PV to IV, check to see if converting that IV to an
1886 NV would lose accuracy over a direct conversion from PV to NV. If it
1887 would, cache both conversions, flag similarly.
1889 Before, the SV value "3.2" could become NV=3.2 IV=3 NOK, IOK quite
1890 correctly because if IV & NV were set NV *always* overruled.
1891 Now, "3.2" will become NV=3.2 IV=3 NOK, IOKp, because the flag's meaning
1892 changes - now IV and NV together means that the two are interchangeable:
1893 SvIVX == (IV) SvNVX && SvNVX == (NV) SvIVX;
1895 The benefit of this is that operations such as pp_add know that if
1896 SvIOK is true for both left and right operands, then integer addition
1897 can be used instead of floating point (for cases where the result won't
1898 overflow). Before, floating point was always used, which could lead to
1899 loss of precision compared with integer addition.
1901 * making IV and NV equal status should make maths accurate on 64 bit
1903 * may speed up maths somewhat if pp_add and friends start to use
1904 integers when possible instead of fp. (Hopefully the overhead in
1905 looking for SvIOK and checking for overflow will not outweigh the
1906 fp to integer speedup)
1907 * will slow down integer operations (callers of SvIV) on "inaccurate"
1908 values, as the change from SvIOK to SvIOKp will cause a call into
1909 sv_2iv each time rather than a macro access direct to the IV slot
1910 * should speed up number->string conversion on integers as IV is
1911 favoured when IV and NV are equally accurate
1913 ####################################################################
1914 You had better be using SvIOK_notUV if you want an IV for arithmetic:
1915 SvIOK is true if (IV or UV), so you might be getting (IV)SvUV.
1916 On the other hand, SvUOK is true iff UV.
1917 ####################################################################
1919 Your mileage will vary depending your CPU's relative fp to integer
1923 #ifndef NV_PRESERVES_UV
1924 # define IS_NUMBER_UNDERFLOW_IV 1
1925 # define IS_NUMBER_UNDERFLOW_UV 2
1926 # define IS_NUMBER_IV_AND_UV 2
1927 # define IS_NUMBER_OVERFLOW_IV 4
1928 # define IS_NUMBER_OVERFLOW_UV 5
1930 /* sv_2iuv_non_preserve(): private routine for use by sv_2iv() and sv_2uv() */
1932 /* For sv_2nv these three cases are "SvNOK and don't bother casting" */
1934 S_sv_2iuv_non_preserve(pTHX_ register SV *const sv
1942 PERL_ARGS_ASSERT_SV_2IUV_NON_PRESERVE;
1944 DEBUG_c(PerlIO_printf(Perl_debug_log,"sv_2iuv_non '%s', IV=0x%"UVxf" NV=%"NVgf" inttype=%"UVXf"\n", SvPVX_const(sv), SvIVX(sv), SvNVX(sv), (UV)numtype));
1945 if (SvNVX(sv) < (NV)IV_MIN) {
1946 (void)SvIOKp_on(sv);
1948 SvIV_set(sv, IV_MIN);
1949 return IS_NUMBER_UNDERFLOW_IV;
1951 if (SvNVX(sv) > (NV)UV_MAX) {
1952 (void)SvIOKp_on(sv);
1955 SvUV_set(sv, UV_MAX);
1956 return IS_NUMBER_OVERFLOW_UV;
1958 (void)SvIOKp_on(sv);
1960 /* Can't use strtol etc to convert this string. (See truth table in
1962 if (SvNVX(sv) <= (UV)IV_MAX) {
1963 SvIV_set(sv, I_V(SvNVX(sv)));
1964 if ((NV)(SvIVX(sv)) == SvNVX(sv)) {
1965 SvIOK_on(sv); /* Integer is precise. NOK, IOK */
1967 /* Integer is imprecise. NOK, IOKp */
1969 return SvNVX(sv) < 0 ? IS_NUMBER_UNDERFLOW_UV : IS_NUMBER_IV_AND_UV;
1972 SvUV_set(sv, U_V(SvNVX(sv)));
1973 if ((NV)(SvUVX(sv)) == SvNVX(sv)) {
1974 if (SvUVX(sv) == UV_MAX) {
1975 /* As we know that NVs don't preserve UVs, UV_MAX cannot
1976 possibly be preserved by NV. Hence, it must be overflow.
1978 return IS_NUMBER_OVERFLOW_UV;
1980 SvIOK_on(sv); /* Integer is precise. NOK, UOK */
1982 /* Integer is imprecise. NOK, IOKp */
1984 return IS_NUMBER_OVERFLOW_IV;
1986 #endif /* !NV_PRESERVES_UV*/
1989 S_sv_2iuv_common(pTHX_ SV *const sv)
1993 PERL_ARGS_ASSERT_SV_2IUV_COMMON;
1996 /* erm. not sure. *should* never get NOKp (without NOK) from sv_2nv
1997 * without also getting a cached IV/UV from it at the same time
1998 * (ie PV->NV conversion should detect loss of accuracy and cache
1999 * IV or UV at same time to avoid this. */
2000 /* IV-over-UV optimisation - choose to cache IV if possible */
2002 if (SvTYPE(sv) == SVt_NV)
2003 sv_upgrade(sv, SVt_PVNV);
2005 (void)SvIOKp_on(sv); /* Must do this first, to clear any SvOOK */
2006 /* < not <= as for NV doesn't preserve UV, ((NV)IV_MAX+1) will almost
2007 certainly cast into the IV range at IV_MAX, whereas the correct
2008 answer is the UV IV_MAX +1. Hence < ensures that dodgy boundary
2010 #if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan)
2011 if (Perl_isnan(SvNVX(sv))) {
2017 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2018 SvIV_set(sv, I_V(SvNVX(sv)));
2019 if (SvNVX(sv) == (NV) SvIVX(sv)
2020 #ifndef NV_PRESERVES_UV
2021 && (((UV)1 << NV_PRESERVES_UV_BITS) >
2022 (UV)(SvIVX(sv) > 0 ? SvIVX(sv) : -SvIVX(sv)))
2023 /* Don't flag it as "accurately an integer" if the number
2024 came from a (by definition imprecise) NV operation, and
2025 we're outside the range of NV integer precision */
2029 SvIOK_on(sv); /* Can this go wrong with rounding? NWC */
2031 /* scalar has trailing garbage, eg "42a" */
2033 DEBUG_c(PerlIO_printf(Perl_debug_log,
2034 "0x%"UVxf" iv(%"NVgf" => %"IVdf") (precise)\n",
2040 /* IV not precise. No need to convert from PV, as NV
2041 conversion would already have cached IV if it detected
2042 that PV->IV would be better than PV->NV->IV
2043 flags already correct - don't set public IOK. */
2044 DEBUG_c(PerlIO_printf(Perl_debug_log,
2045 "0x%"UVxf" iv(%"NVgf" => %"IVdf") (imprecise)\n",
2050 /* Can the above go wrong if SvIVX == IV_MIN and SvNVX < IV_MIN,
2051 but the cast (NV)IV_MIN rounds to a the value less (more
2052 negative) than IV_MIN which happens to be equal to SvNVX ??
2053 Analogous to 0xFFFFFFFFFFFFFFFF rounding up to NV (2**64) and
2054 NV rounding back to 0xFFFFFFFFFFFFFFFF, so UVX == UV(NVX) and
2055 (NV)UVX == NVX are both true, but the values differ. :-(
2056 Hopefully for 2s complement IV_MIN is something like
2057 0x8000000000000000 which will be exact. NWC */
2060 SvUV_set(sv, U_V(SvNVX(sv)));
2062 (SvNVX(sv) == (NV) SvUVX(sv))
2063 #ifndef NV_PRESERVES_UV
2064 /* Make sure it's not 0xFFFFFFFFFFFFFFFF */
2065 /*&& (SvUVX(sv) != UV_MAX) irrelevant with code below */
2066 && (((UV)1 << NV_PRESERVES_UV_BITS) > SvUVX(sv))
2067 /* Don't flag it as "accurately an integer" if the number
2068 came from a (by definition imprecise) NV operation, and
2069 we're outside the range of NV integer precision */
2075 DEBUG_c(PerlIO_printf(Perl_debug_log,
2076 "0x%"UVxf" 2iv(%"UVuf" => %"IVdf") (as unsigned)\n",
2082 else if (SvPOKp(sv) && SvLEN(sv)) {
2084 const int numtype = grok_number(SvPVX_const(sv), SvCUR(sv), &value);
2085 /* We want to avoid a possible problem when we cache an IV/ a UV which
2086 may be later translated to an NV, and the resulting NV is not
2087 the same as the direct translation of the initial string
2088 (eg 123.456 can shortcut to the IV 123 with atol(), but we must
2089 be careful to ensure that the value with the .456 is around if the
2090 NV value is requested in the future).
2092 This means that if we cache such an IV/a UV, we need to cache the
2093 NV as well. Moreover, we trade speed for space, and do not
2094 cache the NV if we are sure it's not needed.
2097 /* SVt_PVNV is one higher than SVt_PVIV, hence this order */
2098 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2099 == IS_NUMBER_IN_UV) {
2100 /* It's definitely an integer, only upgrade to PVIV */
2101 if (SvTYPE(sv) < SVt_PVIV)
2102 sv_upgrade(sv, SVt_PVIV);
2104 } else if (SvTYPE(sv) < SVt_PVNV)
2105 sv_upgrade(sv, SVt_PVNV);
2107 /* If NVs preserve UVs then we only use the UV value if we know that
2108 we aren't going to call atof() below. If NVs don't preserve UVs
2109 then the value returned may have more precision than atof() will
2110 return, even though value isn't perfectly accurate. */
2111 if ((numtype & (IS_NUMBER_IN_UV
2112 #ifdef NV_PRESERVES_UV
2115 )) == IS_NUMBER_IN_UV) {
2116 /* This won't turn off the public IOK flag if it was set above */
2117 (void)SvIOKp_on(sv);
2119 if (!(numtype & IS_NUMBER_NEG)) {
2121 if (value <= (UV)IV_MAX) {
2122 SvIV_set(sv, (IV)value);
2124 /* it didn't overflow, and it was positive. */
2125 SvUV_set(sv, value);
2129 /* 2s complement assumption */
2130 if (value <= (UV)IV_MIN) {
2131 SvIV_set(sv, -(IV)value);
2133 /* Too negative for an IV. This is a double upgrade, but
2134 I'm assuming it will be rare. */
2135 if (SvTYPE(sv) < SVt_PVNV)
2136 sv_upgrade(sv, SVt_PVNV);
2140 SvNV_set(sv, -(NV)value);
2141 SvIV_set(sv, IV_MIN);
2145 /* For !NV_PRESERVES_UV and IS_NUMBER_IN_UV and IS_NUMBER_NOT_INT we
2146 will be in the previous block to set the IV slot, and the next
2147 block to set the NV slot. So no else here. */
2149 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2150 != IS_NUMBER_IN_UV) {
2151 /* It wasn't an (integer that doesn't overflow the UV). */
2152 SvNV_set(sv, Atof(SvPVX_const(sv)));
2154 if (! numtype && ckWARN(WARN_NUMERIC))
2157 #if defined(USE_LONG_DOUBLE)
2158 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2iv(%" PERL_PRIgldbl ")\n",
2159 PTR2UV(sv), SvNVX(sv)));
2161 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2iv(%"NVgf")\n",
2162 PTR2UV(sv), SvNVX(sv)));
2165 #ifdef NV_PRESERVES_UV
2166 (void)SvIOKp_on(sv);
2168 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2169 SvIV_set(sv, I_V(SvNVX(sv)));
2170 if ((NV)(SvIVX(sv)) == SvNVX(sv)) {
2173 NOOP; /* Integer is imprecise. NOK, IOKp */
2175 /* UV will not work better than IV */
2177 if (SvNVX(sv) > (NV)UV_MAX) {
2179 /* Integer is inaccurate. NOK, IOKp, is UV */
2180 SvUV_set(sv, UV_MAX);
2182 SvUV_set(sv, U_V(SvNVX(sv)));
2183 /* 0xFFFFFFFFFFFFFFFF not an issue in here, NVs
2184 NV preservse UV so can do correct comparison. */
2185 if ((NV)(SvUVX(sv)) == SvNVX(sv)) {
2188 NOOP; /* Integer is imprecise. NOK, IOKp, is UV */
2193 #else /* NV_PRESERVES_UV */
2194 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2195 == (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT)) {
2196 /* The IV/UV slot will have been set from value returned by
2197 grok_number above. The NV slot has just been set using
2200 assert (SvIOKp(sv));
2202 if (((UV)1 << NV_PRESERVES_UV_BITS) >
2203 U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))) {
2204 /* Small enough to preserve all bits. */
2205 (void)SvIOKp_on(sv);
2207 SvIV_set(sv, I_V(SvNVX(sv)));
2208 if ((NV)(SvIVX(sv)) == SvNVX(sv))
2210 /* Assumption: first non-preserved integer is < IV_MAX,
2211 this NV is in the preserved range, therefore: */
2212 if (!(U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))
2214 Perl_croak(aTHX_ "sv_2iv assumed (U_V(fabs((double)SvNVX(sv))) < (UV)IV_MAX) but SvNVX(sv)=%"NVgf" U_V is 0x%"UVxf", IV_MAX is 0x%"UVxf"\n", SvNVX(sv), U_V(SvNVX(sv)), (UV)IV_MAX);
2218 0 0 already failed to read UV.
2219 0 1 already failed to read UV.
2220 1 0 you won't get here in this case. IV/UV
2221 slot set, public IOK, Atof() unneeded.
2222 1 1 already read UV.
2223 so there's no point in sv_2iuv_non_preserve() attempting
2224 to use atol, strtol, strtoul etc. */
2226 sv_2iuv_non_preserve (sv, numtype);
2228 sv_2iuv_non_preserve (sv);
2232 #endif /* NV_PRESERVES_UV */
2233 /* It might be more code efficient to go through the entire logic above
2234 and conditionally set with SvIOKp_on() rather than SvIOK(), but it
2235 gets complex and potentially buggy, so more programmer efficient
2236 to do it this way, by turning off the public flags: */
2238 SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK);
2242 if (isGV_with_GP(sv))
2243 return glob_2number(MUTABLE_GV(sv));
2245 if (!(SvFLAGS(sv) & SVs_PADTMP)) {
2246 if (!PL_localizing && ckWARN(WARN_UNINITIALIZED))
2249 if (SvTYPE(sv) < SVt_IV)
2250 /* Typically the caller expects that sv_any is not NULL now. */
2251 sv_upgrade(sv, SVt_IV);
2252 /* Return 0 from the caller. */
2259 =for apidoc sv_2iv_flags
2261 Return the integer value of an SV, doing any necessary string
2262 conversion. If flags includes SV_GMAGIC, does an mg_get() first.
2263 Normally used via the C<SvIV(sv)> and C<SvIVx(sv)> macros.
2269 Perl_sv_2iv_flags(pTHX_ register SV *const sv, const I32 flags)
2274 if (SvGMAGICAL(sv) || (SvTYPE(sv) == SVt_PVGV && SvVALID(sv))) {
2275 /* FBMs use the same flag bit as SVf_IVisUV, so must let them
2276 cache IVs just in case. In practice it seems that they never
2277 actually anywhere accessible by user Perl code, let alone get used
2278 in anything other than a string context. */
2279 if (flags & SV_GMAGIC)
2284 return I_V(SvNVX(sv));
2286 if (SvPOKp(sv) && SvLEN(sv)) {
2289 = grok_number(SvPVX_const(sv), SvCUR(sv), &value);
2291 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2292 == IS_NUMBER_IN_UV) {
2293 /* It's definitely an integer */
2294 if (numtype & IS_NUMBER_NEG) {
2295 if (value < (UV)IV_MIN)
2298 if (value < (UV)IV_MAX)
2303 if (ckWARN(WARN_NUMERIC))
2306 return I_V(Atof(SvPVX_const(sv)));
2311 assert(SvTYPE(sv) >= SVt_PVMG);
2312 /* This falls through to the report_uninit inside S_sv_2iuv_common. */
2313 } else if (SvTHINKFIRST(sv)) {
2318 if (flags & SV_SKIP_OVERLOAD)
2320 tmpstr = AMG_CALLunary(sv, numer_amg);
2321 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2322 return SvIV(tmpstr);
2325 return PTR2IV(SvRV(sv));
2328 sv_force_normal_flags(sv, 0);
2330 if (SvREADONLY(sv) && !SvOK(sv)) {
2331 if (ckWARN(WARN_UNINITIALIZED))
2337 if (S_sv_2iuv_common(aTHX_ sv))
2340 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2iv(%"IVdf")\n",
2341 PTR2UV(sv),SvIVX(sv)));
2342 return SvIsUV(sv) ? (IV)SvUVX(sv) : SvIVX(sv);
2346 =for apidoc sv_2uv_flags
2348 Return the unsigned integer value of an SV, doing any necessary string
2349 conversion. If flags includes SV_GMAGIC, does an mg_get() first.
2350 Normally used via the C<SvUV(sv)> and C<SvUVx(sv)> macros.
2356 Perl_sv_2uv_flags(pTHX_ register SV *const sv, const I32 flags)
2361 if (SvGMAGICAL(sv) || (SvTYPE(sv) == SVt_PVGV && SvVALID(sv))) {
2362 /* FBMs use the same flag bit as SVf_IVisUV, so must let them
2363 cache IVs just in case. */
2364 if (flags & SV_GMAGIC)
2369 return U_V(SvNVX(sv));
2370 if (SvPOKp(sv) && SvLEN(sv)) {
2373 = grok_number(SvPVX_const(sv), SvCUR(sv), &value);
2375 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2376 == IS_NUMBER_IN_UV) {
2377 /* It's definitely an integer */
2378 if (!(numtype & IS_NUMBER_NEG))
2382 if (ckWARN(WARN_NUMERIC))
2385 return U_V(Atof(SvPVX_const(sv)));
2390 assert(SvTYPE(sv) >= SVt_PVMG);
2391 /* This falls through to the report_uninit inside S_sv_2iuv_common. */
2392 } else if (SvTHINKFIRST(sv)) {
2397 if (flags & SV_SKIP_OVERLOAD)
2399 tmpstr = AMG_CALLunary(sv, numer_amg);
2400 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2401 return SvUV(tmpstr);
2404 return PTR2UV(SvRV(sv));
2407 sv_force_normal_flags(sv, 0);
2409 if (SvREADONLY(sv) && !SvOK(sv)) {
2410 if (ckWARN(WARN_UNINITIALIZED))
2416 if (S_sv_2iuv_common(aTHX_ sv))
2420 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2uv(%"UVuf")\n",
2421 PTR2UV(sv),SvUVX(sv)));
2422 return SvIsUV(sv) ? SvUVX(sv) : (UV)SvIVX(sv);
2426 =for apidoc sv_2nv_flags
2428 Return the num value of an SV, doing any necessary string or integer
2429 conversion. If flags includes SV_GMAGIC, does an mg_get() first.
2430 Normally used via the C<SvNV(sv)> and C<SvNVx(sv)> macros.
2436 Perl_sv_2nv_flags(pTHX_ register SV *const sv, const I32 flags)
2441 if (SvGMAGICAL(sv) || (SvTYPE(sv) == SVt_PVGV && SvVALID(sv))) {
2442 /* FBMs use the same flag bit as SVf_IVisUV, so must let them
2443 cache IVs just in case. */
2444 if (flags & SV_GMAGIC)
2448 if ((SvPOKp(sv) && SvLEN(sv)) && !SvIOKp(sv)) {
2449 if (!SvIOKp(sv) && ckWARN(WARN_NUMERIC) &&
2450 !grok_number(SvPVX_const(sv), SvCUR(sv), NULL))
2452 return Atof(SvPVX_const(sv));
2456 return (NV)SvUVX(sv);
2458 return (NV)SvIVX(sv);
2463 assert(SvTYPE(sv) >= SVt_PVMG);
2464 /* This falls through to the report_uninit near the end of the
2466 } else if (SvTHINKFIRST(sv)) {
2471 if (flags & SV_SKIP_OVERLOAD)
2473 tmpstr = AMG_CALLunary(sv, numer_amg);
2474 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2475 return SvNV(tmpstr);
2478 return PTR2NV(SvRV(sv));
2481 sv_force_normal_flags(sv, 0);
2483 if (SvREADONLY(sv) && !SvOK(sv)) {
2484 if (ckWARN(WARN_UNINITIALIZED))
2489 if (SvTYPE(sv) < SVt_NV) {
2490 /* The logic to use SVt_PVNV if necessary is in sv_upgrade. */
2491 sv_upgrade(sv, SVt_NV);
2492 #ifdef USE_LONG_DOUBLE
2494 STORE_NUMERIC_LOCAL_SET_STANDARD();
2495 PerlIO_printf(Perl_debug_log,
2496 "0x%"UVxf" num(%" PERL_PRIgldbl ")\n",
2497 PTR2UV(sv), SvNVX(sv));
2498 RESTORE_NUMERIC_LOCAL();
2502 STORE_NUMERIC_LOCAL_SET_STANDARD();
2503 PerlIO_printf(Perl_debug_log, "0x%"UVxf" num(%"NVgf")\n",
2504 PTR2UV(sv), SvNVX(sv));
2505 RESTORE_NUMERIC_LOCAL();
2509 else if (SvTYPE(sv) < SVt_PVNV)
2510 sv_upgrade(sv, SVt_PVNV);
2515 SvNV_set(sv, SvIsUV(sv) ? (NV)SvUVX(sv) : (NV)SvIVX(sv));
2516 #ifdef NV_PRESERVES_UV
2522 /* Only set the public NV OK flag if this NV preserves the IV */
2523 /* Check it's not 0xFFFFFFFFFFFFFFFF */
2525 SvIsUV(sv) ? ((SvUVX(sv) != UV_MAX)&&(SvUVX(sv) == U_V(SvNVX(sv))))
2526 : (SvIVX(sv) == I_V(SvNVX(sv))))
2532 else if (SvPOKp(sv) && SvLEN(sv)) {
2534 const int numtype = grok_number(SvPVX_const(sv), SvCUR(sv), &value);
2535 if (!SvIOKp(sv) && !numtype && ckWARN(WARN_NUMERIC))
2537 #ifdef NV_PRESERVES_UV
2538 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2539 == IS_NUMBER_IN_UV) {
2540 /* It's definitely an integer */
2541 SvNV_set(sv, (numtype & IS_NUMBER_NEG) ? -(NV)value : (NV)value);
2543 SvNV_set(sv, Atof(SvPVX_const(sv)));
2549 SvNV_set(sv, Atof(SvPVX_const(sv)));
2550 /* Only set the public NV OK flag if this NV preserves the value in
2551 the PV at least as well as an IV/UV would.
2552 Not sure how to do this 100% reliably. */
2553 /* if that shift count is out of range then Configure's test is
2554 wonky. We shouldn't be in here with NV_PRESERVES_UV_BITS ==
2556 if (((UV)1 << NV_PRESERVES_UV_BITS) >
2557 U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))) {
2558 SvNOK_on(sv); /* Definitely small enough to preserve all bits */
2559 } else if (!(numtype & IS_NUMBER_IN_UV)) {
2560 /* Can't use strtol etc to convert this string, so don't try.
2561 sv_2iv and sv_2uv will use the NV to convert, not the PV. */
2564 /* value has been set. It may not be precise. */
2565 if ((numtype & IS_NUMBER_NEG) && (value > (UV)IV_MIN)) {
2566 /* 2s complement assumption for (UV)IV_MIN */
2567 SvNOK_on(sv); /* Integer is too negative. */
2572 if (numtype & IS_NUMBER_NEG) {
2573 SvIV_set(sv, -(IV)value);
2574 } else if (value <= (UV)IV_MAX) {
2575 SvIV_set(sv, (IV)value);
2577 SvUV_set(sv, value);
2581 if (numtype & IS_NUMBER_NOT_INT) {
2582 /* I believe that even if the original PV had decimals,
2583 they are lost beyond the limit of the FP precision.
2584 However, neither is canonical, so both only get p
2585 flags. NWC, 2000/11/25 */
2586 /* Both already have p flags, so do nothing */
2588 const NV nv = SvNVX(sv);
2589 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2590 if (SvIVX(sv) == I_V(nv)) {
2593 /* It had no "." so it must be integer. */
2597 /* between IV_MAX and NV(UV_MAX).
2598 Could be slightly > UV_MAX */
2600 if (numtype & IS_NUMBER_NOT_INT) {
2601 /* UV and NV both imprecise. */
2603 const UV nv_as_uv = U_V(nv);
2605 if (value == nv_as_uv && SvUVX(sv) != UV_MAX) {
2614 /* It might be more code efficient to go through the entire logic above
2615 and conditionally set with SvNOKp_on() rather than SvNOK(), but it
2616 gets complex and potentially buggy, so more programmer efficient
2617 to do it this way, by turning off the public flags: */
2619 SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK);
2620 #endif /* NV_PRESERVES_UV */
2623 if (isGV_with_GP(sv)) {
2624 glob_2number(MUTABLE_GV(sv));
2628 if (!PL_localizing && !(SvFLAGS(sv) & SVs_PADTMP) && ckWARN(WARN_UNINITIALIZED))
2630 assert (SvTYPE(sv) >= SVt_NV);
2631 /* Typically the caller expects that sv_any is not NULL now. */
2632 /* XXX Ilya implies that this is a bug in callers that assume this
2633 and ideally should be fixed. */
2636 #if defined(USE_LONG_DOUBLE)
2638 STORE_NUMERIC_LOCAL_SET_STANDARD();
2639 PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2nv(%" PERL_PRIgldbl ")\n",
2640 PTR2UV(sv), SvNVX(sv));
2641 RESTORE_NUMERIC_LOCAL();
2645 STORE_NUMERIC_LOCAL_SET_STANDARD();
2646 PerlIO_printf(Perl_debug_log, "0x%"UVxf" 1nv(%"NVgf")\n",
2647 PTR2UV(sv), SvNVX(sv));
2648 RESTORE_NUMERIC_LOCAL();
2657 Return an SV with the numeric value of the source SV, doing any necessary
2658 reference or overload conversion. You must use the C<SvNUM(sv)> macro to
2659 access this function.
2665 Perl_sv_2num(pTHX_ register SV *const sv)
2667 PERL_ARGS_ASSERT_SV_2NUM;
2672 SV * const tmpsv = AMG_CALLunary(sv, numer_amg);
2673 TAINT_IF(tmpsv && SvTAINTED(tmpsv));
2674 if (tmpsv && (!SvROK(tmpsv) || (SvRV(tmpsv) != SvRV(sv))))
2675 return sv_2num(tmpsv);
2677 return sv_2mortal(newSVuv(PTR2UV(SvRV(sv))));
2680 /* uiv_2buf(): private routine for use by sv_2pv_flags(): print an IV or
2681 * UV as a string towards the end of buf, and return pointers to start and
2684 * We assume that buf is at least TYPE_CHARS(UV) long.
2688 S_uiv_2buf(char *const buf, const IV iv, UV uv, const int is_uv, char **const peob)
2690 char *ptr = buf + TYPE_CHARS(UV);
2691 char * const ebuf = ptr;
2694 PERL_ARGS_ASSERT_UIV_2BUF;
2706 *--ptr = '0' + (char)(uv % 10);
2715 =for apidoc sv_2pv_flags
2717 Returns a pointer to the string value of an SV, and sets *lp to its length.
2718 If flags includes SV_GMAGIC, does an mg_get() first. Coerces sv to a string
2720 Normally invoked via the C<SvPV_flags> macro. C<sv_2pv()> and C<sv_2pv_nomg>
2721 usually end up here too.
2727 Perl_sv_2pv_flags(pTHX_ register SV *const sv, STRLEN *const lp, const I32 flags)
2737 if (SvGMAGICAL(sv)) {
2738 if (flags & SV_GMAGIC)
2743 if (flags & SV_MUTABLE_RETURN)
2744 return SvPVX_mutable(sv);
2745 if (flags & SV_CONST_RETURN)
2746 return (char *)SvPVX_const(sv);
2749 if (SvIOKp(sv) || SvNOKp(sv)) {
2750 char tbuf[64]; /* Must fit sprintf/Gconvert of longest IV/NV */
2755 ? my_snprintf(tbuf, sizeof(tbuf), "%"UVuf, (UV)SvUVX(sv))
2756 : my_snprintf(tbuf, sizeof(tbuf), "%"IVdf, (IV)SvIVX(sv));
2757 } else if(SvNVX(sv) == 0.0) {
2762 Gconvert(SvNVX(sv), NV_DIG, 0, tbuf);
2769 SvUPGRADE(sv, SVt_PV);
2772 s = SvGROW_mutable(sv, len + 1);
2775 return (char*)memcpy(s, tbuf, len + 1);
2781 assert(SvTYPE(sv) >= SVt_PVMG);
2782 /* This falls through to the report_uninit near the end of the
2784 } else if (SvTHINKFIRST(sv)) {
2789 if (flags & SV_SKIP_OVERLOAD)
2791 tmpstr = AMG_CALLunary(sv, string_amg);
2792 TAINT_IF(tmpstr && SvTAINTED(tmpstr));
2793 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2795 /* char *pv = lp ? SvPV(tmpstr, *lp) : SvPV_nolen(tmpstr);
2799 if ((SvFLAGS(tmpstr) & (SVf_POK)) == SVf_POK) {
2800 if (flags & SV_CONST_RETURN) {
2801 pv = (char *) SvPVX_const(tmpstr);
2803 pv = (flags & SV_MUTABLE_RETURN)
2804 ? SvPVX_mutable(tmpstr) : SvPVX(tmpstr);
2807 *lp = SvCUR(tmpstr);
2809 pv = sv_2pv_flags(tmpstr, lp, flags);
2822 SV *const referent = SvRV(sv);
2826 retval = buffer = savepvn("NULLREF", len);
2827 } else if (SvTYPE(referent) == SVt_REGEXP) {
2828 REGEXP * const re = (REGEXP *)MUTABLE_PTR(referent);
2833 /* If the regex is UTF-8 we want the containing scalar to
2834 have an UTF-8 flag too */
2840 if ((seen_evals = RX_SEEN_EVALS(re)))
2841 PL_reginterp_cnt += seen_evals;
2844 *lp = RX_WRAPLEN(re);
2846 return RX_WRAPPED(re);
2848 const char *const typestr = sv_reftype(referent, 0);
2849 const STRLEN typelen = strlen(typestr);
2850 UV addr = PTR2UV(referent);
2851 const char *stashname = NULL;
2852 STRLEN stashnamelen = 0; /* hush, gcc */
2853 const char *buffer_end;
2855 if (SvOBJECT(referent)) {
2856 const HEK *const name = HvNAME_HEK(SvSTASH(referent));
2859 stashname = HEK_KEY(name);
2860 stashnamelen = HEK_LEN(name);
2862 if (HEK_UTF8(name)) {
2868 stashname = "__ANON__";
2871 len = stashnamelen + 1 /* = */ + typelen + 3 /* (0x */
2872 + 2 * sizeof(UV) + 2 /* )\0 */;
2874 len = typelen + 3 /* (0x */
2875 + 2 * sizeof(UV) + 2 /* )\0 */;
2878 Newx(buffer, len, char);
2879 buffer_end = retval = buffer + len;
2881 /* Working backwards */
2885 *--retval = PL_hexdigit[addr & 15];
2886 } while (addr >>= 4);
2892 memcpy(retval, typestr, typelen);
2896 retval -= stashnamelen;
2897 memcpy(retval, stashname, stashnamelen);
2899 /* retval may not necessarily have reached the start of the
2901 assert (retval >= buffer);
2903 len = buffer_end - retval - 1; /* -1 for that \0 */
2911 if (SvREADONLY(sv) && !SvOK(sv)) {
2914 if (flags & SV_UNDEF_RETURNS_NULL)
2916 if (ckWARN(WARN_UNINITIALIZED))
2921 if (SvIOK(sv) || ((SvIOKp(sv) && !SvNOKp(sv)))) {
2922 /* I'm assuming that if both IV and NV are equally valid then
2923 converting the IV is going to be more efficient */
2924 const U32 isUIOK = SvIsUV(sv);
2925 char buf[TYPE_CHARS(UV)];
2929 if (SvTYPE(sv) < SVt_PVIV)
2930 sv_upgrade(sv, SVt_PVIV);
2931 ptr = uiv_2buf(buf, SvIVX(sv), SvUVX(sv), isUIOK, &ebuf);
2933 /* inlined from sv_setpvn */
2934 s = SvGROW_mutable(sv, len + 1);
2935 Move(ptr, s, len, char);
2939 else if (SvNOKp(sv)) {
2940 if (SvTYPE(sv) < SVt_PVNV)
2941 sv_upgrade(sv, SVt_PVNV);
2942 if (SvNVX(sv) == 0.0) {
2943 s = SvGROW_mutable(sv, 2);
2948 /* The +20 is pure guesswork. Configure test needed. --jhi */
2949 s = SvGROW_mutable(sv, NV_DIG + 20);
2950 /* some Xenix systems wipe out errno here */
2951 Gconvert(SvNVX(sv), NV_DIG, 0, s);
2961 if (isGV_with_GP(sv)) {
2962 GV *const gv = MUTABLE_GV(sv);
2963 const U32 wasfake = SvFLAGS(gv) & SVf_FAKE;
2964 SV *const buffer = sv_newmortal();
2966 /* FAKE globs can get coerced, so need to turn this off temporarily
2969 gv_efullname3(buffer, gv, "*");
2970 SvFLAGS(gv) |= wasfake;
2972 if (SvPOK(buffer)) {
2974 *lp = SvCUR(buffer);
2976 return SvPVX(buffer);
2987 if (flags & SV_UNDEF_RETURNS_NULL)
2989 if (!PL_localizing && !(SvFLAGS(sv) & SVs_PADTMP) && ckWARN(WARN_UNINITIALIZED))
2991 if (SvTYPE(sv) < SVt_PV)
2992 /* Typically the caller expects that sv_any is not NULL now. */
2993 sv_upgrade(sv, SVt_PV);
2997 const STRLEN len = s - SvPVX_const(sv);
3003 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2pv(%s)\n",
3004 PTR2UV(sv),SvPVX_const(sv)));
3005 if (flags & SV_CONST_RETURN)
3006 return (char *)SvPVX_const(sv);
3007 if (flags & SV_MUTABLE_RETURN)
3008 return SvPVX_mutable(sv);
3013 =for apidoc sv_copypv
3015 Copies a stringified representation of the source SV into the
3016 destination SV. Automatically performs any necessary mg_get and
3017 coercion of numeric values into strings. Guaranteed to preserve
3018 UTF8 flag even from overloaded objects. Similar in nature to
3019 sv_2pv[_flags] but operates directly on an SV instead of just the
3020 string. Mostly uses sv_2pv_flags to do its work, except when that
3021 would lose the UTF-8'ness of the PV.
3027 Perl_sv_copypv(pTHX_ SV *const dsv, register SV *const ssv)
3030 const char * const s = SvPV_const(ssv,len);
3032 PERL_ARGS_ASSERT_SV_COPYPV;
3034 sv_setpvn(dsv,s,len);
3042 =for apidoc sv_2pvbyte
3044 Return a pointer to the byte-encoded representation of the SV, and set *lp
3045 to its length. May cause the SV to be downgraded from UTF-8 as a
3048 Usually accessed via the C<SvPVbyte> macro.
3054 Perl_sv_2pvbyte(pTHX_ register SV *const sv, STRLEN *const lp)
3056 PERL_ARGS_ASSERT_SV_2PVBYTE;
3059 sv_utf8_downgrade(sv,0);
3060 return lp ? SvPV_nomg(sv,*lp) : SvPV_nomg_nolen(sv);
3064 =for apidoc sv_2pvutf8
3066 Return a pointer to the UTF-8-encoded representation of the SV, and set *lp
3067 to its length. May cause the SV to be upgraded to UTF-8 as a side-effect.
3069 Usually accessed via the C<SvPVutf8> macro.
3075 Perl_sv_2pvutf8(pTHX_ register SV *const sv, STRLEN *const lp)
3077 PERL_ARGS_ASSERT_SV_2PVUTF8;
3079 sv_utf8_upgrade(sv);
3080 return lp ? SvPV(sv,*lp) : SvPV_nolen(sv);
3085 =for apidoc sv_2bool
3087 This macro is only used by sv_true() or its macro equivalent, and only if
3088 the latter's argument is neither SvPOK, SvIOK nor SvNOK.
3089 It calls sv_2bool_flags with the SV_GMAGIC flag.
3091 =for apidoc sv_2bool_flags
3093 This function is only used by sv_true() and friends, and only if
3094 the latter's argument is neither SvPOK, SvIOK nor SvNOK. If the flags
3095 contain SV_GMAGIC, then it does an mg_get() first.
3102 Perl_sv_2bool_flags(pTHX_ register SV *const sv, const I32 flags)
3106 PERL_ARGS_ASSERT_SV_2BOOL_FLAGS;
3108 if(flags & SV_GMAGIC) SvGETMAGIC(sv);
3114 SV * const tmpsv = AMG_CALLunary(sv, bool__amg);
3115 if (tmpsv && (!SvROK(tmpsv) || (SvRV(tmpsv) != SvRV(sv))))
3116 return cBOOL(SvTRUE(tmpsv));
3118 return SvRV(sv) != 0;
3121 register XPV* const Xpvtmp = (XPV*)SvANY(sv);
3123 (*sv->sv_u.svu_pv > '0' ||
3124 Xpvtmp->xpv_cur > 1 ||
3125 (Xpvtmp->xpv_cur && *sv->sv_u.svu_pv != '0')))
3132 return SvIVX(sv) != 0;
3135 return SvNVX(sv) != 0.0;
3137 if (isGV_with_GP(sv))
3147 =for apidoc sv_utf8_upgrade
3149 Converts the PV of an SV to its UTF-8-encoded form.
3150 Forces the SV to string form if it is not already.
3151 Will C<mg_get> on C<sv> if appropriate.
3152 Always sets the SvUTF8 flag to avoid future validity checks even
3153 if the whole string is the same in UTF-8 as not.
3154 Returns the number of bytes in the converted string
3156 This is not as a general purpose byte encoding to Unicode interface:
3157 use the Encode extension for that.
3159 =for apidoc sv_utf8_upgrade_nomg
3161 Like sv_utf8_upgrade, but doesn't do magic on C<sv>
3163 =for apidoc sv_utf8_upgrade_flags
3165 Converts the PV of an SV to its UTF-8-encoded form.
3166 Forces the SV to string form if it is not already.
3167 Always sets the SvUTF8 flag to avoid future validity checks even
3168 if all the bytes are invariant in UTF-8. If C<flags> has C<SV_GMAGIC> bit set,
3169 will C<mg_get> on C<sv> if appropriate, else not.
3170 Returns the number of bytes in the converted string
3171 C<sv_utf8_upgrade> and
3172 C<sv_utf8_upgrade_nomg> are implemented in terms of this function.
3174 This is not as a general purpose byte encoding to Unicode interface:
3175 use the Encode extension for that.
3179 The grow version is currently not externally documented. It adds a parameter,
3180 extra, which is the number of unused bytes the string of 'sv' is guaranteed to
3181 have free after it upon return. This allows the caller to reserve extra space
3182 that it intends to fill, to avoid extra grows.
3184 Also externally undocumented for the moment is the flag SV_FORCE_UTF8_UPGRADE,
3185 which can be used to tell this function to not first check to see if there are
3186 any characters that are different in UTF-8 (variant characters) which would
3187 force it to allocate a new string to sv, but to assume there are. Typically
3188 this flag is used by a routine that has already parsed the string to find that
3189 there are such characters, and passes this information on so that the work
3190 doesn't have to be repeated.
3192 (One might think that the calling routine could pass in the position of the
3193 first such variant, so it wouldn't have to be found again. But that is not the
3194 case, because typically when the caller is likely to use this flag, it won't be
3195 calling this routine unless it finds something that won't fit into a byte.
3196 Otherwise it tries to not upgrade and just use bytes. But some things that
3197 do fit into a byte are variants in utf8, and the caller may not have been
3198 keeping track of these.)
3200 If the routine itself changes the string, it adds a trailing NUL. Such a NUL
3201 isn't guaranteed due to having other routines do the work in some input cases,
3202 or if the input is already flagged as being in utf8.
3204 The speed of this could perhaps be improved for many cases if someone wanted to
3205 write a fast function that counts the number of variant characters in a string,
3206 especially if it could return the position of the first one.
3211 Perl_sv_utf8_upgrade_flags_grow(pTHX_ register SV *const sv, const I32 flags, STRLEN extra)
3215 PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS_GROW;
3217 if (sv == &PL_sv_undef)
3221 if (SvREADONLY(sv) && (SvPOKp(sv) || SvIOKp(sv) || SvNOKp(sv))) {
3222 (void) sv_2pv_flags(sv,&len, flags);
3224 if (extra) SvGROW(sv, SvCUR(sv) + extra);
3228 (void) SvPV_force_flags(sv,len,flags & SV_GMAGIC);
3233 if (extra) SvGROW(sv, SvCUR(sv) + extra);
3238 sv_force_normal_flags(sv, 0);
3241 if (PL_encoding && !(flags & SV_UTF8_NO_ENCODING)) {
3242 sv_recode_to_utf8(sv, PL_encoding);
3243 if (extra) SvGROW(sv, SvCUR(sv) + extra);
3247 if (SvCUR(sv) == 0) {
3248 if (extra) SvGROW(sv, extra);
3249 } else { /* Assume Latin-1/EBCDIC */
3250 /* This function could be much more efficient if we
3251 * had a FLAG in SVs to signal if there are any variant
3252 * chars in the PV. Given that there isn't such a flag
3253 * make the loop as fast as possible (although there are certainly ways
3254 * to speed this up, eg. through vectorization) */
3255 U8 * s = (U8 *) SvPVX_const(sv);
3256 U8 * e = (U8 *) SvEND(sv);
3258 STRLEN two_byte_count = 0;
3260 if (flags & SV_FORCE_UTF8_UPGRADE) goto must_be_utf8;
3262 /* See if really will need to convert to utf8. We mustn't rely on our
3263 * incoming SV being well formed and having a trailing '\0', as certain
3264 * code in pp_formline can send us partially built SVs. */
3268 if (NATIVE_IS_INVARIANT(ch)) continue;
3270 t--; /* t already incremented; re-point to first variant */
3275 /* utf8 conversion not needed because all are invariants. Mark as
3276 * UTF-8 even if no variant - saves scanning loop */
3282 /* Here, the string should be converted to utf8, either because of an
3283 * input flag (two_byte_count = 0), or because a character that
3284 * requires 2 bytes was found (two_byte_count = 1). t points either to
3285 * the beginning of the string (if we didn't examine anything), or to
3286 * the first variant. In either case, everything from s to t - 1 will
3287 * occupy only 1 byte each on output.
3289 * There are two main ways to convert. One is to create a new string
3290 * and go through the input starting from the beginning, appending each
3291 * converted value onto the new string as we go along. It's probably
3292 * best to allocate enough space in the string for the worst possible
3293 * case rather than possibly running out of space and having to
3294 * reallocate and then copy what we've done so far. Since everything
3295 * from s to t - 1 is invariant, the destination can be initialized
3296 * with these using a fast memory copy
3298 * The other way is to figure out exactly how big the string should be
3299 * by parsing the entire input. Then you don't have to make it big
3300 * enough to handle the worst possible case, and more importantly, if
3301 * the string you already have is large enough, you don't have to
3302 * allocate a new string, you can copy the last character in the input
3303 * string to the final position(s) that will be occupied by the
3304 * converted string and go backwards, stopping at t, since everything
3305 * before that is invariant.
3307 * There are advantages and disadvantages to each method.
3309 * In the first method, we can allocate a new string, do the memory
3310 * copy from the s to t - 1, and then proceed through the rest of the
3311 * string byte-by-byte.
3313 * In the second method, we proceed through the rest of the input
3314 * string just calculating how big the converted string will be. Then
3315 * there are two cases:
3316 * 1) if the string has enough extra space to handle the converted
3317 * value. We go backwards through the string, converting until we
3318 * get to the position we are at now, and then stop. If this
3319 * position is far enough along in the string, this method is
3320 * faster than the other method. If the memory copy were the same
3321 * speed as the byte-by-byte loop, that position would be about
3322 * half-way, as at the half-way mark, parsing to the end and back
3323 * is one complete string's parse, the same amount as starting
3324 * over and going all the way through. Actually, it would be
3325 * somewhat less than half-way, as it's faster to just count bytes
3326 * than to also copy, and we don't have the overhead of allocating
3327 * a new string, changing the scalar to use it, and freeing the
3328 * existing one. But if the memory copy is fast, the break-even
3329 * point is somewhere after half way. The counting loop could be
3330 * sped up by vectorization, etc, to move the break-even point
3331 * further towards the beginning.
3332 * 2) if the string doesn't have enough space to handle the converted
3333 * value. A new string will have to be allocated, and one might
3334 * as well, given that, start from the beginning doing the first
3335 * method. We've spent extra time parsing the string and in
3336 * exchange all we've gotten is that we know precisely how big to
3337 * make the new one. Perl is more optimized for time than space,
3338 * so this case is a loser.
3339 * So what I've decided to do is not use the 2nd method unless it is
3340 * guaranteed that a new string won't have to be allocated, assuming
3341 * the worst case. I also decided not to put any more conditions on it
3342 * than this, for now. It seems likely that, since the worst case is
3343 * twice as big as the unknown portion of the string (plus 1), we won't
3344 * be guaranteed enough space, causing us to go to the first method,
3345 * unless the string is short, or the first variant character is near
3346 * the end of it. In either of these cases, it seems best to use the
3347 * 2nd method. The only circumstance I can think of where this would
3348 * be really slower is if the string had once had much more data in it
3349 * than it does now, but there is still a substantial amount in it */
3352 STRLEN invariant_head = t - s;
3353 STRLEN size = invariant_head + (e - t) * 2 + 1 + extra;
3354 if (SvLEN(sv) < size) {
3356 /* Here, have decided to allocate a new string */
3361 Newx(dst, size, U8);
3363 /* If no known invariants at the beginning of the input string,
3364 * set so starts from there. Otherwise, can use memory copy to
3365 * get up to where we are now, and then start from here */
3367 if (invariant_head <= 0) {
3370 Copy(s, dst, invariant_head, char);
3371 d = dst + invariant_head;
3375 const UV uv = NATIVE8_TO_UNI(*t++);
3376 if (UNI_IS_INVARIANT(uv))
3377 *d++ = (U8)UNI_TO_NATIVE(uv);
3379 *d++ = (U8)UTF8_EIGHT_BIT_HI(uv);
3380 *d++ = (U8)UTF8_EIGHT_BIT_LO(uv);
3384 SvPV_free(sv); /* No longer using pre-existing string */
3385 SvPV_set(sv, (char*)dst);
3386 SvCUR_set(sv, d - dst);
3387 SvLEN_set(sv, size);
3390 /* Here, have decided to get the exact size of the string.
3391 * Currently this happens only when we know that there is
3392 * guaranteed enough space to fit the converted string, so
3393 * don't have to worry about growing. If two_byte_count is 0,
3394 * then t points to the first byte of the string which hasn't
3395 * been examined yet. Otherwise two_byte_count is 1, and t
3396 * points to the first byte in the string that will expand to
3397 * two. Depending on this, start examining at t or 1 after t.
3400 U8 *d = t + two_byte_count;
3403 /* Count up the remaining bytes that expand to two */
3406 const U8 chr = *d++;
3407 if (! NATIVE_IS_INVARIANT(chr)) two_byte_count++;
3410 /* The string will expand by just the number of bytes that
3411 * occupy two positions. But we are one afterwards because of
3412 * the increment just above. This is the place to put the
3413 * trailing NUL, and to set the length before we decrement */
3415 d += two_byte_count;
3416 SvCUR_set(sv, d - s);
3420 /* Having decremented d, it points to the position to put the
3421 * very last byte of the expanded string. Go backwards through
3422 * the string, copying and expanding as we go, stopping when we
3423 * get to the part that is invariant the rest of the way down */
3427 const U8 ch = NATIVE8_TO_UNI(*e--);
3428 if (UNI_IS_INVARIANT(ch)) {
3429 *d-- = UNI_TO_NATIVE(ch);
3431 *d-- = (U8)UTF8_EIGHT_BIT_LO(ch);
3432 *d-- = (U8)UTF8_EIGHT_BIT_HI(ch);
3437 if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv)) {
3438 /* Update pos. We do it at the end rather than during
3439 * the upgrade, to avoid slowing down the common case
3440 * (upgrade without pos) */
3441 MAGIC * mg = mg_find(sv, PERL_MAGIC_regex_global);
3443 I32 pos = mg->mg_len;
3444 if (pos > 0 && (U32)pos > invariant_head) {
3445 U8 *d = (U8*) SvPVX(sv) + invariant_head;
3446 STRLEN n = (U32)pos - invariant_head;
3448 if (UTF8_IS_START(*d))
3453 mg->mg_len = d - (U8*)SvPVX(sv);
3456 if ((mg = mg_find(sv, PERL_MAGIC_utf8)))
3457 magic_setutf8(sv,mg); /* clear UTF8 cache */
3462 /* Mark as UTF-8 even if no variant - saves scanning loop */
3468 =for apidoc sv_utf8_downgrade
3470 Attempts to convert the PV of an SV from characters to bytes.
3471 If the PV contains a character that cannot fit
3472 in a byte, this conversion will fail;
3473 in this case, either returns false or, if C<fail_ok> is not
3476 This is not as a general purpose Unicode to byte encoding interface:
3477 use the Encode extension for that.
3483 Perl_sv_utf8_downgrade(pTHX_ register SV *const sv, const bool fail_ok)
3487 PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE;
3489 if (SvPOKp(sv) && SvUTF8(sv)) {
3493 int mg_flags = SV_GMAGIC;
3496 sv_force_normal_flags(sv, 0);
3498 if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv)) {
3500 MAGIC * mg = mg_find(sv, PERL_MAGIC_regex_global);
3502 I32 pos = mg->mg_len;
3504 sv_pos_b2u(sv, &pos);
3505 mg_flags = 0; /* sv_pos_b2u does get magic */
3509 if ((mg = mg_find(sv, PERL_MAGIC_utf8)))
3510 magic_setutf8(sv,mg); /* clear UTF8 cache */
3513 s = (U8 *) SvPV_flags(sv, len, mg_flags);
3515 if (!utf8_to_bytes(s, &len)) {
3520 Perl_croak(aTHX_ "Wide character in %s",
3523 Perl_croak(aTHX_ "Wide character");
3534 =for apidoc sv_utf8_encode
3536 Converts the PV of an SV to UTF-8, but then turns the C<SvUTF8>
3537 flag off so that it looks like octets again.
3543 Perl_sv_utf8_encode(pTHX_ register SV *const sv)
3545 PERL_ARGS_ASSERT_SV_UTF8_ENCODE;
3548 sv_force_normal_flags(sv, 0);
3550 if (SvREADONLY(sv)) {
3551 Perl_croak_no_modify(aTHX);
3553 (void) sv_utf8_upgrade(sv);
3558 =for apidoc sv_utf8_decode
3560 If the PV of the SV is an octet sequence in UTF-8
3561 and contains a multiple-byte character, the C<SvUTF8> flag is turned on
3562 so that it looks like a character. If the PV contains only single-byte
3563 characters, the C<SvUTF8> flag stays being off.
3564 Scans PV for validity and returns false if the PV is invalid UTF-8.
3570 Perl_sv_utf8_decode(pTHX_ register SV *const sv)
3572 PERL_ARGS_ASSERT_SV_UTF8_DECODE;
3575 const U8 *start, *c;
3578 /* The octets may have got themselves encoded - get them back as
3581 if (!sv_utf8_downgrade(sv, TRUE))
3584 /* it is actually just a matter of turning the utf8 flag on, but
3585 * we want to make sure everything inside is valid utf8 first.
3587 c = start = (const U8 *) SvPVX_const(sv);
3588 if (!is_utf8_string(c, SvCUR(sv)+1))
3590 e = (const U8 *) SvEND(sv);
3593 if (!UTF8_IS_INVARIANT(ch)) {
3598 if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv)) {
3599 /* adjust pos to the start of a UTF8 char sequence */
3600 MAGIC * mg = mg_find(sv, PERL_MAGIC_regex_global);
3602 I32 pos = mg->mg_len;
3604 for (c = start + pos; c > start; c--) {
3605 if (UTF8_IS_START(*c))
3608 mg->mg_len = c - start;
3611 if ((mg = mg_find(sv, PERL_MAGIC_utf8)))
3612 magic_setutf8(sv,mg); /* clear UTF8 cache */
3619 =for apidoc sv_setsv
3621 Copies the contents of the source SV C<ssv> into the destination SV
3622 C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
3623 function if the source SV needs to be reused. Does not handle 'set' magic.
3624 Loosely speaking, it performs a copy-by-value, obliterating any previous
3625 content of the destination.
3627 You probably want to use one of the assortment of wrappers, such as
3628 C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
3629 C<SvSetMagicSV_nosteal>.
3631 =for apidoc sv_setsv_flags
3633 Copies the contents of the source SV C<ssv> into the destination SV
3634 C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
3635 function if the source SV needs to be reused. Does not handle 'set' magic.
3636 Loosely speaking, it performs a copy-by-value, obliterating any previous
3637 content of the destination.
3638 If the C<flags> parameter has the C<SV_GMAGIC> bit set, will C<mg_get> on
3639 C<ssv> if appropriate, else not. If the C<flags> parameter has the
3640 C<NOSTEAL> bit set then the buffers of temps will not be stolen. <sv_setsv>
3641 and C<sv_setsv_nomg> are implemented in terms of this function.
3643 You probably want to use one of the assortment of wrappers, such as
3644 C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
3645 C<SvSetMagicSV_nosteal>.
3647 This is the primary function for copying scalars, and most other
3648 copy-ish functions and macros use this underneath.
3654 S_glob_assign_glob(pTHX_ SV *const dstr, SV *const sstr, const int dtype)
3656 I32 mro_changes = 0; /* 1 = method, 2 = isa, 3 = recursive isa */
3657 HV *old_stash = NULL;
3659 PERL_ARGS_ASSERT_GLOB_ASSIGN_GLOB;
3661 if (dtype != SVt_PVGV && !isGV_with_GP(dstr)) {
3662 const char * const name = GvNAME(sstr);
3663 const STRLEN len = GvNAMELEN(sstr);
3665 if (dtype >= SVt_PV) {
3671 SvUPGRADE(dstr, SVt_PVGV);
3672 (void)SvOK_off(dstr);
3673 /* FIXME - why are we doing this, then turning it off and on again
3675 isGV_with_GP_on(dstr);
3677 GvSTASH(dstr) = GvSTASH(sstr);
3679 Perl_sv_add_backref(aTHX_ MUTABLE_SV(GvSTASH(dstr)), dstr);
3680 gv_name_set(MUTABLE_GV(dstr), name, len, GV_ADD);
3681 SvFAKE_on(dstr); /* can coerce to non-glob */
3684 if(GvGP(MUTABLE_GV(sstr))) {
3685 /* If source has method cache entry, clear it */
3687 SvREFCNT_dec(GvCV(sstr));
3688 GvCV_set(sstr, NULL);
3691 /* If source has a real method, then a method is
3694 GvCV((const GV *)sstr) && GvSTASH(dstr) && HvENAME(GvSTASH(dstr))
3700 /* If dest already had a real method, that's a change as well */
3702 !mro_changes && GvGP(MUTABLE_GV(dstr)) && GvCVu((const GV *)dstr)
3703 && GvSTASH(dstr) && HvENAME(GvSTASH(dstr))
3708 /* We don’t need to check the name of the destination if it was not a
3709 glob to begin with. */
3710 if(dtype == SVt_PVGV) {
3711 const char * const name = GvNAME((const GV *)dstr);
3714 /* The stash may have been detached from the symbol table, so
3716 && GvSTASH(dstr) && HvENAME(GvSTASH(dstr))
3717 && GvAV((const GV *)sstr)
3721 const STRLEN len = GvNAMELEN(dstr);
3722 if ((len > 1 && name[len-2] == ':' && name[len-1] == ':')
3723 || (len == 1 && name[0] == ':')) {
3726 /* Set aside the old stash, so we can reset isa caches on
3728 if((old_stash = GvHV(dstr)))
3729 /* Make sure we do not lose it early. */
3730 SvREFCNT_inc_simple_void_NN(
3731 sv_2mortal((SV *)old_stash)
3737 gp_free(MUTABLE_GV(dstr));
3738 isGV_with_GP_off(dstr);
3739 (void)SvOK_off(dstr);
3740 isGV_with_GP_on(dstr);
3741 GvINTRO_off(dstr); /* one-shot flag */
3742 GvGP_set(dstr, gp_ref(GvGP(sstr)));
3743 if (SvTAINTED(sstr))
3745 if (GvIMPORTED(dstr) != GVf_IMPORTED
3746 && CopSTASH_ne(PL_curcop, GvSTASH(dstr)))
3748 GvIMPORTED_on(dstr);
3751 if(mro_changes == 2) {
3753 SV * const sref = (SV *)GvAV((const GV *)dstr);
3754 if (SvSMAGICAL(sref) && (mg = mg_find(sref, PERL_MAGIC_isa))) {
3755 if (SvTYPE(mg->mg_obj) != SVt_PVAV) {
3756 AV * const ary = newAV();
3757 av_push(ary, mg->mg_obj); /* takes the refcount */
3758 mg->mg_obj = (SV *)ary;
3760 av_push((AV *)mg->mg_obj, SvREFCNT_inc_simple_NN(dstr));
3762 else sv_magic(sref, dstr, PERL_MAGIC_isa, NULL, 0);
3763 mro_isa_changed_in(GvSTASH(dstr));
3765 else if(mro_changes == 3) {
3766 HV * const stash = GvHV(dstr);
3767 if(old_stash ? (HV *)HvENAME_get(old_stash) : stash)
3773 else if(mro_changes) mro_method_changed_in(GvSTASH(dstr));
3778 S_glob_assign_ref(pTHX_ SV *const dstr, SV *const sstr)
3780 SV * const sref = SvREFCNT_inc(SvRV(sstr));
3782 const int intro = GvINTRO(dstr);
3785 const U32 stype = SvTYPE(sref);
3787 PERL_ARGS_ASSERT_GLOB_ASSIGN_REF;
3790 GvINTRO_off(dstr); /* one-shot flag */
3791 GvLINE(dstr) = CopLINE(PL_curcop);
3792 GvEGV(dstr) = MUTABLE_GV(dstr);
3797 location = (SV **) &(GvGP(dstr)->gp_cv); /* XXX bypassing GvCV_set */
3798 import_flag = GVf_IMPORTED_CV;
3801 location = (SV **) &GvHV(dstr);
3802 import_flag = GVf_IMPORTED_HV;
3805 location = (SV **) &GvAV(dstr);
3806 import_flag = GVf_IMPORTED_AV;
3809 location = (SV **) &GvIOp(dstr);
3812 location = (SV **) &GvFORM(dstr);
3815 location = &GvSV(dstr);
3816 import_flag = GVf_IMPORTED_SV;
3819 if (stype == SVt_PVCV) {
3820 /*if (GvCVGEN(dstr) && (GvCV(dstr) != (const CV *)sref || GvCVGEN(dstr))) {*/
3821 if (GvCVGEN(dstr)) {
3822 SvREFCNT_dec(GvCV(dstr));
3823 GvCV_set(dstr, NULL);
3824 GvCVGEN(dstr) = 0; /* Switch off cacheness. */
3827 SAVEGENERICSV(*location);
3831 if (stype == SVt_PVCV && (*location != sref || GvCVGEN(dstr))) {
3832 CV* const cv = MUTABLE_CV(*location);
3834 if (!GvCVGEN((const GV *)dstr) &&
3835 (CvROOT(cv) || CvXSUB(cv)))
3837 /* Redefining a sub - warning is mandatory if
3838 it was a const and its value changed. */
3839 if (CvCONST(cv) && CvCONST((const CV *)sref)
3841 == cv_const_sv((const CV *)sref)) {
3843 /* They are 2 constant subroutines generated from
3844 the same constant. This probably means that
3845 they are really the "same" proxy subroutine
3846 instantiated in 2 places. Most likely this is
3847 when a constant is exported twice. Don't warn.
3850 else if (ckWARN(WARN_REDEFINE)
3852 && (!CvCONST((const CV *)sref)
3853 || sv_cmp(cv_const_sv(cv),
3854 cv_const_sv((const CV *)
3856 Perl_warner(aTHX_ packWARN(WARN_REDEFINE),
3859 ? "Constant subroutine %s::%s redefined"
3860 : "Subroutine %s::%s redefined"),
3861 HvNAME_get(GvSTASH((const GV *)dstr)),
3862 GvENAME(MUTABLE_GV(dstr)));
3866 cv_ckproto_len(cv, (const GV *)dstr,
3867 SvPOK(sref) ? SvPVX_const(sref) : NULL,
3868 SvPOK(sref) ? SvCUR(sref) : 0);
3870 GvCVGEN(dstr) = 0; /* Switch off cacheness. */
3871 GvASSUMECV_on(dstr);
3872 if(GvSTASH(dstr)) mro_method_changed_in(GvSTASH(dstr)); /* sub foo { 1 } sub bar { 2 } *bar = \&foo */
3875 if (import_flag && !(GvFLAGS(dstr) & import_flag)
3876 && CopSTASH_ne(PL_curcop, GvSTASH(dstr))) {
3877 GvFLAGS(dstr) |= import_flag;
3879 if (stype == SVt_PVHV) {
3880 const char * const name = GvNAME((GV*)dstr);
3881 const STRLEN len = GvNAMELEN(dstr);
3884 (len > 1 && name[len-2] == ':' && name[len-1] == ':')
3885 || (len == 1 && name[0] == ':')
3887 && (!dref || HvENAME_get(dref))
3890 (HV *)sref, (HV *)dref,
3896 stype == SVt_PVAV && sref != dref
3897 && strEQ(GvNAME((GV*)dstr), "ISA")
3898 /* The stash may have been detached from the symbol table, so
3899 check its name before doing anything. */
3900 && GvSTASH(dstr) && HvENAME(GvSTASH(dstr))
3903 MAGIC * const omg = dref && SvSMAGICAL(dref)
3904 ? mg_find(dref, PERL_MAGIC_isa)
3906 if (SvSMAGICAL(sref) && (mg = mg_find(sref, PERL_MAGIC_isa))) {
3907 if (SvTYPE(mg->mg_obj) != SVt_PVAV) {
3908 AV * const ary = newAV();
3909 av_push(ary, mg->mg_obj); /* takes the refcount */
3910 mg->mg_obj = (SV *)ary;
3913 if (SvTYPE(omg->mg_obj) == SVt_PVAV) {
3914 SV **svp = AvARRAY((AV *)omg->mg_obj);
3915 I32 items = AvFILLp((AV *)omg->mg_obj) + 1;
3919 SvREFCNT_inc_simple_NN(*svp++)
3925 SvREFCNT_inc_simple_NN(omg->mg_obj)
3929 av_push((AV *)mg->mg_obj,SvREFCNT_inc_simple_NN(dstr));
3934 sref, omg ? omg->mg_obj : dstr, PERL_MAGIC_isa, NULL, 0
3936 mg = mg_find(sref, PERL_MAGIC_isa);
3938 /* Since the *ISA assignment could have affected more than
3939 one stash, don’t call mro_isa_changed_in directly, but let
3940 magic_clearisa do it for us, as it already has the logic for
3941 dealing with globs vs arrays of globs. */
3943 Perl_magic_clearisa(aTHX_ NULL, mg);
3948 if (SvTAINTED(sstr))
3954 Perl_sv_setsv_flags(pTHX_ SV *dstr, register SV* sstr, const I32 flags)
3957 register U32 sflags;
3959 register svtype stype;
3961 PERL_ARGS_ASSERT_SV_SETSV_FLAGS;
3966 if (SvIS_FREED(dstr)) {
3967 Perl_croak(aTHX_ "panic: attempt to copy value %" SVf
3968 " to a freed scalar %p", SVfARG(sstr), (void *)dstr);
3970 SV_CHECK_THINKFIRST_COW_DROP(dstr);
3972 sstr = &PL_sv_undef;
3973 if (SvIS_FREED(sstr)) {
3974 Perl_croak(aTHX_ "panic: attempt to copy freed scalar %p to %p",
3975 (void*)sstr, (void*)dstr);
3977 stype = SvTYPE(sstr);
3978 dtype = SvTYPE(dstr);
3980 (void)SvAMAGIC_off(dstr);
3983 /* need to nuke the magic */
3987 /* There's a lot of redundancy below but we're going for speed here */
3992 if (dtype != SVt_PVGV && dtype != SVt_PVLV) {
3993 (void)SvOK_off(dstr);
4001 sv_upgrade(dstr, SVt_IV);
4005 sv_upgrade(dstr, SVt_PVIV);
4009 goto end_of_first_switch;
4011 (void)SvIOK_only(dstr);
4012 SvIV_set(dstr, SvIVX(sstr));
4015 /* SvTAINTED can only be true if the SV has taint magic, which in
4016 turn means that the SV type is PVMG (or greater). This is the
4017 case statement for SVt_IV, so this cannot be true (whatever gcov
4019 assert(!SvTAINTED(sstr));
4024 if (dtype < SVt_PV && dtype != SVt_IV)
4025 sv_upgrade(dstr, SVt_IV);
4033 sv_upgrade(dstr, SVt_NV);
4037 sv_upgrade(dstr, SVt_PVNV);
4041 goto end_of_first_switch;
4043 SvNV_set(dstr, SvNVX(sstr));
4044 (void)SvNOK_only(dstr);
4045 /* SvTAINTED can only be true if the SV has taint magic, which in
4046 turn means that the SV type is PVMG (or greater). This is the
4047 case statement for SVt_NV, so this cannot be true (whatever gcov
4049 assert(!SvTAINTED(sstr));
4055 #ifdef PERL_OLD_COPY_ON_WRITE
4056 if ((SvFLAGS(sstr) & CAN_COW_MASK) == CAN_COW_FLAGS) {
4057 if (dtype < SVt_PVIV)
4058 sv_upgrade(dstr, SVt_PVIV);
4065 sv_upgrade(dstr, SVt_PV);
4068 if (dtype < SVt_PVIV)
4069 sv_upgrade(dstr, SVt_PVIV);
4072 if (dtype < SVt_PVNV)
4073 sv_upgrade(dstr, SVt_PVNV);
4077 const char * const type = sv_reftype(sstr,0);
4079 Perl_croak(aTHX_ "Bizarre copy of %s in %s", type, OP_DESC(PL_op));
4081 Perl_croak(aTHX_ "Bizarre copy of %s", type);
4086 if (dtype < SVt_REGEXP)
4087 sv_upgrade(dstr, SVt_REGEXP);
4090 /* case SVt_BIND: */
4093 /* SvVALID means that this PVGV is playing at being an FBM. */
4096 if (SvGMAGICAL(sstr) && (flags & SV_GMAGIC)) {
4098 if (SvTYPE(sstr) != stype)
4099 stype = SvTYPE(sstr);
4101 if (isGV_with_GP(sstr) && dtype <= SVt_PVLV) {
4102 glob_assign_glob(dstr, sstr, dtype);
4105 if (stype == SVt_PVLV)
4106 SvUPGRADE(dstr, SVt_PVNV);
4108 SvUPGRADE(dstr, (svtype)stype);
4110 end_of_first_switch:
4112 /* dstr may have been upgraded. */
4113 dtype = SvTYPE(dstr);
4114 sflags = SvFLAGS(sstr);
4116 if (dtype == SVt_PVCV || dtype == SVt_PVFM) {
4117 /* Assigning to a subroutine sets the prototype. */
4120 const char *const ptr = SvPV_const(sstr, len);
4122 SvGROW(dstr, len + 1);
4123 Copy(ptr, SvPVX(dstr), len + 1, char);
4124 SvCUR_set(dstr, len);
4126 SvFLAGS(dstr) |= sflags & SVf_UTF8;
4130 } else if (dtype == SVt_PVAV || dtype == SVt_PVHV) {
4131 const char * const type = sv_reftype(dstr,0);
4133 Perl_croak(aTHX_ "Cannot copy to %s in %s", type, OP_DESC(PL_op));
4135 Perl_croak(aTHX_ "Cannot copy to %s", type);
4136 } else if (sflags & SVf_ROK) {
4137 if (isGV_with_GP(dstr)
4138 && SvTYPE(SvRV(sstr)) == SVt_PVGV && isGV_with_GP(SvRV(sstr))) {
4141 if (GvIMPORTED(dstr) != GVf_IMPORTED
4142 && CopSTASH_ne(PL_curcop, GvSTASH(dstr)))
4144 GvIMPORTED_on(dstr);
4149 glob_assign_glob(dstr, sstr, dtype);
4153 if (dtype >= SVt_PV) {
4154 if (isGV_with_GP(dstr)) {
4155 glob_assign_ref(dstr, sstr);
4158 if (SvPVX_const(dstr)) {
4164 (void)SvOK_off(dstr);
4165 SvRV_set(dstr, SvREFCNT_inc(SvRV(sstr)));
4166 SvFLAGS(dstr) |= sflags & SVf_ROK;
4167 assert(!(sflags & SVp_NOK));
4168 assert(!(sflags & SVp_IOK));
4169 assert(!(sflags & SVf_NOK));
4170 assert(!(sflags & SVf_IOK));
4172 else if (isGV_with_GP(dstr)) {
4173 if (!(sflags & SVf_OK)) {
4174 Perl_ck_warner(aTHX_ packWARN(WARN_MISC),
4175 "Undefined value assigned to typeglob");
4178 GV *gv = gv_fetchsv(sstr, GV_ADD, SVt_PVGV);
4179 if (dstr != (const SV *)gv) {
4180 const char * const name = GvNAME((const GV *)dstr);
4181 const STRLEN len = GvNAMELEN(dstr);
4182 HV *old_stash = NULL;
4183 bool reset_isa = FALSE;
4184 if ((len > 1 && name[len-2] == ':' && name[len-1] == ':')
4185 || (len == 1 && name[0] == ':')) {
4186 /* Set aside the old stash, so we can reset isa caches
4187 on its subclasses. */
4188 if((old_stash = GvHV(dstr))) {
4189 /* Make sure we do not lose it early. */
4190 SvREFCNT_inc_simple_void_NN(
4191 sv_2mortal((SV *)old_stash)
4198 gp_free(MUTABLE_GV(dstr));
4199 GvGP_set(dstr, gp_ref(GvGP(gv)));
4202 HV * const stash = GvHV(dstr);
4204 old_stash ? (HV *)HvENAME_get(old_stash) : stash
4214 else if (dtype == SVt_REGEXP && stype == SVt_REGEXP) {
4215 reg_temp_copy((REGEXP*)dstr, (REGEXP*)sstr);
4217 else if (sflags & SVp_POK) {
4221 * Check to see if we can just swipe the string. If so, it's a
4222 * possible small lose on short strings, but a big win on long ones.
4223 * It might even be a win on short strings if SvPVX_const(dstr)
4224 * has to be allocated and SvPVX_const(sstr) has to be freed.
4225 * Likewise if we can set up COW rather than doing an actual copy, we
4226 * drop to the else clause, as the swipe code and the COW setup code
4227 * have much in common.
4230 /* Whichever path we take through the next code, we want this true,
4231 and doing it now facilitates the COW check. */
4232 (void)SvPOK_only(dstr);
4235 /* If we're already COW then this clause is not true, and if COW
4236 is allowed then we drop down to the else and make dest COW
4237 with us. If caller hasn't said that we're allowed to COW
4238 shared hash keys then we don't do the COW setup, even if the
4239 source scalar is a shared hash key scalar. */
4240 (((flags & SV_COW_SHARED_HASH_KEYS)
4241 ? (sflags & (SVf_FAKE|SVf_READONLY)) != (SVf_FAKE|SVf_READONLY)
4242 : 1 /* If making a COW copy is forbidden then the behaviour we
4243 desire is as if the source SV isn't actually already
4244 COW, even if it is. So we act as if the source flags
4245 are not COW, rather than actually testing them. */
4247 #ifndef PERL_OLD_COPY_ON_WRITE
4248 /* The change that added SV_COW_SHARED_HASH_KEYS makes the logic
4249 when PERL_OLD_COPY_ON_WRITE is defined a little wrong.
4250 Conceptually PERL_OLD_COPY_ON_WRITE being defined should
4251 override SV_COW_SHARED_HASH_KEYS, because it means "always COW"
4252 but in turn, it's somewhat dead code, never expected to go
4253 live, but more kept as a placeholder on how to do it better
4254 in a newer implementation. */
4255 /* If we are COW and dstr is a suitable target then we drop down
4256 into the else and make dest a COW of us. */
4257 || (SvFLAGS(dstr) & CAN_COW_MASK) != CAN_COW_FLAGS
4262 (sflags & SVs_TEMP) && /* slated for free anyway? */
4263 !(sflags & SVf_OOK) && /* and not involved in OOK hack? */
4264 (!(flags & SV_NOSTEAL)) &&
4265 /* and we're allowed to steal temps */
4266 SvREFCNT(sstr) == 1 && /* and no other references to it? */
4267 SvLEN(sstr)) /* and really is a string */
4268 #ifdef PERL_OLD_COPY_ON_WRITE
4269 && ((flags & SV_COW_SHARED_HASH_KEYS)
4270 ? (!((sflags & CAN_COW_MASK) == CAN_COW_FLAGS
4271 && (SvFLAGS(dstr) & CAN_COW_MASK) == CAN_COW_FLAGS
4272 && SvTYPE(sstr) >= SVt_PVIV && SvTYPE(sstr) != SVt_PVFM))
4276 /* Failed the swipe test, and it's not a shared hash key either.
4277 Have to copy the string. */
4278 STRLEN len = SvCUR(sstr);
4279 SvGROW(dstr, len + 1); /* inlined from sv_setpvn */
4280 Move(SvPVX_const(sstr),SvPVX(dstr),len,char);
4281 SvCUR_set(dstr, len);
4282 *SvEND(dstr) = '\0';
4284 /* If PERL_OLD_COPY_ON_WRITE is not defined, then isSwipe will always
4286 /* Either it's a shared hash key, or it's suitable for
4287 copy-on-write or we can swipe the string. */
4289 PerlIO_printf(Perl_debug_log, "Copy on write: sstr --> dstr\n");
4293 #ifdef PERL_OLD_COPY_ON_WRITE
4295 if ((sflags & (SVf_FAKE | SVf_READONLY))
4296 != (SVf_FAKE | SVf_READONLY)) {
4297 SvREADONLY_on(sstr);
4299 /* Make the source SV into a loop of 1.
4300 (about to become 2) */
4301 SV_COW_NEXT_SV_SET(sstr, sstr);
4305 /* Initial code is common. */
4306 if (SvPVX_const(dstr)) { /* we know that dtype >= SVt_PV */
4311 /* making another shared SV. */
4312 STRLEN cur = SvCUR(sstr);
4313 STRLEN len = SvLEN(sstr);
4314 #ifdef PERL_OLD_COPY_ON_WRITE
4316 assert (SvTYPE(dstr) >= SVt_PVIV);
4317 /* SvIsCOW_normal */
4318 /* splice us in between source and next-after-source. */
4319 SV_COW_NEXT_SV_SET(dstr, SV_COW_NEXT_SV(sstr));
4320 SV_COW_NEXT_SV_SET(sstr, dstr);
4321 SvPV_set(dstr, SvPVX_mutable(sstr));
4325 /* SvIsCOW_shared_hash */
4326 DEBUG_C(PerlIO_printf(Perl_debug_log,
4327 "Copy on write: Sharing hash\n"));
4329 assert (SvTYPE(dstr) >= SVt_PV);
4331 HEK_KEY(share_hek_hek(SvSHARED_HEK_FROM_PV(SvPVX_const(sstr)))));
4333 SvLEN_set(dstr, len);
4334 SvCUR_set(dstr, cur);
4335 SvREADONLY_on(dstr);
4339 { /* Passes the swipe test. */
4340 SvPV_set(dstr, SvPVX_mutable(sstr));
4341 SvLEN_set(dstr, SvLEN(sstr));
4342 SvCUR_set(dstr, SvCUR(sstr));
4345 (void)SvOK_off(sstr); /* NOTE: nukes most SvFLAGS on sstr */
4346 SvPV_set(sstr, NULL);
4352 if (sflags & SVp_NOK) {
4353 SvNV_set(dstr, SvNVX(sstr));
4355 if (sflags & SVp_IOK) {
4356 SvIV_set(dstr, SvIVX(sstr));
4357 /* Must do this otherwise some other overloaded use of 0x80000000
4358 gets confused. I guess SVpbm_VALID */
4359 if (sflags & SVf_IVisUV)
4362 SvFLAGS(dstr) |= sflags & (SVf_IOK|SVp_IOK|SVf_NOK|SVp_NOK|SVf_UTF8);
4364 const MAGIC * const smg = SvVSTRING_mg(sstr);
4366 sv_magic(dstr, NULL, PERL_MAGIC_vstring,
4367 smg->mg_ptr, smg->mg_len);
4368 SvRMAGICAL_on(dstr);
4372 else if (sflags & (SVp_IOK|SVp_NOK)) {
4373 (void)SvOK_off(dstr);
4374 SvFLAGS(dstr) |= sflags & (SVf_IOK|SVp_IOK|SVf_IVisUV|SVf_NOK|SVp_NOK);
4375 if (sflags & SVp_IOK) {
4376 /* XXXX Do we want to set IsUV for IV(ROK)? Be extra safe... */
4377 SvIV_set(dstr, SvIVX(sstr));
4379 if (sflags & SVp_NOK) {
4380 SvNV_set(dstr, SvNVX(sstr));
4384 if (isGV_with_GP(sstr)) {
4385 /* This stringification rule for globs is spread in 3 places.
4386 This feels bad. FIXME. */
4387 const U32 wasfake = sflags & SVf_FAKE;
4389 /* FAKE globs can get coerced, so need to turn this off
4390 temporarily if it is on. */
4392 gv_efullname3(dstr, MUTABLE_GV(sstr), "*");
4393 SvFLAGS(sstr) |= wasfake;
4396 (void)SvOK_off(dstr);
4398 if (SvTAINTED(sstr))
4403 =for apidoc sv_setsv_mg
4405 Like C<sv_setsv>, but also handles 'set' magic.
4411 Perl_sv_setsv_mg(pTHX_ SV *const dstr, register SV *const sstr)
4413 PERL_ARGS_ASSERT_SV_SETSV_MG;
4415 sv_setsv(dstr,sstr);
4419 #ifdef PERL_OLD_COPY_ON_WRITE
4421 Perl_sv_setsv_cow(pTHX_ SV *dstr, SV *sstr)
4423 STRLEN cur = SvCUR(sstr);
4424 STRLEN len = SvLEN(sstr);
4425 register char *new_pv;
4427 PERL_ARGS_ASSERT_SV_SETSV_COW;
4430 PerlIO_printf(Perl_debug_log, "Fast copy on write: %p -> %p\n",
4431 (void*)sstr, (void*)dstr);
4438 if (SvTHINKFIRST(dstr))
4439 sv_force_normal_flags(dstr, SV_COW_DROP_PV);
4440 else if (SvPVX_const(dstr))
4441 Safefree(SvPVX_const(dstr));
4445 SvUPGRADE(dstr, SVt_PVIV);
4447 assert (SvPOK(sstr));
4448 assert (SvPOKp(sstr));
4449 assert (!SvIOK(sstr));
4450 assert (!SvIOKp(sstr));
4451 assert (!SvNOK(sstr));
4452 assert (!SvNOKp(sstr));
4454 if (SvIsCOW(sstr)) {
4456 if (SvLEN(sstr) == 0) {
4457 /* source is a COW shared hash key. */
4458 DEBUG_C(PerlIO_printf(Perl_debug_log,
4459 "Fast copy on write: Sharing hash\n"));
4460 new_pv = HEK_KEY(share_hek_hek(SvSHARED_HEK_FROM_PV(SvPVX_const(sstr))));
4463 SV_COW_NEXT_SV_SET(dstr, SV_COW_NEXT_SV(sstr));
4465 assert ((SvFLAGS(sstr) & CAN_COW_MASK) == CAN_COW_FLAGS);
4466 SvUPGRADE(sstr, SVt_PVIV);
4467 SvREADONLY_on(sstr);
4469 DEBUG_C(PerlIO_printf(Perl_debug_log,
4470 "Fast copy on write: Converting sstr to COW\n"));
4471 SV_COW_NEXT_SV_SET(dstr, sstr);
4473 SV_COW_NEXT_SV_SET(sstr, dstr);
4474 new_pv = SvPVX_mutable(sstr);
4477 SvPV_set(dstr, new_pv);
4478 SvFLAGS(dstr) = (SVt_PVIV|SVf_POK|SVp_POK|SVf_FAKE|SVf_READONLY);
4481 SvLEN_set(dstr, len);
4482 SvCUR_set(dstr, cur);
4491 =for apidoc sv_setpvn
4493 Copies a string into an SV. The C<len> parameter indicates the number of
4494 bytes to be copied. If the C<ptr> argument is NULL the SV will become
4495 undefined. Does not handle 'set' magic. See C<sv_setpvn_mg>.
4501 Perl_sv_setpvn(pTHX_ register SV *const sv, register const char *const ptr, register const STRLEN len)
4504 register char *dptr;
4506 PERL_ARGS_ASSERT_SV_SETPVN;
4508 SV_CHECK_THINKFIRST_COW_DROP(sv);
4514 /* len is STRLEN which is unsigned, need to copy to signed */
4517 Perl_croak(aTHX_ "panic: sv_setpvn called with negative strlen");
4519 SvUPGRADE(sv, SVt_PV);
4521 dptr = SvGROW(sv, len + 1);
4522 Move(ptr,dptr,len,char);
4525 (void)SvPOK_only_UTF8(sv); /* validate pointer */
4530 =for apidoc sv_setpvn_mg
4532 Like C<sv_setpvn>, but also handles 'set' magic.
4538 Perl_sv_setpvn_mg(pTHX_ register SV *const sv, register const char *const ptr, register const STRLEN len)
4540 PERL_ARGS_ASSERT_SV_SETPVN_MG;
4542 sv_setpvn(sv,ptr,len);
4547 =for apidoc sv_setpv
4549 Copies a string into an SV. The string must be null-terminated. Does not
4550 handle 'set' magic. See C<sv_setpv_mg>.
4556 Perl_sv_setpv(pTHX_ register SV *const sv, register const char *const ptr)
4559 register STRLEN len;
4561 PERL_ARGS_ASSERT_SV_SETPV;
4563 SV_CHECK_THINKFIRST_COW_DROP(sv);
4569 SvUPGRADE(sv, SVt_PV);
4571 SvGROW(sv, len + 1);
4572 Move(ptr,SvPVX(sv),len+1,char);
4574 (void)SvPOK_only_UTF8(sv); /* validate pointer */
4579 =for apidoc sv_setpv_mg
4581 Like C<sv_setpv>, but also handles 'set' magic.
4587 Perl_sv_setpv_mg(pTHX_ register SV *const sv, register const char *const ptr)
4589 PERL_ARGS_ASSERT_SV_SETPV_MG;
4596 =for apidoc sv_usepvn_flags
4598 Tells an SV to use C<ptr> to find its string value. Normally the
4599 string is stored inside the SV but sv_usepvn allows the SV to use an
4600 outside string. The C<ptr> should point to memory that was allocated
4601 by C<malloc>. The string length, C<len>, must be supplied. By default
4602 this function will realloc (i.e. move) the memory pointed to by C<ptr>,
4603 so that pointer should not be freed or used by the programmer after
4604 giving it to sv_usepvn, and neither should any pointers from "behind"
4605 that pointer (e.g. ptr + 1) be used.
4607 If C<flags> & SV_SMAGIC is true, will call SvSETMAGIC. If C<flags> &
4608 SV_HAS_TRAILING_NUL is true, then C<ptr[len]> must be NUL, and the realloc
4609 will be skipped. (i.e. the buffer is actually at least 1 byte longer than
4610 C<len>, and already meets the requirements for storing in C<SvPVX>)
4616 Perl_sv_usepvn_flags(pTHX_ SV *const sv, char *ptr, const STRLEN len, const U32 flags)
4621 PERL_ARGS_ASSERT_SV_USEPVN_FLAGS;
4623 SV_CHECK_THINKFIRST_COW_DROP(sv);
4624 SvUPGRADE(sv, SVt_PV);
4627 if (flags & SV_SMAGIC)
4631 if (SvPVX_const(sv))
4635 if (flags & SV_HAS_TRAILING_NUL)
4636 assert(ptr[len] == '\0');
4639 allocate = (flags & SV_HAS_TRAILING_NUL)
4641 #ifdef Perl_safesysmalloc_size
4644 PERL_STRLEN_ROUNDUP(len + 1);
4646 if (flags & SV_HAS_TRAILING_NUL) {
4647 /* It's long enough - do nothing.
4648 Specifically Perl_newCONSTSUB is relying on this. */
4651 /* Force a move to shake out bugs in callers. */
4652 char *new_ptr = (char*)safemalloc(allocate);
4653 Copy(ptr, new_ptr, len, char);
4654 PoisonFree(ptr,len,char);
4658 ptr = (char*) saferealloc (ptr, allocate);
4661 #ifdef Perl_safesysmalloc_size
4662 SvLEN_set(sv, Perl_safesysmalloc_size(ptr));
4664 SvLEN_set(sv, allocate);
4668 if (!(flags & SV_HAS_TRAILING_NUL)) {
4671 (void)SvPOK_only_UTF8(sv); /* validate pointer */
4673 if (flags & SV_SMAGIC)
4677 #ifdef PERL_OLD_COPY_ON_WRITE
4678 /* Need to do this *after* making the SV normal, as we need the buffer
4679 pointer to remain valid until after we've copied it. If we let go too early,
4680 another thread could invalidate it by unsharing last of the same hash key
4681 (which it can do by means other than releasing copy-on-write Svs)
4682 or by changing the other copy-on-write SVs in the loop. */
4684 S_sv_release_COW(pTHX_ register SV *sv, const char *pvx, SV *after)
4686 PERL_ARGS_ASSERT_SV_RELEASE_COW;
4688 { /* this SV was SvIsCOW_normal(sv) */
4689 /* we need to find the SV pointing to us. */
4690 SV *current = SV_COW_NEXT_SV(after);
4692 if (current == sv) {
4693 /* The SV we point to points back to us (there were only two of us
4695 Hence other SV is no longer copy on write either. */
4697 SvREADONLY_off(after);
4699 /* We need to follow the pointers around the loop. */
4701 while ((next = SV_COW_NEXT_SV(current)) != sv) {
4704 /* don't loop forever if the structure is bust, and we have
4705 a pointer into a closed loop. */
4706 assert (current != after);
4707 assert (SvPVX_const(current) == pvx);
4709 /* Make the SV before us point to the SV after us. */
4710 SV_COW_NEXT_SV_SET(current, after);
4716 =for apidoc sv_force_normal_flags
4718 Undo various types of fakery on an SV: if the PV is a shared string, make
4719 a private copy; if we're a ref, stop refing; if we're a glob, downgrade to
4720 an xpvmg; if we're a copy-on-write scalar, this is the on-write time when
4721 we do the copy, and is also used locally. If C<SV_COW_DROP_PV> is set
4722 then a copy-on-write scalar drops its PV buffer (if any) and becomes
4723 SvPOK_off rather than making a copy. (Used where this scalar is about to be
4724 set to some other value.) In addition, the C<flags> parameter gets passed to
4725 C<sv_unref_flags()> when unreffing. C<sv_force_normal> calls this function
4726 with flags set to 0.
4732 Perl_sv_force_normal_flags(pTHX_ register SV *const sv, const U32 flags)
4736 PERL_ARGS_ASSERT_SV_FORCE_NORMAL_FLAGS;
4738 #ifdef PERL_OLD_COPY_ON_WRITE
4739 if (SvREADONLY(sv)) {
4741 const char * const pvx = SvPVX_const(sv);
4742 const STRLEN len = SvLEN(sv);
4743 const STRLEN cur = SvCUR(sv);
4744 /* next COW sv in the loop. If len is 0 then this is a shared-hash
4745 key scalar, so we mustn't attempt to call SV_COW_NEXT_SV(), as
4746 we'll fail an assertion. */
4747 SV * const next = len ? SV_COW_NEXT_SV(sv) : 0;
4750 PerlIO_printf(Perl_debug_log,
4751 "Copy on write: Force normal %ld\n",
4757 /* This SV doesn't own the buffer, so need to Newx() a new one: */
4760 if (flags & SV_COW_DROP_PV) {
4761 /* OK, so we don't need to copy our buffer. */
4764 SvGROW(sv, cur + 1);
4765 Move(pvx,SvPVX(sv),cur,char);
4770 sv_release_COW(sv, pvx, next);
4772 unshare_hek(SvSHARED_HEK_FROM_PV(pvx));
4778 else if (IN_PERL_RUNTIME)
4779 Perl_croak_no_modify(aTHX);
4782 if (SvREADONLY(sv)) {
4783 if (SvFAKE(sv) && !isGV_with_GP(sv)) {
4784 const char * const pvx = SvPVX_const(sv);
4785 const STRLEN len = SvCUR(sv);
4790 SvGROW(sv, len + 1);
4791 Move(pvx,SvPVX(sv),len,char);
4793 unshare_hek(SvSHARED_HEK_FROM_PV(pvx));
4795 else if (IN_PERL_RUNTIME)
4796 Perl_croak_no_modify(aTHX);
4800 sv_unref_flags(sv, flags);
4801 else if (SvFAKE(sv) && isGV_with_GP(sv))
4803 else if (SvFAKE(sv) && SvTYPE(sv) == SVt_REGEXP) {
4804 /* Need to downgrade the REGEXP to a simple(r) scalar. This is analogous
4805 to sv_unglob. We only need it here, so inline it. */
4806 const svtype new_type = SvMAGIC(sv) || SvSTASH(sv) ? SVt_PVMG : SVt_PV;
4807 SV *const temp = newSV_type(new_type);
4808 void *const temp_p = SvANY(sv);
4810 if (new_type == SVt_PVMG) {
4811 SvMAGIC_set(temp, SvMAGIC(sv));
4812 SvMAGIC_set(sv, NULL);
4813 SvSTASH_set(temp, SvSTASH(sv));
4814 SvSTASH_set(sv, NULL);
4816 SvCUR_set(temp, SvCUR(sv));
4817 /* Remember that SvPVX is in the head, not the body. */
4819 SvLEN_set(temp, SvLEN(sv));
4820 /* This signals "buffer is owned by someone else" in sv_clear,
4821 which is the least effort way to stop it freeing the buffer.
4823 SvLEN_set(sv, SvLEN(sv)+1);
4825 /* Their buffer is already owned by someone else. */
4826 SvPVX(sv) = savepvn(SvPVX(sv), SvCUR(sv));
4827 SvLEN_set(temp, SvCUR(sv)+1);
4830 /* Now swap the rest of the bodies. */
4832 SvFLAGS(sv) &= ~(SVf_FAKE|SVTYPEMASK);
4833 SvFLAGS(sv) |= new_type;
4834 SvANY(sv) = SvANY(temp);
4836 SvFLAGS(temp) &= ~(SVTYPEMASK);
4837 SvFLAGS(temp) |= SVt_REGEXP|SVf_FAKE;
4838 SvANY(temp) = temp_p;
4847 Efficient removal of characters from the beginning of the string buffer.
4848 SvPOK(sv) must be true and the C<ptr> must be a pointer to somewhere inside
4849 the string buffer. The C<ptr> becomes the first character of the adjusted
4850 string. Uses the "OOK hack".
4851 Beware: after this function returns, C<ptr> and SvPVX_const(sv) may no longer
4852 refer to the same chunk of data.
4858 Perl_sv_chop(pTHX_ register SV *const sv, register const char *const ptr)
4864 const U8 *real_start;
4868 PERL_ARGS_ASSERT_SV_CHOP;
4870 if (!ptr || !SvPOKp(sv))
4872 delta = ptr - SvPVX_const(sv);
4874 /* Nothing to do. */
4877 /* SvPVX(sv) may move in SV_CHECK_THINKFIRST(sv), but after this line,
4878 nothing uses the value of ptr any more. */
4879 max_delta = SvLEN(sv) ? SvLEN(sv) : SvCUR(sv);
4880 if (ptr <= SvPVX_const(sv))
4881 Perl_croak(aTHX_ "panic: sv_chop ptr=%p, start=%p, end=%p",
4882 ptr, SvPVX_const(sv), SvPVX_const(sv) + max_delta);
4883 SV_CHECK_THINKFIRST(sv);
4884 if (delta > max_delta)
4885 Perl_croak(aTHX_ "panic: sv_chop ptr=%p (was %p), start=%p, end=%p",
4886 SvPVX_const(sv) + delta, ptr, SvPVX_const(sv),
4887 SvPVX_const(sv) + max_delta);
4890 if (!SvLEN(sv)) { /* make copy of shared string */
4891 const char *pvx = SvPVX_const(sv);
4892 const STRLEN len = SvCUR(sv);
4893 SvGROW(sv, len + 1);
4894 Move(pvx,SvPVX(sv),len,char);
4897 SvFLAGS(sv) |= SVf_OOK;
4900 SvOOK_offset(sv, old_delta);
4902 SvLEN_set(sv, SvLEN(sv) - delta);
4903 SvCUR_set(sv, SvCUR(sv) - delta);
4904 SvPV_set(sv, SvPVX(sv) + delta);
4906 p = (U8 *)SvPVX_const(sv);
4911 real_start = p - delta;
4915 if (delta < 0x100) {
4919 p -= sizeof(STRLEN);
4920 Copy((U8*)&delta, p, sizeof(STRLEN), U8);
4924 /* Fill the preceding buffer with sentinals to verify that no-one is
4926 while (p > real_start) {
4934 =for apidoc sv_catpvn
4936 Concatenates the string onto the end of the string which is in the SV. The
4937 C<len> indicates number of bytes to copy. If the SV has the UTF-8
4938 status set, then the bytes appended should be valid UTF-8.
4939 Handles 'get' magic, but not 'set' magic. See C<sv_catpvn_mg>.
4941 =for apidoc sv_catpvn_flags
4943 Concatenates the string onto the end of the string which is in the SV. The
4944 C<len> indicates number of bytes to copy. If the SV has the UTF-8
4945 status set, then the bytes appended should be valid UTF-8.
4946 If C<flags> has C<SV_GMAGIC> bit set, will C<mg_get> on C<dsv> if
4947 appropriate, else not. C<sv_catpvn> and C<sv_catpvn_nomg> are implemented
4948 in terms of this function.
4954 Perl_sv_catpvn_flags(pTHX_ register SV *const dsv, register const char *sstr, register const STRLEN slen, const I32 flags)
4958 const char * const dstr = SvPV_force_flags(dsv, dlen, flags);
4960 PERL_ARGS_ASSERT_SV_CATPVN_FLAGS;
4962 SvGROW(dsv, dlen + slen + 1);
4964 sstr = SvPVX_const(dsv);
4965 Move(sstr, SvPVX(dsv) + dlen, slen, char);
4966 SvCUR_set(dsv, SvCUR(dsv) + slen);
4968 (void)SvPOK_only_UTF8(dsv); /* validate pointer */
4970 if (flags & SV_SMAGIC)
4975 =for apidoc sv_catsv
4977 Concatenates the string from SV C<ssv> onto the end of the string in
4978 SV C<dsv>. Modifies C<dsv> but not C<ssv>. Handles 'get' magic, but
4979 not 'set' magic. See C<sv_catsv_mg>.
4981 =for apidoc sv_catsv_flags
4983 Concatenates the string from SV C<ssv> onto the end of the string in
4984 SV C<dsv>. Modifies C<dsv> but not C<ssv>. If C<flags> has C<SV_GMAGIC>
4985 bit set, will C<mg_get> on the SVs if appropriate, else not. C<sv_catsv>
4986 and C<sv_catsv_nomg> are implemented in terms of this function.
4991 Perl_sv_catsv_flags(pTHX_ SV *const dsv, register SV *const ssv, const I32 flags)
4995 PERL_ARGS_ASSERT_SV_CATSV_FLAGS;
4999 const char *spv = SvPV_flags_const(ssv, slen, flags);
5001 /* sutf8 and dutf8 were type bool, but under USE_ITHREADS,
5002 gcc version 2.95.2 20000220 (Debian GNU/Linux) for
5003 Linux xxx 2.2.17 on sparc64 with gcc -O2, we erroneously
5004 get dutf8 = 0x20000000, (i.e. SVf_UTF8) even though
5005 dsv->sv_flags doesn't have that bit set.
5006 Andy Dougherty 12 Oct 2001
5008 const I32 sutf8 = DO_UTF8(ssv);
5011 if (SvGMAGICAL(dsv) && (flags & SV_GMAGIC))
5013 dutf8 = DO_UTF8(dsv);
5015 if (dutf8 != sutf8) {
5017 /* Not modifying source SV, so taking a temporary copy. */
5018 SV* const csv = newSVpvn_flags(spv, slen, SVs_TEMP);
5020 sv_utf8_upgrade(csv);
5021 spv = SvPV_const(csv, slen);
5024 /* Leave enough space for the cat that's about to happen */
5025 sv_utf8_upgrade_flags_grow(dsv, 0, slen);
5027 sv_catpvn_nomg(dsv, spv, slen);
5030 if (flags & SV_SMAGIC)
5035 =for apidoc sv_catpv
5037 Concatenates the string onto the end of the string which is in the SV.
5038 If the SV has the UTF-8 status set, then the bytes appended should be
5039 valid UTF-8. Handles 'get' magic, but not 'set' magic. See C<sv_catpv_mg>.
5044 Perl_sv_catpv(pTHX_ register SV *const sv, register const char *ptr)
5047 register STRLEN len;
5051 PERL_ARGS_ASSERT_SV_CATPV;
5055 junk = SvPV_force(sv, tlen);
5057 SvGROW(sv, tlen + len + 1);
5059 ptr = SvPVX_const(sv);
5060 Move(ptr,SvPVX(sv)+tlen,len+1,char);
5061 SvCUR_set(sv, SvCUR(sv) + len);
5062 (void)SvPOK_only_UTF8(sv); /* validate pointer */
5067 =for apidoc sv_catpv_flags
5069 Concatenates the string onto the end of the string which is in the SV.
5070 If the SV has the UTF-8 status set, then the bytes appended should
5071 be valid UTF-8. If C<flags> has C<SV_GMAGIC> bit set, will C<mg_get>
5072 on the SVs if appropriate, else not.
5078 Perl_sv_catpv_flags(pTHX_ SV *dstr, const char *sstr, const I32 flags)
5080 PERL_ARGS_ASSERT_SV_CATPV_FLAGS;
5081 sv_catpvn_flags(dstr, sstr, strlen(sstr), flags);
5085 =for apidoc sv_catpv_mg
5087 Like C<sv_catpv>, but also handles 'set' magic.
5093 Perl_sv_catpv_mg(pTHX_ register SV *const sv, register const char *const ptr)
5095 PERL_ARGS_ASSERT_SV_CATPV_MG;
5104 Creates a new SV. A non-zero C<len> parameter indicates the number of
5105 bytes of preallocated string space the SV should have. An extra byte for a
5106 trailing NUL is also reserved. (SvPOK is not set for the SV even if string
5107 space is allocated.) The reference count for the new SV is set to 1.
5109 In 5.9.3, newSV() replaces the older NEWSV() API, and drops the first
5110 parameter, I<x>, a debug aid which allowed callers to identify themselves.
5111 This aid has been superseded by a new build option, PERL_MEM_LOG (see
5112 L<perlhack/PERL_MEM_LOG>). The older API is still there for use in XS
5113 modules supporting older perls.
5119 Perl_newSV(pTHX_ const STRLEN len)
5126 sv_upgrade(sv, SVt_PV);
5127 SvGROW(sv, len + 1);
5132 =for apidoc sv_magicext
5134 Adds magic to an SV, upgrading it if necessary. Applies the
5135 supplied vtable and returns a pointer to the magic added.
5137 Note that C<sv_magicext> will allow things that C<sv_magic> will not.
5138 In particular, you can add magic to SvREADONLY SVs, and add more than
5139 one instance of the same 'how'.
5141 If C<namlen> is greater than zero then a C<savepvn> I<copy> of C<name> is
5142 stored, if C<namlen> is zero then C<name> is stored as-is and - as another
5143 special case - if C<(name && namlen == HEf_SVKEY)> then C<name> is assumed
5144 to contain an C<SV*> and is stored as-is with its REFCNT incremented.
5146 (This is now used as a subroutine by C<sv_magic>.)
5151 Perl_sv_magicext(pTHX_ SV *const sv, SV *const obj, const int how,
5152 const MGVTBL *const vtable, const char *const name, const I32 namlen)
5157 PERL_ARGS_ASSERT_SV_MAGICEXT;
5159 SvUPGRADE(sv, SVt_PVMG);
5160 Newxz(mg, 1, MAGIC);
5161 mg->mg_moremagic = SvMAGIC(sv);
5162 SvMAGIC_set(sv, mg);
5164 /* Sometimes a magic contains a reference loop, where the sv and
5165 object refer to each other. To prevent a reference loop that
5166 would prevent such objects being freed, we look for such loops
5167 and if we find one we avoid incrementing the object refcount.
5169 Note we cannot do this to avoid self-tie loops as intervening RV must
5170 have its REFCNT incremented to keep it in existence.
5173 if (!obj || obj == sv ||
5174 how == PERL_MAGIC_arylen ||
5175 how == PERL_MAGIC_symtab ||
5176 (SvTYPE(obj) == SVt_PVGV &&
5177 (GvSV(obj) == sv || GvHV(obj) == (const HV *)sv
5178 || GvAV(obj) == (const AV *)sv || GvCV(obj) == (const CV *)sv
5179 || GvIOp(obj) == (const IO *)sv || GvFORM(obj) == (const CV *)sv)))
5184 mg->mg_obj = SvREFCNT_inc_simple(obj);
5185 mg->mg_flags |= MGf_REFCOUNTED;
5188 /* Normal self-ties simply pass a null object, and instead of
5189 using mg_obj directly, use the SvTIED_obj macro to produce a
5190 new RV as needed. For glob "self-ties", we are tieing the PVIO
5191 with an RV obj pointing to the glob containing the PVIO. In
5192 this case, to avoid a reference loop, we need to weaken the
5196 if (how == PERL_MAGIC_tiedscalar && SvTYPE(sv) == SVt_PVIO &&
5197 obj && SvROK(obj) && GvIO(SvRV(obj)) == (const IO *)sv)
5203 mg->mg_len = namlen;
5206 mg->mg_ptr = savepvn(name, namlen);
5207 else if (namlen == HEf_SVKEY) {
5208 /* Yes, this is casting away const. This is only for the case of
5209 HEf_SVKEY. I think we need to document this aberation of the
5210 constness of the API, rather than making name non-const, as
5211 that change propagating outwards a long way. */
5212 mg->mg_ptr = (char*)SvREFCNT_inc_simple_NN((SV *)name);
5214 mg->mg_ptr = (char *) name;
5216 mg->mg_virtual = (MGVTBL *) vtable;
5220 SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK|SVf_POK);
5225 =for apidoc sv_magic
5227 Adds magic to an SV. First upgrades C<sv> to type C<SVt_PVMG> if necessary,
5228 then adds a new magic item of type C<how> to the head of the magic list.
5230 See C<sv_magicext> (which C<sv_magic> now calls) for a description of the
5231 handling of the C<name> and C<namlen> arguments.
5233 You need to use C<sv_magicext> to add magic to SvREADONLY SVs and also
5234 to add more than one instance of the same 'how'.
5240 Perl_sv_magic(pTHX_ register SV *const sv, SV *const obj, const int how,
5241 const char *const name, const I32 namlen)
5244 const MGVTBL *vtable;
5247 PERL_ARGS_ASSERT_SV_MAGIC;
5249 #ifdef PERL_OLD_COPY_ON_WRITE
5251 sv_force_normal_flags(sv, 0);
5253 if (SvREADONLY(sv)) {
5255 /* its okay to attach magic to shared strings; the subsequent
5256 * upgrade to PVMG will unshare the string */
5257 !(SvFAKE(sv) && SvTYPE(sv) < SVt_PVMG)
5260 && how != PERL_MAGIC_regex_global
5261 && how != PERL_MAGIC_bm
5262 && how != PERL_MAGIC_fm
5263 && how != PERL_MAGIC_sv
5264 && how != PERL_MAGIC_backref
5267 Perl_croak_no_modify(aTHX);
5270 if (SvMAGICAL(sv) || (how == PERL_MAGIC_taint && SvTYPE(sv) >= SVt_PVMG)) {
5271 if (SvMAGIC(sv) && (mg = mg_find(sv, how))) {
5272 /* sv_magic() refuses to add a magic of the same 'how' as an
5275 if (how == PERL_MAGIC_taint) {
5277 /* Any scalar which already had taint magic on which someone
5278 (erroneously?) did SvIOK_on() or similar will now be
5279 incorrectly sporting public "OK" flags. */
5280 SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK|SVf_POK);
5288 vtable = &PL_vtbl_sv;
5290 case PERL_MAGIC_overload:
5291 vtable = &PL_vtbl_amagic;
5293 case PERL_MAGIC_overload_elem:
5294 vtable = &PL_vtbl_amagicelem;
5296 case PERL_MAGIC_overload_table:
5297 vtable = &PL_vtbl_ovrld;
5300 vtable = &PL_vtbl_bm;
5302 case PERL_MAGIC_regdata:
5303 vtable = &PL_vtbl_regdata;
5305 case PERL_MAGIC_regdatum:
5306 vtable = &PL_vtbl_regdatum;
5308 case PERL_MAGIC_env:
5309 vtable = &PL_vtbl_env;
5312 vtable = &PL_vtbl_fm;
5314 case PERL_MAGIC_envelem:
5315 vtable = &PL_vtbl_envelem;
5317 case PERL_MAGIC_regex_global:
5318 vtable = &PL_vtbl_mglob;
5320 case PERL_MAGIC_isa:
5321 vtable = &PL_vtbl_isa;
5323 case PERL_MAGIC_isaelem:
5324 vtable = &PL_vtbl_isaelem;
5326 case PERL_MAGIC_nkeys:
5327 vtable = &PL_vtbl_nkeys;
5329 case PERL_MAGIC_dbfile:
5332 case PERL_MAGIC_dbline:
5333 vtable = &PL_vtbl_dbline;
5335 #ifdef USE_LOCALE_COLLATE
5336 case PERL_MAGIC_collxfrm:
5337 vtable = &PL_vtbl_collxfrm;
5339 #endif /* USE_LOCALE_COLLATE */
5340 case PERL_MAGIC_tied:
5341 vtable = &PL_vtbl_pack;
5343 case PERL_MAGIC_tiedelem:
5344 case PERL_MAGIC_tiedscalar:
5345 vtable = &PL_vtbl_packelem;
5348 vtable = &PL_vtbl_regexp;
5350 case PERL_MAGIC_sig:
5351 vtable = &PL_vtbl_sig;
5353 case PERL_MAGIC_sigelem:
5354 vtable = &PL_vtbl_sigelem;
5356 case PERL_MAGIC_taint:
5357 vtable = &PL_vtbl_taint;
5359 case PERL_MAGIC_uvar:
5360 vtable = &PL_vtbl_uvar;
5362 case PERL_MAGIC_vec:
5363 vtable = &PL_vtbl_vec;
5365 case PERL_MAGIC_arylen_p:
5366 case PERL_MAGIC_rhash:
5367 case PERL_MAGIC_symtab:
5368 case PERL_MAGIC_vstring:
5369 case PERL_MAGIC_checkcall:
5372 case PERL_MAGIC_utf8:
5373 vtable = &PL_vtbl_utf8;
5375 case PERL_MAGIC_substr:
5376 vtable = &PL_vtbl_substr;
5378 case PERL_MAGIC_defelem:
5379 vtable = &PL_vtbl_defelem;
5381 case PERL_MAGIC_arylen:
5382 vtable = &PL_vtbl_arylen;
5384 case PERL_MAGIC_pos:
5385 vtable = &PL_vtbl_pos;
5387 case PERL_MAGIC_backref:
5388 vtable = &PL_vtbl_backref;
5390 case PERL_MAGIC_hintselem:
5391 vtable = &PL_vtbl_hintselem;
5393 case PERL_MAGIC_hints:
5394 vtable = &PL_vtbl_hints;
5396 case PERL_MAGIC_ext:
5397 /* Reserved for use by extensions not perl internals. */
5398 /* Useful for attaching extension internal data to perl vars. */
5399 /* Note that multiple extensions may clash if magical scalars */
5400 /* etc holding private data from one are passed to another. */
5404 Perl_croak(aTHX_ "Don't know how to handle magic of type \\%o", how);
5407 /* Rest of work is done else where */
5408 mg = sv_magicext(sv,obj,how,vtable,name,namlen);
5411 case PERL_MAGIC_taint:
5414 case PERL_MAGIC_ext:
5415 case PERL_MAGIC_dbfile:
5422 S_sv_unmagicext_flags(pTHX_ SV *const sv, const int type, MGVTBL *vtbl, const U32 flags)
5429 if (SvTYPE(sv) < SVt_PVMG || !SvMAGIC(sv))
5431 mgp = &(((XPVMG*) SvANY(sv))->xmg_u.xmg_magic);
5432 for (mg = *mgp; mg; mg = *mgp) {
5433 const MGVTBL* const virt = mg->mg_virtual;
5434 if (mg->mg_type == type && (!flags || virt == vtbl)) {
5435 *mgp = mg->mg_moremagic;
5436 if (virt && virt->svt_free)
5437 virt->svt_free(aTHX_ sv, mg);
5438 if (mg->mg_ptr && mg->mg_type != PERL_MAGIC_regex_global) {
5440 Safefree(mg->mg_ptr);
5441 else if (mg->mg_len == HEf_SVKEY)
5442 SvREFCNT_dec(MUTABLE_SV(mg->mg_ptr));
5443 else if (mg->mg_type == PERL_MAGIC_utf8)
5444 Safefree(mg->mg_ptr);
5446 if (mg->mg_flags & MGf_REFCOUNTED)
5447 SvREFCNT_dec(mg->mg_obj);
5451 mgp = &mg->mg_moremagic;
5454 if (SvMAGICAL(sv)) /* if we're under save_magic, wait for restore_magic; */
5455 mg_magical(sv); /* else fix the flags now */
5459 SvFLAGS(sv) |= (SvFLAGS(sv) & (SVp_IOK|SVp_NOK|SVp_POK)) >> PRIVSHIFT;
5465 =for apidoc sv_unmagic
5467 Removes all magic of type C<type> from an SV.
5473 Perl_sv_unmagic(pTHX_ SV *const sv, const int type)
5475 PERL_ARGS_ASSERT_SV_UNMAGIC;
5476 return S_sv_unmagicext_flags(aTHX_ sv, type, NULL, 0);
5480 =for apidoc sv_unmagicext
5482 Removes all magic of type C<type> with the specified C<vtbl> from an SV.
5488 Perl_sv_unmagicext(pTHX_ SV *const sv, const int type, MGVTBL *vtbl)
5490 PERL_ARGS_ASSERT_SV_UNMAGICEXT;
5491 return S_sv_unmagicext_flags(aTHX_ sv, type, vtbl, 1);
5495 =for apidoc sv_rvweaken
5497 Weaken a reference: set the C<SvWEAKREF> flag on this RV; give the
5498 referred-to SV C<PERL_MAGIC_backref> magic if it hasn't already; and
5499 push a back-reference to this RV onto the array of backreferences
5500 associated with that magic. If the RV is magical, set magic will be
5501 called after the RV is cleared.
5507 Perl_sv_rvweaken(pTHX_ SV *const sv)
5511 PERL_ARGS_ASSERT_SV_RVWEAKEN;
5513 if (!SvOK(sv)) /* let undefs pass */
5516 Perl_croak(aTHX_ "Can't weaken a nonreference");
5517 else if (SvWEAKREF(sv)) {
5518 Perl_ck_warner(aTHX_ packWARN(WARN_MISC), "Reference is already weak");
5522 Perl_sv_add_backref(aTHX_ tsv, sv);
5528 /* Give tsv backref magic if it hasn't already got it, then push a
5529 * back-reference to sv onto the array associated with the backref magic.
5531 * As an optimisation, if there's only one backref and it's not an AV,
5532 * store it directly in the HvAUX or mg_obj slot, avoiding the need to
5533 * allocate an AV. (Whether the slot holds an AV tells us whether this is
5536 * If an HV's backref is stored in magic, it is moved back to HvAUX.
5539 /* A discussion about the backreferences array and its refcount:
5541 * The AV holding the backreferences is pointed to either as the mg_obj of
5542 * PERL_MAGIC_backref, or in the specific case of a HV that has the hv_aux
5543 * structure, from the xhv_backreferences field. (A HV without hv_aux will
5544 * have the standard magic instead.) The array is created with a refcount
5545 * of 2. This means that if during global destruction the array gets
5546 * picked on before its parent to have its refcount decremented by the
5547 * random zapper, it won't actually be freed, meaning it's still there for
5548 * when its parent gets freed.
5550 * When the parent SV is freed, the extra ref is killed by
5551 * Perl_sv_kill_backrefs. The other ref is killed, in the case of magic,
5552 * by mg_free() / MGf_REFCOUNTED, or for a hash, by Perl_hv_kill_backrefs.
5554 * When a single backref SV is stored directly, it is not reference
5559 Perl_sv_add_backref(pTHX_ SV *const tsv, SV *const sv)
5566 PERL_ARGS_ASSERT_SV_ADD_BACKREF;
5568 /* find slot to store array or singleton backref */
5570 if (SvTYPE(tsv) == SVt_PVHV) {
5571 svp = (SV**)Perl_hv_backreferences_p(aTHX_ MUTABLE_HV(tsv));
5574 if ((mg = mg_find(tsv, PERL_MAGIC_backref))) {
5575 /* Aha. They've got it stowed in magic instead.
5576 * Move it back to xhv_backreferences */
5578 /* Stop mg_free decreasing the reference count. */
5580 /* Stop mg_free even calling the destructor, given that
5581 there's no AV to free up. */
5583 sv_unmagic(tsv, PERL_MAGIC_backref);
5589 (SvMAGICAL(tsv) ? mg_find(tsv, PERL_MAGIC_backref) : NULL))))
5591 sv_magic(tsv, NULL, PERL_MAGIC_backref, NULL, 0);
5592 mg = mg_find(tsv, PERL_MAGIC_backref);
5594 svp = &(mg->mg_obj);
5597 /* create or retrieve the array */
5599 if ( (!*svp && SvTYPE(sv) == SVt_PVAV)
5600 || (*svp && SvTYPE(*svp) != SVt_PVAV)
5605 SvREFCNT_inc_simple_void(av);
5606 /* av now has a refcnt of 2; see discussion above */
5608 /* move single existing backref to the array */
5610 AvARRAY(av)[++AvFILLp(av)] = *svp; /* av_push() */
5614 mg->mg_flags |= MGf_REFCOUNTED;
5617 av = MUTABLE_AV(*svp);
5620 /* optimisation: store single backref directly in HvAUX or mg_obj */
5624 /* push new backref */
5625 assert(SvTYPE(av) == SVt_PVAV);
5626 if (AvFILLp(av) >= AvMAX(av)) {
5627 av_extend(av, AvFILLp(av)+1);
5629 AvARRAY(av)[++AvFILLp(av)] = sv; /* av_push() */
5632 /* delete a back-reference to ourselves from the backref magic associated
5633 * with the SV we point to.
5637 Perl_sv_del_backref(pTHX_ SV *const tsv, SV *const sv)
5642 PERL_ARGS_ASSERT_SV_DEL_BACKREF;
5644 if (SvTYPE(tsv) == SVt_PVHV && SvOOK(tsv)) {
5645 svp = (SV**)Perl_hv_backreferences_p(aTHX_ MUTABLE_HV(tsv));
5647 if (!svp || !*svp) {
5649 = SvMAGICAL(tsv) ? mg_find(tsv, PERL_MAGIC_backref) : NULL;
5650 svp = mg ? &(mg->mg_obj) : NULL;
5654 Perl_croak(aTHX_ "panic: del_backref");
5656 if (SvTYPE(*svp) == SVt_PVAV) {
5660 AV * const av = (AV*)*svp;
5662 assert(!SvIS_FREED(av));
5666 /* for an SV with N weak references to it, if all those
5667 * weak refs are deleted, then sv_del_backref will be called
5668 * N times and O(N^2) compares will be done within the backref
5669 * array. To ameliorate this potential slowness, we:
5670 * 1) make sure this code is as tight as possible;
5671 * 2) when looking for SV, look for it at both the head and tail of the
5672 * array first before searching the rest, since some create/destroy
5673 * patterns will cause the backrefs to be freed in order.
5680 SV **p = &svp[fill];
5681 SV *const topsv = *p;
5688 /* We weren't the last entry.
5689 An unordered list has this property that you
5690 can take the last element off the end to fill
5691 the hole, and it's still an unordered list :-)
5697 break; /* should only be one */
5704 AvFILLp(av) = fill-1;
5707 /* optimisation: only a single backref, stored directly */
5709 Perl_croak(aTHX_ "panic: del_backref");
5716 Perl_sv_kill_backrefs(pTHX_ SV *const sv, AV *const av)
5722 PERL_ARGS_ASSERT_SV_KILL_BACKREFS;
5727 /* after multiple passes through Perl_sv_clean_all() for a thinngy
5728 * that has badly leaked, the backref array may have gotten freed,
5729 * since we only protect it against 1 round of cleanup */
5730 if (SvIS_FREED(av)) {
5731 if (PL_in_clean_all) /* All is fair */
5734 "panic: magic_killbackrefs (freed backref AV/SV)");
5738 is_array = (SvTYPE(av) == SVt_PVAV);
5740 assert(!SvIS_FREED(av));
5743 last = svp + AvFILLp(av);
5746 /* optimisation: only a single backref, stored directly */
5752 while (svp <= last) {
5754 SV *const referrer = *svp;
5755 if (SvWEAKREF(referrer)) {
5756 /* XXX Should we check that it hasn't changed? */
5757 assert(SvROK(referrer));
5758 SvRV_set(referrer, 0);
5760 SvWEAKREF_off(referrer);
5761 SvSETMAGIC(referrer);
5762 } else if (SvTYPE(referrer) == SVt_PVGV ||
5763 SvTYPE(referrer) == SVt_PVLV) {
5764 assert(SvTYPE(sv) == SVt_PVHV); /* stash backref */
5765 /* You lookin' at me? */
5766 assert(GvSTASH(referrer));
5767 assert(GvSTASH(referrer) == (const HV *)sv);
5768 GvSTASH(referrer) = 0;
5769 } else if (SvTYPE(referrer) == SVt_PVCV ||
5770 SvTYPE(referrer) == SVt_PVFM) {
5771 if (SvTYPE(sv) == SVt_PVHV) { /* stash backref */
5772 /* You lookin' at me? */
5773 assert(CvSTASH(referrer));
5774 assert(CvSTASH(referrer) == (const HV *)sv);
5775 SvANY(MUTABLE_CV(referrer))->xcv_stash = 0;
5778 assert(SvTYPE(sv) == SVt_PVGV);
5779 /* You lookin' at me? */
5780 assert(CvGV(referrer));
5781 assert(CvGV(referrer) == (const GV *)sv);
5782 anonymise_cv_maybe(MUTABLE_GV(sv),
5783 MUTABLE_CV(referrer));
5788 "panic: magic_killbackrefs (flags=%"UVxf")",
5789 (UV)SvFLAGS(referrer));
5800 SvREFCNT_dec(av); /* remove extra count added by sv_add_backref() */
5806 =for apidoc sv_insert
5808 Inserts a string at the specified offset/length within the SV. Similar to
5809 the Perl substr() function. Handles get magic.
5811 =for apidoc sv_insert_flags
5813 Same as C<sv_insert>, but the extra C<flags> are passed the C<SvPV_force_flags> that applies to C<bigstr>.
5819 Perl_sv_insert_flags(pTHX_ SV *const bigstr, const STRLEN offset, const STRLEN len, const char *const little, const STRLEN littlelen, const U32 flags)
5824 register char *midend;
5825 register char *bigend;
5829 PERL_ARGS_ASSERT_SV_INSERT_FLAGS;
5832 Perl_croak(aTHX_ "Can't modify non-existent substring");
5833 SvPV_force_flags(bigstr, curlen, flags);
5834 (void)SvPOK_only_UTF8(bigstr);
5835 if (offset + len > curlen) {
5836 SvGROW(bigstr, offset+len+1);
5837 Zero(SvPVX(bigstr)+curlen, offset+len-curlen, char);
5838 SvCUR_set(bigstr, offset+len);
5842 i = littlelen - len;
5843 if (i > 0) { /* string might grow */
5844 big = SvGROW(bigstr, SvCUR(bigstr) + i + 1);
5845 mid = big + offset + len;
5846 midend = bigend = big + SvCUR(bigstr);
5849 while (midend > mid) /* shove everything down */
5850 *--bigend = *--midend;
5851 Move(little,big+offset,littlelen,char);
5852 SvCUR_set(bigstr, SvCUR(bigstr) + i);
5857 Move(little,SvPVX(bigstr)+offset,len,char);
5862 big = SvPVX(bigstr);
5865 bigend = big + SvCUR(bigstr);
5867 if (midend > bigend)
5868 Perl_croak(aTHX_ "panic: sv_insert");
5870 if (mid - big > bigend - midend) { /* faster to shorten from end */
5872 Move(little, mid, littlelen,char);
5875 i = bigend - midend;
5877 Move(midend, mid, i,char);
5881 SvCUR_set(bigstr, mid - big);
5883 else if ((i = mid - big)) { /* faster from front */
5884 midend -= littlelen;
5886 Move(big, midend - i, i, char);
5887 sv_chop(bigstr,midend-i);
5889 Move(little, mid, littlelen,char);
5891 else if (littlelen) {
5892 midend -= littlelen;
5893 sv_chop(bigstr,midend);
5894 Move(little,midend,littlelen,char);
5897 sv_chop(bigstr,midend);
5903 =for apidoc sv_replace
5905 Make the first argument a copy of the second, then delete the original.
5906 The target SV physically takes over ownership of the body of the source SV
5907 and inherits its flags; however, the target keeps any magic it owns,
5908 and any magic in the source is discarded.
5909 Note that this is a rather specialist SV copying operation; most of the
5910 time you'll want to use C<sv_setsv> or one of its many macro front-ends.
5916 Perl_sv_replace(pTHX_ register SV *const sv, register SV *const nsv)
5919 const U32 refcnt = SvREFCNT(sv);
5921 PERL_ARGS_ASSERT_SV_REPLACE;
5923 SV_CHECK_THINKFIRST_COW_DROP(sv);
5924 if (SvREFCNT(nsv) != 1) {
5925 Perl_croak(aTHX_ "panic: reference miscount on nsv in sv_replace()"
5926 " (%" UVuf " != 1)", (UV) SvREFCNT(nsv));
5928 if (SvMAGICAL(sv)) {
5932 sv_upgrade(nsv, SVt_PVMG);
5933 SvMAGIC_set(nsv, SvMAGIC(sv));
5934 SvFLAGS(nsv) |= SvMAGICAL(sv);
5936 SvMAGIC_set(sv, NULL);
5940 assert(!SvREFCNT(sv));
5941 #ifdef DEBUG_LEAKING_SCALARS
5942 sv->sv_flags = nsv->sv_flags;
5943 sv->sv_any = nsv->sv_any;
5944 sv->sv_refcnt = nsv->sv_refcnt;
5945 sv->sv_u = nsv->sv_u;
5947 StructCopy(nsv,sv,SV);
5949 if(SvTYPE(sv) == SVt_IV) {
5951 = (XPVIV*)((char*)&(sv->sv_u.svu_iv) - STRUCT_OFFSET(XPVIV, xiv_iv));
5955 #ifdef PERL_OLD_COPY_ON_WRITE
5956 if (SvIsCOW_normal(nsv)) {
5957 /* We need to follow the pointers around the loop to make the
5958 previous SV point to sv, rather than nsv. */
5961 while ((next = SV_COW_NEXT_SV(current)) != nsv) {
5964 assert(SvPVX_const(current) == SvPVX_const(nsv));
5966 /* Make the SV before us point to the SV after us. */
5968 PerlIO_printf(Perl_debug_log, "previous is\n");
5970 PerlIO_printf(Perl_debug_log,
5971 "move it from 0x%"UVxf" to 0x%"UVxf"\n",
5972 (UV) SV_COW_NEXT_SV(current), (UV) sv);
5974 SV_COW_NEXT_SV_SET(current, sv);
5977 SvREFCNT(sv) = refcnt;
5978 SvFLAGS(nsv) |= SVTYPEMASK; /* Mark as freed */
5983 /* We're about to free a GV which has a CV that refers back to us.
5984 * If that CV will outlive us, make it anonymous (i.e. fix up its CvGV
5988 S_anonymise_cv_maybe(pTHX_ GV *gv, CV* cv)
5994 PERL_ARGS_ASSERT_ANONYMISE_CV_MAYBE;
5997 assert(SvREFCNT(gv) == 0);
5998 assert(isGV(gv) && isGV_with_GP(gv));
6000 assert(!CvANON(cv));
6001 assert(CvGV(cv) == gv);
6003 /* will the CV shortly be freed by gp_free() ? */
6004 if (GvCV(gv) == cv && GvGP(gv)->gp_refcnt < 2 && SvREFCNT(cv) < 2) {
6005 SvANY(cv)->xcv_gv = NULL;
6009 /* if not, anonymise: */
6010 stash = GvSTASH(gv) && HvNAME(GvSTASH(gv))
6011 ? HvENAME(GvSTASH(gv)) : NULL;
6012 gvname = Perl_newSVpvf(aTHX_ "%s::__ANON__",
6013 stash ? stash : "__ANON__");
6014 anongv = gv_fetchsv(gvname, GV_ADDMULTI, SVt_PVCV);
6015 SvREFCNT_dec(gvname);
6019 SvANY(cv)->xcv_gv = MUTABLE_GV(SvREFCNT_inc(anongv));
6024 =for apidoc sv_clear
6026 Clear an SV: call any destructors, free up any memory used by the body,
6027 and free the body itself. The SV's head is I<not> freed, although
6028 its type is set to all 1's so that it won't inadvertently be assumed
6029 to be live during global destruction etc.
6030 This function should only be called when REFCNT is zero. Most of the time
6031 you'll want to call C<sv_free()> (or its macro wrapper C<SvREFCNT_dec>)
6038 Perl_sv_clear(pTHX_ SV *const orig_sv)
6043 const struct body_details *sv_type_details;
6046 register SV *sv = orig_sv;
6048 PERL_ARGS_ASSERT_SV_CLEAR;
6050 /* within this loop, sv is the SV currently being freed, and
6051 * iter_sv is the most recent AV or whatever that's being iterated
6052 * over to provide more SVs */
6058 assert(SvREFCNT(sv) == 0);
6059 assert(SvTYPE(sv) != SVTYPEMASK);
6061 if (type <= SVt_IV) {
6062 /* See the comment in sv.h about the collusion between this
6063 * early return and the overloading of the NULL slots in the
6067 SvFLAGS(sv) &= SVf_BREAK;
6068 SvFLAGS(sv) |= SVTYPEMASK;
6073 if (!curse(sv, 1)) goto get_next_sv;
6075 if (type >= SVt_PVMG) {
6076 /* Free back-references before magic, in case the magic calls
6077 * Perl code that has weak references to sv. */
6078 if (type == SVt_PVHV)
6079 Perl_hv_kill_backrefs(aTHX_ MUTABLE_HV(sv));
6080 if (type == SVt_PVMG && SvPAD_OUR(sv)) {
6081 SvREFCNT_dec(SvOURSTASH(sv));
6082 } else if (SvMAGIC(sv)) {
6083 /* Free back-references before other types of magic. */
6084 sv_unmagic(sv, PERL_MAGIC_backref);
6087 if (type == SVt_PVMG && SvPAD_TYPED(sv))
6088 SvREFCNT_dec(SvSTASH(sv));
6091 /* case SVt_BIND: */
6094 IoIFP(sv) != PerlIO_stdin() &&
6095 IoIFP(sv) != PerlIO_stdout() &&
6096 IoIFP(sv) != PerlIO_stderr() &&
6097 !(IoFLAGS(sv) & IOf_FAKE_DIRP))
6099 io_close(MUTABLE_IO(sv), FALSE);
6101 if (IoDIRP(sv) && !(IoFLAGS(sv) & IOf_FAKE_DIRP))
6102 PerlDir_close(IoDIRP(sv));
6103 IoDIRP(sv) = (DIR*)NULL;
6104 Safefree(IoTOP_NAME(sv));
6105 Safefree(IoFMT_NAME(sv));
6106 Safefree(IoBOTTOM_NAME(sv));
6109 /* FIXME for plugins */
6110 pregfree2((REGEXP*) sv);
6114 cv_undef(MUTABLE_CV(sv));
6115 /* If we're in a stash, we don't own a reference to it.
6116 * However it does have a back reference to us, which needs to
6118 if ((stash = CvSTASH(sv)))
6119 sv_del_backref(MUTABLE_SV(stash), sv);
6122 if (PL_last_swash_hv == (const HV *)sv) {
6123 PL_last_swash_hv = NULL;
6125 Perl_hv_undef_flags(aTHX_ MUTABLE_HV(sv), HV_NAME_SETALL);
6129 AV* av = MUTABLE_AV(sv);
6130 if (PL_comppad == av) {
6134 if (AvREAL(av) && AvFILLp(av) > -1) {
6135 next_sv = AvARRAY(av)[AvFILLp(av)--];
6136 /* save old iter_sv in top-most slot of AV,
6137 * and pray that it doesn't get wiped in the meantime */
6138 AvARRAY(av)[AvMAX(av)] = iter_sv;
6140 goto get_next_sv; /* process this new sv */
6142 Safefree(AvALLOC(av));
6147 if (LvTYPE(sv) == 'T') { /* for tie: return HE to pool */
6148 SvREFCNT_dec(HeKEY_sv((HE*)LvTARG(sv)));
6149 HeNEXT((HE*)LvTARG(sv)) = PL_hv_fetch_ent_mh;
6150 PL_hv_fetch_ent_mh = (HE*)LvTARG(sv);
6152 else if (LvTYPE(sv) != 't') /* unless tie: unrefcnted fake SV** */
6153 SvREFCNT_dec(LvTARG(sv));
6155 if (isGV_with_GP(sv)) {
6156 if(GvCVu((const GV *)sv) && (stash = GvSTASH(MUTABLE_GV(sv)))
6157 && HvENAME_get(stash))
6158 mro_method_changed_in(stash);
6159 gp_free(MUTABLE_GV(sv));
6161 unshare_hek(GvNAME_HEK(sv));
6162 /* If we're in a stash, we don't own a reference to it.
6163 * However it does have a back reference to us, which
6164 * needs to be cleared. */
6165 if (!SvVALID(sv) && (stash = GvSTASH(sv)))
6166 sv_del_backref(MUTABLE_SV(stash), sv);
6168 /* FIXME. There are probably more unreferenced pointers to SVs
6169 * in the interpreter struct that we should check and tidy in
6170 * a similar fashion to this: */
6171 if ((const GV *)sv == PL_last_in_gv)
6172 PL_last_in_gv = NULL;
6178 /* Don't bother with SvOOK_off(sv); as we're only going to
6182 SvOOK_offset(sv, offset);
6183 SvPV_set(sv, SvPVX_mutable(sv) - offset);
6184 /* Don't even bother with turning off the OOK flag. */
6189 SV * const target = SvRV(sv);
6191 sv_del_backref(target, sv);
6196 #ifdef PERL_OLD_COPY_ON_WRITE
6197 else if (SvPVX_const(sv)
6198 && !(SvTYPE(sv) == SVt_PVIO
6199 && !(IoFLAGS(sv) & IOf_FAKE_DIRP)))
6203 PerlIO_printf(Perl_debug_log, "Copy on write: clear\n");
6207 sv_release_COW(sv, SvPVX_const(sv), SV_COW_NEXT_SV(sv));
6209 unshare_hek(SvSHARED_HEK_FROM_PV(SvPVX_const(sv)));
6213 } else if (SvLEN(sv)) {
6214 Safefree(SvPVX_const(sv));
6218 else if (SvPVX_const(sv) && SvLEN(sv)
6219 && !(SvTYPE(sv) == SVt_PVIO
6220 && !(IoFLAGS(sv) & IOf_FAKE_DIRP)))
6221 Safefree(SvPVX_mutable(sv));
6222 else if (SvPVX_const(sv) && SvREADONLY(sv) && SvFAKE(sv)) {
6223 unshare_hek(SvSHARED_HEK_FROM_PV(SvPVX_const(sv)));
6234 SvFLAGS(sv) &= SVf_BREAK;
6235 SvFLAGS(sv) |= SVTYPEMASK;
6237 sv_type_details = bodies_by_type + type;
6238 if (sv_type_details->arena) {
6239 del_body(((char *)SvANY(sv) + sv_type_details->offset),
6240 &PL_body_roots[type]);
6242 else if (sv_type_details->body_size) {
6243 safefree(SvANY(sv));
6247 /* caller is responsible for freeing the head of the original sv */
6248 if (sv != orig_sv && !SvREFCNT(sv))
6251 /* grab and free next sv, if any */
6259 else if (!iter_sv) {
6261 } else if (SvTYPE(iter_sv) == SVt_PVAV) {
6262 AV *const av = (AV*)iter_sv;
6263 if (AvFILLp(av) > -1) {
6264 sv = AvARRAY(av)[AvFILLp(av)--];
6266 else { /* no more elements of current AV to free */
6269 /* restore previous value, squirrelled away */
6270 iter_sv = AvARRAY(av)[AvMAX(av)];
6271 Safefree(AvALLOC(av));
6276 /* unrolled SvREFCNT_dec and sv_free2 follows: */
6280 if (!SvREFCNT(sv)) {
6284 if (--(SvREFCNT(sv)))
6288 Perl_ck_warner_d(aTHX_ packWARN(WARN_DEBUGGING),
6289 "Attempt to free temp prematurely: SV 0x%"UVxf
6290 pTHX__FORMAT, PTR2UV(sv) pTHX__VALUE);
6294 if (SvREADONLY(sv) && SvIMMORTAL(sv)) {
6295 /* make sure SvREFCNT(sv)==0 happens very seldom */
6296 SvREFCNT(sv) = (~(U32)0)/2;
6305 /* This routine curses the sv itself, not the object referenced by sv. So
6306 sv does not have to be ROK. */
6309 S_curse(pTHX_ SV * const sv, const bool check_refcnt) {
6312 PERL_ARGS_ASSERT_CURSE;
6313 assert(SvOBJECT(sv));
6315 if (PL_defstash && /* Still have a symbol table? */
6322 stash = SvSTASH(sv);
6323 destructor = StashHANDLER(stash,DESTROY);
6325 /* A constant subroutine can have no side effects, so
6326 don't bother calling it. */
6327 && !CvCONST(destructor)
6328 /* Don't bother calling an empty destructor */
6329 && (CvISXSUB(destructor)
6330 || (CvSTART(destructor)
6331 && (CvSTART(destructor)->op_next->op_type
6334 SV* const tmpref = newRV(sv);
6335 SvREADONLY_on(tmpref); /* DESTROY() could be naughty */
6337 PUSHSTACKi(PERLSI_DESTROY);
6342 call_sv(MUTABLE_SV(destructor),
6343 G_DISCARD|G_EVAL|G_KEEPERR|G_VOID);
6347 if(SvREFCNT(tmpref) < 2) {
6348 /* tmpref is not kept alive! */
6350 SvRV_set(tmpref, NULL);
6353 SvREFCNT_dec(tmpref);
6355 } while (SvOBJECT(sv) && SvSTASH(sv) != stash);
6358 if (check_refcnt && SvREFCNT(sv)) {
6359 if (PL_in_clean_objs)
6361 "DESTROY created new reference to dead object '%s'",
6363 /* DESTROY gave object new lease on life */
6369 SvREFCNT_dec(SvSTASH(sv)); /* possibly of changed persuasion */
6370 SvOBJECT_off(sv); /* Curse the object. */
6371 if (SvTYPE(sv) != SVt_PVIO)
6372 --PL_sv_objcount;/* XXX Might want something more general */
6378 =for apidoc sv_newref
6380 Increment an SV's reference count. Use the C<SvREFCNT_inc()> wrapper
6387 Perl_sv_newref(pTHX_ SV *const sv)
6389 PERL_UNUSED_CONTEXT;
6398 Decrement an SV's reference count, and if it drops to zero, call
6399 C<sv_clear> to invoke destructors and free up any memory used by
6400 the body; finally, deallocate the SV's head itself.
6401 Normally called via a wrapper macro C<SvREFCNT_dec>.
6407 Perl_sv_free(pTHX_ SV *const sv)
6412 if (SvREFCNT(sv) == 0) {
6413 if (SvFLAGS(sv) & SVf_BREAK)
6414 /* this SV's refcnt has been artificially decremented to
6415 * trigger cleanup */
6417 if (PL_in_clean_all) /* All is fair */
6419 if (SvREADONLY(sv) && SvIMMORTAL(sv)) {
6420 /* make sure SvREFCNT(sv)==0 happens very seldom */
6421 SvREFCNT(sv) = (~(U32)0)/2;
6424 if (ckWARN_d(WARN_INTERNAL)) {
6425 #ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP
6426 Perl_dump_sv_child(aTHX_ sv);
6428 #ifdef DEBUG_LEAKING_SCALARS
6431 #ifdef DEBUG_LEAKING_SCALARS_ABORT
6432 if (PL_warnhook == PERL_WARNHOOK_FATAL
6433 || ckDEAD(packWARN(WARN_INTERNAL))) {
6434 /* Don't let Perl_warner cause us to escape our fate: */
6438 /* This may not return: */
6439 Perl_warner(aTHX_ packWARN(WARN_INTERNAL),
6440 "Attempt to free unreferenced scalar: SV 0x%"UVxf
6441 pTHX__FORMAT, PTR2UV(sv) pTHX__VALUE);
6444 #ifdef DEBUG_LEAKING_SCALARS_ABORT
6449 if (--(SvREFCNT(sv)) > 0)
6451 Perl_sv_free2(aTHX_ sv);
6455 Perl_sv_free2(pTHX_ SV *const sv)
6459 PERL_ARGS_ASSERT_SV_FREE2;
6463 Perl_ck_warner_d(aTHX_ packWARN(WARN_DEBUGGING),
6464 "Attempt to free temp prematurely: SV 0x%"UVxf
6465 pTHX__FORMAT, PTR2UV(sv) pTHX__VALUE);
6469 if (SvREADONLY(sv) && SvIMMORTAL(sv)) {
6470 /* make sure SvREFCNT(sv)==0 happens very seldom */
6471 SvREFCNT(sv) = (~(U32)0)/2;