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
39 /* Missing proto on LynxOS */
40 char *gconvert(double, int, int, char *);
44 # define SNPRINTF_G(nv, buffer, size, ndig) \
45 quadmath_snprintf(buffer, size, "%.*Qg", (int)ndig, (NV)(nv))
47 # define SNPRINTF_G(nv, buffer, size, ndig) \
48 PERL_UNUSED_RESULT(Gconvert((NV)(nv), (int)ndig, 0, buffer))
51 #ifndef SV_COW_THRESHOLD
52 # define SV_COW_THRESHOLD 0 /* COW iff len > K */
54 #ifndef SV_COWBUF_THRESHOLD
55 # define SV_COWBUF_THRESHOLD 1250 /* COW iff len > K */
57 #ifndef SV_COW_MAX_WASTE_THRESHOLD
58 # define SV_COW_MAX_WASTE_THRESHOLD 80 /* COW iff (len - cur) < K */
60 #ifndef SV_COWBUF_WASTE_THRESHOLD
61 # define SV_COWBUF_WASTE_THRESHOLD 80 /* COW iff (len - cur) < K */
63 #ifndef SV_COW_MAX_WASTE_FACTOR_THRESHOLD
64 # define SV_COW_MAX_WASTE_FACTOR_THRESHOLD 2 /* COW iff len < (cur * K) */
66 #ifndef SV_COWBUF_WASTE_FACTOR_THRESHOLD
67 # define SV_COWBUF_WASTE_FACTOR_THRESHOLD 2 /* COW iff len < (cur * K) */
69 /* Work around compiler warnings about unsigned >= THRESHOLD when thres-
72 # define GE_COW_THRESHOLD(cur) ((cur) >= SV_COW_THRESHOLD)
74 # define GE_COW_THRESHOLD(cur) 1
76 #if SV_COWBUF_THRESHOLD
77 # define GE_COWBUF_THRESHOLD(cur) ((cur) >= SV_COWBUF_THRESHOLD)
79 # define GE_COWBUF_THRESHOLD(cur) 1
81 #if SV_COW_MAX_WASTE_THRESHOLD
82 # define GE_COW_MAX_WASTE_THRESHOLD(cur,len) (((len)-(cur)) < SV_COW_MAX_WASTE_THRESHOLD)
84 # define GE_COW_MAX_WASTE_THRESHOLD(cur,len) 1
86 #if SV_COWBUF_WASTE_THRESHOLD
87 # define GE_COWBUF_WASTE_THRESHOLD(cur,len) (((len)-(cur)) < SV_COWBUF_WASTE_THRESHOLD)
89 # define GE_COWBUF_WASTE_THRESHOLD(cur,len) 1
91 #if SV_COW_MAX_WASTE_FACTOR_THRESHOLD
92 # define GE_COW_MAX_WASTE_FACTOR_THRESHOLD(cur,len) ((len) < SV_COW_MAX_WASTE_FACTOR_THRESHOLD * (cur))
94 # define GE_COW_MAX_WASTE_FACTOR_THRESHOLD(cur,len) 1
96 #if SV_COWBUF_WASTE_FACTOR_THRESHOLD
97 # define GE_COWBUF_WASTE_FACTOR_THRESHOLD(cur,len) ((len) < SV_COWBUF_WASTE_FACTOR_THRESHOLD * (cur))
99 # define GE_COWBUF_WASTE_FACTOR_THRESHOLD(cur,len) 1
102 #define CHECK_COW_THRESHOLD(cur,len) (\
103 GE_COW_THRESHOLD((cur)) && \
104 GE_COW_MAX_WASTE_THRESHOLD((cur),(len)) && \
105 GE_COW_MAX_WASTE_FACTOR_THRESHOLD((cur),(len)) \
107 #define CHECK_COWBUF_THRESHOLD(cur,len) (\
108 GE_COWBUF_THRESHOLD((cur)) && \
109 GE_COWBUF_WASTE_THRESHOLD((cur),(len)) && \
110 GE_COWBUF_WASTE_FACTOR_THRESHOLD((cur),(len)) \
113 #ifdef PERL_UTF8_CACHE_ASSERT
114 /* if adding more checks watch out for the following tests:
115 * t/op/index.t t/op/length.t t/op/pat.t t/op/substr.t
116 * lib/utf8.t lib/Unicode/Collate/t/index.t
119 # define ASSERT_UTF8_CACHE(cache) \
120 STMT_START { if (cache) { assert((cache)[0] <= (cache)[1]); \
121 assert((cache)[2] <= (cache)[3]); \
122 assert((cache)[3] <= (cache)[1]);} \
125 # define ASSERT_UTF8_CACHE(cache) NOOP
128 static const char S_destroy[] = "DESTROY";
129 #define S_destroy_len (sizeof(S_destroy)-1)
131 /* ============================================================================
133 =head1 Allocation and deallocation of SVs.
135 An SV (or AV, HV, etc.) is allocated in two parts: the head (struct
136 sv, av, hv...) contains type and reference count information, and for
137 many types, a pointer to the body (struct xrv, xpv, xpviv...), which
138 contains fields specific to each type. Some types store all they need
139 in the head, so don't have a body.
141 In all but the most memory-paranoid configurations (ex: PURIFY), heads
142 and bodies are allocated out of arenas, which by default are
143 approximately 4K chunks of memory parcelled up into N heads or bodies.
144 Sv-bodies are allocated by their sv-type, guaranteeing size
145 consistency needed to allocate safely from arrays.
147 For SV-heads, the first slot in each arena is reserved, and holds a
148 link to the next arena, some flags, and a note of the number of slots.
149 Snaked through each arena chain is a linked list of free items; when
150 this becomes empty, an extra arena is allocated and divided up into N
151 items which are threaded into the free list.
153 SV-bodies are similar, but they use arena-sets by default, which
154 separate the link and info from the arena itself, and reclaim the 1st
155 slot in the arena. SV-bodies are further described later.
157 The following global variables are associated with arenas:
159 PL_sv_arenaroot pointer to list of SV arenas
160 PL_sv_root pointer to list of free SV structures
162 PL_body_arenas head of linked-list of body arenas
163 PL_body_roots[] array of pointers to list of free bodies of svtype
164 arrays are indexed by the svtype needed
166 A few special SV heads are not allocated from an arena, but are
167 instead directly created in the interpreter structure, eg PL_sv_undef.
168 The size of arenas can be changed from the default by setting
169 PERL_ARENA_SIZE appropriately at compile time.
171 The SV arena serves the secondary purpose of allowing still-live SVs
172 to be located and destroyed during final cleanup.
174 At the lowest level, the macros new_SV() and del_SV() grab and free
175 an SV head. (If debugging with -DD, del_SV() calls the function S_del_sv()
176 to return the SV to the free list with error checking.) new_SV() calls
177 more_sv() / sv_add_arena() to add an extra arena if the free list is empty.
178 SVs in the free list have their SvTYPE field set to all ones.
180 At the time of very final cleanup, sv_free_arenas() is called from
181 perl_destruct() to physically free all the arenas allocated since the
182 start of the interpreter.
184 The function visit() scans the SV arenas list, and calls a specified
185 function for each SV it finds which is still live - ie which has an SvTYPE
186 other than all 1's, and a non-zero SvREFCNT. visit() is used by the
187 following functions (specified as [function that calls visit()] / [function
188 called by visit() for each SV]):
190 sv_report_used() / do_report_used()
191 dump all remaining SVs (debugging aid)
193 sv_clean_objs() / do_clean_objs(),do_clean_named_objs(),
194 do_clean_named_io_objs(),do_curse()
195 Attempt to free all objects pointed to by RVs,
196 try to do the same for all objects indir-
197 ectly referenced by typeglobs too, and
198 then do a final sweep, cursing any
199 objects that remain. Called once from
200 perl_destruct(), prior to calling sv_clean_all()
203 sv_clean_all() / do_clean_all()
204 SvREFCNT_dec(sv) each remaining SV, possibly
205 triggering an sv_free(). It also sets the
206 SVf_BREAK flag on the SV to indicate that the
207 refcnt has been artificially lowered, and thus
208 stopping sv_free() from giving spurious warnings
209 about SVs which unexpectedly have a refcnt
210 of zero. called repeatedly from perl_destruct()
211 until there are no SVs left.
213 =head2 Arena allocator API Summary
215 Private API to rest of sv.c
219 new_XPVNV(), del_XPVGV(),
224 sv_report_used(), sv_clean_objs(), sv_clean_all(), sv_free_arenas()
228 * ========================================================================= */
231 * "A time to plant, and a time to uproot what was planted..."
235 # define MEM_LOG_NEW_SV(sv, file, line, func) \
236 Perl_mem_log_new_sv(sv, file, line, func)
237 # define MEM_LOG_DEL_SV(sv, file, line, func) \
238 Perl_mem_log_del_sv(sv, file, line, func)
240 # define MEM_LOG_NEW_SV(sv, file, line, func) NOOP
241 # define MEM_LOG_DEL_SV(sv, file, line, func) NOOP
244 #ifdef DEBUG_LEAKING_SCALARS
245 # define FREE_SV_DEBUG_FILE(sv) STMT_START { \
246 if ((sv)->sv_debug_file) PerlMemShared_free((sv)->sv_debug_file); \
248 # define DEBUG_SV_SERIAL(sv) \
249 DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%" UVxf ": (%05ld) del_SV\n", \
250 PTR2UV(sv), (long)(sv)->sv_debug_serial))
252 # define FREE_SV_DEBUG_FILE(sv)
253 # define DEBUG_SV_SERIAL(sv) NOOP
257 # define SvARENA_CHAIN(sv) ((sv)->sv_u.svu_rv)
258 # define SvARENA_CHAIN_SET(sv,val) (sv)->sv_u.svu_rv = MUTABLE_SV((val))
259 /* Whilst I'd love to do this, it seems that things like to check on
261 # define POISON_SV_HEAD(sv) PoisonNew(sv, 1, struct STRUCT_SV)
263 # define POISON_SV_HEAD(sv) PoisonNew(&SvANY(sv), 1, void *), \
264 PoisonNew(&SvREFCNT(sv), 1, U32)
266 # define SvARENA_CHAIN(sv) SvANY(sv)
267 # define SvARENA_CHAIN_SET(sv,val) SvANY(sv) = (void *)(val)
268 # define POISON_SV_HEAD(sv)
271 /* Mark an SV head as unused, and add to free list.
273 * If SVf_BREAK is set, skip adding it to the free list, as this SV had
274 * its refcount artificially decremented during global destruction, so
275 * there may be dangling pointers to it. The last thing we want in that
276 * case is for it to be reused. */
278 #define plant_SV(p) \
280 const U32 old_flags = SvFLAGS(p); \
281 MEM_LOG_DEL_SV(p, __FILE__, __LINE__, FUNCTION__); \
282 DEBUG_SV_SERIAL(p); \
283 FREE_SV_DEBUG_FILE(p); \
285 SvFLAGS(p) = SVTYPEMASK; \
286 if (!(old_flags & SVf_BREAK)) { \
287 SvARENA_CHAIN_SET(p, PL_sv_root); \
293 #define uproot_SV(p) \
296 PL_sv_root = MUTABLE_SV(SvARENA_CHAIN(p)); \
301 /* make some more SVs by adding another arena */
307 char *chunk; /* must use New here to match call to */
308 Newx(chunk,PERL_ARENA_SIZE,char); /* Safefree() in sv_free_arenas() */
309 sv_add_arena(chunk, PERL_ARENA_SIZE, 0);
314 /* new_SV(): return a new, empty SV head */
316 #ifdef DEBUG_LEAKING_SCALARS
317 /* provide a real function for a debugger to play with */
319 S_new_SV(pTHX_ const char *file, int line, const char *func)
326 sv = S_more_sv(aTHX);
330 sv->sv_debug_optype = PL_op ? PL_op->op_type : 0;
331 sv->sv_debug_line = (U16) (PL_parser && PL_parser->copline != NOLINE
337 sv->sv_debug_inpad = 0;
338 sv->sv_debug_parent = NULL;
339 sv->sv_debug_file = PL_curcop ? savesharedpv(CopFILE(PL_curcop)): NULL;
341 sv->sv_debug_serial = PL_sv_serial++;
343 MEM_LOG_NEW_SV(sv, file, line, func);
344 DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%" UVxf ": (%05ld) new_SV (from %s:%d [%s])\n",
345 PTR2UV(sv), (long)sv->sv_debug_serial, file, line, func));
349 # define new_SV(p) (p)=S_new_SV(aTHX_ __FILE__, __LINE__, FUNCTION__)
357 (p) = S_more_sv(aTHX); \
361 MEM_LOG_NEW_SV(p, __FILE__, __LINE__, FUNCTION__); \
366 /* del_SV(): return an empty SV head to the free list */
379 S_del_sv(pTHX_ SV *p)
381 PERL_ARGS_ASSERT_DEL_SV;
386 for (sva = PL_sv_arenaroot; sva; sva = MUTABLE_SV(SvANY(sva))) {
387 const SV * const sv = sva + 1;
388 const SV * const svend = &sva[SvREFCNT(sva)];
389 if (p >= sv && p < svend) {
395 Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL),
396 "Attempt to free non-arena SV: 0x%" UVxf
397 pTHX__FORMAT, PTR2UV(p) pTHX__VALUE);
404 #else /* ! DEBUGGING */
406 #define del_SV(p) plant_SV(p)
408 #endif /* DEBUGGING */
412 =head1 SV Manipulation Functions
414 =for apidoc sv_add_arena
416 Given a chunk of memory, link it to the head of the list of arenas,
417 and split it into a list of free SVs.
423 S_sv_add_arena(pTHX_ char *const ptr, const U32 size, const U32 flags)
425 SV *const sva = MUTABLE_SV(ptr);
429 PERL_ARGS_ASSERT_SV_ADD_ARENA;
431 /* The first SV in an arena isn't an SV. */
432 SvANY(sva) = (void *) PL_sv_arenaroot; /* ptr to next arena */
433 SvREFCNT(sva) = size / sizeof(SV); /* number of SV slots */
434 SvFLAGS(sva) = flags; /* FAKE if not to be freed */
436 PL_sv_arenaroot = sva;
437 PL_sv_root = sva + 1;
439 svend = &sva[SvREFCNT(sva) - 1];
442 SvARENA_CHAIN_SET(sv, (sv + 1));
446 /* Must always set typemask because it's always checked in on cleanup
447 when the arenas are walked looking for objects. */
448 SvFLAGS(sv) = SVTYPEMASK;
451 SvARENA_CHAIN_SET(sv, 0);
455 SvFLAGS(sv) = SVTYPEMASK;
458 /* visit(): call the named function for each non-free SV in the arenas
459 * whose flags field matches the flags/mask args. */
462 S_visit(pTHX_ SVFUNC_t f, const U32 flags, const U32 mask)
467 PERL_ARGS_ASSERT_VISIT;
469 for (sva = PL_sv_arenaroot; sva; sva = MUTABLE_SV(SvANY(sva))) {
470 const SV * const svend = &sva[SvREFCNT(sva)];
472 for (sv = sva + 1; sv < svend; ++sv) {
473 if (SvTYPE(sv) != (svtype)SVTYPEMASK
474 && (sv->sv_flags & mask) == flags
487 /* called by sv_report_used() for each live SV */
490 do_report_used(pTHX_ SV *const sv)
492 if (SvTYPE(sv) != (svtype)SVTYPEMASK) {
493 PerlIO_printf(Perl_debug_log, "****\n");
500 =for apidoc sv_report_used
502 Dump the contents of all SVs not yet freed (debugging aid).
508 Perl_sv_report_used(pTHX)
511 visit(do_report_used, 0, 0);
517 /* called by sv_clean_objs() for each live SV */
520 do_clean_objs(pTHX_ SV *const ref)
524 SV * const target = SvRV(ref);
525 if (SvOBJECT(target)) {
526 DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning object ref:\n "), sv_dump(ref)));
527 if (SvWEAKREF(ref)) {
528 sv_del_backref(target, ref);
534 SvREFCNT_dec_NN(target);
541 /* clear any slots in a GV which hold objects - except IO;
542 * called by sv_clean_objs() for each live GV */
545 do_clean_named_objs(pTHX_ SV *const sv)
548 assert(SvTYPE(sv) == SVt_PVGV);
549 assert(isGV_with_GP(sv));
553 /* freeing GP entries may indirectly free the current GV;
554 * hold onto it while we mess with the GP slots */
557 if ( ((obj = GvSV(sv) )) && SvOBJECT(obj)) {
558 DEBUG_D((PerlIO_printf(Perl_debug_log,
559 "Cleaning named glob SV object:\n "), sv_dump(obj)));
561 SvREFCNT_dec_NN(obj);
563 if ( ((obj = MUTABLE_SV(GvAV(sv)) )) && SvOBJECT(obj)) {
564 DEBUG_D((PerlIO_printf(Perl_debug_log,
565 "Cleaning named glob AV object:\n "), sv_dump(obj)));
567 SvREFCNT_dec_NN(obj);
569 if ( ((obj = MUTABLE_SV(GvHV(sv)) )) && SvOBJECT(obj)) {
570 DEBUG_D((PerlIO_printf(Perl_debug_log,
571 "Cleaning named glob HV object:\n "), sv_dump(obj)));
573 SvREFCNT_dec_NN(obj);
575 if ( ((obj = MUTABLE_SV(GvCV(sv)) )) && SvOBJECT(obj)) {
576 DEBUG_D((PerlIO_printf(Perl_debug_log,
577 "Cleaning named glob CV object:\n "), sv_dump(obj)));
579 SvREFCNT_dec_NN(obj);
581 SvREFCNT_dec_NN(sv); /* undo the inc above */
584 /* clear any IO slots in a GV which hold objects (except stderr, defout);
585 * called by sv_clean_objs() for each live GV */
588 do_clean_named_io_objs(pTHX_ SV *const sv)
591 assert(SvTYPE(sv) == SVt_PVGV);
592 assert(isGV_with_GP(sv));
593 if (!GvGP(sv) || sv == (SV*)PL_stderrgv || sv == (SV*)PL_defoutgv)
597 if ( ((obj = MUTABLE_SV(GvIO(sv)) )) && SvOBJECT(obj)) {
598 DEBUG_D((PerlIO_printf(Perl_debug_log,
599 "Cleaning named glob IO object:\n "), sv_dump(obj)));
601 SvREFCNT_dec_NN(obj);
603 SvREFCNT_dec_NN(sv); /* undo the inc above */
606 /* Void wrapper to pass to visit() */
608 do_curse(pTHX_ SV * const sv) {
609 if ((PL_stderrgv && GvGP(PL_stderrgv) && (SV*)GvIO(PL_stderrgv) == sv)
610 || (PL_defoutgv && GvGP(PL_defoutgv) && (SV*)GvIO(PL_defoutgv) == sv))
616 =for apidoc sv_clean_objs
618 Attempt to destroy all objects not yet freed.
624 Perl_sv_clean_objs(pTHX)
627 PL_in_clean_objs = TRUE;
628 visit(do_clean_objs, SVf_ROK, SVf_ROK);
629 /* Some barnacles may yet remain, clinging to typeglobs.
630 * Run the non-IO destructors first: they may want to output
631 * error messages, close files etc */
632 visit(do_clean_named_objs, SVt_PVGV|SVpgv_GP, SVTYPEMASK|SVp_POK|SVpgv_GP);
633 visit(do_clean_named_io_objs, SVt_PVGV|SVpgv_GP, SVTYPEMASK|SVp_POK|SVpgv_GP);
634 /* And if there are some very tenacious barnacles clinging to arrays,
635 closures, or what have you.... */
636 visit(do_curse, SVs_OBJECT, SVs_OBJECT);
637 olddef = PL_defoutgv;
638 PL_defoutgv = NULL; /* disable skip of PL_defoutgv */
639 if (olddef && isGV_with_GP(olddef))
640 do_clean_named_io_objs(aTHX_ MUTABLE_SV(olddef));
641 olderr = PL_stderrgv;
642 PL_stderrgv = NULL; /* disable skip of PL_stderrgv */
643 if (olderr && isGV_with_GP(olderr))
644 do_clean_named_io_objs(aTHX_ MUTABLE_SV(olderr));
645 SvREFCNT_dec(olddef);
646 PL_in_clean_objs = FALSE;
649 /* called by sv_clean_all() for each live SV */
652 do_clean_all(pTHX_ SV *const sv)
654 if (sv == (const SV *) PL_fdpid || sv == (const SV *)PL_strtab) {
655 /* don't clean pid table and strtab */
658 DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning loops: SV at 0x%" UVxf "\n", PTR2UV(sv)) ));
659 SvFLAGS(sv) |= SVf_BREAK;
664 =for apidoc sv_clean_all
666 Decrement the refcnt of each remaining SV, possibly triggering a
667 cleanup. This function may have to be called multiple times to free
668 SVs which are in complex self-referential hierarchies.
674 Perl_sv_clean_all(pTHX)
677 PL_in_clean_all = TRUE;
678 cleaned = visit(do_clean_all, 0,0);
683 ARENASETS: a meta-arena implementation which separates arena-info
684 into struct arena_set, which contains an array of struct
685 arena_descs, each holding info for a single arena. By separating
686 the meta-info from the arena, we recover the 1st slot, formerly
687 borrowed for list management. The arena_set is about the size of an
688 arena, avoiding the needless malloc overhead of a naive linked-list.
690 The cost is 1 arena-set malloc per ~320 arena-mallocs, + the unused
691 memory in the last arena-set (1/2 on average). In trade, we get
692 back the 1st slot in each arena (ie 1.7% of a CV-arena, less for
693 smaller types). The recovery of the wasted space allows use of
694 small arenas for large, rare body types, by changing array* fields
695 in body_details_by_type[] below.
698 char *arena; /* the raw storage, allocated aligned */
699 size_t size; /* its size ~4k typ */
700 svtype utype; /* bodytype stored in arena */
705 /* Get the maximum number of elements in set[] such that struct arena_set
706 will fit within PERL_ARENA_SIZE, which is probably just under 4K, and
707 therefore likely to be 1 aligned memory page. */
709 #define ARENAS_PER_SET ((PERL_ARENA_SIZE - sizeof(struct arena_set*) \
710 - 2 * sizeof(int)) / sizeof (struct arena_desc))
713 struct arena_set* next;
714 unsigned int set_size; /* ie ARENAS_PER_SET */
715 unsigned int curr; /* index of next available arena-desc */
716 struct arena_desc set[ARENAS_PER_SET];
720 =for apidoc sv_free_arenas
722 Deallocate the memory used by all arenas. Note that all the individual SV
723 heads and bodies within the arenas must already have been freed.
729 Perl_sv_free_arenas(pTHX)
735 /* Free arenas here, but be careful about fake ones. (We assume
736 contiguity of the fake ones with the corresponding real ones.) */
738 for (sva = PL_sv_arenaroot; sva; sva = svanext) {
739 svanext = MUTABLE_SV(SvANY(sva));
740 while (svanext && SvFAKE(svanext))
741 svanext = MUTABLE_SV(SvANY(svanext));
748 struct arena_set *aroot = (struct arena_set*) PL_body_arenas;
751 struct arena_set *current = aroot;
754 assert(aroot->set[i].arena);
755 Safefree(aroot->set[i].arena);
763 i = PERL_ARENA_ROOTS_SIZE;
765 PL_body_roots[i] = 0;
772 Here are mid-level routines that manage the allocation of bodies out
773 of the various arenas. There are 4 kinds of arenas:
775 1. SV-head arenas, which are discussed and handled above
776 2. regular body arenas
777 3. arenas for reduced-size bodies
780 Arena types 2 & 3 are chained by body-type off an array of
781 arena-root pointers, which is indexed by svtype. Some of the
782 larger/less used body types are malloced singly, since a large
783 unused block of them is wasteful. Also, several svtypes dont have
784 bodies; the data fits into the sv-head itself. The arena-root
785 pointer thus has a few unused root-pointers (which may be hijacked
786 later for arena type 4)
788 3 differs from 2 as an optimization; some body types have several
789 unused fields in the front of the structure (which are kept in-place
790 for consistency). These bodies can be allocated in smaller chunks,
791 because the leading fields arent accessed. Pointers to such bodies
792 are decremented to point at the unused 'ghost' memory, knowing that
793 the pointers are used with offsets to the real memory.
795 Allocation of SV-bodies is similar to SV-heads, differing as follows;
796 the allocation mechanism is used for many body types, so is somewhat
797 more complicated, it uses arena-sets, and has no need for still-live
800 At the outermost level, (new|del)_X*V macros return bodies of the
801 appropriate type. These macros call either (new|del)_body_type or
802 (new|del)_body_allocated macro pairs, depending on specifics of the
803 type. Most body types use the former pair, the latter pair is used to
804 allocate body types with "ghost fields".
806 "ghost fields" are fields that are unused in certain types, and
807 consequently don't need to actually exist. They are declared because
808 they're part of a "base type", which allows use of functions as
809 methods. The simplest examples are AVs and HVs, 2 aggregate types
810 which don't use the fields which support SCALAR semantics.
812 For these types, the arenas are carved up into appropriately sized
813 chunks, we thus avoid wasted memory for those unaccessed members.
814 When bodies are allocated, we adjust the pointer back in memory by the
815 size of the part not allocated, so it's as if we allocated the full
816 structure. (But things will all go boom if you write to the part that
817 is "not there", because you'll be overwriting the last members of the
818 preceding structure in memory.)
820 We calculate the correction using the STRUCT_OFFSET macro on the first
821 member present. If the allocated structure is smaller (no initial NV
822 actually allocated) then the net effect is to subtract the size of the NV
823 from the pointer, to return a new pointer as if an initial NV were actually
824 allocated. (We were using structures named *_allocated for this, but
825 this turned out to be a subtle bug, because a structure without an NV
826 could have a lower alignment constraint, but the compiler is allowed to
827 optimised accesses based on the alignment constraint of the actual pointer
828 to the full structure, for example, using a single 64 bit load instruction
829 because it "knows" that two adjacent 32 bit members will be 8-byte aligned.)
831 This is the same trick as was used for NV and IV bodies. Ironically it
832 doesn't need to be used for NV bodies any more, because NV is now at
833 the start of the structure. IV bodies, and also in some builds NV bodies,
834 don't need it either, because they are no longer allocated.
836 In turn, the new_body_* allocators call S_new_body(), which invokes
837 new_body_inline macro, which takes a lock, and takes a body off the
838 linked list at PL_body_roots[sv_type], calling Perl_more_bodies() if
839 necessary to refresh an empty list. Then the lock is released, and
840 the body is returned.
842 Perl_more_bodies allocates a new arena, and carves it up into an array of N
843 bodies, which it strings into a linked list. It looks up arena-size
844 and body-size from the body_details table described below, thus
845 supporting the multiple body-types.
847 If PURIFY is defined, or PERL_ARENA_SIZE=0, arenas are not used, and
848 the (new|del)_X*V macros are mapped directly to malloc/free.
850 For each sv-type, struct body_details bodies_by_type[] carries
851 parameters which control these aspects of SV handling:
853 Arena_size determines whether arenas are used for this body type, and if
854 so, how big they are. PURIFY or PERL_ARENA_SIZE=0 set this field to
855 zero, forcing individual mallocs and frees.
857 Body_size determines how big a body is, and therefore how many fit into
858 each arena. Offset carries the body-pointer adjustment needed for
859 "ghost fields", and is used in *_allocated macros.
861 But its main purpose is to parameterize info needed in
862 Perl_sv_upgrade(). The info here dramatically simplifies the function
863 vs the implementation in 5.8.8, making it table-driven. All fields
864 are used for this, except for arena_size.
866 For the sv-types that have no bodies, arenas are not used, so those
867 PL_body_roots[sv_type] are unused, and can be overloaded. In
868 something of a special case, SVt_NULL is borrowed for HE arenas;
869 PL_body_roots[HE_SVSLOT=SVt_NULL] is filled by S_more_he, but the
870 bodies_by_type[SVt_NULL] slot is not used, as the table is not
875 struct body_details {
876 U8 body_size; /* Size to allocate */
877 U8 copy; /* Size of structure to copy (may be shorter) */
878 U8 offset; /* Size of unalloced ghost fields to first alloced field*/
879 PERL_BITFIELD8 type : 4; /* We have space for a sanity check. */
880 PERL_BITFIELD8 cant_upgrade : 1;/* Cannot upgrade this type */
881 PERL_BITFIELD8 zero_nv : 1; /* zero the NV when upgrading from this */
882 PERL_BITFIELD8 arena : 1; /* Allocated from an arena */
883 U32 arena_size; /* Size of arena to allocate */
891 /* With -DPURFIY we allocate everything directly, and don't use arenas.
892 This seems a rather elegant way to simplify some of the code below. */
893 #define HASARENA FALSE
895 #define HASARENA TRUE
897 #define NOARENA FALSE
899 /* Size the arenas to exactly fit a given number of bodies. A count
900 of 0 fits the max number bodies into a PERL_ARENA_SIZE.block,
901 simplifying the default. If count > 0, the arena is sized to fit
902 only that many bodies, allowing arenas to be used for large, rare
903 bodies (XPVFM, XPVIO) without undue waste. The arena size is
904 limited by PERL_ARENA_SIZE, so we can safely oversize the
907 #define FIT_ARENA0(body_size) \
908 ((size_t)(PERL_ARENA_SIZE / body_size) * body_size)
909 #define FIT_ARENAn(count,body_size) \
910 ( count * body_size <= PERL_ARENA_SIZE) \
911 ? count * body_size \
912 : FIT_ARENA0 (body_size)
913 #define FIT_ARENA(count,body_size) \
915 ? FIT_ARENAn (count, body_size) \
916 : FIT_ARENA0 (body_size))
918 /* Calculate the length to copy. Specifically work out the length less any
919 final padding the compiler needed to add. See the comment in sv_upgrade
920 for why copying the padding proved to be a bug. */
922 #define copy_length(type, last_member) \
923 STRUCT_OFFSET(type, last_member) \
924 + sizeof (((type*)SvANY((const SV *)0))->last_member)
926 static const struct body_details bodies_by_type[] = {
927 /* HEs use this offset for their arena. */
928 { 0, 0, 0, SVt_NULL, FALSE, NONV, NOARENA, 0 },
930 /* IVs are in the head, so the allocation size is 0. */
932 sizeof(IV), /* This is used to copy out the IV body. */
933 STRUCT_OFFSET(XPVIV, xiv_iv), SVt_IV, FALSE, NONV,
934 NOARENA /* IVS don't need an arena */, 0
939 STRUCT_OFFSET(XPVNV, xnv_u),
940 SVt_NV, FALSE, HADNV, NOARENA, 0 },
942 { sizeof(NV), sizeof(NV),
943 STRUCT_OFFSET(XPVNV, xnv_u),
944 SVt_NV, FALSE, HADNV, HASARENA, FIT_ARENA(0, sizeof(NV)) },
947 { sizeof(XPV) - STRUCT_OFFSET(XPV, xpv_cur),
948 copy_length(XPV, xpv_len) - STRUCT_OFFSET(XPV, xpv_cur),
949 + STRUCT_OFFSET(XPV, xpv_cur),
950 SVt_PV, FALSE, NONV, HASARENA,
951 FIT_ARENA(0, sizeof(XPV) - STRUCT_OFFSET(XPV, xpv_cur)) },
953 { sizeof(XINVLIST) - STRUCT_OFFSET(XPV, xpv_cur),
954 copy_length(XINVLIST, is_offset) - STRUCT_OFFSET(XPV, xpv_cur),
955 + STRUCT_OFFSET(XPV, xpv_cur),
956 SVt_INVLIST, TRUE, NONV, HASARENA,
957 FIT_ARENA(0, sizeof(XINVLIST) - STRUCT_OFFSET(XPV, xpv_cur)) },
959 { sizeof(XPVIV) - STRUCT_OFFSET(XPV, xpv_cur),
960 copy_length(XPVIV, xiv_u) - STRUCT_OFFSET(XPV, xpv_cur),
961 + STRUCT_OFFSET(XPV, xpv_cur),
962 SVt_PVIV, FALSE, NONV, HASARENA,
963 FIT_ARENA(0, sizeof(XPVIV) - STRUCT_OFFSET(XPV, xpv_cur)) },
965 { sizeof(XPVNV) - STRUCT_OFFSET(XPV, xpv_cur),
966 copy_length(XPVNV, xnv_u) - STRUCT_OFFSET(XPV, xpv_cur),
967 + STRUCT_OFFSET(XPV, xpv_cur),
968 SVt_PVNV, FALSE, HADNV, HASARENA,
969 FIT_ARENA(0, sizeof(XPVNV) - STRUCT_OFFSET(XPV, xpv_cur)) },
971 { sizeof(XPVMG), copy_length(XPVMG, xnv_u), 0, SVt_PVMG, FALSE, HADNV,
972 HASARENA, FIT_ARENA(0, sizeof(XPVMG)) },
977 SVt_REGEXP, TRUE, NONV, HASARENA,
978 FIT_ARENA(0, sizeof(regexp))
981 { sizeof(XPVGV), sizeof(XPVGV), 0, SVt_PVGV, TRUE, HADNV,
982 HASARENA, FIT_ARENA(0, sizeof(XPVGV)) },
984 { sizeof(XPVLV), sizeof(XPVLV), 0, SVt_PVLV, TRUE, HADNV,
985 HASARENA, FIT_ARENA(0, sizeof(XPVLV)) },
988 copy_length(XPVAV, xav_alloc),
990 SVt_PVAV, TRUE, NONV, HASARENA,
991 FIT_ARENA(0, sizeof(XPVAV)) },
994 copy_length(XPVHV, xhv_max),
996 SVt_PVHV, TRUE, NONV, HASARENA,
997 FIT_ARENA(0, sizeof(XPVHV)) },
1002 SVt_PVCV, TRUE, NONV, HASARENA,
1003 FIT_ARENA(0, sizeof(XPVCV)) },
1008 SVt_PVFM, TRUE, NONV, NOARENA,
1009 FIT_ARENA(20, sizeof(XPVFM)) },
1014 SVt_PVIO, TRUE, NONV, HASARENA,
1015 FIT_ARENA(24, sizeof(XPVIO)) },
1018 #define new_body_allocated(sv_type) \
1019 (void *)((char *)S_new_body(aTHX_ sv_type) \
1020 - bodies_by_type[sv_type].offset)
1022 /* return a thing to the free list */
1024 #define del_body(thing, root) \
1026 void ** const thing_copy = (void **)thing; \
1027 *thing_copy = *root; \
1028 *root = (void*)thing_copy; \
1032 #if !(NVSIZE <= IVSIZE)
1033 # define new_XNV() safemalloc(sizeof(XPVNV))
1035 #define new_XPVNV() safemalloc(sizeof(XPVNV))
1036 #define new_XPVMG() safemalloc(sizeof(XPVMG))
1038 #define del_XPVGV(p) safefree(p)
1042 #if !(NVSIZE <= IVSIZE)
1043 # define new_XNV() new_body_allocated(SVt_NV)
1045 #define new_XPVNV() new_body_allocated(SVt_PVNV)
1046 #define new_XPVMG() new_body_allocated(SVt_PVMG)
1048 #define del_XPVGV(p) del_body(p + bodies_by_type[SVt_PVGV].offset, \
1049 &PL_body_roots[SVt_PVGV])
1053 /* no arena for you! */
1055 #define new_NOARENA(details) \
1056 safemalloc((details)->body_size + (details)->offset)
1057 #define new_NOARENAZ(details) \
1058 safecalloc((details)->body_size + (details)->offset, 1)
1061 Perl_more_bodies (pTHX_ const svtype sv_type, const size_t body_size,
1062 const size_t arena_size)
1064 void ** const root = &PL_body_roots[sv_type];
1065 struct arena_desc *adesc;
1066 struct arena_set *aroot = (struct arena_set *) PL_body_arenas;
1070 const size_t good_arena_size = Perl_malloc_good_size(arena_size);
1071 #if defined(DEBUGGING) && defined(PERL_GLOBAL_STRUCT)
1074 #if defined(DEBUGGING) && !defined(PERL_GLOBAL_STRUCT)
1075 static bool done_sanity_check;
1077 /* PERL_GLOBAL_STRUCT cannot coexist with global
1078 * variables like done_sanity_check. */
1079 if (!done_sanity_check) {
1080 unsigned int i = SVt_LAST;
1082 done_sanity_check = TRUE;
1085 assert (bodies_by_type[i].type == i);
1091 /* may need new arena-set to hold new arena */
1092 if (!aroot || aroot->curr >= aroot->set_size) {
1093 struct arena_set *newroot;
1094 Newxz(newroot, 1, struct arena_set);
1095 newroot->set_size = ARENAS_PER_SET;
1096 newroot->next = aroot;
1098 PL_body_arenas = (void *) newroot;
1099 DEBUG_m(PerlIO_printf(Perl_debug_log, "new arenaset %p\n", (void*)aroot));
1102 /* ok, now have arena-set with at least 1 empty/available arena-desc */
1103 curr = aroot->curr++;
1104 adesc = &(aroot->set[curr]);
1105 assert(!adesc->arena);
1107 Newx(adesc->arena, good_arena_size, char);
1108 adesc->size = good_arena_size;
1109 adesc->utype = sv_type;
1110 DEBUG_m(PerlIO_printf(Perl_debug_log, "arena %d added: %p size %" UVuf "\n",
1111 curr, (void*)adesc->arena, (UV)good_arena_size));
1113 start = (char *) adesc->arena;
1115 /* Get the address of the byte after the end of the last body we can fit.
1116 Remember, this is integer division: */
1117 end = start + good_arena_size / body_size * body_size;
1119 /* computed count doesn't reflect the 1st slot reservation */
1120 #if defined(MYMALLOC) || defined(HAS_MALLOC_GOOD_SIZE)
1121 DEBUG_m(PerlIO_printf(Perl_debug_log,
1122 "arena %p end %p arena-size %d (from %d) type %d "
1124 (void*)start, (void*)end, (int)good_arena_size,
1125 (int)arena_size, sv_type, (int)body_size,
1126 (int)good_arena_size / (int)body_size));
1128 DEBUG_m(PerlIO_printf(Perl_debug_log,
1129 "arena %p end %p arena-size %d type %d size %d ct %d\n",
1130 (void*)start, (void*)end,
1131 (int)arena_size, sv_type, (int)body_size,
1132 (int)good_arena_size / (int)body_size));
1134 *root = (void *)start;
1137 /* Where the next body would start: */
1138 char * const next = start + body_size;
1141 /* This is the last body: */
1142 assert(next == end);
1144 *(void **)start = 0;
1148 *(void**) start = (void *)next;
1153 /* grab a new thing from the free list, allocating more if necessary.
1154 The inline version is used for speed in hot routines, and the
1155 function using it serves the rest (unless PURIFY).
1157 #define new_body_inline(xpv, sv_type) \
1159 void ** const r3wt = &PL_body_roots[sv_type]; \
1160 xpv = (PTR_TBL_ENT_t*) (*((void **)(r3wt)) \
1161 ? *((void **)(r3wt)) : Perl_more_bodies(aTHX_ sv_type, \
1162 bodies_by_type[sv_type].body_size,\
1163 bodies_by_type[sv_type].arena_size)); \
1164 *(r3wt) = *(void**)(xpv); \
1170 S_new_body(pTHX_ const svtype sv_type)
1173 new_body_inline(xpv, sv_type);
1179 static const struct body_details fake_rv =
1180 { 0, 0, 0, SVt_IV, FALSE, NONV, NOARENA, 0 };
1183 =for apidoc sv_upgrade
1185 Upgrade an SV to a more complex form. Generally adds a new body type to the
1186 SV, then copies across as much information as possible from the old body.
1187 It croaks if the SV is already in a more complex form than requested. You
1188 generally want to use the C<SvUPGRADE> macro wrapper, which checks the type
1189 before calling C<sv_upgrade>, and hence does not croak. See also
1196 Perl_sv_upgrade(pTHX_ SV *const sv, svtype new_type)
1200 const svtype old_type = SvTYPE(sv);
1201 const struct body_details *new_type_details;
1202 const struct body_details *old_type_details
1203 = bodies_by_type + old_type;
1204 SV *referent = NULL;
1206 PERL_ARGS_ASSERT_SV_UPGRADE;
1208 if (old_type == new_type)
1211 /* This clause was purposefully added ahead of the early return above to
1212 the shared string hackery for (sort {$a <=> $b} keys %hash), with the
1213 inference by Nick I-S that it would fix other troublesome cases. See
1214 changes 7162, 7163 (f130fd4589cf5fbb24149cd4db4137c8326f49c1 and parent)
1216 Given that shared hash key scalars are no longer PVIV, but PV, there is
1217 no longer need to unshare so as to free up the IVX slot for its proper
1218 purpose. So it's safe to move the early return earlier. */
1220 if (new_type > SVt_PVMG && SvIsCOW(sv)) {
1221 sv_force_normal_flags(sv, 0);
1224 old_body = SvANY(sv);
1226 /* Copying structures onto other structures that have been neatly zeroed
1227 has a subtle gotcha. Consider XPVMG
1229 +------+------+------+------+------+-------+-------+
1230 | NV | CUR | LEN | IV | MAGIC | STASH |
1231 +------+------+------+------+------+-------+-------+
1232 0 4 8 12 16 20 24 28
1234 where NVs are aligned to 8 bytes, so that sizeof that structure is
1235 actually 32 bytes long, with 4 bytes of padding at the end:
1237 +------+------+------+------+------+-------+-------+------+
1238 | NV | CUR | LEN | IV | MAGIC | STASH | ??? |
1239 +------+------+------+------+------+-------+-------+------+
1240 0 4 8 12 16 20 24 28 32
1242 so what happens if you allocate memory for this structure:
1244 +------+------+------+------+------+-------+-------+------+------+...
1245 | NV | CUR | LEN | IV | MAGIC | STASH | GP | NAME |
1246 +------+------+------+------+------+-------+-------+------+------+...
1247 0 4 8 12 16 20 24 28 32 36
1249 zero it, then copy sizeof(XPVMG) bytes on top of it? Not quite what you
1250 expect, because you copy the area marked ??? onto GP. Now, ??? may have
1251 started out as zero once, but it's quite possible that it isn't. So now,
1252 rather than a nicely zeroed GP, you have it pointing somewhere random.
1255 (In fact, GP ends up pointing at a previous GP structure, because the
1256 principle cause of the padding in XPVMG getting garbage is a copy of
1257 sizeof(XPVMG) bytes from a XPVGV structure in sv_unglob. Right now
1258 this happens to be moot because XPVGV has been re-ordered, with GP
1259 no longer after STASH)
1261 So we are careful and work out the size of used parts of all the
1269 referent = SvRV(sv);
1270 old_type_details = &fake_rv;
1271 if (new_type == SVt_NV)
1272 new_type = SVt_PVNV;
1274 if (new_type < SVt_PVIV) {
1275 new_type = (new_type == SVt_NV)
1276 ? SVt_PVNV : SVt_PVIV;
1281 if (new_type < SVt_PVNV) {
1282 new_type = SVt_PVNV;
1286 assert(new_type > SVt_PV);
1287 STATIC_ASSERT_STMT(SVt_IV < SVt_PV);
1288 STATIC_ASSERT_STMT(SVt_NV < SVt_PV);
1295 /* Because the XPVMG of PL_mess_sv isn't allocated from the arena,
1296 there's no way that it can be safely upgraded, because perl.c
1297 expects to Safefree(SvANY(PL_mess_sv)) */
1298 assert(sv != PL_mess_sv);
1301 if (UNLIKELY(old_type_details->cant_upgrade))
1302 Perl_croak(aTHX_ "Can't upgrade %s (%" UVuf ") to %" UVuf,
1303 sv_reftype(sv, 0), (UV) old_type, (UV) new_type);
1306 if (UNLIKELY(old_type > new_type))
1307 Perl_croak(aTHX_ "sv_upgrade from type %d down to type %d",
1308 (int)old_type, (int)new_type);
1310 new_type_details = bodies_by_type + new_type;
1312 SvFLAGS(sv) &= ~SVTYPEMASK;
1313 SvFLAGS(sv) |= new_type;
1315 /* This can't happen, as SVt_NULL is <= all values of new_type, so one of
1316 the return statements above will have triggered. */
1317 assert (new_type != SVt_NULL);
1320 assert(old_type == SVt_NULL);
1321 SET_SVANY_FOR_BODYLESS_IV(sv);
1325 assert(old_type == SVt_NULL);
1326 #if NVSIZE <= IVSIZE
1327 SET_SVANY_FOR_BODYLESS_NV(sv);
1329 SvANY(sv) = new_XNV();
1335 assert(new_type_details->body_size);
1338 assert(new_type_details->arena);
1339 assert(new_type_details->arena_size);
1340 /* This points to the start of the allocated area. */
1341 new_body_inline(new_body, new_type);
1342 Zero(new_body, new_type_details->body_size, char);
1343 new_body = ((char *)new_body) - new_type_details->offset;
1345 /* We always allocated the full length item with PURIFY. To do this
1346 we fake things so that arena is false for all 16 types.. */
1347 new_body = new_NOARENAZ(new_type_details);
1349 SvANY(sv) = new_body;
1350 if (new_type == SVt_PVAV) {
1354 if (old_type_details->body_size) {
1357 /* It will have been zeroed when the new body was allocated.
1358 Lets not write to it, in case it confuses a write-back
1364 #ifndef NODEFAULT_SHAREKEYS
1365 HvSHAREKEYS_on(sv); /* key-sharing on by default */
1367 /* start with PERL_HASH_DEFAULT_HvMAX+1 buckets: */
1368 HvMAX(sv) = PERL_HASH_DEFAULT_HvMAX;
1371 /* SVt_NULL isn't the only thing upgraded to AV or HV.
1372 The target created by newSVrv also is, and it can have magic.
1373 However, it never has SvPVX set.
1375 if (old_type == SVt_IV) {
1377 } else if (old_type >= SVt_PV) {
1378 assert(SvPVX_const(sv) == 0);
1381 if (old_type >= SVt_PVMG) {
1382 SvMAGIC_set(sv, ((XPVMG*)old_body)->xmg_u.xmg_magic);
1383 SvSTASH_set(sv, ((XPVMG*)old_body)->xmg_stash);
1385 sv->sv_u.svu_array = NULL; /* or svu_hash */
1390 /* XXX Is this still needed? Was it ever needed? Surely as there is
1391 no route from NV to PVIV, NOK can never be true */
1392 assert(!SvNOKp(sv));
1406 assert(new_type_details->body_size);
1407 /* We always allocated the full length item with PURIFY. To do this
1408 we fake things so that arena is false for all 16 types.. */
1409 if(new_type_details->arena) {
1410 /* This points to the start of the allocated area. */
1411 new_body_inline(new_body, new_type);
1412 Zero(new_body, new_type_details->body_size, char);
1413 new_body = ((char *)new_body) - new_type_details->offset;
1415 new_body = new_NOARENAZ(new_type_details);
1417 SvANY(sv) = new_body;
1419 if (old_type_details->copy) {
1420 /* There is now the potential for an upgrade from something without
1421 an offset (PVNV or PVMG) to something with one (PVCV, PVFM) */
1422 int offset = old_type_details->offset;
1423 int length = old_type_details->copy;
1425 if (new_type_details->offset > old_type_details->offset) {
1426 const int difference
1427 = new_type_details->offset - old_type_details->offset;
1428 offset += difference;
1429 length -= difference;
1431 assert (length >= 0);
1433 Copy((char *)old_body + offset, (char *)new_body + offset, length,
1437 #ifndef NV_ZERO_IS_ALLBITS_ZERO
1438 /* If NV 0.0 is stores as all bits 0 then Zero() already creates a
1439 * correct 0.0 for us. Otherwise, if the old body didn't have an
1440 * NV slot, but the new one does, then we need to initialise the
1441 * freshly created NV slot with whatever the correct bit pattern is
1443 if (old_type_details->zero_nv && !new_type_details->zero_nv
1444 && !isGV_with_GP(sv))
1448 if (UNLIKELY(new_type == SVt_PVIO)) {
1449 IO * const io = MUTABLE_IO(sv);
1450 GV *iogv = gv_fetchpvs("IO::File::", GV_ADD, SVt_PVHV);
1453 /* Clear the stashcache because a new IO could overrule a package
1455 DEBUG_o(Perl_deb(aTHX_ "sv_upgrade clearing PL_stashcache\n"));
1456 hv_clear(PL_stashcache);
1458 SvSTASH_set(io, MUTABLE_HV(SvREFCNT_inc(GvHV(iogv))));
1459 IoPAGE_LEN(sv) = 60;
1461 if (old_type < SVt_PV) {
1462 /* referent will be NULL unless the old type was SVt_IV emulating
1464 sv->sv_u.svu_rv = referent;
1468 Perl_croak(aTHX_ "panic: sv_upgrade to unknown type %lu",
1469 (unsigned long)new_type);
1472 /* if this is zero, this is a body-less SVt_NULL, SVt_IV/SVt_RV,
1473 and sometimes SVt_NV */
1474 if (old_type_details->body_size) {
1478 /* Note that there is an assumption that all bodies of types that
1479 can be upgraded came from arenas. Only the more complex non-
1480 upgradable types are allowed to be directly malloc()ed. */
1481 assert(old_type_details->arena);
1482 del_body((void*)((char*)old_body + old_type_details->offset),
1483 &PL_body_roots[old_type]);
1489 =for apidoc sv_backoff
1491 Remove any string offset. You should normally use the C<SvOOK_off> macro
1497 /* prior to 5.000 stable, this function returned the new OOK-less SvFLAGS
1498 prior to 5.23.4 this function always returned 0
1502 Perl_sv_backoff(SV *const sv)
1505 const char * const s = SvPVX_const(sv);
1507 PERL_ARGS_ASSERT_SV_BACKOFF;
1510 assert(SvTYPE(sv) != SVt_PVHV);
1511 assert(SvTYPE(sv) != SVt_PVAV);
1513 SvOOK_offset(sv, delta);
1515 SvLEN_set(sv, SvLEN(sv) + delta);
1516 SvPV_set(sv, SvPVX(sv) - delta);
1517 SvFLAGS(sv) &= ~SVf_OOK;
1518 Move(s, SvPVX(sv), SvCUR(sv)+1, char);
1523 /* forward declaration */
1524 static void S_sv_uncow(pTHX_ SV * const sv, const U32 flags);
1530 Expands the character buffer in the SV. If necessary, uses C<sv_unref> and
1531 upgrades the SV to C<SVt_PV>. Returns a pointer to the character buffer.
1532 Use the C<SvGROW> wrapper instead.
1539 Perl_sv_grow(pTHX_ SV *const sv, STRLEN newlen)
1543 PERL_ARGS_ASSERT_SV_GROW;
1547 if (SvTYPE(sv) < SVt_PV) {
1548 sv_upgrade(sv, SVt_PV);
1549 s = SvPVX_mutable(sv);
1551 else if (SvOOK(sv)) { /* pv is offset? */
1553 s = SvPVX_mutable(sv);
1554 if (newlen > SvLEN(sv))
1555 newlen += 10 * (newlen - SvCUR(sv)); /* avoid copy each time */
1559 if (SvIsCOW(sv)) S_sv_uncow(aTHX_ sv, 0);
1560 s = SvPVX_mutable(sv);
1563 #ifdef PERL_COPY_ON_WRITE
1564 /* the new COW scheme uses SvPVX(sv)[SvLEN(sv)-1] (if spare)
1565 * to store the COW count. So in general, allocate one more byte than
1566 * asked for, to make it likely this byte is always spare: and thus
1567 * make more strings COW-able.
1569 * Only increment if the allocation isn't MEM_SIZE_MAX,
1570 * otherwise it will wrap to 0.
1572 if ( newlen != MEM_SIZE_MAX )
1576 #if defined(PERL_USE_MALLOC_SIZE) && defined(Perl_safesysmalloc_size)
1577 #define PERL_UNWARANTED_CHUMMINESS_WITH_MALLOC
1580 if (newlen > SvLEN(sv)) { /* need more room? */
1581 STRLEN minlen = SvCUR(sv);
1582 minlen += (minlen >> PERL_STRLEN_EXPAND_SHIFT) + 10;
1583 if (newlen < minlen)
1585 #ifndef PERL_UNWARANTED_CHUMMINESS_WITH_MALLOC
1587 /* Don't round up on the first allocation, as odds are pretty good that
1588 * the initial request is accurate as to what is really needed */
1590 STRLEN rounded = PERL_STRLEN_ROUNDUP(newlen);
1591 if (rounded > newlen)
1595 if (SvLEN(sv) && s) {
1596 s = (char*)saferealloc(s, newlen);
1599 s = (char*)safemalloc(newlen);
1600 if (SvPVX_const(sv) && SvCUR(sv)) {
1601 Move(SvPVX_const(sv), s, SvCUR(sv), char);
1605 #ifdef PERL_UNWARANTED_CHUMMINESS_WITH_MALLOC
1606 /* Do this here, do it once, do it right, and then we will never get
1607 called back into sv_grow() unless there really is some growing
1609 SvLEN_set(sv, Perl_safesysmalloc_size(s));
1611 SvLEN_set(sv, newlen);
1618 =for apidoc sv_setiv
1620 Copies an integer into the given SV, upgrading first if necessary.
1621 Does not handle 'set' magic. See also C<L</sv_setiv_mg>>.
1627 Perl_sv_setiv(pTHX_ SV *const sv, const IV i)
1629 PERL_ARGS_ASSERT_SV_SETIV;
1631 SV_CHECK_THINKFIRST_COW_DROP(sv);
1632 switch (SvTYPE(sv)) {
1635 sv_upgrade(sv, SVt_IV);
1638 sv_upgrade(sv, SVt_PVIV);
1642 if (!isGV_with_GP(sv))
1650 /* diag_listed_as: Can't coerce %s to %s in %s */
1651 Perl_croak(aTHX_ "Can't coerce %s to integer in %s", sv_reftype(sv,0),
1653 NOT_REACHED; /* NOTREACHED */
1657 (void)SvIOK_only(sv); /* validate number */
1663 =for apidoc sv_setiv_mg
1665 Like C<sv_setiv>, but also handles 'set' magic.
1671 Perl_sv_setiv_mg(pTHX_ SV *const sv, const IV i)
1673 PERL_ARGS_ASSERT_SV_SETIV_MG;
1680 =for apidoc sv_setuv
1682 Copies an unsigned integer into the given SV, upgrading first if necessary.
1683 Does not handle 'set' magic. See also C<L</sv_setuv_mg>>.
1689 Perl_sv_setuv(pTHX_ SV *const sv, const UV u)
1691 PERL_ARGS_ASSERT_SV_SETUV;
1693 /* With the if statement to ensure that integers are stored as IVs whenever
1695 u=1.49 s=0.52 cu=72.49 cs=10.64 scripts=270 tests=20865
1698 u=1.35 s=0.47 cu=73.45 cs=11.43 scripts=270 tests=20865
1700 If you wish to remove the following if statement, so that this routine
1701 (and its callers) always return UVs, please benchmark to see what the
1702 effect is. Modern CPUs may be different. Or may not :-)
1704 if (u <= (UV)IV_MAX) {
1705 sv_setiv(sv, (IV)u);
1714 =for apidoc sv_setuv_mg
1716 Like C<sv_setuv>, but also handles 'set' magic.
1722 Perl_sv_setuv_mg(pTHX_ SV *const sv, const UV u)
1724 PERL_ARGS_ASSERT_SV_SETUV_MG;
1731 =for apidoc sv_setnv
1733 Copies a double into the given SV, upgrading first if necessary.
1734 Does not handle 'set' magic. See also C<L</sv_setnv_mg>>.
1740 Perl_sv_setnv(pTHX_ SV *const sv, const NV num)
1742 PERL_ARGS_ASSERT_SV_SETNV;
1744 SV_CHECK_THINKFIRST_COW_DROP(sv);
1745 switch (SvTYPE(sv)) {
1748 sv_upgrade(sv, SVt_NV);
1752 sv_upgrade(sv, SVt_PVNV);
1756 if (!isGV_with_GP(sv))
1764 /* diag_listed_as: Can't coerce %s to %s in %s */
1765 Perl_croak(aTHX_ "Can't coerce %s to number in %s", sv_reftype(sv,0),
1767 NOT_REACHED; /* NOTREACHED */
1772 (void)SvNOK_only(sv); /* validate number */
1777 =for apidoc sv_setnv_mg
1779 Like C<sv_setnv>, but also handles 'set' magic.
1785 Perl_sv_setnv_mg(pTHX_ SV *const sv, const NV num)
1787 PERL_ARGS_ASSERT_SV_SETNV_MG;
1793 /* Return a cleaned-up, printable version of sv, for non-numeric, or
1794 * not incrementable warning display.
1795 * Originally part of S_not_a_number().
1796 * The return value may be != tmpbuf.
1800 S_sv_display(pTHX_ SV *const sv, char *tmpbuf, STRLEN tmpbuf_size) {
1803 PERL_ARGS_ASSERT_SV_DISPLAY;
1806 SV *dsv = newSVpvs_flags("", SVs_TEMP);
1807 pv = sv_uni_display(dsv, sv, 32, UNI_DISPLAY_ISPRINT);
1810 const char * const limit = tmpbuf + tmpbuf_size - 8;
1811 /* each *s can expand to 4 chars + "...\0",
1812 i.e. need room for 8 chars */
1814 const char *s = SvPVX_const(sv);
1815 const char * const end = s + SvCUR(sv);
1816 for ( ; s < end && d < limit; s++ ) {
1818 if (! isASCII(ch) && !isPRINT_LC(ch)) {
1822 /* Map to ASCII "equivalent" of Latin1 */
1823 ch = LATIN1_TO_NATIVE(NATIVE_TO_LATIN1(ch) & 127);
1829 else if (ch == '\r') {
1833 else if (ch == '\f') {
1837 else if (ch == '\\') {
1841 else if (ch == '\0') {
1845 else if (isPRINT_LC(ch))
1864 /* Print an "isn't numeric" warning, using a cleaned-up,
1865 * printable version of the offending string
1869 S_not_a_number(pTHX_ SV *const sv)
1874 PERL_ARGS_ASSERT_NOT_A_NUMBER;
1876 pv = sv_display(sv, tmpbuf, sizeof(tmpbuf));
1879 Perl_warner(aTHX_ packWARN(WARN_NUMERIC),
1880 /* diag_listed_as: Argument "%s" isn't numeric%s */
1881 "Argument \"%s\" isn't numeric in %s", pv,
1884 Perl_warner(aTHX_ packWARN(WARN_NUMERIC),
1885 /* diag_listed_as: Argument "%s" isn't numeric%s */
1886 "Argument \"%s\" isn't numeric", pv);
1890 S_not_incrementable(pTHX_ SV *const sv) {
1894 PERL_ARGS_ASSERT_NOT_INCREMENTABLE;
1896 pv = sv_display(sv, tmpbuf, sizeof(tmpbuf));
1898 Perl_warner(aTHX_ packWARN(WARN_NUMERIC),
1899 "Argument \"%s\" treated as 0 in increment (++)", pv);
1903 =for apidoc looks_like_number
1905 Test if the content of an SV looks like a number (or is a number).
1906 C<Inf> and C<Infinity> are treated as numbers (so will not issue a
1907 non-numeric warning), even if your C<atof()> doesn't grok them. Get-magic is
1914 Perl_looks_like_number(pTHX_ SV *const sv)
1920 PERL_ARGS_ASSERT_LOOKS_LIKE_NUMBER;
1922 if (SvPOK(sv) || SvPOKp(sv)) {
1923 sbegin = SvPV_nomg_const(sv, len);
1926 return SvFLAGS(sv) & (SVf_NOK|SVp_NOK|SVf_IOK|SVp_IOK);
1927 numtype = grok_number(sbegin, len, NULL);
1928 return ((numtype & IS_NUMBER_TRAILING)) ? 0 : numtype;
1932 S_glob_2number(pTHX_ GV * const gv)
1934 PERL_ARGS_ASSERT_GLOB_2NUMBER;
1936 /* We know that all GVs stringify to something that is not-a-number,
1937 so no need to test that. */
1938 if (ckWARN(WARN_NUMERIC))
1940 SV *const buffer = sv_newmortal();
1941 gv_efullname3(buffer, gv, "*");
1942 not_a_number(buffer);
1944 /* We just want something true to return, so that S_sv_2iuv_common
1945 can tail call us and return true. */
1949 /* Actually, ISO C leaves conversion of UV to IV undefined, but
1950 until proven guilty, assume that things are not that bad... */
1955 As 64 bit platforms often have an NV that doesn't preserve all bits of
1956 an IV (an assumption perl has been based on to date) it becomes necessary
1957 to remove the assumption that the NV always carries enough precision to
1958 recreate the IV whenever needed, and that the NV is the canonical form.
1959 Instead, IV/UV and NV need to be given equal rights. So as to not lose
1960 precision as a side effect of conversion (which would lead to insanity
1961 and the dragon(s) in t/op/numconvert.t getting very angry) the intent is
1962 1) to distinguish between IV/UV/NV slots that have a valid conversion cached
1963 where precision was lost, and IV/UV/NV slots that have a valid conversion
1964 which has lost no precision
1965 2) to ensure that if a numeric conversion to one form is requested that
1966 would lose precision, the precise conversion (or differently
1967 imprecise conversion) is also performed and cached, to prevent
1968 requests for different numeric formats on the same SV causing
1969 lossy conversion chains. (lossless conversion chains are perfectly
1974 SvIOKp is true if the IV slot contains a valid value
1975 SvIOK is true only if the IV value is accurate (UV if SvIOK_UV true)
1976 SvNOKp is true if the NV slot contains a valid value
1977 SvNOK is true only if the NV value is accurate
1980 while converting from PV to NV, check to see if converting that NV to an
1981 IV(or UV) would lose accuracy over a direct conversion from PV to
1982 IV(or UV). If it would, cache both conversions, return NV, but mark
1983 SV as IOK NOKp (ie not NOK).
1985 While converting from PV to IV, check to see if converting that IV to an
1986 NV would lose accuracy over a direct conversion from PV to NV. If it
1987 would, cache both conversions, flag similarly.
1989 Before, the SV value "3.2" could become NV=3.2 IV=3 NOK, IOK quite
1990 correctly because if IV & NV were set NV *always* overruled.
1991 Now, "3.2" will become NV=3.2 IV=3 NOK, IOKp, because the flag's meaning
1992 changes - now IV and NV together means that the two are interchangeable:
1993 SvIVX == (IV) SvNVX && SvNVX == (NV) SvIVX;
1995 The benefit of this is that operations such as pp_add know that if
1996 SvIOK is true for both left and right operands, then integer addition
1997 can be used instead of floating point (for cases where the result won't
1998 overflow). Before, floating point was always used, which could lead to
1999 loss of precision compared with integer addition.
2001 * making IV and NV equal status should make maths accurate on 64 bit
2003 * may speed up maths somewhat if pp_add and friends start to use
2004 integers when possible instead of fp. (Hopefully the overhead in
2005 looking for SvIOK and checking for overflow will not outweigh the
2006 fp to integer speedup)
2007 * will slow down integer operations (callers of SvIV) on "inaccurate"
2008 values, as the change from SvIOK to SvIOKp will cause a call into
2009 sv_2iv each time rather than a macro access direct to the IV slot
2010 * should speed up number->string conversion on integers as IV is
2011 favoured when IV and NV are equally accurate
2013 ####################################################################
2014 You had better be using SvIOK_notUV if you want an IV for arithmetic:
2015 SvIOK is true if (IV or UV), so you might be getting (IV)SvUV.
2016 On the other hand, SvUOK is true iff UV.
2017 ####################################################################
2019 Your mileage will vary depending your CPU's relative fp to integer
2023 #ifndef NV_PRESERVES_UV
2024 # define IS_NUMBER_UNDERFLOW_IV 1
2025 # define IS_NUMBER_UNDERFLOW_UV 2
2026 # define IS_NUMBER_IV_AND_UV 2
2027 # define IS_NUMBER_OVERFLOW_IV 4
2028 # define IS_NUMBER_OVERFLOW_UV 5
2030 /* sv_2iuv_non_preserve(): private routine for use by sv_2iv() and sv_2uv() */
2032 /* For sv_2nv these three cases are "SvNOK and don't bother casting" */
2034 S_sv_2iuv_non_preserve(pTHX_ SV *const sv
2040 PERL_ARGS_ASSERT_SV_2IUV_NON_PRESERVE;
2041 PERL_UNUSED_CONTEXT;
2043 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));
2044 if (SvNVX(sv) < (NV)IV_MIN) {
2045 (void)SvIOKp_on(sv);
2047 SvIV_set(sv, IV_MIN);
2048 return IS_NUMBER_UNDERFLOW_IV;
2050 if (SvNVX(sv) > (NV)UV_MAX) {
2051 (void)SvIOKp_on(sv);
2054 SvUV_set(sv, UV_MAX);
2055 return IS_NUMBER_OVERFLOW_UV;
2057 (void)SvIOKp_on(sv);
2059 /* Can't use strtol etc to convert this string. (See truth table in
2061 if (SvNVX(sv) <= (UV)IV_MAX) {
2062 SvIV_set(sv, I_V(SvNVX(sv)));
2063 if ((NV)(SvIVX(sv)) == SvNVX(sv)) {
2064 SvIOK_on(sv); /* Integer is precise. NOK, IOK */
2066 /* Integer is imprecise. NOK, IOKp */
2068 return SvNVX(sv) < 0 ? IS_NUMBER_UNDERFLOW_UV : IS_NUMBER_IV_AND_UV;
2071 SvUV_set(sv, U_V(SvNVX(sv)));
2072 if ((NV)(SvUVX(sv)) == SvNVX(sv)) {
2073 if (SvUVX(sv) == UV_MAX) {
2074 /* As we know that NVs don't preserve UVs, UV_MAX cannot
2075 possibly be preserved by NV. Hence, it must be overflow.
2077 return IS_NUMBER_OVERFLOW_UV;
2079 SvIOK_on(sv); /* Integer is precise. NOK, UOK */
2081 /* Integer is imprecise. NOK, IOKp */
2083 return IS_NUMBER_OVERFLOW_IV;
2085 #endif /* !NV_PRESERVES_UV*/
2087 /* If numtype is infnan, set the NV of the sv accordingly.
2088 * If numtype is anything else, try setting the NV using Atof(PV). */
2090 S_sv_setnv(pTHX_ SV* sv, int numtype)
2092 bool pok = cBOOL(SvPOK(sv));
2095 if ((numtype & IS_NUMBER_INFINITY)) {
2096 SvNV_set(sv, (numtype & IS_NUMBER_NEG) ? -NV_INF : NV_INF);
2101 if ((numtype & IS_NUMBER_NAN)) {
2102 SvNV_set(sv, NV_NAN);
2107 SvNV_set(sv, Atof(SvPVX_const(sv)));
2108 /* Purposefully no true nok here, since we don't want to blow
2109 * away the possible IOK/UV of an existing sv. */
2112 SvNOK_only(sv); /* No IV or UV please, this is pure infnan. */
2114 SvPOK_on(sv); /* PV is okay, though. */
2119 S_sv_2iuv_common(pTHX_ SV *const sv)
2121 PERL_ARGS_ASSERT_SV_2IUV_COMMON;
2124 /* erm. not sure. *should* never get NOKp (without NOK) from sv_2nv
2125 * without also getting a cached IV/UV from it at the same time
2126 * (ie PV->NV conversion should detect loss of accuracy and cache
2127 * IV or UV at same time to avoid this. */
2128 /* IV-over-UV optimisation - choose to cache IV if possible */
2130 if (SvTYPE(sv) == SVt_NV)
2131 sv_upgrade(sv, SVt_PVNV);
2133 (void)SvIOKp_on(sv); /* Must do this first, to clear any SvOOK */
2134 /* < not <= as for NV doesn't preserve UV, ((NV)IV_MAX+1) will almost
2135 certainly cast into the IV range at IV_MAX, whereas the correct
2136 answer is the UV IV_MAX +1. Hence < ensures that dodgy boundary
2138 #if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan)
2139 if (Perl_isnan(SvNVX(sv))) {
2145 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2146 SvIV_set(sv, I_V(SvNVX(sv)));
2147 if (SvNVX(sv) == (NV) SvIVX(sv)
2148 #ifndef NV_PRESERVES_UV
2149 && SvIVX(sv) != IV_MIN /* avoid negating IV_MIN below */
2150 && (((UV)1 << NV_PRESERVES_UV_BITS) >
2151 (UV)(SvIVX(sv) > 0 ? SvIVX(sv) : -SvIVX(sv)))
2152 /* Don't flag it as "accurately an integer" if the number
2153 came from a (by definition imprecise) NV operation, and
2154 we're outside the range of NV integer precision */
2158 SvIOK_on(sv); /* Can this go wrong with rounding? NWC */
2160 /* scalar has trailing garbage, eg "42a" */
2162 DEBUG_c(PerlIO_printf(Perl_debug_log,
2163 "0x%" UVxf " iv(%" NVgf " => %" IVdf ") (precise)\n",
2169 /* IV not precise. No need to convert from PV, as NV
2170 conversion would already have cached IV if it detected
2171 that PV->IV would be better than PV->NV->IV
2172 flags already correct - don't set public IOK. */
2173 DEBUG_c(PerlIO_printf(Perl_debug_log,
2174 "0x%" UVxf " iv(%" NVgf " => %" IVdf ") (imprecise)\n",
2179 /* Can the above go wrong if SvIVX == IV_MIN and SvNVX < IV_MIN,
2180 but the cast (NV)IV_MIN rounds to a the value less (more
2181 negative) than IV_MIN which happens to be equal to SvNVX ??
2182 Analogous to 0xFFFFFFFFFFFFFFFF rounding up to NV (2**64) and
2183 NV rounding back to 0xFFFFFFFFFFFFFFFF, so UVX == UV(NVX) and
2184 (NV)UVX == NVX are both true, but the values differ. :-(
2185 Hopefully for 2s complement IV_MIN is something like
2186 0x8000000000000000 which will be exact. NWC */
2189 SvUV_set(sv, U_V(SvNVX(sv)));
2191 (SvNVX(sv) == (NV) SvUVX(sv))
2192 #ifndef NV_PRESERVES_UV
2193 /* Make sure it's not 0xFFFFFFFFFFFFFFFF */
2194 /*&& (SvUVX(sv) != UV_MAX) irrelevant with code below */
2195 && (((UV)1 << NV_PRESERVES_UV_BITS) > SvUVX(sv))
2196 /* Don't flag it as "accurately an integer" if the number
2197 came from a (by definition imprecise) NV operation, and
2198 we're outside the range of NV integer precision */
2204 DEBUG_c(PerlIO_printf(Perl_debug_log,
2205 "0x%" UVxf " 2iv(%" UVuf " => %" IVdf ") (as unsigned)\n",
2211 else if (SvPOKp(sv)) {
2214 const char *s = SvPVX_const(sv);
2215 const STRLEN cur = SvCUR(sv);
2217 /* short-cut for a single digit string like "1" */
2222 if (SvTYPE(sv) < SVt_PVIV)
2223 sv_upgrade(sv, SVt_PVIV);
2225 SvIV_set(sv, (IV)(c - '0'));
2230 numtype = grok_number(s, cur, &value);
2231 /* We want to avoid a possible problem when we cache an IV/ a UV which
2232 may be later translated to an NV, and the resulting NV is not
2233 the same as the direct translation of the initial string
2234 (eg 123.456 can shortcut to the IV 123 with atol(), but we must
2235 be careful to ensure that the value with the .456 is around if the
2236 NV value is requested in the future).
2238 This means that if we cache such an IV/a UV, we need to cache the
2239 NV as well. Moreover, we trade speed for space, and do not
2240 cache the NV if we are sure it's not needed.
2243 /* SVt_PVNV is one higher than SVt_PVIV, hence this order */
2244 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2245 == IS_NUMBER_IN_UV) {
2246 /* It's definitely an integer, only upgrade to PVIV */
2247 if (SvTYPE(sv) < SVt_PVIV)
2248 sv_upgrade(sv, SVt_PVIV);
2250 } else if (SvTYPE(sv) < SVt_PVNV)
2251 sv_upgrade(sv, SVt_PVNV);
2253 if ((numtype & (IS_NUMBER_INFINITY | IS_NUMBER_NAN))) {
2254 if (ckWARN(WARN_NUMERIC) && ((numtype & IS_NUMBER_TRAILING)))
2256 S_sv_setnv(aTHX_ sv, numtype);
2260 /* If NVs preserve UVs then we only use the UV value if we know that
2261 we aren't going to call atof() below. If NVs don't preserve UVs
2262 then the value returned may have more precision than atof() will
2263 return, even though value isn't perfectly accurate. */
2264 if ((numtype & (IS_NUMBER_IN_UV
2265 #ifdef NV_PRESERVES_UV
2268 )) == IS_NUMBER_IN_UV) {
2269 /* This won't turn off the public IOK flag if it was set above */
2270 (void)SvIOKp_on(sv);
2272 if (!(numtype & IS_NUMBER_NEG)) {
2274 if (value <= (UV)IV_MAX) {
2275 SvIV_set(sv, (IV)value);
2277 /* it didn't overflow, and it was positive. */
2278 SvUV_set(sv, value);
2282 /* 2s complement assumption */
2283 if (value <= (UV)IV_MIN) {
2284 SvIV_set(sv, value == (UV)IV_MIN
2285 ? IV_MIN : -(IV)value);
2287 /* Too negative for an IV. This is a double upgrade, but
2288 I'm assuming it will be rare. */
2289 if (SvTYPE(sv) < SVt_PVNV)
2290 sv_upgrade(sv, SVt_PVNV);
2294 SvNV_set(sv, -(NV)value);
2295 SvIV_set(sv, IV_MIN);
2299 /* For !NV_PRESERVES_UV and IS_NUMBER_IN_UV and IS_NUMBER_NOT_INT we
2300 will be in the previous block to set the IV slot, and the next
2301 block to set the NV slot. So no else here. */
2303 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2304 != IS_NUMBER_IN_UV) {
2305 /* It wasn't an (integer that doesn't overflow the UV). */
2306 S_sv_setnv(aTHX_ sv, numtype);
2308 if (! numtype && ckWARN(WARN_NUMERIC))
2311 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%" UVxf " 2iv(%" NVgf ")\n",
2312 PTR2UV(sv), SvNVX(sv)));
2314 #ifdef NV_PRESERVES_UV
2315 (void)SvIOKp_on(sv);
2317 #if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan)
2318 if (Perl_isnan(SvNVX(sv))) {
2324 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2325 SvIV_set(sv, I_V(SvNVX(sv)));
2326 if ((NV)(SvIVX(sv)) == SvNVX(sv)) {
2329 NOOP; /* Integer is imprecise. NOK, IOKp */
2331 /* UV will not work better than IV */
2333 if (SvNVX(sv) > (NV)UV_MAX) {
2335 /* Integer is inaccurate. NOK, IOKp, is UV */
2336 SvUV_set(sv, UV_MAX);
2338 SvUV_set(sv, U_V(SvNVX(sv)));
2339 /* 0xFFFFFFFFFFFFFFFF not an issue in here, NVs
2340 NV preservse UV so can do correct comparison. */
2341 if ((NV)(SvUVX(sv)) == SvNVX(sv)) {
2344 NOOP; /* Integer is imprecise. NOK, IOKp, is UV */
2349 #else /* NV_PRESERVES_UV */
2350 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2351 == (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT)) {
2352 /* The IV/UV slot will have been set from value returned by
2353 grok_number above. The NV slot has just been set using
2356 assert (SvIOKp(sv));
2358 if (((UV)1 << NV_PRESERVES_UV_BITS) >
2359 U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))) {
2360 /* Small enough to preserve all bits. */
2361 (void)SvIOKp_on(sv);
2363 SvIV_set(sv, I_V(SvNVX(sv)));
2364 if ((NV)(SvIVX(sv)) == SvNVX(sv))
2366 /* Assumption: first non-preserved integer is < IV_MAX,
2367 this NV is in the preserved range, therefore: */
2368 if (!(U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))
2370 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);
2374 0 0 already failed to read UV.
2375 0 1 already failed to read UV.
2376 1 0 you won't get here in this case. IV/UV
2377 slot set, public IOK, Atof() unneeded.
2378 1 1 already read UV.
2379 so there's no point in sv_2iuv_non_preserve() attempting
2380 to use atol, strtol, strtoul etc. */
2382 sv_2iuv_non_preserve (sv, numtype);
2384 sv_2iuv_non_preserve (sv);
2388 #endif /* NV_PRESERVES_UV */
2389 /* It might be more code efficient to go through the entire logic above
2390 and conditionally set with SvIOKp_on() rather than SvIOK(), but it
2391 gets complex and potentially buggy, so more programmer efficient
2392 to do it this way, by turning off the public flags: */
2394 SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK);
2398 if (isGV_with_GP(sv))
2399 return glob_2number(MUTABLE_GV(sv));
2401 if (!PL_localizing && ckWARN(WARN_UNINITIALIZED))
2403 if (SvTYPE(sv) < SVt_IV)
2404 /* Typically the caller expects that sv_any is not NULL now. */
2405 sv_upgrade(sv, SVt_IV);
2406 /* Return 0 from the caller. */
2413 =for apidoc sv_2iv_flags
2415 Return the integer value of an SV, doing any necessary string
2416 conversion. If C<flags> has the C<SV_GMAGIC> bit set, does an C<mg_get()> first.
2417 Normally used via the C<SvIV(sv)> and C<SvIVx(sv)> macros.
2423 Perl_sv_2iv_flags(pTHX_ SV *const sv, const I32 flags)
2425 PERL_ARGS_ASSERT_SV_2IV_FLAGS;
2427 assert (SvTYPE(sv) != SVt_PVAV && SvTYPE(sv) != SVt_PVHV
2428 && SvTYPE(sv) != SVt_PVFM);
2430 if (SvGMAGICAL(sv) && (flags & SV_GMAGIC))
2436 if (flags & SV_SKIP_OVERLOAD)
2438 tmpstr = AMG_CALLunary(sv, numer_amg);
2439 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2440 return SvIV(tmpstr);
2443 return PTR2IV(SvRV(sv));
2446 if (SvVALID(sv) || isREGEXP(sv)) {
2447 /* FBMs use the space for SvIVX and SvNVX for other purposes, so
2448 must not let them cache IVs.
2449 In practice they are extremely unlikely to actually get anywhere
2450 accessible by user Perl code - the only way that I'm aware of is when
2451 a constant subroutine which is used as the second argument to index.
2453 Regexps have no SvIVX and SvNVX fields.
2458 const char * const ptr =
2459 isREGEXP(sv) ? RX_WRAPPED((REGEXP*)sv) : SvPVX_const(sv);
2461 = grok_number(ptr, SvCUR(sv), &value);
2463 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2464 == IS_NUMBER_IN_UV) {
2465 /* It's definitely an integer */
2466 if (numtype & IS_NUMBER_NEG) {
2467 if (value < (UV)IV_MIN)
2470 if (value < (UV)IV_MAX)
2475 /* Quite wrong but no good choices. */
2476 if ((numtype & IS_NUMBER_INFINITY)) {
2477 return (numtype & IS_NUMBER_NEG) ? IV_MIN : IV_MAX;
2478 } else if ((numtype & IS_NUMBER_NAN)) {
2479 return 0; /* So wrong. */
2483 if (ckWARN(WARN_NUMERIC))
2486 return I_V(Atof(ptr));
2490 if (SvTHINKFIRST(sv)) {
2491 if (SvREADONLY(sv) && !SvOK(sv)) {
2492 if (ckWARN(WARN_UNINITIALIZED))
2499 if (S_sv_2iuv_common(aTHX_ sv))
2503 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%" UVxf " 2iv(%" IVdf ")\n",
2504 PTR2UV(sv),SvIVX(sv)));
2505 return SvIsUV(sv) ? (IV)SvUVX(sv) : SvIVX(sv);
2509 =for apidoc sv_2uv_flags
2511 Return the unsigned integer value of an SV, doing any necessary string
2512 conversion. If C<flags> has the C<SV_GMAGIC> bit set, does an C<mg_get()> first.
2513 Normally used via the C<SvUV(sv)> and C<SvUVx(sv)> macros.
2515 =for apidoc Amnh||SV_GMAGIC
2521 Perl_sv_2uv_flags(pTHX_ SV *const sv, const I32 flags)
2523 PERL_ARGS_ASSERT_SV_2UV_FLAGS;
2525 if (SvGMAGICAL(sv) && (flags & SV_GMAGIC))
2531 if (flags & SV_SKIP_OVERLOAD)
2533 tmpstr = AMG_CALLunary(sv, numer_amg);
2534 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2535 return SvUV(tmpstr);
2538 return PTR2UV(SvRV(sv));
2541 if (SvVALID(sv) || isREGEXP(sv)) {
2542 /* FBMs use the space for SvIVX and SvNVX for other purposes, and use
2543 the same flag bit as SVf_IVisUV, so must not let them cache IVs.
2544 Regexps have no SvIVX and SvNVX fields. */
2548 const char * const ptr =
2549 isREGEXP(sv) ? RX_WRAPPED((REGEXP*)sv) : SvPVX_const(sv);
2551 = grok_number(ptr, SvCUR(sv), &value);
2553 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2554 == IS_NUMBER_IN_UV) {
2555 /* It's definitely an integer */
2556 if (!(numtype & IS_NUMBER_NEG))
2560 /* Quite wrong but no good choices. */
2561 if ((numtype & IS_NUMBER_INFINITY)) {
2562 return UV_MAX; /* So wrong. */
2563 } else if ((numtype & IS_NUMBER_NAN)) {
2564 return 0; /* So wrong. */
2568 if (ckWARN(WARN_NUMERIC))
2571 return U_V(Atof(ptr));
2575 if (SvTHINKFIRST(sv)) {
2576 if (SvREADONLY(sv) && !SvOK(sv)) {
2577 if (ckWARN(WARN_UNINITIALIZED))
2584 if (S_sv_2iuv_common(aTHX_ sv))
2588 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%" UVxf " 2uv(%" UVuf ")\n",
2589 PTR2UV(sv),SvUVX(sv)));
2590 return SvIsUV(sv) ? SvUVX(sv) : (UV)SvIVX(sv);
2594 =for apidoc sv_2nv_flags
2596 Return the num value of an SV, doing any necessary string or integer
2597 conversion. If C<flags> has the C<SV_GMAGIC> bit set, does an C<mg_get()> first.
2598 Normally used via the C<SvNV(sv)> and C<SvNVx(sv)> macros.
2604 Perl_sv_2nv_flags(pTHX_ SV *const sv, const I32 flags)
2606 PERL_ARGS_ASSERT_SV_2NV_FLAGS;
2608 assert (SvTYPE(sv) != SVt_PVAV && SvTYPE(sv) != SVt_PVHV
2609 && SvTYPE(sv) != SVt_PVFM);
2610 if (SvGMAGICAL(sv) || SvVALID(sv) || isREGEXP(sv)) {
2611 /* FBMs use the space for SvIVX and SvNVX for other purposes, and use
2612 the same flag bit as SVf_IVisUV, so must not let them cache NVs.
2613 Regexps have no SvIVX and SvNVX fields. */
2615 if (flags & SV_GMAGIC)
2619 if (SvPOKp(sv) && !SvIOKp(sv)) {
2620 ptr = SvPVX_const(sv);
2621 if (!SvIOKp(sv) && ckWARN(WARN_NUMERIC) &&
2622 !grok_number(ptr, SvCUR(sv), NULL))
2628 return (NV)SvUVX(sv);
2630 return (NV)SvIVX(sv);
2635 assert(SvTYPE(sv) >= SVt_PVMG);
2636 /* This falls through to the report_uninit near the end of the
2638 } else if (SvTHINKFIRST(sv)) {
2643 if (flags & SV_SKIP_OVERLOAD)
2645 tmpstr = AMG_CALLunary(sv, numer_amg);
2646 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2647 return SvNV(tmpstr);
2650 return PTR2NV(SvRV(sv));
2652 if (SvREADONLY(sv) && !SvOK(sv)) {
2653 if (ckWARN(WARN_UNINITIALIZED))
2658 if (SvTYPE(sv) < SVt_NV) {
2659 /* The logic to use SVt_PVNV if necessary is in sv_upgrade. */
2660 sv_upgrade(sv, SVt_NV);
2661 CLANG_DIAG_IGNORE_STMT(-Wthread-safety);
2663 DECLARATION_FOR_LC_NUMERIC_MANIPULATION;
2664 STORE_LC_NUMERIC_SET_STANDARD();
2665 PerlIO_printf(Perl_debug_log,
2666 "0x%" UVxf " num(%" NVgf ")\n",
2667 PTR2UV(sv), SvNVX(sv));
2668 RESTORE_LC_NUMERIC();
2670 CLANG_DIAG_RESTORE_STMT;
2673 else if (SvTYPE(sv) < SVt_PVNV)
2674 sv_upgrade(sv, SVt_PVNV);
2679 SvNV_set(sv, SvIsUV(sv) ? (NV)SvUVX(sv) : (NV)SvIVX(sv));
2680 #ifdef NV_PRESERVES_UV
2686 /* Only set the public NV OK flag if this NV preserves the IV */
2687 /* Check it's not 0xFFFFFFFFFFFFFFFF */
2689 SvIsUV(sv) ? ((SvUVX(sv) != UV_MAX)&&(SvUVX(sv) == U_V(SvNVX(sv))))
2690 : (SvIVX(sv) == I_V(SvNVX(sv))))
2696 else if (SvPOKp(sv)) {
2698 const int numtype = grok_number(SvPVX_const(sv), SvCUR(sv), &value);
2699 if (!SvIOKp(sv) && !numtype && ckWARN(WARN_NUMERIC))
2701 #ifdef NV_PRESERVES_UV
2702 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2703 == IS_NUMBER_IN_UV) {
2704 /* It's definitely an integer */
2705 SvNV_set(sv, (numtype & IS_NUMBER_NEG) ? -(NV)value : (NV)value);
2707 S_sv_setnv(aTHX_ sv, numtype);
2714 SvNV_set(sv, Atof(SvPVX_const(sv)));
2715 /* Only set the public NV OK flag if this NV preserves the value in
2716 the PV at least as well as an IV/UV would.
2717 Not sure how to do this 100% reliably. */
2718 /* if that shift count is out of range then Configure's test is
2719 wonky. We shouldn't be in here with NV_PRESERVES_UV_BITS ==
2721 if (((UV)1 << NV_PRESERVES_UV_BITS) >
2722 U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))) {
2723 SvNOK_on(sv); /* Definitely small enough to preserve all bits */
2724 } else if (!(numtype & IS_NUMBER_IN_UV)) {
2725 /* Can't use strtol etc to convert this string, so don't try.
2726 sv_2iv and sv_2uv will use the NV to convert, not the PV. */
2729 /* value has been set. It may not be precise. */
2730 if ((numtype & IS_NUMBER_NEG) && (value >= (UV)IV_MIN)) {
2731 /* 2s complement assumption for (UV)IV_MIN */
2732 SvNOK_on(sv); /* Integer is too negative. */
2737 if (numtype & IS_NUMBER_NEG) {
2738 /* -IV_MIN is undefined, but we should never reach
2739 * this point with both IS_NUMBER_NEG and value ==
2741 assert(value != (UV)IV_MIN);
2742 SvIV_set(sv, -(IV)value);
2743 } else if (value <= (UV)IV_MAX) {
2744 SvIV_set(sv, (IV)value);
2746 SvUV_set(sv, value);
2750 if (numtype & IS_NUMBER_NOT_INT) {
2751 /* I believe that even if the original PV had decimals,
2752 they are lost beyond the limit of the FP precision.
2753 However, neither is canonical, so both only get p
2754 flags. NWC, 2000/11/25 */
2755 /* Both already have p flags, so do nothing */
2757 const NV nv = SvNVX(sv);
2758 /* XXX should this spot have NAN_COMPARE_BROKEN, too? */
2759 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2760 if (SvIVX(sv) == I_V(nv)) {
2763 /* It had no "." so it must be integer. */
2767 /* between IV_MAX and NV(UV_MAX).
2768 Could be slightly > UV_MAX */
2770 if (numtype & IS_NUMBER_NOT_INT) {
2771 /* UV and NV both imprecise. */
2773 const UV nv_as_uv = U_V(nv);
2775 if (value == nv_as_uv && SvUVX(sv) != UV_MAX) {
2784 /* It might be more code efficient to go through the entire logic above
2785 and conditionally set with SvNOKp_on() rather than SvNOK(), but it
2786 gets complex and potentially buggy, so more programmer efficient
2787 to do it this way, by turning off the public flags: */
2789 SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK);
2790 #endif /* NV_PRESERVES_UV */
2793 if (isGV_with_GP(sv)) {
2794 glob_2number(MUTABLE_GV(sv));
2798 if (!PL_localizing && ckWARN(WARN_UNINITIALIZED))
2800 assert (SvTYPE(sv) >= SVt_NV);
2801 /* Typically the caller expects that sv_any is not NULL now. */
2802 /* XXX Ilya implies that this is a bug in callers that assume this
2803 and ideally should be fixed. */
2806 CLANG_DIAG_IGNORE_STMT(-Wthread-safety);
2808 DECLARATION_FOR_LC_NUMERIC_MANIPULATION;
2809 STORE_LC_NUMERIC_SET_STANDARD();
2810 PerlIO_printf(Perl_debug_log, "0x%" UVxf " 2nv(%" NVgf ")\n",
2811 PTR2UV(sv), SvNVX(sv));
2812 RESTORE_LC_NUMERIC();
2814 CLANG_DIAG_RESTORE_STMT;
2821 Return an SV with the numeric value of the source SV, doing any necessary
2822 reference or overload conversion. The caller is expected to have handled
2829 Perl_sv_2num(pTHX_ SV *const sv)
2831 PERL_ARGS_ASSERT_SV_2NUM;
2836 SV * const tmpsv = AMG_CALLunary(sv, numer_amg);
2837 TAINT_IF(tmpsv && SvTAINTED(tmpsv));
2838 if (tmpsv && (!SvROK(tmpsv) || (SvRV(tmpsv) != SvRV(sv))))
2839 return sv_2num(tmpsv);
2841 return sv_2mortal(newSVuv(PTR2UV(SvRV(sv))));
2844 /* int2str_table: lookup table containing string representations of all
2845 * two digit numbers. For example, int2str_table.arr[0] is "00" and
2846 * int2str_table.arr[12*2] is "12".
2848 * We are going to read two bytes at a time, so we have to ensure that
2849 * the array is aligned to a 2 byte boundary. That's why it was made a
2850 * union with a dummy U16 member. */
2851 static const union {
2854 } int2str_table = {{
2855 '0', '0', '0', '1', '0', '2', '0', '3', '0', '4', '0', '5', '0', '6',
2856 '0', '7', '0', '8', '0', '9', '1', '0', '1', '1', '1', '2', '1', '3',
2857 '1', '4', '1', '5', '1', '6', '1', '7', '1', '8', '1', '9', '2', '0',
2858 '2', '1', '2', '2', '2', '3', '2', '4', '2', '5', '2', '6', '2', '7',
2859 '2', '8', '2', '9', '3', '0', '3', '1', '3', '2', '3', '3', '3', '4',
2860 '3', '5', '3', '6', '3', '7', '3', '8', '3', '9', '4', '0', '4', '1',
2861 '4', '2', '4', '3', '4', '4', '4', '5', '4', '6', '4', '7', '4', '8',
2862 '4', '9', '5', '0', '5', '1', '5', '2', '5', '3', '5', '4', '5', '5',
2863 '5', '6', '5', '7', '5', '8', '5', '9', '6', '0', '6', '1', '6', '2',
2864 '6', '3', '6', '4', '6', '5', '6', '6', '6', '7', '6', '8', '6', '9',
2865 '7', '0', '7', '1', '7', '2', '7', '3', '7', '4', '7', '5', '7', '6',
2866 '7', '7', '7', '8', '7', '9', '8', '0', '8', '1', '8', '2', '8', '3',
2867 '8', '4', '8', '5', '8', '6', '8', '7', '8', '8', '8', '9', '9', '0',
2868 '9', '1', '9', '2', '9', '3', '9', '4', '9', '5', '9', '6', '9', '7',
2872 /* uiv_2buf(): private routine for use by sv_2pv_flags(): print an IV or
2873 * UV as a string towards the end of buf, and return pointers to start and
2876 * We assume that buf is at least TYPE_CHARS(UV) long.
2879 PERL_STATIC_INLINE char *
2880 S_uiv_2buf(char *const buf, const IV iv, UV uv, const int is_uv, char **const peob)
2882 char *ptr = buf + TYPE_CHARS(UV);
2883 char * const ebuf = ptr;
2885 U16 *word_ptr, *word_table;
2887 PERL_ARGS_ASSERT_UIV_2BUF;
2889 /* ptr has to be properly aligned, because we will cast it to U16* */
2890 assert(PTR2nat(ptr) % 2 == 0);
2891 /* we are going to read/write two bytes at a time */
2892 word_ptr = (U16*)ptr;
2893 word_table = (U16*)int2str_table.arr;
2895 if (UNLIKELY(is_uv))
2901 /* Using 0- here to silence bogus warning from MS VC */
2902 uv = (UV) (0 - (UV) iv);
2907 *--word_ptr = word_table[uv % 100];
2910 ptr = (char*)word_ptr;
2913 *--ptr = (char)uv + '0';
2915 *--word_ptr = word_table[uv];
2916 ptr = (char*)word_ptr;
2926 /* Helper for sv_2pv_flags and sv_vcatpvfn_flags. If the NV is an
2927 * infinity or a not-a-number, writes the appropriate strings to the
2928 * buffer, including a zero byte. On success returns the written length,
2929 * excluding the zero byte, on failure (not an infinity, not a nan)
2930 * returns zero, assert-fails on maxlen being too short.
2932 * XXX for "Inf", "-Inf", and "NaN", we could have three read-only
2933 * shared string constants we point to, instead of generating a new
2934 * string for each instance. */
2936 S_infnan_2pv(NV nv, char* buffer, size_t maxlen, char plus) {
2938 assert(maxlen >= 4);
2939 if (Perl_isinf(nv)) {
2941 if (maxlen < 5) /* "-Inf\0" */
2951 else if (Perl_isnan(nv)) {
2955 /* XXX optionally output the payload mantissa bits as
2956 * "(unsigned)" (to match the nan("...") C99 function,
2957 * or maybe as "(0xhhh...)" would make more sense...
2958 * provide a format string so that the user can decide?
2959 * NOTE: would affect the maxlen and assert() logic.*/
2964 assert((s == buffer + 3) || (s == buffer + 4));
2970 =for apidoc sv_2pv_flags
2972 Returns a pointer to the string value of an SV, and sets C<*lp> to its length.
2973 If flags has the C<SV_GMAGIC> bit set, does an C<mg_get()> first. Coerces C<sv> to a
2974 string if necessary. Normally invoked via the C<SvPV_flags> macro.
2975 C<sv_2pv()> and C<sv_2pv_nomg> usually end up here too.
2981 Perl_sv_2pv_flags(pTHX_ SV *const sv, STRLEN *const lp, const I32 flags)
2985 PERL_ARGS_ASSERT_SV_2PV_FLAGS;
2987 assert (SvTYPE(sv) != SVt_PVAV && SvTYPE(sv) != SVt_PVHV
2988 && SvTYPE(sv) != SVt_PVFM);
2989 if (SvGMAGICAL(sv) && (flags & SV_GMAGIC))
2994 if (flags & SV_SKIP_OVERLOAD)
2996 tmpstr = AMG_CALLunary(sv, string_amg);
2997 TAINT_IF(tmpstr && SvTAINTED(tmpstr));
2998 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
3000 /* char *pv = lp ? SvPV(tmpstr, *lp) : SvPV_nolen(tmpstr);
3004 if ((SvFLAGS(tmpstr) & (SVf_POK)) == SVf_POK) {
3005 if (flags & SV_CONST_RETURN) {
3006 pv = (char *) SvPVX_const(tmpstr);
3008 pv = (flags & SV_MUTABLE_RETURN)
3009 ? SvPVX_mutable(tmpstr) : SvPVX(tmpstr);
3012 *lp = SvCUR(tmpstr);
3014 pv = sv_2pv_flags(tmpstr, lp, flags);
3027 SV *const referent = SvRV(sv);
3031 retval = buffer = savepvn("NULLREF", len);
3032 } else if (SvTYPE(referent) == SVt_REGEXP &&
3033 (!(PL_curcop->cop_hints & HINT_NO_AMAGIC) ||
3034 amagic_is_enabled(string_amg))) {
3035 REGEXP * const re = (REGEXP *)MUTABLE_PTR(referent);
3039 /* If the regex is UTF-8 we want the containing scalar to
3040 have an UTF-8 flag too */
3047 *lp = RX_WRAPLEN(re);
3049 return RX_WRAPPED(re);
3051 const char *const typestr = sv_reftype(referent, 0);
3052 const STRLEN typelen = strlen(typestr);
3053 UV addr = PTR2UV(referent);
3054 const char *stashname = NULL;
3055 STRLEN stashnamelen = 0; /* hush, gcc */
3056 const char *buffer_end;
3058 if (SvOBJECT(referent)) {
3059 const HEK *const name = HvNAME_HEK(SvSTASH(referent));
3062 stashname = HEK_KEY(name);
3063 stashnamelen = HEK_LEN(name);
3065 if (HEK_UTF8(name)) {
3071 stashname = "__ANON__";
3074 len = stashnamelen + 1 /* = */ + typelen + 3 /* (0x */
3075 + 2 * sizeof(UV) + 2 /* )\0 */;
3077 len = typelen + 3 /* (0x */
3078 + 2 * sizeof(UV) + 2 /* )\0 */;
3081 Newx(buffer, len, char);
3082 buffer_end = retval = buffer + len;
3084 /* Working backwards */
3088 *--retval = PL_hexdigit[addr & 15];
3089 } while (addr >>= 4);
3095 memcpy(retval, typestr, typelen);
3099 retval -= stashnamelen;
3100 memcpy(retval, stashname, stashnamelen);
3102 /* retval may not necessarily have reached the start of the
3104 assert (retval >= buffer);
3106 len = buffer_end - retval - 1; /* -1 for that \0 */
3118 if (flags & SV_MUTABLE_RETURN)
3119 return SvPVX_mutable(sv);
3120 if (flags & SV_CONST_RETURN)
3121 return (char *)SvPVX_const(sv);
3126 /* I'm assuming that if both IV and NV are equally valid then
3127 converting the IV is going to be more efficient */
3128 const U32 isUIOK = SvIsUV(sv);
3129 /* The purpose of this union is to ensure that arr is aligned on
3130 a 2 byte boundary, because that is what uiv_2buf() requires */
3132 char arr[TYPE_CHARS(UV)];
3138 if (SvTYPE(sv) < SVt_PVIV)
3139 sv_upgrade(sv, SVt_PVIV);
3140 ptr = uiv_2buf(buf.arr, SvIVX(sv), SvUVX(sv), isUIOK, &ebuf);
3142 /* inlined from sv_setpvn */
3143 s = SvGROW_mutable(sv, len + 1);
3144 Move(ptr, s, len, char);
3149 else if (SvNOK(sv)) {
3150 if (SvTYPE(sv) < SVt_PVNV)
3151 sv_upgrade(sv, SVt_PVNV);
3152 if (SvNVX(sv) == 0.0
3153 #if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan)
3154 && !Perl_isnan(SvNVX(sv))
3157 s = SvGROW_mutable(sv, 2);
3162 STRLEN size = 5; /* "-Inf\0" */
3164 s = SvGROW_mutable(sv, size);
3165 len = S_infnan_2pv(SvNVX(sv), s, size, 0);
3171 /* some Xenix systems wipe out errno here */
3180 5 + /* exponent digits */
3184 s = SvGROW_mutable(sv, size);
3185 #ifndef USE_LOCALE_NUMERIC
3186 SNPRINTF_G(SvNVX(sv), s, SvLEN(sv), NV_DIG);
3192 DECLARATION_FOR_LC_NUMERIC_MANIPULATION;
3193 STORE_LC_NUMERIC_SET_TO_NEEDED();
3195 local_radix = _NOT_IN_NUMERIC_STANDARD;
3196 if (local_radix && SvCUR(PL_numeric_radix_sv) > 1) {
3197 size += SvCUR(PL_numeric_radix_sv) - 1;
3198 s = SvGROW_mutable(sv, size);
3201 SNPRINTF_G(SvNVX(sv), s, SvLEN(sv), NV_DIG);
3203 /* If the radix character is UTF-8, and actually is in the
3204 * output, turn on the UTF-8 flag for the scalar */
3206 && SvUTF8(PL_numeric_radix_sv)
3207 && instr(s, SvPVX_const(PL_numeric_radix_sv)))
3212 RESTORE_LC_NUMERIC();
3215 /* We don't call SvPOK_on(), because it may come to
3216 * pass that the locale changes so that the
3217 * stringification we just did is no longer correct. We
3218 * will have to re-stringify every time it is needed */
3225 else if (isGV_with_GP(sv)) {
3226 GV *const gv = MUTABLE_GV(sv);
3227 SV *const buffer = sv_newmortal();
3229 gv_efullname3(buffer, gv, "*");
3231 assert(SvPOK(buffer));
3237 *lp = SvCUR(buffer);
3238 return SvPVX(buffer);
3243 if (flags & SV_UNDEF_RETURNS_NULL)
3245 if (!PL_localizing && ckWARN(WARN_UNINITIALIZED))
3247 /* Typically the caller expects that sv_any is not NULL now. */
3248 if (!SvREADONLY(sv) && SvTYPE(sv) < SVt_PV)
3249 sv_upgrade(sv, SVt_PV);
3254 const STRLEN len = s - SvPVX_const(sv);
3259 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%" UVxf " 2pv(%s)\n",
3260 PTR2UV(sv),SvPVX_const(sv)));
3261 if (flags & SV_CONST_RETURN)
3262 return (char *)SvPVX_const(sv);
3263 if (flags & SV_MUTABLE_RETURN)
3264 return SvPVX_mutable(sv);
3269 =for apidoc sv_copypv
3271 Copies a stringified representation of the source SV into the
3272 destination SV. Automatically performs any necessary C<mg_get> and
3273 coercion of numeric values into strings. Guaranteed to preserve
3274 C<UTF8> flag even from overloaded objects. Similar in nature to
3275 C<sv_2pv[_flags]> but operates directly on an SV instead of just the
3276 string. Mostly uses C<sv_2pv_flags> to do its work, except when that
3277 would lose the UTF-8'ness of the PV.
3279 =for apidoc sv_copypv_nomg
3281 Like C<sv_copypv>, but doesn't invoke get magic first.
3283 =for apidoc sv_copypv_flags
3285 Implementation of C<sv_copypv> and C<sv_copypv_nomg>. Calls get magic iff flags
3286 has the C<SV_GMAGIC> bit set.
3292 Perl_sv_copypv_flags(pTHX_ SV *const dsv, SV *const ssv, const I32 flags)
3297 PERL_ARGS_ASSERT_SV_COPYPV_FLAGS;
3299 s = SvPV_flags_const(ssv,len,(flags & SV_GMAGIC));
3300 sv_setpvn(dsv,s,len);
3308 =for apidoc sv_2pvbyte
3310 Return a pointer to the byte-encoded representation of the SV, and set C<*lp>
3311 to its length. May cause the SV to be downgraded from UTF-8 as a
3314 Usually accessed via the C<SvPVbyte> macro.
3320 Perl_sv_2pvbyte_flags(pTHX_ SV *sv, STRLEN *const lp, const U32 flags)
3322 PERL_ARGS_ASSERT_SV_2PVBYTE_FLAGS;
3324 if (SvGMAGICAL(sv) && (flags & SV_GMAGIC))
3326 if (((SvREADONLY(sv) || SvFAKE(sv)) && !SvIsCOW(sv))
3327 || isGV_with_GP(sv) || SvROK(sv)) {
3328 SV *sv2 = sv_newmortal();
3329 sv_copypv_nomg(sv2,sv);
3332 sv_utf8_downgrade_nomg(sv,0);
3333 return lp ? SvPV_nomg(sv,*lp) : SvPV_nomg_nolen(sv);
3337 =for apidoc sv_2pvutf8
3339 Return a pointer to the UTF-8-encoded representation of the SV, and set C<*lp>
3340 to its length. May cause the SV to be upgraded to UTF-8 as a side-effect.
3342 Usually accessed via the C<SvPVutf8> macro.
3348 Perl_sv_2pvutf8_flags(pTHX_ SV *sv, STRLEN *const lp, const U32 flags)
3350 PERL_ARGS_ASSERT_SV_2PVUTF8_FLAGS;
3352 if (SvGMAGICAL(sv) && (flags & SV_GMAGIC))
3354 if (((SvREADONLY(sv) || SvFAKE(sv)) && !SvIsCOW(sv))
3355 || isGV_with_GP(sv) || SvROK(sv)) {
3356 SV *sv2 = sv_newmortal();
3357 sv_copypv_nomg(sv2,sv);
3360 sv_utf8_upgrade_nomg(sv);
3361 return lp ? SvPV_nomg(sv,*lp) : SvPV_nomg_nolen(sv);
3366 =for apidoc sv_2bool
3368 This macro is only used by C<sv_true()> or its macro equivalent, and only if
3369 the latter's argument is neither C<SvPOK>, C<SvIOK> nor C<SvNOK>.
3370 It calls C<sv_2bool_flags> with the C<SV_GMAGIC> flag.
3372 =for apidoc sv_2bool_flags
3374 This function is only used by C<sv_true()> and friends, and only if
3375 the latter's argument is neither C<SvPOK>, C<SvIOK> nor C<SvNOK>. If the flags
3376 contain C<SV_GMAGIC>, then it does an C<mg_get()> first.
3383 Perl_sv_2bool_flags(pTHX_ SV *sv, I32 flags)
3385 PERL_ARGS_ASSERT_SV_2BOOL_FLAGS;
3388 if(flags & SV_GMAGIC) SvGETMAGIC(sv);
3394 SV * const tmpsv = AMG_CALLunary(sv, bool__amg);
3395 if (tmpsv && (!SvROK(tmpsv) || (SvRV(tmpsv) != SvRV(sv)))) {
3398 if(SvGMAGICAL(sv)) {
3400 goto restart; /* call sv_2bool */
3402 /* expanded SvTRUE_common(sv, (flags = 0, goto restart)) */
3403 else if(!SvOK(sv)) {
3406 else if(SvPOK(sv)) {
3407 svb = SvPVXtrue(sv);
3409 else if((SvFLAGS(sv) & (SVf_IOK|SVf_NOK))) {
3410 svb = (SvIOK(sv) && SvIVX(sv) != 0)
3411 || (SvNOK(sv) && SvNVX(sv) != 0.0);
3415 goto restart; /* call sv_2bool_nomg */
3425 RX_WRAPLEN(sv) > 1 || (RX_WRAPLEN(sv) && *RX_WRAPPED(sv) != '0');
3427 if (SvNOK(sv) && !SvPOK(sv))
3428 return SvNVX(sv) != 0.0;
3430 return SvTRUE_common(sv, isGV_with_GP(sv) ? 1 : 0);
3434 =for apidoc sv_utf8_upgrade
3436 Converts the PV of an SV to its UTF-8-encoded form.
3437 Forces the SV to string form if it is not already.
3438 Will C<mg_get> on C<sv> if appropriate.
3439 Always sets the C<SvUTF8> flag to avoid future validity checks even
3440 if the whole string is the same in UTF-8 as not.
3441 Returns the number of bytes in the converted string
3443 This is not a general purpose byte encoding to Unicode interface:
3444 use the Encode extension for that.
3446 =for apidoc sv_utf8_upgrade_nomg
3448 Like C<sv_utf8_upgrade>, but doesn't do magic on C<sv>.
3450 =for apidoc sv_utf8_upgrade_flags
3452 Converts the PV of an SV to its UTF-8-encoded form.
3453 Forces the SV to string form if it is not already.
3454 Always sets the SvUTF8 flag to avoid future validity checks even
3455 if all the bytes are invariant in UTF-8.
3456 If C<flags> has C<SV_GMAGIC> bit set,
3457 will C<mg_get> on C<sv> if appropriate, else not.
3459 The C<SV_FORCE_UTF8_UPGRADE> flag is now ignored.
3461 Returns the number of bytes in the converted string.
3463 This is not a general purpose byte encoding to Unicode interface:
3464 use the Encode extension for that.
3466 =for apidoc sv_utf8_upgrade_flags_grow
3468 Like C<sv_utf8_upgrade_flags>, but has an additional parameter C<extra>, which is
3469 the number of unused bytes the string of C<sv> is guaranteed to have free after
3470 it upon return. This allows the caller to reserve extra space that it intends
3471 to fill, to avoid extra grows.
3473 C<sv_utf8_upgrade>, C<sv_utf8_upgrade_nomg>, and C<sv_utf8_upgrade_flags>
3474 are implemented in terms of this function.
3476 Returns the number of bytes in the converted string (not including the spares).
3480 If the routine itself changes the string, it adds a trailing C<NUL>. Such a
3481 C<NUL> isn't guaranteed due to having other routines do the work in some input
3482 cases, or if the input is already flagged as being in utf8.
3487 Perl_sv_utf8_upgrade_flags_grow(pTHX_ SV *const sv, const I32 flags, STRLEN extra)
3489 PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS_GROW;
3491 if (sv == &PL_sv_undef)
3493 if (!SvPOK_nog(sv)) {
3495 if (SvREADONLY(sv) && (SvPOKp(sv) || SvIOKp(sv) || SvNOKp(sv))) {
3496 (void) sv_2pv_flags(sv,&len, flags);
3498 if (extra) SvGROW(sv, SvCUR(sv) + extra);
3502 (void) SvPV_force_flags(sv,len,flags & SV_GMAGIC);
3506 /* SVt_REGEXP's shouldn't be upgraded to UTF8 - they're already
3507 * compiled and individual nodes will remain non-utf8 even if the
3508 * stringified version of the pattern gets upgraded. Whether the
3509 * PVX of a REGEXP should be grown or we should just croak, I don't
3511 if (SvUTF8(sv) || isREGEXP(sv)) {
3512 if (extra) SvGROW(sv, SvCUR(sv) + extra);
3517 S_sv_uncow(aTHX_ sv, 0);
3520 if (SvCUR(sv) == 0) {
3521 if (extra) SvGROW(sv, extra + 1); /* Make sure is room for a trailing
3523 } else { /* Assume Latin-1/EBCDIC */
3524 /* This function could be much more efficient if we
3525 * had a FLAG in SVs to signal if there are any variant
3526 * chars in the PV. Given that there isn't such a flag
3527 * make the loop as fast as possible. */
3528 U8 * s = (U8 *) SvPVX_const(sv);
3531 if (is_utf8_invariant_string_loc(s, SvCUR(sv), (const U8 **) &t)) {
3533 /* utf8 conversion not needed because all are invariants. Mark
3534 * as UTF-8 even if no variant - saves scanning loop */
3536 if (extra) SvGROW(sv, SvCUR(sv) + extra);
3540 /* Here, there is at least one variant (t points to the first one), so
3541 * the string should be converted to utf8. Everything from 's' to
3542 * 't - 1' will occupy only 1 byte each on output.
3544 * Note that the incoming SV may not have a trailing '\0', as certain
3545 * code in pp_formline can send us partially built SVs.
3547 * There are two main ways to convert. One is to create a new string
3548 * and go through the input starting from the beginning, appending each
3549 * converted value onto the new string as we go along. Going this
3550 * route, it's probably best to initially allocate enough space in the
3551 * string rather than possibly running out of space and having to
3552 * reallocate and then copy what we've done so far. Since everything
3553 * from 's' to 't - 1' is invariant, the destination can be initialized
3554 * with these using a fast memory copy. To be sure to allocate enough
3555 * space, one could use the worst case scenario, where every remaining
3556 * byte expands to two under UTF-8, or one could parse it and count
3557 * exactly how many do expand.
3559 * The other way is to unconditionally parse the remainder of the
3560 * string to figure out exactly how big the expanded string will be,
3561 * growing if needed. Then start at the end of the string and place
3562 * the character there at the end of the unfilled space in the expanded
3563 * one, working backwards until reaching 't'.
3565 * The problem with assuming the worst case scenario is that for very
3566 * long strings, we could allocate much more memory than actually
3567 * needed, which can create performance problems. If we have to parse
3568 * anyway, the second method is the winner as it may avoid an extra
3569 * copy. The code used to use the first method under some
3570 * circumstances, but now that there is faster variant counting on
3571 * ASCII platforms, the second method is used exclusively, eliminating
3572 * some code that no longer has to be maintained. */
3575 /* Count the total number of variants there are. We can start
3576 * just beyond the first one, which is known to be at 't' */
3577 const Size_t invariant_length = t - s;
3578 U8 * e = (U8 *) SvEND(sv);
3580 /* The length of the left overs, plus 1. */
3581 const Size_t remaining_length_p1 = e - t;
3583 /* We expand by 1 for the variant at 't' and one for each remaining
3584 * variant (we start looking at 't+1') */
3585 Size_t expansion = 1 + variant_under_utf8_count(t + 1, e);
3587 /* +1 = trailing NUL */
3588 Size_t need = SvCUR(sv) + expansion + extra + 1;
3591 /* Grow if needed */
3592 if (SvLEN(sv) < need) {
3593 t = invariant_length + (U8*) SvGROW(sv, need);
3594 e = t + remaining_length_p1;
3596 SvCUR_set(sv, invariant_length + remaining_length_p1 + expansion);
3598 /* Set the NUL at the end */
3599 d = (U8 *) SvEND(sv);
3602 /* Having decremented d, it points to the position to put the
3603 * very last byte of the expanded string. Go backwards through
3604 * the string, copying and expanding as we go, stopping when we
3605 * get to the part that is invariant the rest of the way down */
3609 if (NATIVE_BYTE_IS_INVARIANT(*e)) {
3612 *d-- = UTF8_EIGHT_BIT_LO(*e);
3613 *d-- = UTF8_EIGHT_BIT_HI(*e);
3618 if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv)) {
3619 /* Update pos. We do it at the end rather than during
3620 * the upgrade, to avoid slowing down the common case
3621 * (upgrade without pos).
3622 * pos can be stored as either bytes or characters. Since
3623 * this was previously a byte string we can just turn off
3624 * the bytes flag. */
3625 MAGIC * mg = mg_find(sv, PERL_MAGIC_regex_global);
3627 mg->mg_flags &= ~MGf_BYTES;
3629 if ((mg = mg_find(sv, PERL_MAGIC_utf8)))
3630 magic_setutf8(sv,mg); /* clear UTF8 cache */
3640 =for apidoc sv_utf8_downgrade
3642 Attempts to convert the PV of an SV from characters to bytes.
3643 If the PV contains a character that cannot fit
3644 in a byte, this conversion will fail;
3645 in this case, either returns false or, if C<fail_ok> is not
3648 This is not a general purpose Unicode to byte encoding interface:
3649 use the C<Encode> extension for that.
3651 This function process get magic on C<sv>.
3653 =for apidoc sv_utf8_downgrade_nomg
3655 Like C<sv_utf8_downgrade>, but does not process get magic on C<sv>.
3657 =for apidoc sv_utf8_downgrade_flags
3659 Like C<sv_utf8_downgrade>, but with additional C<flags>.
3660 If C<flags> has C<SV_GMAGIC> bit set, processes get magic on C<sv>.
3666 Perl_sv_utf8_downgrade_flags(pTHX_ SV *const sv, const bool fail_ok, const U32 flags)
3668 PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE_FLAGS;
3670 if (SvPOKp(sv) && SvUTF8(sv)) {
3674 U32 mg_flags = flags & SV_GMAGIC;
3677 S_sv_uncow(aTHX_ sv, 0);
3679 if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv)) {
3681 MAGIC * mg = mg_find(sv, PERL_MAGIC_regex_global);
3682 if (mg && mg->mg_len > 0 && mg->mg_flags & MGf_BYTES) {
3683 mg->mg_len = sv_pos_b2u_flags(sv, mg->mg_len,
3684 mg_flags|SV_CONST_RETURN);
3685 mg_flags = 0; /* sv_pos_b2u does get magic */
3687 if ((mg = mg_find(sv, PERL_MAGIC_utf8)))
3688 magic_setutf8(sv,mg); /* clear UTF8 cache */
3691 s = (U8 *) SvPV_flags(sv, len, mg_flags);
3693 if (!utf8_to_bytes(s, &len)) {
3698 Perl_croak(aTHX_ "Wide character in %s",
3701 Perl_croak(aTHX_ "Wide character");
3712 =for apidoc sv_utf8_encode
3714 Converts the PV of an SV to UTF-8, but then turns the C<SvUTF8>
3715 flag off so that it looks like octets again.
3721 Perl_sv_utf8_encode(pTHX_ SV *const sv)
3723 PERL_ARGS_ASSERT_SV_UTF8_ENCODE;
3725 if (SvREADONLY(sv)) {
3726 sv_force_normal_flags(sv, 0);
3728 (void) sv_utf8_upgrade(sv);
3733 =for apidoc sv_utf8_decode
3735 If the PV of the SV is an octet sequence in Perl's extended UTF-8
3736 and contains a multiple-byte character, the C<SvUTF8> flag is turned on
3737 so that it looks like a character. If the PV contains only single-byte
3738 characters, the C<SvUTF8> flag stays off.
3739 Scans PV for validity and returns FALSE if the PV is invalid UTF-8.
3745 Perl_sv_utf8_decode(pTHX_ SV *const sv)
3747 PERL_ARGS_ASSERT_SV_UTF8_DECODE;
3750 const U8 *start, *c, *first_variant;
3752 /* The octets may have got themselves encoded - get them back as
3755 if (!sv_utf8_downgrade(sv, TRUE))
3758 /* it is actually just a matter of turning the utf8 flag on, but
3759 * we want to make sure everything inside is valid utf8 first.
3761 c = start = (const U8 *) SvPVX_const(sv);
3762 if (! is_utf8_invariant_string_loc(c, SvCUR(sv), &first_variant)) {
3763 if (!is_utf8_string(first_variant, SvCUR(sv) - (first_variant -c)))
3767 if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv)) {
3768 /* XXX Is this dead code? XS_utf8_decode calls SvSETMAGIC
3769 after this, clearing pos. Does anything on CPAN
3771 /* adjust pos to the start of a UTF8 char sequence */
3772 MAGIC * mg = mg_find(sv, PERL_MAGIC_regex_global);
3774 I32 pos = mg->mg_len;
3776 for (c = start + pos; c > start; c--) {
3777 if (UTF8_IS_START(*c))
3780 mg->mg_len = c - start;
3783 if ((mg = mg_find(sv, PERL_MAGIC_utf8)))
3784 magic_setutf8(sv,mg); /* clear UTF8 cache */
3791 =for apidoc sv_setsv
3793 Copies the contents of the source SV C<ssv> into the destination SV
3794 C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
3795 function if the source SV needs to be reused. Does not handle 'set' magic on
3796 destination SV. Calls 'get' magic on source SV. Loosely speaking, it
3797 performs a copy-by-value, obliterating any previous content of the
3800 You probably want to use one of the assortment of wrappers, such as
3801 C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
3802 C<SvSetMagicSV_nosteal>.
3804 =for apidoc sv_setsv_flags
3806 Copies the contents of the source SV C<ssv> into the destination SV
3807 C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
3808 function if the source SV needs to be reused. Does not handle 'set' magic.
3809 Loosely speaking, it performs a copy-by-value, obliterating any previous
3810 content of the destination.
3811 If the C<flags> parameter has the C<SV_GMAGIC> bit set, will C<mg_get> on
3812 C<ssv> if appropriate, else not. If the C<flags>
3813 parameter has the C<SV_NOSTEAL> bit set then the
3814 buffers of temps will not be stolen. C<sv_setsv>
3815 and C<sv_setsv_nomg> are implemented in terms of this function.
3817 You probably want to use one of the assortment of wrappers, such as
3818 C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
3819 C<SvSetMagicSV_nosteal>.
3821 This is the primary function for copying scalars, and most other
3822 copy-ish functions and macros use this underneath.
3824 =for apidoc Amnh||SV_NOSTEAL
3830 S_glob_assign_glob(pTHX_ SV *const dstr, SV *const sstr, const int dtype)
3832 I32 mro_changes = 0; /* 1 = method, 2 = isa, 3 = recursive isa */
3833 HV *old_stash = NULL;
3835 PERL_ARGS_ASSERT_GLOB_ASSIGN_GLOB;
3837 if (dtype != SVt_PVGV && !isGV_with_GP(dstr)) {
3838 const char * const name = GvNAME(sstr);
3839 const STRLEN len = GvNAMELEN(sstr);
3841 if (dtype >= SVt_PV) {
3847 SvUPGRADE(dstr, SVt_PVGV);
3848 (void)SvOK_off(dstr);
3849 isGV_with_GP_on(dstr);
3851 GvSTASH(dstr) = GvSTASH(sstr);
3853 Perl_sv_add_backref(aTHX_ MUTABLE_SV(GvSTASH(dstr)), dstr);
3854 gv_name_set(MUTABLE_GV(dstr), name, len,
3855 GV_ADD | (GvNAMEUTF8(sstr) ? SVf_UTF8 : 0 ));
3856 SvFAKE_on(dstr); /* can coerce to non-glob */
3859 if(GvGP(MUTABLE_GV(sstr))) {
3860 /* If source has method cache entry, clear it */
3862 SvREFCNT_dec(GvCV(sstr));
3863 GvCV_set(sstr, NULL);
3866 /* If source has a real method, then a method is
3869 GvCV((const GV *)sstr) && GvSTASH(dstr) && HvENAME(GvSTASH(dstr))
3875 /* If dest already had a real method, that's a change as well */
3877 !mro_changes && GvGP(MUTABLE_GV(dstr)) && GvCVu((const GV *)dstr)
3878 && GvSTASH(dstr) && HvENAME(GvSTASH(dstr))
3883 /* We don't need to check the name of the destination if it was not a
3884 glob to begin with. */
3885 if(dtype == SVt_PVGV) {
3886 const char * const name = GvNAME((const GV *)dstr);
3887 const STRLEN len = GvNAMELEN(dstr);
3888 if(memEQs(name, len, "ISA")
3889 /* The stash may have been detached from the symbol table, so
3891 && GvSTASH(dstr) && HvENAME(GvSTASH(dstr))
3895 if ((len > 1 && name[len-2] == ':' && name[len-1] == ':')
3896 || (len == 1 && name[0] == ':')) {
3899 /* Set aside the old stash, so we can reset isa caches on
3901 if((old_stash = GvHV(dstr)))
3902 /* Make sure we do not lose it early. */
3903 SvREFCNT_inc_simple_void_NN(
3904 sv_2mortal((SV *)old_stash)
3909 SvREFCNT_inc_simple_void_NN(sv_2mortal(dstr));
3912 /* freeing dstr's GP might free sstr (e.g. *x = $x),
3913 * so temporarily protect it */
3915 SAVEFREESV(SvREFCNT_inc_simple_NN(sstr));
3916 gp_free(MUTABLE_GV(dstr));
3917 GvINTRO_off(dstr); /* one-shot flag */
3918 GvGP_set(dstr, gp_ref(GvGP(sstr)));
3921 if (SvTAINTED(sstr))
3923 if (GvIMPORTED(dstr) != GVf_IMPORTED
3924 && CopSTASH_ne(PL_curcop, GvSTASH(dstr)))
3926 GvIMPORTED_on(dstr);
3929 if(mro_changes == 2) {
3930 if (GvAV((const GV *)sstr)) {
3932 SV * const sref = (SV *)GvAV((const GV *)dstr);
3933 if (SvSMAGICAL(sref) && (mg = mg_find(sref, PERL_MAGIC_isa))) {
3934 if (SvTYPE(mg->mg_obj) != SVt_PVAV) {
3935 AV * const ary = newAV();
3936 av_push(ary, mg->mg_obj); /* takes the refcount */
3937 mg->mg_obj = (SV *)ary;
3939 av_push((AV *)mg->mg_obj, SvREFCNT_inc_simple_NN(dstr));
3941 else sv_magic(sref, dstr, PERL_MAGIC_isa, NULL, 0);
3943 mro_isa_changed_in(GvSTASH(dstr));
3945 else if(mro_changes == 3) {
3946 HV * const stash = GvHV(dstr);
3947 if(old_stash ? (HV *)HvENAME_get(old_stash) : stash)
3953 else if(mro_changes) mro_method_changed_in(GvSTASH(dstr));
3954 if (GvIO(dstr) && dtype == SVt_PVGV) {
3955 DEBUG_o(Perl_deb(aTHX_
3956 "glob_assign_glob clearing PL_stashcache\n"));
3957 /* It's a cache. It will rebuild itself quite happily.
3958 It's a lot of effort to work out exactly which key (or keys)
3959 might be invalidated by the creation of the this file handle.
3961 hv_clear(PL_stashcache);
3967 Perl_gv_setref(pTHX_ SV *const dstr, SV *const sstr)
3969 SV * const sref = SvRV(sstr);
3971 const int intro = GvINTRO(dstr);
3974 const U32 stype = SvTYPE(sref);
3976 PERL_ARGS_ASSERT_GV_SETREF;
3979 GvINTRO_off(dstr); /* one-shot flag */
3980 GvLINE(dstr) = CopLINE(PL_curcop);
3981 GvEGV(dstr) = MUTABLE_GV(dstr);
3986 location = (SV **) &(GvGP(dstr)->gp_cv); /* XXX bypassing GvCV_set */
3987 import_flag = GVf_IMPORTED_CV;
3990 location = (SV **) &GvHV(dstr);
3991 import_flag = GVf_IMPORTED_HV;
3994 location = (SV **) &GvAV(dstr);
3995 import_flag = GVf_IMPORTED_AV;
3998 location = (SV **) &GvIOp(dstr);
4001 location = (SV **) &GvFORM(dstr);
4004 location = &GvSV(dstr);
4005 import_flag = GVf_IMPORTED_SV;
4008 if (stype == SVt_PVCV) {
4009 /*if (GvCVGEN(dstr) && (GvCV(dstr) != (const CV *)sref || GvCVGEN(dstr))) {*/
4010 if (GvCVGEN(dstr)) {
4011 SvREFCNT_dec(GvCV(dstr));
4012 GvCV_set(dstr, NULL);
4013 GvCVGEN(dstr) = 0; /* Switch off cacheness. */
4016 /* SAVEt_GVSLOT takes more room on the savestack and has more
4017 overhead in leave_scope than SAVEt_GENERIC_SV. But for CVs
4018 leave_scope needs access to the GV so it can reset method
4019 caches. We must use SAVEt_GVSLOT whenever the type is
4020 SVt_PVCV, even if the stash is anonymous, as the stash may
4021 gain a name somehow before leave_scope. */
4022 if (stype == SVt_PVCV) {
4023 /* There is no save_pushptrptrptr. Creating it for this
4024 one call site would be overkill. So inline the ss add
4028 SS_ADD_PTR(location);
4029 SS_ADD_PTR(SvREFCNT_inc(*location));
4030 SS_ADD_UV(SAVEt_GVSLOT);
4033 else SAVEGENERICSV(*location);
4036 if (stype == SVt_PVCV && (*location != sref || GvCVGEN(dstr))) {
4037 CV* const cv = MUTABLE_CV(*location);
4039 if (!GvCVGEN((const GV *)dstr) &&
4040 (CvROOT(cv) || CvXSUB(cv)) &&
4041 /* redundant check that avoids creating the extra SV
4042 most of the time: */
4043 (CvCONST(cv) || ckWARN(WARN_REDEFINE)))
4045 SV * const new_const_sv =
4046 CvCONST((const CV *)sref)
4047 ? cv_const_sv((const CV *)sref)
4049 HV * const stash = GvSTASH((const GV *)dstr);
4050 report_redefined_cv(
4053 ? Perl_newSVpvf(aTHX_
4054 "%" HEKf "::%" HEKf,
4055 HEKfARG(HvNAME_HEK(stash)),
4056 HEKfARG(GvENAME_HEK(MUTABLE_GV(dstr))))
4057 : Perl_newSVpvf(aTHX_
4059 HEKfARG(GvENAME_HEK(MUTABLE_GV(dstr))))
4062 CvCONST((const CV *)sref) ? &new_const_sv : NULL
4066 cv_ckproto_len_flags(cv, (const GV *)dstr,
4067 SvPOK(sref) ? CvPROTO(sref) : NULL,
4068 SvPOK(sref) ? CvPROTOLEN(sref) : 0,
4069 SvPOK(sref) ? SvUTF8(sref) : 0);
4071 GvCVGEN(dstr) = 0; /* Switch off cacheness. */
4072 GvASSUMECV_on(dstr);
4073 if(GvSTASH(dstr)) { /* sub foo { 1 } sub bar { 2 } *bar = \&foo */
4074 if (intro && GvREFCNT(dstr) > 1) {
4075 /* temporary remove extra savestack's ref */
4077 gv_method_changed(dstr);
4080 else gv_method_changed(dstr);
4083 *location = SvREFCNT_inc_simple_NN(sref);
4084 if (import_flag && !(GvFLAGS(dstr) & import_flag)
4085 && CopSTASH_ne(PL_curcop, GvSTASH(dstr))) {
4086 GvFLAGS(dstr) |= import_flag;
4089 if (stype == SVt_PVHV) {
4090 const char * const name = GvNAME((GV*)dstr);
4091 const STRLEN len = GvNAMELEN(dstr);
4094 (len > 1 && name[len-2] == ':' && name[len-1] == ':')
4095 || (len == 1 && name[0] == ':')
4097 && (!dref || HvENAME_get(dref))
4100 (HV *)sref, (HV *)dref,
4106 stype == SVt_PVAV && sref != dref
4107 && memEQs(GvNAME((GV*)dstr), GvNAMELEN((GV*)dstr), "ISA")
4108 /* The stash may have been detached from the symbol table, so
4109 check its name before doing anything. */
4110 && GvSTASH(dstr) && HvENAME(GvSTASH(dstr))
4113 MAGIC * const omg = dref && SvSMAGICAL(dref)
4114 ? mg_find(dref, PERL_MAGIC_isa)
4116 if (SvSMAGICAL(sref) && (mg = mg_find(sref, PERL_MAGIC_isa))) {
4117 if (SvTYPE(mg->mg_obj) != SVt_PVAV) {
4118 AV * const ary = newAV();
4119 av_push(ary, mg->mg_obj); /* takes the refcount */
4120 mg->mg_obj = (SV *)ary;
4123 if (SvTYPE(omg->mg_obj) == SVt_PVAV) {
4124 SV **svp = AvARRAY((AV *)omg->mg_obj);
4125 I32 items = AvFILLp((AV *)omg->mg_obj) + 1;
4129 SvREFCNT_inc_simple_NN(*svp++)
4135 SvREFCNT_inc_simple_NN(omg->mg_obj)
4139 av_push((AV *)mg->mg_obj,SvREFCNT_inc_simple_NN(dstr));
4145 sref, omg ? omg->mg_obj : dstr, PERL_MAGIC_isa, NULL, 0
4147 for (i = 0; i <= AvFILL(sref); ++i) {
4148 SV **elem = av_fetch ((AV*)sref, i, 0);
4151 *elem, sref, PERL_MAGIC_isaelem, NULL, i
4155 mg = mg_find(sref, PERL_MAGIC_isa);
4157 /* Since the *ISA assignment could have affected more than
4158 one stash, don't call mro_isa_changed_in directly, but let
4159 magic_clearisa do it for us, as it already has the logic for
4160 dealing with globs vs arrays of globs. */
4162 Perl_magic_clearisa(aTHX_ NULL, mg);
4164 else if (stype == SVt_PVIO) {
4165 DEBUG_o(Perl_deb(aTHX_ "gv_setref clearing PL_stashcache\n"));
4166 /* It's a cache. It will rebuild itself quite happily.
4167 It's a lot of effort to work out exactly which key (or keys)
4168 might be invalidated by the creation of the this file handle.
4170 hv_clear(PL_stashcache);
4174 if (!intro) SvREFCNT_dec(dref);
4175 if (SvTAINTED(sstr))
4183 #ifdef PERL_DEBUG_READONLY_COW
4184 # include <sys/mman.h>
4186 # ifndef PERL_MEMORY_DEBUG_HEADER_SIZE
4187 # define PERL_MEMORY_DEBUG_HEADER_SIZE 0
4191 Perl_sv_buf_to_ro(pTHX_ SV *sv)
4193 struct perl_memory_debug_header * const header =
4194 (struct perl_memory_debug_header *)(SvPVX(sv)-PERL_MEMORY_DEBUG_HEADER_SIZE);
4195 const MEM_SIZE len = header->size;
4196 PERL_ARGS_ASSERT_SV_BUF_TO_RO;
4197 # ifdef PERL_TRACK_MEMPOOL
4198 if (!header->readonly) header->readonly = 1;
4200 if (mprotect(header, len, PROT_READ))
4201 Perl_warn(aTHX_ "mprotect RW for COW string %p %lu failed with %d",
4202 header, len, errno);
4206 S_sv_buf_to_rw(pTHX_ SV *sv)
4208 struct perl_memory_debug_header * const header =
4209 (struct perl_memory_debug_header *)(SvPVX(sv)-PERL_MEMORY_DEBUG_HEADER_SIZE);
4210 const MEM_SIZE len = header->size;
4211 PERL_ARGS_ASSERT_SV_BUF_TO_RW;
4212 if (mprotect(header, len, PROT_READ|PROT_WRITE))
4213 Perl_warn(aTHX_ "mprotect for COW string %p %lu failed with %d",
4214 header, len, errno);
4215 # ifdef PERL_TRACK_MEMPOOL
4216 header->readonly = 0;
4221 # define sv_buf_to_ro(sv) NOOP
4222 # define sv_buf_to_rw(sv) NOOP
4226 Perl_sv_setsv_flags(pTHX_ SV *dstr, SV* sstr, const I32 flags)
4231 unsigned int both_type;
4233 PERL_ARGS_ASSERT_SV_SETSV_FLAGS;
4235 if (UNLIKELY( sstr == dstr ))
4238 if (UNLIKELY( !sstr ))
4239 sstr = &PL_sv_undef;
4241 stype = SvTYPE(sstr);
4242 dtype = SvTYPE(dstr);
4243 both_type = (stype | dtype);
4245 /* with these values, we can check that both SVs are NULL/IV (and not
4246 * freed) just by testing the or'ed types */
4247 STATIC_ASSERT_STMT(SVt_NULL == 0);
4248 STATIC_ASSERT_STMT(SVt_IV == 1);
4249 if (both_type <= 1) {
4250 /* both src and dst are UNDEF/IV/RV, so we can do a lot of
4256 /* minimal subset of SV_CHECK_THINKFIRST_COW_DROP(dstr) */
4257 if (SvREADONLY(dstr))
4258 Perl_croak_no_modify();
4260 if (SvWEAKREF(dstr))
4261 sv_unref_flags(dstr, 0);
4263 old_rv = SvRV(dstr);
4266 assert(!SvGMAGICAL(sstr));
4267 assert(!SvGMAGICAL(dstr));
4269 sflags = SvFLAGS(sstr);
4270 if (sflags & (SVf_IOK|SVf_ROK)) {
4271 SET_SVANY_FOR_BODYLESS_IV(dstr);
4272 new_dflags = SVt_IV;
4274 if (sflags & SVf_ROK) {
4275 dstr->sv_u.svu_rv = SvREFCNT_inc(SvRV(sstr));
4276 new_dflags |= SVf_ROK;
4279 /* both src and dst are <= SVt_IV, so sv_any points to the
4280 * head; so access the head directly
4282 assert( &(sstr->sv_u.svu_iv)
4283 == &(((XPVIV*) SvANY(sstr))->xiv_iv));
4284 assert( &(dstr->sv_u.svu_iv)
4285 == &(((XPVIV*) SvANY(dstr))->xiv_iv));
4286 dstr->sv_u.svu_iv = sstr->sv_u.svu_iv;
4287 new_dflags |= (SVf_IOK|SVp_IOK|(sflags & SVf_IVisUV));
4291 new_dflags = dtype; /* turn off everything except the type */
4293 SvFLAGS(dstr) = new_dflags;
4294 SvREFCNT_dec(old_rv);
4299 if (UNLIKELY(both_type == SVTYPEMASK)) {
4300 if (SvIS_FREED(dstr)) {
4301 Perl_croak(aTHX_ "panic: attempt to copy value %" SVf
4302 " to a freed scalar %p", SVfARG(sstr), (void *)dstr);
4304 if (SvIS_FREED(sstr)) {
4305 Perl_croak(aTHX_ "panic: attempt to copy freed scalar %p to %p",
4306 (void*)sstr, (void*)dstr);
4312 SV_CHECK_THINKFIRST_COW_DROP(dstr);
4313 dtype = SvTYPE(dstr); /* THINKFIRST may have changed type */
4315 /* There's a lot of redundancy below but we're going for speed here */
4320 if (LIKELY( dtype != SVt_PVGV && dtype != SVt_PVLV )) {
4321 (void)SvOK_off(dstr);
4329 /* For performance, we inline promoting to type SVt_IV. */
4330 /* We're starting from SVt_NULL, so provided that define is
4331 * actual 0, we don't have to unset any SV type flags
4332 * to promote to SVt_IV. */
4333 STATIC_ASSERT_STMT(SVt_NULL == 0);
4334 SET_SVANY_FOR_BODYLESS_IV(dstr);
4335 SvFLAGS(dstr) |= SVt_IV;
4339 sv_upgrade(dstr, SVt_PVIV);
4343 goto end_of_first_switch;
4345 (void)SvIOK_only(dstr);
4346 SvIV_set(dstr, SvIVX(sstr));
4349 /* SvTAINTED can only be true if the SV has taint magic, which in
4350 turn means that the SV type is PVMG (or greater). This is the
4351 case statement for SVt_IV, so this cannot be true (whatever gcov
4353 assert(!SvTAINTED(sstr));
4358 if (dtype < SVt_PV && dtype != SVt_IV)
4359 sv_upgrade(dstr, SVt_IV);
4363 if (LIKELY( SvNOK(sstr) )) {
4367 sv_upgrade(dstr, SVt_NV);
4371 sv_upgrade(dstr, SVt_PVNV);
4375 goto end_of_first_switch;
4377 SvNV_set(dstr, SvNVX(sstr));
4378 (void)SvNOK_only(dstr);
4379 /* SvTAINTED can only be true if the SV has taint magic, which in
4380 turn means that the SV type is PVMG (or greater). This is the
4381 case statement for SVt_NV, so this cannot be true (whatever gcov
4383 assert(!SvTAINTED(sstr));
4390 sv_upgrade(dstr, SVt_PV);
4393 if (dtype < SVt_PVIV)
4394 sv_upgrade(dstr, SVt_PVIV);
4397 if (dtype < SVt_PVNV)
4398 sv_upgrade(dstr, SVt_PVNV);
4402 invlist_clone(sstr, dstr);
4406 const char * const type = sv_reftype(sstr,0);
4408 /* diag_listed_as: Bizarre copy of %s */
4409 Perl_croak(aTHX_ "Bizarre copy of %s in %s", type, OP_DESC(PL_op));
4411 Perl_croak(aTHX_ "Bizarre copy of %s", type);
4413 NOT_REACHED; /* NOTREACHED */
4417 if (dtype < SVt_REGEXP)
4418 sv_upgrade(dstr, SVt_REGEXP);
4424 if (SvGMAGICAL(sstr) && (flags & SV_GMAGIC)) {
4426 if (SvTYPE(sstr) != stype)
4427 stype = SvTYPE(sstr);
4429 if (isGV_with_GP(sstr) && dtype <= SVt_PVLV) {
4430 glob_assign_glob(dstr, sstr, dtype);
4433 if (stype == SVt_PVLV)
4435 if (isREGEXP(sstr)) goto upgregexp;
4436 SvUPGRADE(dstr, SVt_PVNV);
4439 SvUPGRADE(dstr, (svtype)stype);
4441 end_of_first_switch:
4443 /* dstr may have been upgraded. */
4444 dtype = SvTYPE(dstr);
4445 sflags = SvFLAGS(sstr);
4447 if (UNLIKELY( dtype == SVt_PVCV )) {
4448 /* Assigning to a subroutine sets the prototype. */
4451 const char *const ptr = SvPV_const(sstr, len);
4453 SvGROW(dstr, len + 1);
4454 Copy(ptr, SvPVX(dstr), len + 1, char);
4455 SvCUR_set(dstr, len);
4457 SvFLAGS(dstr) |= sflags & SVf_UTF8;
4458 CvAUTOLOAD_off(dstr);
4463 else if (UNLIKELY(dtype == SVt_PVAV || dtype == SVt_PVHV
4464 || dtype == SVt_PVFM))
4466 const char * const type = sv_reftype(dstr,0);
4468 /* diag_listed_as: Cannot copy to %s */
4469 Perl_croak(aTHX_ "Cannot copy to %s in %s", type, OP_DESC(PL_op));
4471 Perl_croak(aTHX_ "Cannot copy to %s", type);
4472 } else if (sflags & SVf_ROK) {
4473 if (isGV_with_GP(dstr)
4474 && SvTYPE(SvRV(sstr)) == SVt_PVGV && isGV_with_GP(SvRV(sstr))) {
4477 if (GvIMPORTED(dstr) != GVf_IMPORTED
4478 && CopSTASH_ne(PL_curcop, GvSTASH(dstr)))
4480 GvIMPORTED_on(dstr);
4485 glob_assign_glob(dstr, sstr, dtype);
4489 if (dtype >= SVt_PV) {
4490 if (isGV_with_GP(dstr)) {
4491 gv_setref(dstr, sstr);
4494 if (SvPVX_const(dstr)) {
4500 (void)SvOK_off(dstr);
4501 SvRV_set(dstr, SvREFCNT_inc(SvRV(sstr)));
4502 SvFLAGS(dstr) |= sflags & SVf_ROK;
4503 assert(!(sflags & SVp_NOK));
4504 assert(!(sflags & SVp_IOK));
4505 assert(!(sflags & SVf_NOK));
4506 assert(!(sflags & SVf_IOK));
4508 else if (isGV_with_GP(dstr)) {
4509 if (!(sflags & SVf_OK)) {
4510 Perl_ck_warner(aTHX_ packWARN(WARN_MISC),
4511 "Undefined value assigned to typeglob");
4514 GV *gv = gv_fetchsv_nomg(sstr, GV_ADD, SVt_PVGV);
4515 if (dstr != (const SV *)gv) {
4516 const char * const name = GvNAME((const GV *)dstr);
4517 const STRLEN len = GvNAMELEN(dstr);
4518 HV *old_stash = NULL;
4519 bool reset_isa = FALSE;
4520 if ((len > 1 && name[len-2] == ':' && name[len-1] == ':')
4521 || (len == 1 && name[0] == ':')) {
4522 /* Set aside the old stash, so we can reset isa caches
4523 on its subclasses. */
4524 if((old_stash = GvHV(dstr))) {
4525 /* Make sure we do not lose it early. */
4526 SvREFCNT_inc_simple_void_NN(
4527 sv_2mortal((SV *)old_stash)
4534 SvREFCNT_inc_simple_void_NN(sv_2mortal(dstr));
4535 gp_free(MUTABLE_GV(dstr));
4537 GvGP_set(dstr, gp_ref(GvGP(gv)));
4540 HV * const stash = GvHV(dstr);
4542 old_stash ? (HV *)HvENAME_get(old_stash) : stash
4552 else if ((dtype == SVt_REGEXP || dtype == SVt_PVLV)
4553 && (stype == SVt_REGEXP || isREGEXP(sstr))) {
4554 reg_temp_copy((REGEXP*)dstr, (REGEXP*)sstr);
4556 else if (sflags & SVp_POK) {
4557 const STRLEN cur = SvCUR(sstr);
4558 const STRLEN len = SvLEN(sstr);
4561 * We have three basic ways to copy the string:
4567 * Which we choose is based on various factors. The following
4568 * things are listed in order of speed, fastest to slowest:
4570 * - Copying a short string
4571 * - Copy-on-write bookkeeping
4573 * - Copying a long string
4575 * We swipe the string (steal the string buffer) if the SV on the
4576 * rhs is about to be freed anyway (TEMP and refcnt==1). This is a
4577 * big win on long strings. It should be a win on short strings if
4578 * SvPVX_const(dstr) has to be allocated. If not, it should not
4579 * slow things down, as SvPVX_const(sstr) would have been freed
4582 * We also steal the buffer from a PADTMP (operator target) if it
4583 * is ‘long enough’. For short strings, a swipe does not help
4584 * here, as it causes more malloc calls the next time the target
4585 * is used. Benchmarks show that even if SvPVX_const(dstr) has to
4586 * be allocated it is still not worth swiping PADTMPs for short
4587 * strings, as the savings here are small.
4589 * If swiping is not an option, then we see whether it is
4590 * worth using copy-on-write. If the lhs already has a buf-
4591 * fer big enough and the string is short, we skip it and fall back
4592 * to method 3, since memcpy is faster for short strings than the
4593 * later bookkeeping overhead that copy-on-write entails.
4595 * If the rhs is not a copy-on-write string yet, then we also
4596 * consider whether the buffer is too large relative to the string
4597 * it holds. Some operations such as readline allocate a large
4598 * buffer in the expectation of reusing it. But turning such into
4599 * a COW buffer is counter-productive because it increases memory
4600 * usage by making readline allocate a new large buffer the sec-
4601 * ond time round. So, if the buffer is too large, again, we use
4604 * Finally, if there is no buffer on the left, or the buffer is too
4605 * small, then we use copy-on-write and make both SVs share the
4610 /* Whichever path we take through the next code, we want this true,
4611 and doing it now facilitates the COW check. */
4612 (void)SvPOK_only(dstr);
4616 /* slated for free anyway (and not COW)? */
4617 (sflags & (SVs_TEMP|SVf_IsCOW)) == SVs_TEMP
4618 /* or a swipable TARG */
4620 (SVs_PADTMP|SVf_READONLY|SVf_PROTECT|SVf_IsCOW))
4622 /* whose buffer is worth stealing */
4623 && CHECK_COWBUF_THRESHOLD(cur,len)
4626 !(sflags & SVf_OOK) && /* and not involved in OOK hack? */
4627 (!(flags & SV_NOSTEAL)) &&
4628 /* and we're allowed to steal temps */
4629 SvREFCNT(sstr) == 1 && /* and no other references to it? */
4630 len) /* and really is a string */
4631 { /* Passes the swipe test. */
4632 if (SvPVX_const(dstr)) /* we know that dtype >= SVt_PV */
4634 SvPV_set(dstr, SvPVX_mutable(sstr));
4635 SvLEN_set(dstr, SvLEN(sstr));
4636 SvCUR_set(dstr, SvCUR(sstr));
4639 (void)SvOK_off(sstr); /* NOTE: nukes most SvFLAGS on sstr */
4640 SvPV_set(sstr, NULL);