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 */
886 #define ALIGNED_TYPE_NAME(name) name##_aligned
887 #define ALIGNED_TYPE(name) \
892 } ALIGNED_TYPE_NAME(name);
894 ALIGNED_TYPE(regexp);
908 /* With -DPURFIY we allocate everything directly, and don't use arenas.
909 This seems a rather elegant way to simplify some of the code below. */
910 #define HASARENA FALSE
912 #define HASARENA TRUE
914 #define NOARENA FALSE
916 /* Size the arenas to exactly fit a given number of bodies. A count
917 of 0 fits the max number bodies into a PERL_ARENA_SIZE.block,
918 simplifying the default. If count > 0, the arena is sized to fit
919 only that many bodies, allowing arenas to be used for large, rare
920 bodies (XPVFM, XPVIO) without undue waste. The arena size is
921 limited by PERL_ARENA_SIZE, so we can safely oversize the
924 #define FIT_ARENA0(body_size) \
925 ((size_t)(PERL_ARENA_SIZE / body_size) * body_size)
926 #define FIT_ARENAn(count,body_size) \
927 ( count * body_size <= PERL_ARENA_SIZE) \
928 ? count * body_size \
929 : FIT_ARENA0 (body_size)
930 #define FIT_ARENA(count,body_size) \
932 ? FIT_ARENAn (count, body_size) \
933 : FIT_ARENA0 (body_size))
935 /* Calculate the length to copy. Specifically work out the length less any
936 final padding the compiler needed to add. See the comment in sv_upgrade
937 for why copying the padding proved to be a bug. */
939 #define copy_length(type, last_member) \
940 STRUCT_OFFSET(type, last_member) \
941 + sizeof (((type*)SvANY((const SV *)0))->last_member)
943 static const struct body_details bodies_by_type[] = {
944 /* HEs use this offset for their arena. */
945 { 0, 0, 0, SVt_NULL, FALSE, NONV, NOARENA, 0 },
947 /* IVs are in the head, so the allocation size is 0. */
949 sizeof(IV), /* This is used to copy out the IV body. */
950 STRUCT_OFFSET(XPVIV, xiv_iv), SVt_IV, FALSE, NONV,
951 NOARENA /* IVS don't need an arena */, 0
956 STRUCT_OFFSET(XPVNV, xnv_u),
957 SVt_NV, FALSE, HADNV, NOARENA, 0 },
959 { sizeof(NV), sizeof(NV),
960 STRUCT_OFFSET(XPVNV, xnv_u),
961 SVt_NV, FALSE, HADNV, HASARENA, FIT_ARENA(0, sizeof(NV)) },
964 { sizeof(XPV) - STRUCT_OFFSET(XPV, xpv_cur),
965 copy_length(XPV, xpv_len) - STRUCT_OFFSET(XPV, xpv_cur),
966 + STRUCT_OFFSET(XPV, xpv_cur),
967 SVt_PV, FALSE, NONV, HASARENA,
968 FIT_ARENA(0, sizeof(XPV) - STRUCT_OFFSET(XPV, xpv_cur)) },
970 { sizeof(XINVLIST) - STRUCT_OFFSET(XPV, xpv_cur),
971 copy_length(XINVLIST, is_offset) - STRUCT_OFFSET(XPV, xpv_cur),
972 + STRUCT_OFFSET(XPV, xpv_cur),
973 SVt_INVLIST, TRUE, NONV, HASARENA,
974 FIT_ARENA(0, sizeof(XINVLIST) - STRUCT_OFFSET(XPV, xpv_cur)) },
976 { sizeof(XPVIV) - STRUCT_OFFSET(XPV, xpv_cur),
977 copy_length(XPVIV, xiv_u) - STRUCT_OFFSET(XPV, xpv_cur),
978 + STRUCT_OFFSET(XPV, xpv_cur),
979 SVt_PVIV, FALSE, NONV, HASARENA,
980 FIT_ARENA(0, sizeof(XPVIV) - STRUCT_OFFSET(XPV, xpv_cur)) },
982 { sizeof(XPVNV) - STRUCT_OFFSET(XPV, xpv_cur),
983 copy_length(XPVNV, xnv_u) - STRUCT_OFFSET(XPV, xpv_cur),
984 + STRUCT_OFFSET(XPV, xpv_cur),
985 SVt_PVNV, FALSE, HADNV, HASARENA,
986 FIT_ARENA(0, sizeof(XPVNV) - STRUCT_OFFSET(XPV, xpv_cur)) },
988 { sizeof(XPVMG), copy_length(XPVMG, xnv_u), 0, SVt_PVMG, FALSE, HADNV,
989 HASARENA, FIT_ARENA(0, sizeof(XPVMG)) },
991 { sizeof(ALIGNED_TYPE_NAME(regexp)),
994 SVt_REGEXP, TRUE, NONV, HASARENA,
995 FIT_ARENA(0, sizeof(ALIGNED_TYPE_NAME(regexp)))
998 { sizeof(ALIGNED_TYPE_NAME(XPVGV)), sizeof(XPVGV), 0, SVt_PVGV, TRUE, HADNV,
999 HASARENA, FIT_ARENA(0, sizeof(ALIGNED_TYPE_NAME(XPVGV))) },
1001 { sizeof(ALIGNED_TYPE_NAME(XPVLV)), sizeof(XPVLV), 0, SVt_PVLV, TRUE, HADNV,
1002 HASARENA, FIT_ARENA(0, sizeof(ALIGNED_TYPE_NAME(XPVLV))) },
1004 { sizeof(ALIGNED_TYPE_NAME(XPVAV)),
1005 copy_length(XPVAV, xav_alloc),
1007 SVt_PVAV, TRUE, NONV, HASARENA,
1008 FIT_ARENA(0, sizeof(ALIGNED_TYPE_NAME(XPVAV))) },
1010 { sizeof(ALIGNED_TYPE_NAME(XPVHV)),
1011 copy_length(XPVHV, xhv_max),
1013 SVt_PVHV, TRUE, NONV, HASARENA,
1014 FIT_ARENA(0, sizeof(ALIGNED_TYPE_NAME(XPVHV))) },
1016 { sizeof(ALIGNED_TYPE_NAME(XPVCV)),
1019 SVt_PVCV, TRUE, NONV, HASARENA,
1020 FIT_ARENA(0, sizeof(ALIGNED_TYPE_NAME(XPVCV))) },
1022 { sizeof(ALIGNED_TYPE_NAME(XPVFM)),
1025 SVt_PVFM, TRUE, NONV, NOARENA,
1026 FIT_ARENA(20, sizeof(ALIGNED_TYPE_NAME(XPVFM))) },
1028 { sizeof(ALIGNED_TYPE_NAME(XPVIO)),
1031 SVt_PVIO, TRUE, NONV, HASARENA,
1032 FIT_ARENA(24, sizeof(ALIGNED_TYPE_NAME(XPVIO))) },
1035 #define new_body_allocated(sv_type) \
1036 (void *)((char *)S_new_body(aTHX_ sv_type) \
1037 - bodies_by_type[sv_type].offset)
1039 /* return a thing to the free list */
1041 #define del_body(thing, root) \
1043 void ** const thing_copy = (void **)thing; \
1044 *thing_copy = *root; \
1045 *root = (void*)thing_copy; \
1049 #if !(NVSIZE <= IVSIZE)
1050 # define new_XNV() safemalloc(sizeof(XPVNV))
1052 #define new_XPVNV() safemalloc(sizeof(XPVNV))
1053 #define new_XPVMG() safemalloc(sizeof(XPVMG))
1055 #define del_XPVGV(p) safefree(p)
1059 #if !(NVSIZE <= IVSIZE)
1060 # define new_XNV() new_body_allocated(SVt_NV)
1062 #define new_XPVNV() new_body_allocated(SVt_PVNV)
1063 #define new_XPVMG() new_body_allocated(SVt_PVMG)
1065 #define del_XPVGV(p) del_body(p + bodies_by_type[SVt_PVGV].offset, \
1066 &PL_body_roots[SVt_PVGV])
1070 /* no arena for you! */
1072 #define new_NOARENA(details) \
1073 safemalloc((details)->body_size + (details)->offset)
1074 #define new_NOARENAZ(details) \
1075 safecalloc((details)->body_size + (details)->offset, 1)
1078 Perl_more_bodies (pTHX_ const svtype sv_type, const size_t body_size,
1079 const size_t arena_size)
1081 void ** const root = &PL_body_roots[sv_type];
1082 struct arena_desc *adesc;
1083 struct arena_set *aroot = (struct arena_set *) PL_body_arenas;
1087 const size_t good_arena_size = Perl_malloc_good_size(arena_size);
1088 #if defined(DEBUGGING) && defined(PERL_GLOBAL_STRUCT)
1091 #if defined(DEBUGGING) && !defined(PERL_GLOBAL_STRUCT)
1092 static bool done_sanity_check;
1094 /* PERL_GLOBAL_STRUCT cannot coexist with global
1095 * variables like done_sanity_check. */
1096 if (!done_sanity_check) {
1097 unsigned int i = SVt_LAST;
1099 done_sanity_check = TRUE;
1102 assert (bodies_by_type[i].type == i);
1108 /* may need new arena-set to hold new arena */
1109 if (!aroot || aroot->curr >= aroot->set_size) {
1110 struct arena_set *newroot;
1111 Newxz(newroot, 1, struct arena_set);
1112 newroot->set_size = ARENAS_PER_SET;
1113 newroot->next = aroot;
1115 PL_body_arenas = (void *) newroot;
1116 DEBUG_m(PerlIO_printf(Perl_debug_log, "new arenaset %p\n", (void*)aroot));
1119 /* ok, now have arena-set with at least 1 empty/available arena-desc */
1120 curr = aroot->curr++;
1121 adesc = &(aroot->set[curr]);
1122 assert(!adesc->arena);
1124 Newx(adesc->arena, good_arena_size, char);
1125 adesc->size = good_arena_size;
1126 adesc->utype = sv_type;
1127 DEBUG_m(PerlIO_printf(Perl_debug_log, "arena %d added: %p size %" UVuf "\n",
1128 curr, (void*)adesc->arena, (UV)good_arena_size));
1130 start = (char *) adesc->arena;
1132 /* Get the address of the byte after the end of the last body we can fit.
1133 Remember, this is integer division: */
1134 end = start + good_arena_size / body_size * body_size;
1136 /* computed count doesn't reflect the 1st slot reservation */
1137 #if defined(MYMALLOC) || defined(HAS_MALLOC_GOOD_SIZE)
1138 DEBUG_m(PerlIO_printf(Perl_debug_log,
1139 "arena %p end %p arena-size %d (from %d) type %d "
1141 (void*)start, (void*)end, (int)good_arena_size,
1142 (int)arena_size, sv_type, (int)body_size,
1143 (int)good_arena_size / (int)body_size));
1145 DEBUG_m(PerlIO_printf(Perl_debug_log,
1146 "arena %p end %p arena-size %d type %d size %d ct %d\n",
1147 (void*)start, (void*)end,
1148 (int)arena_size, sv_type, (int)body_size,
1149 (int)good_arena_size / (int)body_size));
1151 *root = (void *)start;
1154 /* Where the next body would start: */
1155 char * const next = start + body_size;
1158 /* This is the last body: */
1159 assert(next == end);
1161 *(void **)start = 0;
1165 *(void**) start = (void *)next;
1170 /* grab a new thing from the free list, allocating more if necessary.
1171 The inline version is used for speed in hot routines, and the
1172 function using it serves the rest (unless PURIFY).
1174 #define new_body_inline(xpv, sv_type) \
1176 void ** const r3wt = &PL_body_roots[sv_type]; \
1177 xpv = (PTR_TBL_ENT_t*) (*((void **)(r3wt)) \
1178 ? *((void **)(r3wt)) : Perl_more_bodies(aTHX_ sv_type, \
1179 bodies_by_type[sv_type].body_size,\
1180 bodies_by_type[sv_type].arena_size)); \
1181 *(r3wt) = *(void**)(xpv); \
1187 S_new_body(pTHX_ const svtype sv_type)
1190 new_body_inline(xpv, sv_type);
1196 static const struct body_details fake_rv =
1197 { 0, 0, 0, SVt_IV, FALSE, NONV, NOARENA, 0 };
1200 =for apidoc sv_upgrade
1202 Upgrade an SV to a more complex form. Generally adds a new body type to the
1203 SV, then copies across as much information as possible from the old body.
1204 It croaks if the SV is already in a more complex form than requested. You
1205 generally want to use the C<SvUPGRADE> macro wrapper, which checks the type
1206 before calling C<sv_upgrade>, and hence does not croak. See also
1213 Perl_sv_upgrade(pTHX_ SV *const sv, svtype new_type)
1217 const svtype old_type = SvTYPE(sv);
1218 const struct body_details *new_type_details;
1219 const struct body_details *old_type_details
1220 = bodies_by_type + old_type;
1221 SV *referent = NULL;
1223 PERL_ARGS_ASSERT_SV_UPGRADE;
1225 if (old_type == new_type)
1228 /* This clause was purposefully added ahead of the early return above to
1229 the shared string hackery for (sort {$a <=> $b} keys %hash), with the
1230 inference by Nick I-S that it would fix other troublesome cases. See
1231 changes 7162, 7163 (f130fd4589cf5fbb24149cd4db4137c8326f49c1 and parent)
1233 Given that shared hash key scalars are no longer PVIV, but PV, there is
1234 no longer need to unshare so as to free up the IVX slot for its proper
1235 purpose. So it's safe to move the early return earlier. */
1237 if (new_type > SVt_PVMG && SvIsCOW(sv)) {
1238 sv_force_normal_flags(sv, 0);
1241 old_body = SvANY(sv);
1243 /* Copying structures onto other structures that have been neatly zeroed
1244 has a subtle gotcha. Consider XPVMG
1246 +------+------+------+------+------+-------+-------+
1247 | NV | CUR | LEN | IV | MAGIC | STASH |
1248 +------+------+------+------+------+-------+-------+
1249 0 4 8 12 16 20 24 28
1251 where NVs are aligned to 8 bytes, so that sizeof that structure is
1252 actually 32 bytes long, with 4 bytes of padding at the end:
1254 +------+------+------+------+------+-------+-------+------+
1255 | NV | CUR | LEN | IV | MAGIC | STASH | ??? |
1256 +------+------+------+------+------+-------+-------+------+
1257 0 4 8 12 16 20 24 28 32
1259 so what happens if you allocate memory for this structure:
1261 +------+------+------+------+------+-------+-------+------+------+...
1262 | NV | CUR | LEN | IV | MAGIC | STASH | GP | NAME |
1263 +------+------+------+------+------+-------+-------+------+------+...
1264 0 4 8 12 16 20 24 28 32 36
1266 zero it, then copy sizeof(XPVMG) bytes on top of it? Not quite what you
1267 expect, because you copy the area marked ??? onto GP. Now, ??? may have
1268 started out as zero once, but it's quite possible that it isn't. So now,
1269 rather than a nicely zeroed GP, you have it pointing somewhere random.
1272 (In fact, GP ends up pointing at a previous GP structure, because the
1273 principle cause of the padding in XPVMG getting garbage is a copy of
1274 sizeof(XPVMG) bytes from a XPVGV structure in sv_unglob. Right now
1275 this happens to be moot because XPVGV has been re-ordered, with GP
1276 no longer after STASH)
1278 So we are careful and work out the size of used parts of all the
1286 referent = SvRV(sv);
1287 old_type_details = &fake_rv;
1288 if (new_type == SVt_NV)
1289 new_type = SVt_PVNV;
1291 if (new_type < SVt_PVIV) {
1292 new_type = (new_type == SVt_NV)
1293 ? SVt_PVNV : SVt_PVIV;
1298 if (new_type < SVt_PVNV) {
1299 new_type = SVt_PVNV;
1303 assert(new_type > SVt_PV);
1304 STATIC_ASSERT_STMT(SVt_IV < SVt_PV);
1305 STATIC_ASSERT_STMT(SVt_NV < SVt_PV);
1312 /* Because the XPVMG of PL_mess_sv isn't allocated from the arena,
1313 there's no way that it can be safely upgraded, because perl.c
1314 expects to Safefree(SvANY(PL_mess_sv)) */
1315 assert(sv != PL_mess_sv);
1318 if (UNLIKELY(old_type_details->cant_upgrade))
1319 Perl_croak(aTHX_ "Can't upgrade %s (%" UVuf ") to %" UVuf,
1320 sv_reftype(sv, 0), (UV) old_type, (UV) new_type);
1323 if (UNLIKELY(old_type > new_type))
1324 Perl_croak(aTHX_ "sv_upgrade from type %d down to type %d",
1325 (int)old_type, (int)new_type);
1327 new_type_details = bodies_by_type + new_type;
1329 SvFLAGS(sv) &= ~SVTYPEMASK;
1330 SvFLAGS(sv) |= new_type;
1332 /* This can't happen, as SVt_NULL is <= all values of new_type, so one of
1333 the return statements above will have triggered. */
1334 assert (new_type != SVt_NULL);
1337 assert(old_type == SVt_NULL);
1338 SET_SVANY_FOR_BODYLESS_IV(sv);
1342 assert(old_type == SVt_NULL);
1343 #if NVSIZE <= IVSIZE
1344 SET_SVANY_FOR_BODYLESS_NV(sv);
1346 SvANY(sv) = new_XNV();
1352 assert(new_type_details->body_size);
1355 assert(new_type_details->arena);
1356 assert(new_type_details->arena_size);
1357 /* This points to the start of the allocated area. */
1358 new_body_inline(new_body, new_type);
1359 Zero(new_body, new_type_details->body_size, char);
1360 new_body = ((char *)new_body) - new_type_details->offset;
1362 /* We always allocated the full length item with PURIFY. To do this
1363 we fake things so that arena is false for all 16 types.. */
1364 new_body = new_NOARENAZ(new_type_details);
1366 SvANY(sv) = new_body;
1367 if (new_type == SVt_PVAV) {
1371 if (old_type_details->body_size) {
1374 /* It will have been zeroed when the new body was allocated.
1375 Lets not write to it, in case it confuses a write-back
1381 #ifndef NODEFAULT_SHAREKEYS
1382 HvSHAREKEYS_on(sv); /* key-sharing on by default */
1384 /* start with PERL_HASH_DEFAULT_HvMAX+1 buckets: */
1385 HvMAX(sv) = PERL_HASH_DEFAULT_HvMAX;
1388 /* SVt_NULL isn't the only thing upgraded to AV or HV.
1389 The target created by newSVrv also is, and it can have magic.
1390 However, it never has SvPVX set.
1392 if (old_type == SVt_IV) {
1394 } else if (old_type >= SVt_PV) {
1395 assert(SvPVX_const(sv) == 0);
1398 if (old_type >= SVt_PVMG) {
1399 SvMAGIC_set(sv, ((XPVMG*)old_body)->xmg_u.xmg_magic);
1400 SvSTASH_set(sv, ((XPVMG*)old_body)->xmg_stash);
1402 sv->sv_u.svu_array = NULL; /* or svu_hash */
1407 /* XXX Is this still needed? Was it ever needed? Surely as there is
1408 no route from NV to PVIV, NOK can never be true */
1409 assert(!SvNOKp(sv));
1423 assert(new_type_details->body_size);
1424 /* We always allocated the full length item with PURIFY. To do this
1425 we fake things so that arena is false for all 16 types.. */
1426 if(new_type_details->arena) {
1427 /* This points to the start of the allocated area. */
1428 new_body_inline(new_body, new_type);
1429 Zero(new_body, new_type_details->body_size, char);
1430 new_body = ((char *)new_body) - new_type_details->offset;
1432 new_body = new_NOARENAZ(new_type_details);
1434 SvANY(sv) = new_body;
1436 if (old_type_details->copy) {
1437 /* There is now the potential for an upgrade from something without
1438 an offset (PVNV or PVMG) to something with one (PVCV, PVFM) */
1439 int offset = old_type_details->offset;
1440 int length = old_type_details->copy;
1442 if (new_type_details->offset > old_type_details->offset) {
1443 const int difference
1444 = new_type_details->offset - old_type_details->offset;
1445 offset += difference;
1446 length -= difference;
1448 assert (length >= 0);
1450 Copy((char *)old_body + offset, (char *)new_body + offset, length,
1454 #ifndef NV_ZERO_IS_ALLBITS_ZERO
1455 /* If NV 0.0 is stores as all bits 0 then Zero() already creates a
1456 * correct 0.0 for us. Otherwise, if the old body didn't have an
1457 * NV slot, but the new one does, then we need to initialise the
1458 * freshly created NV slot with whatever the correct bit pattern is
1460 if (old_type_details->zero_nv && !new_type_details->zero_nv
1461 && !isGV_with_GP(sv))
1465 if (UNLIKELY(new_type == SVt_PVIO)) {
1466 IO * const io = MUTABLE_IO(sv);
1467 GV *iogv = gv_fetchpvs("IO::File::", GV_ADD, SVt_PVHV);
1470 /* Clear the stashcache because a new IO could overrule a package
1472 DEBUG_o(Perl_deb(aTHX_ "sv_upgrade clearing PL_stashcache\n"));
1473 hv_clear(PL_stashcache);
1475 SvSTASH_set(io, MUTABLE_HV(SvREFCNT_inc(GvHV(iogv))));
1476 IoPAGE_LEN(sv) = 60;
1478 if (old_type < SVt_PV) {
1479 /* referent will be NULL unless the old type was SVt_IV emulating
1481 sv->sv_u.svu_rv = referent;
1485 Perl_croak(aTHX_ "panic: sv_upgrade to unknown type %lu",
1486 (unsigned long)new_type);
1489 /* if this is zero, this is a body-less SVt_NULL, SVt_IV/SVt_RV,
1490 and sometimes SVt_NV */
1491 if (old_type_details->body_size) {
1495 /* Note that there is an assumption that all bodies of types that
1496 can be upgraded came from arenas. Only the more complex non-
1497 upgradable types are allowed to be directly malloc()ed. */
1498 assert(old_type_details->arena);
1499 del_body((void*)((char*)old_body + old_type_details->offset),
1500 &PL_body_roots[old_type]);
1506 =for apidoc sv_backoff
1508 Remove any string offset. You should normally use the C<SvOOK_off> macro
1514 /* prior to 5.000 stable, this function returned the new OOK-less SvFLAGS
1515 prior to 5.23.4 this function always returned 0
1519 Perl_sv_backoff(SV *const sv)
1522 const char * const s = SvPVX_const(sv);
1524 PERL_ARGS_ASSERT_SV_BACKOFF;
1527 assert(SvTYPE(sv) != SVt_PVHV);
1528 assert(SvTYPE(sv) != SVt_PVAV);
1530 SvOOK_offset(sv, delta);
1532 SvLEN_set(sv, SvLEN(sv) + delta);
1533 SvPV_set(sv, SvPVX(sv) - delta);
1534 SvFLAGS(sv) &= ~SVf_OOK;
1535 Move(s, SvPVX(sv), SvCUR(sv)+1, char);
1540 /* forward declaration */
1541 static void S_sv_uncow(pTHX_ SV * const sv, const U32 flags);
1547 Expands the character buffer in the SV. If necessary, uses C<sv_unref> and
1548 upgrades the SV to C<SVt_PV>. Returns a pointer to the character buffer.
1549 Use the C<SvGROW> wrapper instead.
1556 Perl_sv_grow(pTHX_ SV *const sv, STRLEN newlen)
1560 PERL_ARGS_ASSERT_SV_GROW;
1564 if (SvTYPE(sv) < SVt_PV) {
1565 sv_upgrade(sv, SVt_PV);
1566 s = SvPVX_mutable(sv);
1568 else if (SvOOK(sv)) { /* pv is offset? */
1570 s = SvPVX_mutable(sv);
1571 if (newlen > SvLEN(sv))
1572 newlen += 10 * (newlen - SvCUR(sv)); /* avoid copy each time */
1576 if (SvIsCOW(sv)) S_sv_uncow(aTHX_ sv, 0);
1577 s = SvPVX_mutable(sv);
1580 #ifdef PERL_COPY_ON_WRITE
1581 /* the new COW scheme uses SvPVX(sv)[SvLEN(sv)-1] (if spare)
1582 * to store the COW count. So in general, allocate one more byte than
1583 * asked for, to make it likely this byte is always spare: and thus
1584 * make more strings COW-able.
1586 * Only increment if the allocation isn't MEM_SIZE_MAX,
1587 * otherwise it will wrap to 0.
1589 if ( newlen != MEM_SIZE_MAX )
1593 #if defined(PERL_USE_MALLOC_SIZE) && defined(Perl_safesysmalloc_size)
1594 #define PERL_UNWARANTED_CHUMMINESS_WITH_MALLOC
1597 if (newlen > SvLEN(sv)) { /* need more room? */
1598 STRLEN minlen = SvCUR(sv);
1599 minlen += (minlen >> PERL_STRLEN_EXPAND_SHIFT) + 10;
1600 if (newlen < minlen)
1602 #ifndef PERL_UNWARANTED_CHUMMINESS_WITH_MALLOC
1604 /* Don't round up on the first allocation, as odds are pretty good that
1605 * the initial request is accurate as to what is really needed */
1607 STRLEN rounded = PERL_STRLEN_ROUNDUP(newlen);
1608 if (rounded > newlen)
1612 if (SvLEN(sv) && s) {
1613 s = (char*)saferealloc(s, newlen);
1616 s = (char*)safemalloc(newlen);
1617 if (SvPVX_const(sv) && SvCUR(sv)) {
1618 Move(SvPVX_const(sv), s, SvCUR(sv), char);
1622 #ifdef PERL_UNWARANTED_CHUMMINESS_WITH_MALLOC
1623 /* Do this here, do it once, do it right, and then we will never get
1624 called back into sv_grow() unless there really is some growing
1626 SvLEN_set(sv, Perl_safesysmalloc_size(s));
1628 SvLEN_set(sv, newlen);
1635 =for apidoc sv_setiv
1637 Copies an integer into the given SV, upgrading first if necessary.
1638 Does not handle 'set' magic. See also C<L</sv_setiv_mg>>.
1644 Perl_sv_setiv(pTHX_ SV *const sv, const IV i)
1646 PERL_ARGS_ASSERT_SV_SETIV;
1648 SV_CHECK_THINKFIRST_COW_DROP(sv);
1649 switch (SvTYPE(sv)) {
1652 sv_upgrade(sv, SVt_IV);
1655 sv_upgrade(sv, SVt_PVIV);
1659 if (!isGV_with_GP(sv))
1667 /* diag_listed_as: Can't coerce %s to %s in %s */
1668 Perl_croak(aTHX_ "Can't coerce %s to integer in %s", sv_reftype(sv,0),
1670 NOT_REACHED; /* NOTREACHED */
1674 (void)SvIOK_only(sv); /* validate number */
1680 =for apidoc sv_setiv_mg
1682 Like C<sv_setiv>, but also handles 'set' magic.
1688 Perl_sv_setiv_mg(pTHX_ SV *const sv, const IV i)
1690 PERL_ARGS_ASSERT_SV_SETIV_MG;
1697 =for apidoc sv_setuv
1699 Copies an unsigned integer into the given SV, upgrading first if necessary.
1700 Does not handle 'set' magic. See also C<L</sv_setuv_mg>>.
1706 Perl_sv_setuv(pTHX_ SV *const sv, const UV u)
1708 PERL_ARGS_ASSERT_SV_SETUV;
1710 /* With the if statement to ensure that integers are stored as IVs whenever
1712 u=1.49 s=0.52 cu=72.49 cs=10.64 scripts=270 tests=20865
1715 u=1.35 s=0.47 cu=73.45 cs=11.43 scripts=270 tests=20865
1717 If you wish to remove the following if statement, so that this routine
1718 (and its callers) always return UVs, please benchmark to see what the
1719 effect is. Modern CPUs may be different. Or may not :-)
1721 if (u <= (UV)IV_MAX) {
1722 sv_setiv(sv, (IV)u);
1731 =for apidoc sv_setuv_mg
1733 Like C<sv_setuv>, but also handles 'set' magic.
1739 Perl_sv_setuv_mg(pTHX_ SV *const sv, const UV u)
1741 PERL_ARGS_ASSERT_SV_SETUV_MG;
1748 =for apidoc sv_setnv
1750 Copies a double into the given SV, upgrading first if necessary.
1751 Does not handle 'set' magic. See also C<L</sv_setnv_mg>>.
1757 Perl_sv_setnv(pTHX_ SV *const sv, const NV num)
1759 PERL_ARGS_ASSERT_SV_SETNV;
1761 SV_CHECK_THINKFIRST_COW_DROP(sv);
1762 switch (SvTYPE(sv)) {
1765 sv_upgrade(sv, SVt_NV);
1769 sv_upgrade(sv, SVt_PVNV);
1773 if (!isGV_with_GP(sv))
1781 /* diag_listed_as: Can't coerce %s to %s in %s */
1782 Perl_croak(aTHX_ "Can't coerce %s to number in %s", sv_reftype(sv,0),
1784 NOT_REACHED; /* NOTREACHED */
1789 (void)SvNOK_only(sv); /* validate number */
1794 =for apidoc sv_setnv_mg
1796 Like C<sv_setnv>, but also handles 'set' magic.
1802 Perl_sv_setnv_mg(pTHX_ SV *const sv, const NV num)
1804 PERL_ARGS_ASSERT_SV_SETNV_MG;
1810 /* Return a cleaned-up, printable version of sv, for non-numeric, or
1811 * not incrementable warning display.
1812 * Originally part of S_not_a_number().
1813 * The return value may be != tmpbuf.
1817 S_sv_display(pTHX_ SV *const sv, char *tmpbuf, STRLEN tmpbuf_size) {
1820 PERL_ARGS_ASSERT_SV_DISPLAY;
1823 SV *dsv = newSVpvs_flags("", SVs_TEMP);
1824 pv = sv_uni_display(dsv, sv, 32, UNI_DISPLAY_ISPRINT);
1827 const char * const limit = tmpbuf + tmpbuf_size - 8;
1828 /* each *s can expand to 4 chars + "...\0",
1829 i.e. need room for 8 chars */
1831 const char *s = SvPVX_const(sv);
1832 const char * const end = s + SvCUR(sv);
1833 for ( ; s < end && d < limit; s++ ) {
1835 if (! isASCII(ch) && !isPRINT_LC(ch)) {
1839 /* Map to ASCII "equivalent" of Latin1 */
1840 ch = LATIN1_TO_NATIVE(NATIVE_TO_LATIN1(ch) & 127);
1846 else if (ch == '\r') {
1850 else if (ch == '\f') {
1854 else if (ch == '\\') {
1858 else if (ch == '\0') {
1862 else if (isPRINT_LC(ch))
1881 /* Print an "isn't numeric" warning, using a cleaned-up,
1882 * printable version of the offending string
1886 S_not_a_number(pTHX_ SV *const sv)
1891 PERL_ARGS_ASSERT_NOT_A_NUMBER;
1893 pv = sv_display(sv, tmpbuf, sizeof(tmpbuf));
1896 Perl_warner(aTHX_ packWARN(WARN_NUMERIC),
1897 /* diag_listed_as: Argument "%s" isn't numeric%s */
1898 "Argument \"%s\" isn't numeric in %s", pv,
1901 Perl_warner(aTHX_ packWARN(WARN_NUMERIC),
1902 /* diag_listed_as: Argument "%s" isn't numeric%s */
1903 "Argument \"%s\" isn't numeric", pv);
1907 S_not_incrementable(pTHX_ SV *const sv) {
1911 PERL_ARGS_ASSERT_NOT_INCREMENTABLE;
1913 pv = sv_display(sv, tmpbuf, sizeof(tmpbuf));
1915 Perl_warner(aTHX_ packWARN(WARN_NUMERIC),
1916 "Argument \"%s\" treated as 0 in increment (++)", pv);
1920 =for apidoc looks_like_number
1922 Test if the content of an SV looks like a number (or is a number).
1923 C<Inf> and C<Infinity> are treated as numbers (so will not issue a
1924 non-numeric warning), even if your C<atof()> doesn't grok them. Get-magic is
1931 Perl_looks_like_number(pTHX_ SV *const sv)
1937 PERL_ARGS_ASSERT_LOOKS_LIKE_NUMBER;
1939 if (SvPOK(sv) || SvPOKp(sv)) {
1940 sbegin = SvPV_nomg_const(sv, len);
1943 return SvFLAGS(sv) & (SVf_NOK|SVp_NOK|SVf_IOK|SVp_IOK);
1944 numtype = grok_number(sbegin, len, NULL);
1945 return ((numtype & IS_NUMBER_TRAILING)) ? 0 : numtype;
1949 S_glob_2number(pTHX_ GV * const gv)
1951 PERL_ARGS_ASSERT_GLOB_2NUMBER;
1953 /* We know that all GVs stringify to something that is not-a-number,
1954 so no need to test that. */
1955 if (ckWARN(WARN_NUMERIC))
1957 SV *const buffer = sv_newmortal();
1958 gv_efullname3(buffer, gv, "*");
1959 not_a_number(buffer);
1961 /* We just want something true to return, so that S_sv_2iuv_common
1962 can tail call us and return true. */
1966 /* Actually, ISO C leaves conversion of UV to IV undefined, but
1967 until proven guilty, assume that things are not that bad... */
1972 As 64 bit platforms often have an NV that doesn't preserve all bits of
1973 an IV (an assumption perl has been based on to date) it becomes necessary
1974 to remove the assumption that the NV always carries enough precision to
1975 recreate the IV whenever needed, and that the NV is the canonical form.
1976 Instead, IV/UV and NV need to be given equal rights. So as to not lose
1977 precision as a side effect of conversion (which would lead to insanity
1978 and the dragon(s) in t/op/numconvert.t getting very angry) the intent is
1979 1) to distinguish between IV/UV/NV slots that have a valid conversion cached
1980 where precision was lost, and IV/UV/NV slots that have a valid conversion
1981 which has lost no precision
1982 2) to ensure that if a numeric conversion to one form is requested that
1983 would lose precision, the precise conversion (or differently
1984 imprecise conversion) is also performed and cached, to prevent
1985 requests for different numeric formats on the same SV causing
1986 lossy conversion chains. (lossless conversion chains are perfectly
1991 SvIOKp is true if the IV slot contains a valid value
1992 SvIOK is true only if the IV value is accurate (UV if SvIOK_UV true)
1993 SvNOKp is true if the NV slot contains a valid value
1994 SvNOK is true only if the NV value is accurate
1997 while converting from PV to NV, check to see if converting that NV to an
1998 IV(or UV) would lose accuracy over a direct conversion from PV to
1999 IV(or UV). If it would, cache both conversions, return NV, but mark
2000 SV as IOK NOKp (ie not NOK).
2002 While converting from PV to IV, check to see if converting that IV to an
2003 NV would lose accuracy over a direct conversion from PV to NV. If it
2004 would, cache both conversions, flag similarly.
2006 Before, the SV value "3.2" could become NV=3.2 IV=3 NOK, IOK quite
2007 correctly because if IV & NV were set NV *always* overruled.
2008 Now, "3.2" will become NV=3.2 IV=3 NOK, IOKp, because the flag's meaning
2009 changes - now IV and NV together means that the two are interchangeable:
2010 SvIVX == (IV) SvNVX && SvNVX == (NV) SvIVX;
2012 The benefit of this is that operations such as pp_add know that if
2013 SvIOK is true for both left and right operands, then integer addition
2014 can be used instead of floating point (for cases where the result won't
2015 overflow). Before, floating point was always used, which could lead to
2016 loss of precision compared with integer addition.
2018 * making IV and NV equal status should make maths accurate on 64 bit
2020 * may speed up maths somewhat if pp_add and friends start to use
2021 integers when possible instead of fp. (Hopefully the overhead in
2022 looking for SvIOK and checking for overflow will not outweigh the
2023 fp to integer speedup)
2024 * will slow down integer operations (callers of SvIV) on "inaccurate"
2025 values, as the change from SvIOK to SvIOKp will cause a call into
2026 sv_2iv each time rather than a macro access direct to the IV slot
2027 * should speed up number->string conversion on integers as IV is
2028 favoured when IV and NV are equally accurate
2030 ####################################################################
2031 You had better be using SvIOK_notUV if you want an IV for arithmetic:
2032 SvIOK is true if (IV or UV), so you might be getting (IV)SvUV.
2033 On the other hand, SvUOK is true iff UV.
2034 ####################################################################
2036 Your mileage will vary depending your CPU's relative fp to integer
2040 #ifndef NV_PRESERVES_UV
2041 # define IS_NUMBER_UNDERFLOW_IV 1
2042 # define IS_NUMBER_UNDERFLOW_UV 2
2043 # define IS_NUMBER_IV_AND_UV 2
2044 # define IS_NUMBER_OVERFLOW_IV 4
2045 # define IS_NUMBER_OVERFLOW_UV 5
2047 /* sv_2iuv_non_preserve(): private routine for use by sv_2iv() and sv_2uv() */
2049 /* For sv_2nv these three cases are "SvNOK and don't bother casting" */
2051 S_sv_2iuv_non_preserve(pTHX_ SV *const sv
2057 PERL_ARGS_ASSERT_SV_2IUV_NON_PRESERVE;
2058 PERL_UNUSED_CONTEXT;
2060 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));
2061 if (SvNVX(sv) < (NV)IV_MIN) {
2062 (void)SvIOKp_on(sv);
2064 SvIV_set(sv, IV_MIN);
2065 return IS_NUMBER_UNDERFLOW_IV;
2067 if (SvNVX(sv) > (NV)UV_MAX) {
2068 (void)SvIOKp_on(sv);
2071 SvUV_set(sv, UV_MAX);
2072 return IS_NUMBER_OVERFLOW_UV;
2074 (void)SvIOKp_on(sv);
2076 /* Can't use strtol etc to convert this string. (See truth table in
2078 if (SvNVX(sv) <= (UV)IV_MAX) {
2079 SvIV_set(sv, I_V(SvNVX(sv)));
2080 if ((NV)(SvIVX(sv)) == SvNVX(sv)) {
2081 SvIOK_on(sv); /* Integer is precise. NOK, IOK */
2083 /* Integer is imprecise. NOK, IOKp */
2085 return SvNVX(sv) < 0 ? IS_NUMBER_UNDERFLOW_UV : IS_NUMBER_IV_AND_UV;
2088 SvUV_set(sv, U_V(SvNVX(sv)));
2089 if ((NV)(SvUVX(sv)) == SvNVX(sv)) {
2090 if (SvUVX(sv) == UV_MAX) {
2091 /* As we know that NVs don't preserve UVs, UV_MAX cannot
2092 possibly be preserved by NV. Hence, it must be overflow.
2094 return IS_NUMBER_OVERFLOW_UV;
2096 SvIOK_on(sv); /* Integer is precise. NOK, UOK */
2098 /* Integer is imprecise. NOK, IOKp */
2100 return IS_NUMBER_OVERFLOW_IV;
2102 #endif /* !NV_PRESERVES_UV*/
2104 /* If numtype is infnan, set the NV of the sv accordingly.
2105 * If numtype is anything else, try setting the NV using Atof(PV). */
2107 S_sv_setnv(pTHX_ SV* sv, int numtype)
2109 bool pok = cBOOL(SvPOK(sv));
2112 if ((numtype & IS_NUMBER_INFINITY)) {
2113 SvNV_set(sv, (numtype & IS_NUMBER_NEG) ? -NV_INF : NV_INF);
2118 if ((numtype & IS_NUMBER_NAN)) {
2119 SvNV_set(sv, NV_NAN);
2124 SvNV_set(sv, Atof(SvPVX_const(sv)));
2125 /* Purposefully no true nok here, since we don't want to blow
2126 * away the possible IOK/UV of an existing sv. */
2129 SvNOK_only(sv); /* No IV or UV please, this is pure infnan. */
2131 SvPOK_on(sv); /* PV is okay, though. */
2136 S_sv_2iuv_common(pTHX_ SV *const sv)
2138 PERL_ARGS_ASSERT_SV_2IUV_COMMON;
2141 /* erm. not sure. *should* never get NOKp (without NOK) from sv_2nv
2142 * without also getting a cached IV/UV from it at the same time
2143 * (ie PV->NV conversion should detect loss of accuracy and cache
2144 * IV or UV at same time to avoid this. */
2145 /* IV-over-UV optimisation - choose to cache IV if possible */
2147 if (SvTYPE(sv) == SVt_NV)
2148 sv_upgrade(sv, SVt_PVNV);
2150 (void)SvIOKp_on(sv); /* Must do this first, to clear any SvOOK */
2151 /* < not <= as for NV doesn't preserve UV, ((NV)IV_MAX+1) will almost
2152 certainly cast into the IV range at IV_MAX, whereas the correct
2153 answer is the UV IV_MAX +1. Hence < ensures that dodgy boundary
2155 #if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan)
2156 if (Perl_isnan(SvNVX(sv))) {
2162 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2163 SvIV_set(sv, I_V(SvNVX(sv)));
2164 if (SvNVX(sv) == (NV) SvIVX(sv)
2165 #ifndef NV_PRESERVES_UV
2166 && SvIVX(sv) != IV_MIN /* avoid negating IV_MIN below */
2167 && (((UV)1 << NV_PRESERVES_UV_BITS) >
2168 (UV)(SvIVX(sv) > 0 ? SvIVX(sv) : -SvIVX(sv)))
2169 /* Don't flag it as "accurately an integer" if the number
2170 came from a (by definition imprecise) NV operation, and
2171 we're outside the range of NV integer precision */
2175 SvIOK_on(sv); /* Can this go wrong with rounding? NWC */
2177 /* scalar has trailing garbage, eg "42a" */
2179 DEBUG_c(PerlIO_printf(Perl_debug_log,
2180 "0x%" UVxf " iv(%" NVgf " => %" IVdf ") (precise)\n",
2186 /* IV not precise. No need to convert from PV, as NV
2187 conversion would already have cached IV if it detected
2188 that PV->IV would be better than PV->NV->IV
2189 flags already correct - don't set public IOK. */
2190 DEBUG_c(PerlIO_printf(Perl_debug_log,
2191 "0x%" UVxf " iv(%" NVgf " => %" IVdf ") (imprecise)\n",
2196 /* Can the above go wrong if SvIVX == IV_MIN and SvNVX < IV_MIN,
2197 but the cast (NV)IV_MIN rounds to a the value less (more
2198 negative) than IV_MIN which happens to be equal to SvNVX ??
2199 Analogous to 0xFFFFFFFFFFFFFFFF rounding up to NV (2**64) and
2200 NV rounding back to 0xFFFFFFFFFFFFFFFF, so UVX == UV(NVX) and
2201 (NV)UVX == NVX are both true, but the values differ. :-(
2202 Hopefully for 2s complement IV_MIN is something like
2203 0x8000000000000000 which will be exact. NWC */
2206 SvUV_set(sv, U_V(SvNVX(sv)));
2208 (SvNVX(sv) == (NV) SvUVX(sv))
2209 #ifndef NV_PRESERVES_UV
2210 /* Make sure it's not 0xFFFFFFFFFFFFFFFF */
2211 /*&& (SvUVX(sv) != UV_MAX) irrelevant with code below */
2212 && (((UV)1 << NV_PRESERVES_UV_BITS) > SvUVX(sv))
2213 /* Don't flag it as "accurately an integer" if the number
2214 came from a (by definition imprecise) NV operation, and
2215 we're outside the range of NV integer precision */
2221 DEBUG_c(PerlIO_printf(Perl_debug_log,
2222 "0x%" UVxf " 2iv(%" UVuf " => %" IVdf ") (as unsigned)\n",
2228 else if (SvPOKp(sv)) {
2231 const char *s = SvPVX_const(sv);
2232 const STRLEN cur = SvCUR(sv);
2234 /* short-cut for a single digit string like "1" */
2239 if (SvTYPE(sv) < SVt_PVIV)
2240 sv_upgrade(sv, SVt_PVIV);
2242 SvIV_set(sv, (IV)(c - '0'));
2247 numtype = grok_number(s, cur, &value);
2248 /* We want to avoid a possible problem when we cache an IV/ a UV which
2249 may be later translated to an NV, and the resulting NV is not
2250 the same as the direct translation of the initial string
2251 (eg 123.456 can shortcut to the IV 123 with atol(), but we must
2252 be careful to ensure that the value with the .456 is around if the
2253 NV value is requested in the future).
2255 This means that if we cache such an IV/a UV, we need to cache the
2256 NV as well. Moreover, we trade speed for space, and do not
2257 cache the NV if we are sure it's not needed.
2260 /* SVt_PVNV is one higher than SVt_PVIV, hence this order */
2261 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2262 == IS_NUMBER_IN_UV) {
2263 /* It's definitely an integer, only upgrade to PVIV */
2264 if (SvTYPE(sv) < SVt_PVIV)
2265 sv_upgrade(sv, SVt_PVIV);
2267 } else if (SvTYPE(sv) < SVt_PVNV)
2268 sv_upgrade(sv, SVt_PVNV);
2270 if ((numtype & (IS_NUMBER_INFINITY | IS_NUMBER_NAN))) {
2271 if (ckWARN(WARN_NUMERIC) && ((numtype & IS_NUMBER_TRAILING)))
2273 S_sv_setnv(aTHX_ sv, numtype);
2277 /* If NVs preserve UVs then we only use the UV value if we know that
2278 we aren't going to call atof() below. If NVs don't preserve UVs
2279 then the value returned may have more precision than atof() will
2280 return, even though value isn't perfectly accurate. */
2281 if ((numtype & (IS_NUMBER_IN_UV
2282 #ifdef NV_PRESERVES_UV
2285 )) == IS_NUMBER_IN_UV) {
2286 /* This won't turn off the public IOK flag if it was set above */
2287 (void)SvIOKp_on(sv);
2289 if (!(numtype & IS_NUMBER_NEG)) {
2291 if (value <= (UV)IV_MAX) {
2292 SvIV_set(sv, (IV)value);
2294 /* it didn't overflow, and it was positive. */
2295 SvUV_set(sv, value);
2299 /* 2s complement assumption */
2300 if (value <= (UV)IV_MIN) {
2301 SvIV_set(sv, value == (UV)IV_MIN
2302 ? IV_MIN : -(IV)value);
2304 /* Too negative for an IV. This is a double upgrade, but
2305 I'm assuming it will be rare. */
2306 if (SvTYPE(sv) < SVt_PVNV)
2307 sv_upgrade(sv, SVt_PVNV);
2311 SvNV_set(sv, -(NV)value);
2312 SvIV_set(sv, IV_MIN);
2316 /* For !NV_PRESERVES_UV and IS_NUMBER_IN_UV and IS_NUMBER_NOT_INT we
2317 will be in the previous block to set the IV slot, and the next
2318 block to set the NV slot. So no else here. */
2320 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2321 != IS_NUMBER_IN_UV) {
2322 /* It wasn't an (integer that doesn't overflow the UV). */
2323 S_sv_setnv(aTHX_ sv, numtype);
2325 if (! numtype && ckWARN(WARN_NUMERIC))
2328 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%" UVxf " 2iv(%" NVgf ")\n",
2329 PTR2UV(sv), SvNVX(sv)));
2331 #ifdef NV_PRESERVES_UV
2332 (void)SvIOKp_on(sv);
2334 #if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan)
2335 if (Perl_isnan(SvNVX(sv))) {
2341 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2342 SvIV_set(sv, I_V(SvNVX(sv)));
2343 if ((NV)(SvIVX(sv)) == SvNVX(sv)) {
2346 NOOP; /* Integer is imprecise. NOK, IOKp */
2348 /* UV will not work better than IV */
2350 if (SvNVX(sv) > (NV)UV_MAX) {
2352 /* Integer is inaccurate. NOK, IOKp, is UV */
2353 SvUV_set(sv, UV_MAX);
2355 SvUV_set(sv, U_V(SvNVX(sv)));
2356 /* 0xFFFFFFFFFFFFFFFF not an issue in here, NVs
2357 NV preservse UV so can do correct comparison. */
2358 if ((NV)(SvUVX(sv)) == SvNVX(sv)) {
2361 NOOP; /* Integer is imprecise. NOK, IOKp, is UV */
2366 #else /* NV_PRESERVES_UV */
2367 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2368 == (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT)) {
2369 /* The IV/UV slot will have been set from value returned by
2370 grok_number above. The NV slot has just been set using
2373 assert (SvIOKp(sv));
2375 if (((UV)1 << NV_PRESERVES_UV_BITS) >
2376 U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))) {
2377 /* Small enough to preserve all bits. */
2378 (void)SvIOKp_on(sv);
2380 SvIV_set(sv, I_V(SvNVX(sv)));
2381 if ((NV)(SvIVX(sv)) == SvNVX(sv))
2383 /* Assumption: first non-preserved integer is < IV_MAX,
2384 this NV is in the preserved range, therefore: */
2385 if (!(U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))
2387 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);
2391 0 0 already failed to read UV.
2392 0 1 already failed to read UV.
2393 1 0 you won't get here in this case. IV/UV
2394 slot set, public IOK, Atof() unneeded.
2395 1 1 already read UV.
2396 so there's no point in sv_2iuv_non_preserve() attempting
2397 to use atol, strtol, strtoul etc. */
2399 sv_2iuv_non_preserve (sv, numtype);
2401 sv_2iuv_non_preserve (sv);
2405 #endif /* NV_PRESERVES_UV */
2406 /* It might be more code efficient to go through the entire logic above
2407 and conditionally set with SvIOKp_on() rather than SvIOK(), but it
2408 gets complex and potentially buggy, so more programmer efficient
2409 to do it this way, by turning off the public flags: */
2411 SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK);
2415 if (isGV_with_GP(sv))
2416 return glob_2number(MUTABLE_GV(sv));
2418 if (!PL_localizing && ckWARN(WARN_UNINITIALIZED))
2420 if (SvTYPE(sv) < SVt_IV)
2421 /* Typically the caller expects that sv_any is not NULL now. */
2422 sv_upgrade(sv, SVt_IV);
2423 /* Return 0 from the caller. */
2430 =for apidoc sv_2iv_flags
2432 Return the integer value of an SV, doing any necessary string
2433 conversion. If C<flags> has the C<SV_GMAGIC> bit set, does an C<mg_get()> first.
2434 Normally used via the C<SvIV(sv)> and C<SvIVx(sv)> macros.
2440 Perl_sv_2iv_flags(pTHX_ SV *const sv, const I32 flags)
2442 PERL_ARGS_ASSERT_SV_2IV_FLAGS;
2444 assert (SvTYPE(sv) != SVt_PVAV && SvTYPE(sv) != SVt_PVHV
2445 && SvTYPE(sv) != SVt_PVFM);
2447 if (SvGMAGICAL(sv) && (flags & SV_GMAGIC))
2453 if (flags & SV_SKIP_OVERLOAD)
2455 tmpstr = AMG_CALLunary(sv, numer_amg);
2456 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2457 return SvIV(tmpstr);
2460 return PTR2IV(SvRV(sv));
2463 if (SvVALID(sv) || isREGEXP(sv)) {
2464 /* FBMs use the space for SvIVX and SvNVX for other purposes, so
2465 must not let them cache IVs.
2466 In practice they are extremely unlikely to actually get anywhere
2467 accessible by user Perl code - the only way that I'm aware of is when
2468 a constant subroutine which is used as the second argument to index.
2470 Regexps have no SvIVX and SvNVX fields.
2475 const char * const ptr =
2476 isREGEXP(sv) ? RX_WRAPPED((REGEXP*)sv) : SvPVX_const(sv);
2478 = grok_number(ptr, SvCUR(sv), &value);
2480 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2481 == IS_NUMBER_IN_UV) {
2482 /* It's definitely an integer */
2483 if (numtype & IS_NUMBER_NEG) {
2484 if (value < (UV)IV_MIN)
2487 if (value < (UV)IV_MAX)
2492 /* Quite wrong but no good choices. */
2493 if ((numtype & IS_NUMBER_INFINITY)) {
2494 return (numtype & IS_NUMBER_NEG) ? IV_MIN : IV_MAX;
2495 } else if ((numtype & IS_NUMBER_NAN)) {
2496 return 0; /* So wrong. */
2500 if (ckWARN(WARN_NUMERIC))
2503 return I_V(Atof(ptr));
2507 if (SvTHINKFIRST(sv)) {
2508 if (SvREADONLY(sv) && !SvOK(sv)) {
2509 if (ckWARN(WARN_UNINITIALIZED))
2516 if (S_sv_2iuv_common(aTHX_ sv))
2520 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%" UVxf " 2iv(%" IVdf ")\n",
2521 PTR2UV(sv),SvIVX(sv)));
2522 return SvIsUV(sv) ? (IV)SvUVX(sv) : SvIVX(sv);
2526 =for apidoc sv_2uv_flags
2528 Return the unsigned integer value of an SV, doing any necessary string
2529 conversion. If C<flags> has the C<SV_GMAGIC> bit set, does an C<mg_get()> first.
2530 Normally used via the C<SvUV(sv)> and C<SvUVx(sv)> macros.
2532 =for apidoc Amnh||SV_GMAGIC
2538 Perl_sv_2uv_flags(pTHX_ SV *const sv, const I32 flags)
2540 PERL_ARGS_ASSERT_SV_2UV_FLAGS;
2542 if (SvGMAGICAL(sv) && (flags & SV_GMAGIC))
2548 if (flags & SV_SKIP_OVERLOAD)
2550 tmpstr = AMG_CALLunary(sv, numer_amg);
2551 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2552 return SvUV(tmpstr);
2555 return PTR2UV(SvRV(sv));
2558 if (SvVALID(sv) || isREGEXP(sv)) {
2559 /* FBMs use the space for SvIVX and SvNVX for other purposes, and use
2560 the same flag bit as SVf_IVisUV, so must not let them cache IVs.
2561 Regexps have no SvIVX and SvNVX fields. */
2565 const char * const ptr =
2566 isREGEXP(sv) ? RX_WRAPPED((REGEXP*)sv) : SvPVX_const(sv);
2568 = grok_number(ptr, SvCUR(sv), &value);
2570 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2571 == IS_NUMBER_IN_UV) {
2572 /* It's definitely an integer */
2573 if (!(numtype & IS_NUMBER_NEG))
2577 /* Quite wrong but no good choices. */
2578 if ((numtype & IS_NUMBER_INFINITY)) {
2579 return UV_MAX; /* So wrong. */
2580 } else if ((numtype & IS_NUMBER_NAN)) {
2581 return 0; /* So wrong. */
2585 if (ckWARN(WARN_NUMERIC))
2588 return U_V(Atof(ptr));
2592 if (SvTHINKFIRST(sv)) {
2593 if (SvREADONLY(sv) && !SvOK(sv)) {
2594 if (ckWARN(WARN_UNINITIALIZED))
2601 if (S_sv_2iuv_common(aTHX_ sv))
2605 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%" UVxf " 2uv(%" UVuf ")\n",
2606 PTR2UV(sv),SvUVX(sv)));
2607 return SvIsUV(sv) ? SvUVX(sv) : (UV)SvIVX(sv);
2611 =for apidoc sv_2nv_flags
2613 Return the num value of an SV, doing any necessary string or integer
2614 conversion. If C<flags> has the C<SV_GMAGIC> bit set, does an C<mg_get()> first.
2615 Normally used via the C<SvNV(sv)> and C<SvNVx(sv)> macros.
2621 Perl_sv_2nv_flags(pTHX_ SV *const sv, const I32 flags)
2623 PERL_ARGS_ASSERT_SV_2NV_FLAGS;
2625 assert (SvTYPE(sv) != SVt_PVAV && SvTYPE(sv) != SVt_PVHV
2626 && SvTYPE(sv) != SVt_PVFM);
2627 if (SvGMAGICAL(sv) || SvVALID(sv) || isREGEXP(sv)) {
2628 /* FBMs use the space for SvIVX and SvNVX for other purposes, and use
2629 the same flag bit as SVf_IVisUV, so must not let them cache NVs.
2630 Regexps have no SvIVX and SvNVX fields. */
2632 if (flags & SV_GMAGIC)
2636 if (SvPOKp(sv) && !SvIOKp(sv)) {
2637 ptr = SvPVX_const(sv);
2638 if (!SvIOKp(sv) && ckWARN(WARN_NUMERIC) &&
2639 !grok_number(ptr, SvCUR(sv), NULL))
2645 return (NV)SvUVX(sv);
2647 return (NV)SvIVX(sv);
2652 assert(SvTYPE(sv) >= SVt_PVMG);
2653 /* This falls through to the report_uninit near the end of the
2655 } else if (SvTHINKFIRST(sv)) {
2660 if (flags & SV_SKIP_OVERLOAD)
2662 tmpstr = AMG_CALLunary(sv, numer_amg);
2663 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2664 return SvNV(tmpstr);
2667 return PTR2NV(SvRV(sv));
2669 if (SvREADONLY(sv) && !SvOK(sv)) {
2670 if (ckWARN(WARN_UNINITIALIZED))
2675 if (SvTYPE(sv) < SVt_NV) {
2676 /* The logic to use SVt_PVNV if necessary is in sv_upgrade. */
2677 sv_upgrade(sv, SVt_NV);
2678 CLANG_DIAG_IGNORE_STMT(-Wthread-safety);
2680 DECLARATION_FOR_LC_NUMERIC_MANIPULATION;
2681 STORE_LC_NUMERIC_SET_STANDARD();
2682 PerlIO_printf(Perl_debug_log,
2683 "0x%" UVxf " num(%" NVgf ")\n",
2684 PTR2UV(sv), SvNVX(sv));
2685 RESTORE_LC_NUMERIC();
2687 CLANG_DIAG_RESTORE_STMT;
2690 else if (SvTYPE(sv) < SVt_PVNV)
2691 sv_upgrade(sv, SVt_PVNV);
2696 SvNV_set(sv, SvIsUV(sv) ? (NV)SvUVX(sv) : (NV)SvIVX(sv));
2697 #ifdef NV_PRESERVES_UV
2703 /* Only set the public NV OK flag if this NV preserves the IV */
2704 /* Check it's not 0xFFFFFFFFFFFFFFFF */
2706 SvIsUV(sv) ? ((SvUVX(sv) != UV_MAX)&&(SvUVX(sv) == U_V(SvNVX(sv))))
2707 : (SvIVX(sv) == I_V(SvNVX(sv))))
2713 else if (SvPOKp(sv)) {
2715 const int numtype = grok_number(SvPVX_const(sv), SvCUR(sv), &value);
2716 if (!SvIOKp(sv) && !numtype && ckWARN(WARN_NUMERIC))
2718 #ifdef NV_PRESERVES_UV
2719 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2720 == IS_NUMBER_IN_UV) {
2721 /* It's definitely an integer */
2722 SvNV_set(sv, (numtype & IS_NUMBER_NEG) ? -(NV)value : (NV)value);
2724 S_sv_setnv(aTHX_ sv, numtype);
2731 SvNV_set(sv, Atof(SvPVX_const(sv)));
2732 /* Only set the public NV OK flag if this NV preserves the value in
2733 the PV at least as well as an IV/UV would.
2734 Not sure how to do this 100% reliably. */
2735 /* if that shift count is out of range then Configure's test is
2736 wonky. We shouldn't be in here with NV_PRESERVES_UV_BITS ==
2738 if (((UV)1 << NV_PRESERVES_UV_BITS) >
2739 U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))) {
2740 SvNOK_on(sv); /* Definitely small enough to preserve all bits */
2741 } else if (!(numtype & IS_NUMBER_IN_UV)) {
2742 /* Can't use strtol etc to convert this string, so don't try.
2743 sv_2iv and sv_2uv will use the NV to convert, not the PV. */
2746 /* value has been set. It may not be precise. */
2747 if ((numtype & IS_NUMBER_NEG) && (value >= (UV)IV_MIN)) {
2748 /* 2s complement assumption for (UV)IV_MIN */
2749 SvNOK_on(sv); /* Integer is too negative. */
2754 if (numtype & IS_NUMBER_NEG) {
2755 /* -IV_MIN is undefined, but we should never reach
2756 * this point with both IS_NUMBER_NEG and value ==
2758 assert(value != (UV)IV_MIN);
2759 SvIV_set(sv, -(IV)value);
2760 } else if (value <= (UV)IV_MAX) {
2761 SvIV_set(sv, (IV)value);
2763 SvUV_set(sv, value);
2767 if (numtype & IS_NUMBER_NOT_INT) {
2768 /* I believe that even if the original PV had decimals,
2769 they are lost beyond the limit of the FP precision.
2770 However, neither is canonical, so both only get p
2771 flags. NWC, 2000/11/25 */
2772 /* Both already have p flags, so do nothing */
2774 const NV nv = SvNVX(sv);
2775 /* XXX should this spot have NAN_COMPARE_BROKEN, too? */
2776 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2777 if (SvIVX(sv) == I_V(nv)) {
2780 /* It had no "." so it must be integer. */
2784 /* between IV_MAX and NV(UV_MAX).
2785 Could be slightly > UV_MAX */
2787 if (numtype & IS_NUMBER_NOT_INT) {
2788 /* UV and NV both imprecise. */
2790 const UV nv_as_uv = U_V(nv);
2792 if (value == nv_as_uv && SvUVX(sv) != UV_MAX) {
2801 /* It might be more code efficient to go through the entire logic above
2802 and conditionally set with SvNOKp_on() rather than SvNOK(), but it
2803 gets complex and potentially buggy, so more programmer efficient
2804 to do it this way, by turning off the public flags: */
2806 SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK);
2807 #endif /* NV_PRESERVES_UV */
2810 if (isGV_with_GP(sv)) {
2811 glob_2number(MUTABLE_GV(sv));
2815 if (!PL_localizing && ckWARN(WARN_UNINITIALIZED))
2817 assert (SvTYPE(sv) >= SVt_NV);
2818 /* Typically the caller expects that sv_any is not NULL now. */
2819 /* XXX Ilya implies that this is a bug in callers that assume this
2820 and ideally should be fixed. */
2823 CLANG_DIAG_IGNORE_STMT(-Wthread-safety);
2825 DECLARATION_FOR_LC_NUMERIC_MANIPULATION;
2826 STORE_LC_NUMERIC_SET_STANDARD();
2827 PerlIO_printf(Perl_debug_log, "0x%" UVxf " 2nv(%" NVgf ")\n",
2828 PTR2UV(sv), SvNVX(sv));
2829 RESTORE_LC_NUMERIC();
2831 CLANG_DIAG_RESTORE_STMT;
2838 Return an SV with the numeric value of the source SV, doing any necessary
2839 reference or overload conversion. The caller is expected to have handled
2846 Perl_sv_2num(pTHX_ SV *const sv)
2848 PERL_ARGS_ASSERT_SV_2NUM;
2853 SV * const tmpsv = AMG_CALLunary(sv, numer_amg);
2854 TAINT_IF(tmpsv && SvTAINTED(tmpsv));
2855 if (tmpsv && (!SvROK(tmpsv) || (SvRV(tmpsv) != SvRV(sv))))
2856 return sv_2num(tmpsv);
2858 return sv_2mortal(newSVuv(PTR2UV(SvRV(sv))));
2861 /* int2str_table: lookup table containing string representations of all
2862 * two digit numbers. For example, int2str_table.arr[0] is "00" and
2863 * int2str_table.arr[12*2] is "12".
2865 * We are going to read two bytes at a time, so we have to ensure that
2866 * the array is aligned to a 2 byte boundary. That's why it was made a
2867 * union with a dummy U16 member. */
2868 static const union {
2871 } int2str_table = {{
2872 '0', '0', '0', '1', '0', '2', '0', '3', '0', '4', '0', '5', '0', '6',
2873 '0', '7', '0', '8', '0', '9', '1', '0', '1', '1', '1', '2', '1', '3',
2874 '1', '4', '1', '5', '1', '6', '1', '7', '1', '8', '1', '9', '2', '0',
2875 '2', '1', '2', '2', '2', '3', '2', '4', '2', '5', '2', '6', '2', '7',
2876 '2', '8', '2', '9', '3', '0', '3', '1', '3', '2', '3', '3', '3', '4',
2877 '3', '5', '3', '6', '3', '7', '3', '8', '3', '9', '4', '0', '4', '1',
2878 '4', '2', '4', '3', '4', '4', '4', '5', '4', '6', '4', '7', '4', '8',
2879 '4', '9', '5', '0', '5', '1', '5', '2', '5', '3', '5', '4', '5', '5',
2880 '5', '6', '5', '7', '5', '8', '5', '9', '6', '0', '6', '1', '6', '2',
2881 '6', '3', '6', '4', '6', '5', '6', '6', '6', '7', '6', '8', '6', '9',
2882 '7', '0', '7', '1', '7', '2', '7', '3', '7', '4', '7', '5', '7', '6',
2883 '7', '7', '7', '8', '7', '9', '8', '0', '8', '1', '8', '2', '8', '3',
2884 '8', '4', '8', '5', '8', '6', '8', '7', '8', '8', '8', '9', '9', '0',
2885 '9', '1', '9', '2', '9', '3', '9', '4', '9', '5', '9', '6', '9', '7',
2889 /* uiv_2buf(): private routine for use by sv_2pv_flags(): print an IV or
2890 * UV as a string towards the end of buf, and return pointers to start and
2893 * We assume that buf is at least TYPE_CHARS(UV) long.
2896 PERL_STATIC_INLINE char *
2897 S_uiv_2buf(char *const buf, const IV iv, UV uv, const int is_uv, char **const peob)
2899 char *ptr = buf + TYPE_CHARS(UV);
2900 char * const ebuf = ptr;
2902 U16 *word_ptr, *word_table;
2904 PERL_ARGS_ASSERT_UIV_2BUF;
2906 /* ptr has to be properly aligned, because we will cast it to U16* */
2907 assert(PTR2nat(ptr) % 2 == 0);
2908 /* we are going to read/write two bytes at a time */
2909 word_ptr = (U16*)ptr;
2910 word_table = (U16*)int2str_table.arr;
2912 if (UNLIKELY(is_uv))
2918 /* Using 0- here to silence bogus warning from MS VC */
2919 uv = (UV) (0 - (UV) iv);
2924 *--word_ptr = word_table[uv % 100];
2927 ptr = (char*)word_ptr;
2930 *--ptr = (char)uv + '0';
2932 *--word_ptr = word_table[uv];
2933 ptr = (char*)word_ptr;
2943 /* Helper for sv_2pv_flags and sv_vcatpvfn_flags. If the NV is an
2944 * infinity or a not-a-number, writes the appropriate strings to the
2945 * buffer, including a zero byte. On success returns the written length,
2946 * excluding the zero byte, on failure (not an infinity, not a nan)
2947 * returns zero, assert-fails on maxlen being too short.
2949 * XXX for "Inf", "-Inf", and "NaN", we could have three read-only
2950 * shared string constants we point to, instead of generating a new
2951 * string for each instance. */
2953 S_infnan_2pv(NV nv, char* buffer, size_t maxlen, char plus) {
2955 assert(maxlen >= 4);
2956 if (Perl_isinf(nv)) {
2958 if (maxlen < 5) /* "-Inf\0" */
2968 else if (Perl_isnan(nv)) {
2972 /* XXX optionally output the payload mantissa bits as
2973 * "(unsigned)" (to match the nan("...") C99 function,
2974 * or maybe as "(0xhhh...)" would make more sense...
2975 * provide a format string so that the user can decide?
2976 * NOTE: would affect the maxlen and assert() logic.*/
2981 assert((s == buffer + 3) || (s == buffer + 4));
2987 =for apidoc sv_2pv_flags
2989 Returns a pointer to the string value of an SV, and sets C<*lp> to its length.
2990 If flags has the C<SV_GMAGIC> bit set, does an C<mg_get()> first. Coerces C<sv> to a
2991 string if necessary. Normally invoked via the C<SvPV_flags> macro.
2992 C<sv_2pv()> and C<sv_2pv_nomg> usually end up here too.
2998 Perl_sv_2pv_flags(pTHX_ SV *const sv, STRLEN *const lp, const I32 flags)
3002 PERL_ARGS_ASSERT_SV_2PV_FLAGS;
3004 assert (SvTYPE(sv) != SVt_PVAV && SvTYPE(sv) != SVt_PVHV
3005 && SvTYPE(sv) != SVt_PVFM);
3006 if (SvGMAGICAL(sv) && (flags & SV_GMAGIC))
3011 if (flags & SV_SKIP_OVERLOAD)
3013 tmpstr = AMG_CALLunary(sv, string_amg);
3014 TAINT_IF(tmpstr && SvTAINTED(tmpstr));
3015 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
3017 /* char *pv = lp ? SvPV(tmpstr, *lp) : SvPV_nolen(tmpstr);
3021 if ((SvFLAGS(tmpstr) & (SVf_POK)) == SVf_POK) {
3022 if (flags & SV_CONST_RETURN) {
3023 pv = (char *) SvPVX_const(tmpstr);
3025 pv = (flags & SV_MUTABLE_RETURN)
3026 ? SvPVX_mutable(tmpstr) : SvPVX(tmpstr);
3029 *lp = SvCUR(tmpstr);
3031 pv = sv_2pv_flags(tmpstr, lp, flags);
3044 SV *const referent = SvRV(sv);
3048 retval = buffer = savepvn("NULLREF", len);
3049 } else if (SvTYPE(referent) == SVt_REGEXP &&
3050 (!(PL_curcop->cop_hints & HINT_NO_AMAGIC) ||
3051 amagic_is_enabled(string_amg))) {
3052 REGEXP * const re = (REGEXP *)MUTABLE_PTR(referent);
3056 /* If the regex is UTF-8 we want the containing scalar to
3057 have an UTF-8 flag too */
3064 *lp = RX_WRAPLEN(re);
3066 return RX_WRAPPED(re);
3068 const char *const typestr = sv_reftype(referent, 0);
3069 const STRLEN typelen = strlen(typestr);
3070 UV addr = PTR2UV(referent);
3071 const char *stashname = NULL;
3072 STRLEN stashnamelen = 0; /* hush, gcc */
3073 const char *buffer_end;
3075 if (SvOBJECT(referent)) {
3076 const HEK *const name = HvNAME_HEK(SvSTASH(referent));
3079 stashname = HEK_KEY(name);
3080 stashnamelen = HEK_LEN(name);
3082 if (HEK_UTF8(name)) {
3088 stashname = "__ANON__";
3091 len = stashnamelen + 1 /* = */ + typelen + 3 /* (0x */
3092 + 2 * sizeof(UV) + 2 /* )\0 */;
3094 len = typelen + 3 /* (0x */
3095 + 2 * sizeof(UV) + 2 /* )\0 */;
3098 Newx(buffer, len, char);
3099 buffer_end = retval = buffer + len;
3101 /* Working backwards */
3105 *--retval = PL_hexdigit[addr & 15];
3106 } while (addr >>= 4);
3112 memcpy(retval, typestr, typelen);
3116 retval -= stashnamelen;
3117 memcpy(retval, stashname, stashnamelen);
3119 /* retval may not necessarily have reached the start of the
3121 assert (retval >= buffer);
3123 len = buffer_end - retval - 1; /* -1 for that \0 */
3135 if (flags & SV_MUTABLE_RETURN)
3136 return SvPVX_mutable(sv);
3137 if (flags & SV_CONST_RETURN)
3138 return (char *)SvPVX_const(sv);
3143 /* I'm assuming that if both IV and NV are equally valid then
3144 converting the IV is going to be more efficient */
3145 const U32 isUIOK = SvIsUV(sv);
3146 /* The purpose of this union is to ensure that arr is aligned on
3147 a 2 byte boundary, because that is what uiv_2buf() requires */
3149 char arr[TYPE_CHARS(UV)];
3155 if (SvTYPE(sv) < SVt_PVIV)
3156 sv_upgrade(sv, SVt_PVIV);
3157 ptr = uiv_2buf(buf.arr, SvIVX(sv), SvUVX(sv), isUIOK, &ebuf);
3159 /* inlined from sv_setpvn */
3160 s = SvGROW_mutable(sv, len + 1);
3161 Move(ptr, s, len, char);
3166 else if (SvNOK(sv)) {
3167 if (SvTYPE(sv) < SVt_PVNV)
3168 sv_upgrade(sv, SVt_PVNV);
3169 if (SvNVX(sv) == 0.0
3170 #if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan)
3171 && !Perl_isnan(SvNVX(sv))
3174 s = SvGROW_mutable(sv, 2);
3179 STRLEN size = 5; /* "-Inf\0" */
3181 s = SvGROW_mutable(sv, size);
3182 len = S_infnan_2pv(SvNVX(sv), s, size, 0);
3188 /* some Xenix systems wipe out errno here */
3197 5 + /* exponent digits */
3201 s = SvGROW_mutable(sv, size);
3202 #ifndef USE_LOCALE_NUMERIC
3203 SNPRINTF_G(SvNVX(sv), s, SvLEN(sv), NV_DIG);
3209 DECLARATION_FOR_LC_NUMERIC_MANIPULATION;
3210 STORE_LC_NUMERIC_SET_TO_NEEDED();
3212 local_radix = _NOT_IN_NUMERIC_STANDARD;
3213 if (local_radix && SvCUR(PL_numeric_radix_sv) > 1) {
3214 size += SvCUR(PL_numeric_radix_sv) - 1;
3215 s = SvGROW_mutable(sv, size);
3218 SNPRINTF_G(SvNVX(sv), s, SvLEN(sv), NV_DIG);
3220 /* If the radix character is UTF-8, and actually is in the
3221 * output, turn on the UTF-8 flag for the scalar */
3223 && SvUTF8(PL_numeric_radix_sv)
3224 && instr(s, SvPVX_const(PL_numeric_radix_sv)))
3229 RESTORE_LC_NUMERIC();
3232 /* We don't call SvPOK_on(), because it may come to
3233 * pass that the locale changes so that the
3234 * stringification we just did is no longer correct. We
3235 * will have to re-stringify every time it is needed */
3242 else if (isGV_with_GP(sv)) {
3243 GV *const gv = MUTABLE_GV(sv);
3244 SV *const buffer = sv_newmortal();
3246 gv_efullname3(buffer, gv, "*");
3248 assert(SvPOK(buffer));
3254 *lp = SvCUR(buffer);
3255 return SvPVX(buffer);
3260 if (flags & SV_UNDEF_RETURNS_NULL)
3262 if (!PL_localizing && ckWARN(WARN_UNINITIALIZED))
3264 /* Typically the caller expects that sv_any is not NULL now. */
3265 if (!SvREADONLY(sv) && SvTYPE(sv) < SVt_PV)
3266 sv_upgrade(sv, SVt_PV);
3271 const STRLEN len = s - SvPVX_const(sv);
3276 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%" UVxf " 2pv(%s)\n",
3277 PTR2UV(sv),SvPVX_const(sv)));
3278 if (flags & SV_CONST_RETURN)
3279 return (char *)SvPVX_const(sv);
3280 if (flags & SV_MUTABLE_RETURN)
3281 return SvPVX_mutable(sv);
3286 =for apidoc sv_copypv
3288 Copies a stringified representation of the source SV into the
3289 destination SV. Automatically performs any necessary C<mg_get> and
3290 coercion of numeric values into strings. Guaranteed to preserve
3291 C<UTF8> flag even from overloaded objects. Similar in nature to
3292 C<sv_2pv[_flags]> but operates directly on an SV instead of just the
3293 string. Mostly uses C<sv_2pv_flags> to do its work, except when that
3294 would lose the UTF-8'ness of the PV.
3296 =for apidoc sv_copypv_nomg
3298 Like C<sv_copypv>, but doesn't invoke get magic first.
3300 =for apidoc sv_copypv_flags
3302 Implementation of C<sv_copypv> and C<sv_copypv_nomg>. Calls get magic iff flags
3303 has the C<SV_GMAGIC> bit set.
3309 Perl_sv_copypv_flags(pTHX_ SV *const dsv, SV *const ssv, const I32 flags)
3314 PERL_ARGS_ASSERT_SV_COPYPV_FLAGS;
3316 s = SvPV_flags_const(ssv,len,(flags & SV_GMAGIC));
3317 sv_setpvn(dsv,s,len);
3325 =for apidoc sv_2pvbyte
3327 Return a pointer to the byte-encoded representation of the SV, and set C<*lp>
3328 to its length. If the SV is marked as being encoded as UTF-8, it will
3329 downgrade it to a byte string as a side-effect, if possible. If the SV cannot
3330 be downgraded, this croaks.
3332 Usually accessed via the C<SvPVbyte> macro.
3338 Perl_sv_2pvbyte_flags(pTHX_ SV *sv, STRLEN *const lp, const U32 flags)
3340 PERL_ARGS_ASSERT_SV_2PVBYTE_FLAGS;
3342 if (SvGMAGICAL(sv) && (flags & SV_GMAGIC))
3344 if (((SvREADONLY(sv) || SvFAKE(sv)) && !SvIsCOW(sv))
3345 || isGV_with_GP(sv) || SvROK(sv)) {
3346 SV *sv2 = sv_newmortal();
3347 sv_copypv_nomg(sv2,sv);
3350 sv_utf8_downgrade_nomg(sv,0);
3351 return lp ? SvPV_nomg(sv,*lp) : SvPV_nomg_nolen(sv);
3355 =for apidoc sv_2pvutf8
3357 Return a pointer to the UTF-8-encoded representation of the SV, and set C<*lp>
3358 to its length. May cause the SV to be upgraded to UTF-8 as a side-effect.
3360 Usually accessed via the C<SvPVutf8> macro.
3366 Perl_sv_2pvutf8_flags(pTHX_ SV *sv, STRLEN *const lp, const U32 flags)
3368 PERL_ARGS_ASSERT_SV_2PVUTF8_FLAGS;
3370 if (SvGMAGICAL(sv) && (flags & SV_GMAGIC))
3372 if (((SvREADONLY(sv) || SvFAKE(sv)) && !SvIsCOW(sv))
3373 || isGV_with_GP(sv) || SvROK(sv)) {
3374 SV *sv2 = sv_newmortal();
3375 sv_copypv_nomg(sv2,sv);
3378 sv_utf8_upgrade_nomg(sv);
3379 return lp ? SvPV_nomg(sv,*lp) : SvPV_nomg_nolen(sv);
3384 =for apidoc sv_2bool
3386 This macro is only used by C<sv_true()> or its macro equivalent, and only if
3387 the latter's argument is neither C<SvPOK>, C<SvIOK> nor C<SvNOK>.
3388 It calls C<sv_2bool_flags> with the C<SV_GMAGIC> flag.
3390 =for apidoc sv_2bool_flags
3392 This function is only used by C<sv_true()> and friends, and only if
3393 the latter's argument is neither C<SvPOK>, C<SvIOK> nor C<SvNOK>. If the flags
3394 contain C<SV_GMAGIC>, then it does an C<mg_get()> first.
3401 Perl_sv_2bool_flags(pTHX_ SV *sv, I32 flags)
3403 PERL_ARGS_ASSERT_SV_2BOOL_FLAGS;
3406 if(flags & SV_GMAGIC) SvGETMAGIC(sv);
3412 SV * const tmpsv = AMG_CALLunary(sv, bool__amg);
3413 if (tmpsv && (!SvROK(tmpsv) || (SvRV(tmpsv) != SvRV(sv)))) {
3416 if(SvGMAGICAL(sv)) {
3418 goto restart; /* call sv_2bool */
3420 /* expanded SvTRUE_common(sv, (flags = 0, goto restart)) */
3421 else if(!SvOK(sv)) {
3424 else if(SvPOK(sv)) {
3425 svb = SvPVXtrue(sv);
3427 else if((SvFLAGS(sv) & (SVf_IOK|SVf_NOK))) {
3428 svb = (SvIOK(sv) && SvIVX(sv) != 0)
3429 || (SvNOK(sv) && SvNVX(sv) != 0.0);
3433 goto restart; /* call sv_2bool_nomg */
3443 RX_WRAPLEN(sv) > 1 || (RX_WRAPLEN(sv) && *RX_WRAPPED(sv) != '0');
3445 if (SvNOK(sv) && !SvPOK(sv))
3446 return SvNVX(sv) != 0.0;
3448 return SvTRUE_common(sv, isGV_with_GP(sv) ? 1 : 0);
3452 =for apidoc sv_utf8_upgrade
3454 Converts the PV of an SV to its UTF-8-encoded form.
3455 Forces the SV to string form if it is not already.
3456 Will C<mg_get> on C<sv> if appropriate.
3457 Always sets the C<SvUTF8> flag to avoid future validity checks even
3458 if the whole string is the same in UTF-8 as not.
3459 Returns the number of bytes in the converted string
3461 This is not a general purpose byte encoding to Unicode interface:
3462 use the Encode extension for that.
3464 =for apidoc sv_utf8_upgrade_nomg
3466 Like C<sv_utf8_upgrade>, but doesn't do magic on C<sv>.
3468 =for apidoc sv_utf8_upgrade_flags
3470 Converts the PV of an SV to its UTF-8-encoded form.
3471 Forces the SV to string form if it is not already.
3472 Always sets the SvUTF8 flag to avoid future validity checks even
3473 if all the bytes are invariant in UTF-8.
3474 If C<flags> has C<SV_GMAGIC> bit set,
3475 will C<mg_get> on C<sv> if appropriate, else not.
3477 The C<SV_FORCE_UTF8_UPGRADE> flag is now ignored.
3479 Returns the number of bytes in the converted string.
3481 This is not a general purpose byte encoding to Unicode interface:
3482 use the Encode extension for that.
3484 =for apidoc sv_utf8_upgrade_flags_grow
3486 Like C<sv_utf8_upgrade_flags>, but has an additional parameter C<extra>, which is
3487 the number of unused bytes the string of C<sv> is guaranteed to have free after
3488 it upon return. This allows the caller to reserve extra space that it intends
3489 to fill, to avoid extra grows.
3491 C<sv_utf8_upgrade>, C<sv_utf8_upgrade_nomg>, and C<sv_utf8_upgrade_flags>
3492 are implemented in terms of this function.
3494 Returns the number of bytes in the converted string (not including the spares).
3498 If the routine itself changes the string, it adds a trailing C<NUL>. Such a
3499 C<NUL> isn't guaranteed due to having other routines do the work in some input
3500 cases, or if the input is already flagged as being in utf8.
3505 Perl_sv_utf8_upgrade_flags_grow(pTHX_ SV *const sv, const I32 flags, STRLEN extra)
3507 PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS_GROW;
3509 if (sv == &PL_sv_undef)
3511 if (!SvPOK_nog(sv)) {
3513 if (SvREADONLY(sv) && (SvPOKp(sv) || SvIOKp(sv) || SvNOKp(sv))) {
3514 (void) sv_2pv_flags(sv,&len, flags);
3516 if (extra) SvGROW(sv, SvCUR(sv) + extra);
3520 (void) SvPV_force_flags(sv,len,flags & SV_GMAGIC);
3524 /* SVt_REGEXP's shouldn't be upgraded to UTF8 - they're already
3525 * compiled and individual nodes will remain non-utf8 even if the
3526 * stringified version of the pattern gets upgraded. Whether the
3527 * PVX of a REGEXP should be grown or we should just croak, I don't
3529 if (SvUTF8(sv) || isREGEXP(sv)) {
3530 if (extra) SvGROW(sv, SvCUR(sv) + extra);
3535 S_sv_uncow(aTHX_ sv, 0);
3538 if (SvCUR(sv) == 0) {
3539 if (extra) SvGROW(sv, extra + 1); /* Make sure is room for a trailing
3541 } else { /* Assume Latin-1/EBCDIC */
3542 /* This function could be much more efficient if we
3543 * had a FLAG in SVs to signal if there are any variant
3544 * chars in the PV. Given that there isn't such a flag
3545 * make the loop as fast as possible. */
3546 U8 * s = (U8 *) SvPVX_const(sv);
3549 if (is_utf8_invariant_string_loc(s, SvCUR(sv), (const U8 **) &t)) {
3551 /* utf8 conversion not needed because all are invariants. Mark
3552 * as UTF-8 even if no variant - saves scanning loop */
3554 if (extra) SvGROW(sv, SvCUR(sv) + extra);
3558 /* Here, there is at least one variant (t points to the first one), so
3559 * the string should be converted to utf8. Everything from 's' to
3560 * 't - 1' will occupy only 1 byte each on output.
3562 * Note that the incoming SV may not have a trailing '\0', as certain
3563 * code in pp_formline can send us partially built SVs.
3565 * There are two main ways to convert. One is to create a new string
3566 * and go through the input starting from the beginning, appending each
3567 * converted value onto the new string as we go along. Going this
3568 * route, it's probably best to initially allocate enough space in the
3569 * string rather than possibly running out of space and having to
3570 * reallocate and then copy what we've done so far. Since everything
3571 * from 's' to 't - 1' is invariant, the destination can be initialized
3572 * with these using a fast memory copy. To be sure to allocate enough
3573 * space, one could use the worst case scenario, where every remaining
3574 * byte expands to two under UTF-8, or one could parse it and count
3575 * exactly how many do expand.
3577 * The other way is to unconditionally parse the remainder of the
3578 * string to figure out exactly how big the expanded string will be,
3579 * growing if needed. Then start at the end of the string and place
3580 * the character there at the end of the unfilled space in the expanded
3581 * one, working backwards until reaching 't'.
3583 * The problem with assuming the worst case scenario is that for very
3584 * long strings, we could allocate much more memory than actually
3585 * needed, which can create performance problems. If we have to parse
3586 * anyway, the second method is the winner as it may avoid an extra
3587 * copy. The code used to use the first method under some
3588 * circumstances, but now that there is faster variant counting on
3589 * ASCII platforms, the second method is used exclusively, eliminating
3590 * some code that no longer has to be maintained. */
3593 /* Count the total number of variants there are. We can start
3594 * just beyond the first one, which is known to be at 't' */
3595 const Size_t invariant_length = t - s;
3596 U8 * e = (U8 *) SvEND(sv);
3598 /* The length of the left overs, plus 1. */
3599 const Size_t remaining_length_p1 = e - t;
3601 /* We expand by 1 for the variant at 't' and one for each remaining
3602 * variant (we start looking at 't+1') */
3603 Size_t expansion = 1 + variant_under_utf8_count(t + 1, e);
3605 /* +1 = trailing NUL */
3606 Size_t need = SvCUR(sv) + expansion + extra + 1;
3609 /* Grow if needed */
3610 if (SvLEN(sv) < need) {
3611 t = invariant_length + (U8*) SvGROW(sv, need);
3612 e = t + remaining_length_p1;
3614 SvCUR_set(sv, invariant_length + remaining_length_p1 + expansion);
3616 /* Set the NUL at the end */
3617 d = (U8 *) SvEND(sv);
3620 /* Having decremented d, it points to the position to put the
3621 * very last byte of the expanded string. Go backwards through
3622 * the string, copying and expanding as we go, stopping when we
3623 * get to the part that is invariant the rest of the way down */
3627 if (NATIVE_BYTE_IS_INVARIANT(*e)) {
3630 *d-- = UTF8_EIGHT_BIT_LO(*e);
3631 *d-- = UTF8_EIGHT_BIT_HI(*e);
3636 if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv)) {
3637 /* Update pos. We do it at the end rather than during
3638 * the upgrade, to avoid slowing down the common case
3639 * (upgrade without pos).
3640 * pos can be stored as either bytes or characters. Since
3641 * this was previously a byte string we can just turn off
3642 * the bytes flag. */
3643 MAGIC * mg = mg_find(sv, PERL_MAGIC_regex_global);
3645 mg->mg_flags &= ~MGf_BYTES;
3647 if ((mg = mg_find(sv, PERL_MAGIC_utf8)))
3648 magic_setutf8(sv,mg); /* clear UTF8 cache */
3658 =for apidoc sv_utf8_downgrade
3660 Attempts to convert the PV of an SV from characters to bytes.
3661 If the PV contains a character that cannot fit
3662 in a byte, this conversion will fail;
3663 in this case, either returns false or, if C<fail_ok> is not
3666 This is not a general purpose Unicode to byte encoding interface:
3667 use the C<Encode> extension for that.
3669 This function process get magic on C<sv>.
3671 =for apidoc sv_utf8_downgrade_nomg
3673 Like C<sv_utf8_downgrade>, but does not process get magic on C<sv>.
3675 =for apidoc sv_utf8_downgrade_flags
3677 Like C<sv_utf8_downgrade>, but with additional C<flags>.
3678 If C<flags> has C<SV_GMAGIC> bit set, processes get magic on C<sv>.
3684 Perl_sv_utf8_downgrade_flags(pTHX_ SV *const sv, const bool fail_ok, const U32 flags)
3686 PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE_FLAGS;
3688 if (SvPOKp(sv) && SvUTF8(sv)) {
3692 U32 mg_flags = flags & SV_GMAGIC;
3695 S_sv_uncow(aTHX_ sv, 0);
3697 if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv)) {
3699 MAGIC * mg = mg_find(sv, PERL_MAGIC_regex_global);
3700 if (mg && mg->mg_len > 0 && mg->mg_flags & MGf_BYTES) {
3701 mg->mg_len = sv_pos_b2u_flags(sv, mg->mg_len,
3702 mg_flags|SV_CONST_RETURN);
3703 mg_flags = 0; /* sv_pos_b2u does get magic */
3705 if ((mg = mg_find(sv, PERL_MAGIC_utf8)))
3706 magic_setutf8(sv,mg); /* clear UTF8 cache */
3709 s = (U8 *) SvPV_flags(sv, len, mg_flags);
3711 if (!utf8_to_bytes(s, &len)) {
3716 Perl_croak(aTHX_ "Wide character in %s",
3719 Perl_croak(aTHX_ "Wide character");
3730 =for apidoc sv_utf8_encode
3732 Converts the PV of an SV to UTF-8, but then turns the C<SvUTF8>
3733 flag off so that it looks like octets again.
3739 Perl_sv_utf8_encode(pTHX_ SV *const sv)
3741 PERL_ARGS_ASSERT_SV_UTF8_ENCODE;
3743 if (SvREADONLY(sv)) {
3744 sv_force_normal_flags(sv, 0);
3746 (void) sv_utf8_upgrade(sv);
3751 =for apidoc sv_utf8_decode
3753 If the PV of the SV is an octet sequence in Perl's extended UTF-8
3754 and contains a multiple-byte character, the C<SvUTF8> flag is turned on
3755 so that it looks like a character. If the PV contains only single-byte
3756 characters, the C<SvUTF8> flag stays off.
3757 Scans PV for validity and returns FALSE if the PV is invalid UTF-8.
3763 Perl_sv_utf8_decode(pTHX_ SV *const sv)
3765 PERL_ARGS_ASSERT_SV_UTF8_DECODE;
3768 const U8 *start, *c, *first_variant;
3770 /* The octets may have got themselves encoded - get them back as
3773 if (!sv_utf8_downgrade(sv, TRUE))
3776 /* it is actually just a matter of turning the utf8 flag on, but
3777 * we want to make sure everything inside is valid utf8 first.
3779 c = start = (const U8 *) SvPVX_const(sv);
3780 if (! is_utf8_invariant_string_loc(c, SvCUR(sv), &first_variant)) {
3781 if (!is_utf8_string(first_variant, SvCUR(sv) - (first_variant -c)))
3785 if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv)) {
3786 /* XXX Is this dead code? XS_utf8_decode calls SvSETMAGIC
3787 after this, clearing pos. Does anything on CPAN
3789 /* adjust pos to the start of a UTF8 char sequence */
3790 MAGIC * mg = mg_find(sv, PERL_MAGIC_regex_global);
3792 I32 pos = mg->mg_len;
3794 for (c = start + pos; c > start; c--) {
3795 if (UTF8_IS_START(*c))
3798 mg->mg_len = c - start;
3801 if ((mg = mg_find(sv, PERL_MAGIC_utf8)))
3802 magic_setutf8(sv,mg); /* clear UTF8 cache */
3809 =for apidoc sv_setsv
3811 Copies the contents of the source SV C<ssv> into the destination SV
3812 C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
3813 function if the source SV needs to be reused. Does not handle 'set' magic on
3814 destination SV. Calls 'get' magic on source SV. Loosely speaking, it
3815 performs a copy-by-value, obliterating any previous content of the
3818 You probably want to use one of the assortment of wrappers, such as
3819 C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
3820 C<SvSetMagicSV_nosteal>.
3822 =for apidoc sv_setsv_flags
3824 Copies the contents of the source SV C<ssv> into the destination SV
3825 C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
3826 function if the source SV needs to be reused. Does not handle 'set' magic.
3827 Loosely speaking, it performs a copy-by-value, obliterating any previous
3828 content of the destination.
3829 If the C<flags> parameter has the C<SV_GMAGIC> bit set, will C<mg_get> on
3830 C<ssv> if appropriate, else not. If the C<flags>
3831 parameter has the C<SV_NOSTEAL> bit set then the
3832 buffers of temps will not be stolen. C<sv_setsv>
3833 and C<sv_setsv_nomg> are implemented in terms of this function.
3835 You probably want to use one of the assortment of wrappers, such as
3836 C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
3837 C<SvSetMagicSV_nosteal>.
3839 This is the primary function for copying scalars, and most other
3840 copy-ish functions and macros use this underneath.
3842 =for apidoc Amnh||SV_NOSTEAL
3848 S_glob_assign_glob(pTHX_ SV *const dstr, SV *const sstr, const int dtype)
3850 I32 mro_changes = 0; /* 1 = method, 2 = isa, 3 = recursive isa */
3851 HV *old_stash = NULL;
3853 PERL_ARGS_ASSERT_GLOB_ASSIGN_GLOB;
3855 if (dtype != SVt_PVGV && !isGV_with_GP(dstr)) {
3856 const char * const name = GvNAME(sstr);
3857 const STRLEN len = GvNAMELEN(sstr);
3859 if (dtype >= SVt_PV) {
3865 SvUPGRADE(dstr, SVt_PVGV);
3866 (void)SvOK_off(dstr);
3867 isGV_with_GP_on(dstr);
3869 GvSTASH(dstr) = GvSTASH(sstr);
3871 Perl_sv_add_backref(aTHX_ MUTABLE_SV(GvSTASH(dstr)), dstr);
3872 gv_name_set(MUTABLE_GV(dstr), name, len,
3873 GV_ADD | (GvNAMEUTF8(sstr) ? SVf_UTF8 : 0 ));
3874 SvFAKE_on(dstr); /* can coerce to non-glob */
3877 if(GvGP(MUTABLE_GV(sstr))) {
3878 /* If source has method cache entry, clear it */
3880 SvREFCNT_dec(GvCV(sstr));
3881 GvCV_set(sstr, NULL);
3884 /* If source has a real method, then a method is
3887 GvCV((const GV *)sstr) && GvSTASH(dstr) && HvENAME(GvSTASH(dstr))
3893 /* If dest already had a real method, that's a change as well */
3895 !mro_changes && GvGP(MUTABLE_GV(dstr)) && GvCVu((const GV *)dstr)
3896 && GvSTASH(dstr) && HvENAME(GvSTASH(dstr))
3901 /* We don't need to check the name of the destination if it was not a
3902 glob to begin with. */
3903 if(dtype == SVt_PVGV) {
3904 const char * const name = GvNAME((const GV *)dstr);
3905 const STRLEN len = GvNAMELEN(dstr);
3906 if(memEQs(name, len, "ISA")
3907 /* The stash may have been detached from the symbol table, so
3909 && GvSTASH(dstr) && HvENAME(GvSTASH(dstr))
3913 if ((len > 1 && name[len-2] == ':' && name[len-1] == ':')
3914 || (len == 1 && name[0] == ':')) {
3917 /* Set aside the old stash, so we can reset isa caches on
3919 if((old_stash = GvHV(dstr)))
3920 /* Make sure we do not lose it early. */
3921 SvREFCNT_inc_simple_void_NN(
3922 sv_2mortal((SV *)old_stash)
3927 SvREFCNT_inc_simple_void_NN(sv_2mortal(dstr));
3930 /* freeing dstr's GP might free sstr (e.g. *x = $x),
3931 * so temporarily protect it */
3933 SAVEFREESV(SvREFCNT_inc_simple_NN(sstr));
3934 gp_free(MUTABLE_GV(dstr));
3935 GvINTRO_off(dstr); /* one-shot flag */
3936 GvGP_set(dstr, gp_ref(GvGP(sstr)));
3939 if (SvTAINTED(sstr))
3941 if (GvIMPORTED(dstr) != GVf_IMPORTED
3942 && CopSTASH_ne(PL_curcop, GvSTASH(dstr)))
3944 GvIMPORTED_on(dstr);
3947 if(mro_changes == 2) {
3948 if (GvAV((const GV *)sstr)) {
3950 SV * const sref = (SV *)GvAV((const GV *)dstr);
3951 if (SvSMAGICAL(sref) && (mg = mg_find(sref, PERL_MAGIC_isa))) {
3952 if (SvTYPE(mg->mg_obj) != SVt_PVAV) {
3953 AV * const ary = newAV();
3954 av_push(ary, mg->mg_obj); /* takes the refcount */
3955 mg->mg_obj = (SV *)ary;
3957 av_push((AV *)mg->mg_obj, SvREFCNT_inc_simple_NN(dstr));
3959 else sv_magic(sref, dstr, PERL_MAGIC_isa, NULL, 0);
3961 mro_isa_changed_in(GvSTASH(dstr));
3963 else if(mro_changes == 3) {
3964 HV * const stash = GvHV(dstr);
3965 if(old_stash ? (HV *)HvENAME_get(old_stash) : stash)
3971 else if(mro_changes) mro_method_changed_in(GvSTASH(dstr));
3972 if (GvIO(dstr) && dtype == SVt_PVGV) {
3973 DEBUG_o(Perl_deb(aTHX_
3974 "glob_assign_glob clearing PL_stashcache\n"));
3975 /* It's a cache. It will rebuild itself quite happily.
3976 It's a lot of effort to work out exactly which key (or keys)
3977 might be invalidated by the creation of the this file handle.
3979 hv_clear(PL_stashcache);
3985 Perl_gv_setref(pTHX_ SV *const dstr, SV *const sstr)
3987 SV * const sref = SvRV(sstr);
3989 const int intro = GvINTRO(dstr);
3992 const U32 stype = SvTYPE(sref);
3994 PERL_ARGS_ASSERT_GV_SETREF;
3997 GvINTRO_off(dstr); /* one-shot flag */
3998 GvLINE(dstr) = CopLINE(PL_curcop);
3999 GvEGV(dstr) = MUTABLE_GV(dstr);
4004 location = (SV **) &(GvGP(dstr)->gp_cv); /* XXX bypassing GvCV_set */
4005 import_flag = GVf_IMPORTED_CV;
4008 location = (SV **) &GvHV(dstr);
4009 import_flag = GVf_IMPORTED_HV;
4012 location = (SV **) &GvAV(dstr);
4013 import_flag = GVf_IMPORTED_AV;
4016 location = (SV **) &GvIOp(dstr);
4019 location = (SV **) &GvFORM(dstr);
4022 location = &GvSV(dstr);
4023 import_flag = GVf_IMPORTED_SV;
4026 if (stype == SVt_PVCV) {
4027 /*if (GvCVGEN(dstr) && (GvCV(dstr) != (const CV *)sref || GvCVGEN(dstr))) {*/
4028 if (GvCVGEN(dstr)) {
4029 SvREFCNT_dec(GvCV(dstr));
4030 GvCV_set(dstr, NULL);
4031 GvCVGEN(dstr) = 0; /* Switch off cacheness. */
4034 /* SAVEt_GVSLOT takes more room on the savestack and has more
4035 overhead in leave_scope than SAVEt_GENERIC_SV. But for CVs
4036 leave_scope needs access to the GV so it can reset method
4037 caches. We must use SAVEt_GVSLOT whenever the type is
4038 SVt_PVCV, even if the stash is anonymous, as the stash may
4039 gain a name somehow before leave_scope. */
4040 if (stype == SVt_PVCV) {
4041 /* There is no save_pushptrptrptr. Creating it for this
4042 one call site would be overkill. So inline the ss add
4046 SS_ADD_PTR(location);
4047 SS_ADD_PTR(SvREFCNT_inc(*location));
4048 SS_ADD_UV(SAVEt_GVSLOT);
4051 else SAVEGENERICSV(*location);
4054 if (stype == SVt_PVCV && (*location != sref || GvCVGEN(dstr))) {
4055 CV* const cv = MUTABLE_CV(*location);
4057 if (!GvCVGEN((const GV *)dstr) &&
4058 (CvROOT(cv) || CvXSUB(cv)) &&
4059 /* redundant check that avoids creating the extra SV
4060 most of the time: */
4061 (CvCONST(cv) || ckWARN(WARN_REDEFINE)))
4063 SV * const new_const_sv =
4064 CvCONST((const CV *)sref)
4065 ? cv_const_sv((const CV *)sref)
4067 HV * const stash = GvSTASH((const GV *)dstr);
4068 report_redefined_cv(
4071 ? Perl_newSVpvf(aTHX_
4072 "%" HEKf "::%" HEKf,
4073 HEKfARG(HvNAME_HEK(stash)),
4074 HEKfARG(GvENAME_HEK(MUTABLE_GV(dstr))))
4075 : Perl_newSVpvf(aTHX_
4077 HEKfARG(GvENAME_HEK(MUTABLE_GV(dstr))))
4080 CvCONST((const CV *)sref) ? &new_const_sv : NULL
4084 cv_ckproto_len_flags(cv, (const GV *)dstr,
4085 SvPOK(sref) ? CvPROTO(sref) : NULL,
4086 SvPOK(sref) ? CvPROTOLEN(sref) : 0,
4087 SvPOK(sref) ? SvUTF8(sref) : 0);
4089 GvCVGEN(dstr) = 0; /* Switch off cacheness. */
4090 GvASSUMECV_on(dstr);
4091 if(GvSTASH(dstr)) { /* sub foo { 1 } sub bar { 2 } *bar = \&foo */
4092 if (intro && GvREFCNT(dstr) > 1) {
4093 /* temporary remove extra savestack's ref */
4095 gv_method_changed(dstr);
4098 else gv_method_changed(dstr);
4101 *location = SvREFCNT_inc_simple_NN(sref);
4102 if (import_flag && !(GvFLAGS(dstr) & import_flag)
4103 && CopSTASH_ne(PL_curcop, GvSTASH(dstr))) {
4104 GvFLAGS(dstr) |= import_flag;
4107 if (stype == SVt_PVHV) {
4108 const char * const name = GvNAME((GV*)dstr);
4109 const STRLEN len = GvNAMELEN(dstr);
4112 (len > 1 && name[len-2] == ':' && name[len-1] == ':')
4113 || (len == 1 && name[0] == ':')
4115 && (!dref || HvENAME_get(dref))
4118 (HV *)sref, (HV *)dref,
4124 stype == SVt_PVAV && sref != dref
4125 && memEQs(GvNAME((GV*)dstr), GvNAMELEN((GV*)dstr), "ISA")
4126 /* The stash may have been detached from the symbol table, so
4127 check its name before doing anything. */
4128 && GvSTASH(dstr) && HvENAME(GvSTASH(dstr))
4131 MAGIC * const omg = dref && SvSMAGICAL(dref)
4132 ? mg_find(dref, PERL_MAGIC_isa)
4134 if (SvSMAGICAL(sref) && (mg = mg_find(sref, PERL_MAGIC_isa))) {
4135 if (SvTYPE(mg->mg_obj) != SVt_PVAV) {
4136 AV * const ary = newAV();
4137 av_push(ary, mg->mg_obj); /* takes the refcount */
4138 mg->mg_obj = (SV *)ary;
4141 if (SvTYPE(omg->mg_obj) == SVt_PVAV) {
4142 SV **svp = AvARRAY((AV *)omg->mg_obj);
4143 I32 items = AvFILLp((AV *)omg->mg_obj) + 1;
4147 SvREFCNT_inc_simple_NN(*svp++)
4153 SvREFCNT_inc_simple_NN(omg->mg_obj)
4157 av_push((AV *)mg->mg_obj,SvREFCNT_inc_simple_NN(dstr));
4163 sref, omg ? omg->mg_obj : dstr, PERL_MAGIC_isa, NULL, 0
4165 for (i = 0; i <= AvFILL(sref); ++i) {
4166 SV **elem = av_fetch ((AV*)sref, i, 0);
4169 *elem, sref, PERL_MAGIC_isaelem, NULL, i
4173 mg = mg_find(sref, PERL_MAGIC_isa);
4175 /* Since the *ISA assignment could have affected more than
4176 one stash, don't call mro_isa_changed_in directly, but let
4177 magic_clearisa do it for us, as it already has the logic for
4178 dealing with globs vs arrays of globs. */
4180 Perl_magic_clearisa(aTHX_ NULL, mg);
4182 else if (stype == SVt_PVIO) {
4183 DEBUG_o(Perl_deb(aTHX_ "gv_setref clearing PL_stashcache\n"));
4184 /* It's a cache. It will rebuild itself quite happily.
4185 It's a lot of effort to work out exactly which key (or keys)
4186 might be invalidated by the creation of the this file handle.
4188 hv_clear(PL_stashcache);
4192 if (!intro) SvREFCNT_dec(dref);
4193 if (SvTAINTED(sstr))
4201 #ifdef PERL_DEBUG_READONLY_COW
4202 # include <sys/mman.h>
4204 # ifndef PERL_MEMORY_DEBUG_HEADER_SIZE
4205 # define PERL_MEMORY_DEBUG_HEADER_SIZE 0
4209 Perl_sv_buf_to_ro(pTHX_ SV *sv)
4211 struct perl_memory_debug_header * const header =
4212 (struct perl_memory_debug_header *)(SvPVX(sv)-PERL_MEMORY_DEBUG_HEADER_SIZE);
4213 const MEM_SIZE len = header->size;
4214 PERL_ARGS_ASSERT_SV_BUF_TO_RO;
4215 # ifdef PERL_TRACK_MEMPOOL
4216 if (!header->readonly) header->readonly = 1;
4218 if (mprotect(header, len, PROT_READ))
4219 Perl_warn(aTHX_ "mprotect RW for COW string %p %lu failed with %d",
4220 header, len, errno);
4224 S_sv_buf_to_rw(pTHX_ SV *sv)
4226 struct perl_memory_debug_header * const header =
4227 (struct perl_memory_debug_header *)(SvPVX(sv)-PERL_MEMORY_DEBUG_HEADER_SIZE);
4228 const MEM_SIZE len = header->size;
4229 PERL_ARGS_ASSERT_SV_BUF_TO_RW;
4230 if (mprotect(header, len, PROT_READ|PROT_WRITE))
4231 Perl_warn(aTHX_ "mprotect for COW string %p %lu failed with %d",
4232 header, len, errno);
4233 # ifdef PERL_TRACK_MEMPOOL
4234 header->readonly = 0;
4239 # define sv_buf_to_ro(sv) NOOP
4240 # define sv_buf_to_rw(sv) NOOP
4244 Perl_sv_setsv_flags(pTHX_ SV *dstr, SV* sstr, const I32 flags)
4249 unsigned int both_type;
4251 PERL_ARGS_ASSERT_SV_SETSV_FLAGS;
4253 if (UNLIKELY( sstr == dstr ))
4256 if (UNLIKELY( !sstr ))
4257 sstr = &PL_sv_undef;
4259 stype = SvTYPE(sstr);
4260 dtype = SvTYPE(dstr);
4261 both_type = (stype | dtype);
4263 /* with these values, we can check that both SVs are NULL/IV (and not
4264 * freed) just by testing the or'ed types */
4265 STATIC_ASSERT_STMT(SVt_NULL == 0);
4266 STATIC_ASSERT_STMT(SVt_IV == 1);
4267 if (both_type <= 1) {
4268 /* both src and dst are UNDEF/IV/RV, so we can do a lot of
4274 /* minimal subset of SV_CHECK_THINKFIRST_COW_DROP(dstr) */
4275 if (SvREADONLY(dstr))
4276 Perl_croak_no_modify();
4278 if (SvWEAKREF(dstr))
4279 sv_unref_flags(dstr, 0);
4281 old_rv = SvRV(dstr);
4284 assert(!SvGMAGICAL(sstr));
4285 assert(!SvGMAGICAL(dstr));
4287 sflags = SvFLAGS(sstr);
4288 if (sflags & (SVf_IOK|SVf_ROK)) {
4289 SET_SVANY_FOR_BODYLESS_IV(dstr);
4290 new_dflags = SVt_IV;
4292 if (sflags & SVf_ROK) {
4293 dstr->sv_u.svu_rv = SvREFCNT_inc(SvRV(sstr));
4294 new_dflags |= SVf_ROK;
4297 /* both src and dst are <= SVt_IV, so sv_any points to the
4298 * head; so access the head directly
4300 assert( &(sstr->sv_u.svu_iv)
4301 == &(((XPVIV*) SvANY(sstr))->xiv_iv));
4302 assert( &(dstr->sv_u.svu_iv)
4303 == &(((XPVIV*) SvANY(dstr))->xiv_iv));
4304 dstr->sv_u.svu_iv = sstr->sv_u.svu_iv;
4305 new_dflags |= (SVf_IOK|SVp_IOK|(sflags & SVf_IVisUV));
4309 new_dflags = dtype; /* turn off everything except the type */
4311 SvFLAGS(dstr) = new_dflags;
4312 SvREFCNT_dec(old_rv);
4317 if (UNLIKELY(both_type == SVTYPEMASK)) {
4318 if (SvIS_FREED(dstr)) {
4319 Perl_croak(aTHX_ "panic: attempt to copy value %" SVf
4320 " to a freed scalar %p", SVfARG(sstr), (void *)dstr);
4322 if (SvIS_FREED(sstr)) {
4323 Perl_croak(aTHX_ "panic: attempt to copy freed scalar %p to %p",
4324 (void*)sstr, (void*)dstr);
4330 SV_CHECK_THINKFIRST_COW_DROP(dstr);
4331 dtype = SvTYPE(dstr); /* THINKFIRST may have changed type */
4333 /* There's a lot of redundancy below but we're going for speed here */
4338 if (LIKELY( dtype != SVt_PVGV && dtype != SVt_PVLV )) {
4339 (void)SvOK_off(dstr);
4347 /* For performance, we inline promoting to type SVt_IV. */
4348 /* We're starting from SVt_NULL, so provided that define is
4349 * actual 0, we don't have to unset any SV type flags
4350 * to promote to SVt_IV. */
4351 STATIC_ASSERT_STMT(SVt_NULL == 0);
4352 SET_SVANY_FOR_BODYLESS_IV(dstr);
4353 SvFLAGS(dstr) |= SVt_IV;
4357 sv_upgrade(dstr, SVt_PVIV);
4361 goto end_of_first_switch;
4363 (void)SvIOK_only(dstr);
4364 SvIV_set(dstr, SvIVX(sstr));
4367 /* SvTAINTED can only be true if the SV has taint magic, which in
4368 turn means that the SV type is PVMG (or greater). This is the
4369 case statement for SVt_IV, so this cannot be true (whatever gcov
4371 assert(!SvTAINTED(sstr));
4376 if (dtype < SVt_PV && dtype != SVt_IV)
4377 sv_upgrade(dstr, SVt_IV);
4381 if (LIKELY( SvNOK(sstr) )) {
4385 sv_upgrade(dstr, SVt_NV);
4389 sv_upgrade(dstr, SVt_PVNV);
4393 goto end_of_first_switch;
4395 SvNV_set(dstr, SvNVX(sstr));
4396 (void)SvNOK_only(dstr);
4397 /* SvTAINTED can only be true if the SV has taint magic, which in
4398 turn means that the SV type is PVMG (or greater). This is the
4399 case statement for SVt_NV, so this cannot be true (whatever gcov
4401 assert(!SvTAINTED(sstr));
4408 sv_upgrade(dstr, SVt_PV);
4411 if (dtype < SVt_PVIV)
4412 sv_upgrade(dstr, SVt_PVIV);
4415 if (dtype < SVt_PVNV)
4416 sv_upgrade(dstr, SVt_PVNV);
4420 invlist_clone(sstr, dstr);
4424 const char * const type = sv_reftype(sstr,0);
4426 /* diag_listed_as: Bizarre copy of %s */
4427 Perl_croak(aTHX_ "Bizarre copy of %s in %s", type, OP_DESC(PL_op));
4429 Perl_croak(aTHX_ "Bizarre copy of %s", type);
4431 NOT_REACHED; /* NOTREACHED */
4435 if (dtype < SVt_REGEXP)
4436 sv_upgrade(dstr, SVt_REGEXP);
4442 if (SvGMAGICAL(sstr) && (flags & SV_GMAGIC)) {
4444 if (SvTYPE(sstr) != stype)
4445 stype = SvTYPE(sstr);
4447 if (isGV_with_GP(sstr) && dtype <= SVt_PVLV) {
4448 glob_assign_glob(dstr, sstr, dtype);
4451 if (stype == SVt_PVLV)
4453 if (isREGEXP(sstr)) goto upgregexp;
4454 SvUPGRADE(dstr, SVt_PVNV);
4457 SvUPGRADE(dstr, (svtype)stype);
4459 end_of_first_switch:
4461 /* dstr may have been upgraded. */
4462 dtype = SvTYPE(dstr);
4463 sflags = SvFLAGS(sstr);
4465 if (UNLIKELY( dtype == SVt_PVCV )) {
4466 /* Assigning to a subroutine sets the prototype. */
4469 const char *const ptr = SvPV_const(sstr, len);
4471 SvGROW(dstr, len + 1);
4472 Copy(ptr, SvPVX(dstr), len + 1, char);
4473 SvCUR_set(dstr, len);
4475 SvFLAGS(dstr) |= sflags & SVf_UTF8;
4476 CvAUTOLOAD_off(dstr);
4481 else if (UNLIKELY(dtype == SVt_PVAV || dtype == SVt_PVHV
4482 || dtype == SVt_PVFM))
4484 const char * const type = sv_reftype(dstr,0);
4486 /* diag_listed_as: Cannot copy to %s */
4487 Perl_croak(aTHX_ "Cannot copy to %s in %s", type, OP_DESC(PL_op));
4489 Perl_croak(aTHX_ "Cannot copy to %s", type);
4490 } else if (sflags & SVf_ROK) {
4491 if (isGV_with_GP(dstr)
4492 && SvTYPE(SvRV(sstr)) == SVt_PVGV && isGV_with_GP(SvRV(sstr))) {
4495 if (GvIMPORTED(dstr) != GVf_IMPORTED
4496 && CopSTASH_ne(PL_curcop, GvSTASH(dstr)))
4498 GvIMPORTED_on(dstr);
4503 glob_assign_glob(dstr, sstr, dtype);
4507 if (dtype >= SVt_PV) {
4508 if (isGV_with_GP(dstr)) {
4509 gv_setref(dstr, sstr);
4512 if (SvPVX_const(dstr)) {
4518 (void)SvOK_off(dstr);
4519 SvRV_set(dstr, SvREFCNT_inc(SvRV(sstr)));
4520 SvFLAGS(dstr) |= sflags & SVf_ROK;
4521 assert(!(sflags & SVp_NOK));
4522 assert(!(sflags & SVp_IOK));
4523 assert(!(sflags & SVf_NOK));
4524 assert(!(sflags & SVf_IOK));
4526 else if (isGV_with_GP(dstr)) {
4527 if (!(sflags & SVf_OK)) {
4528 Perl_ck_warner(aTHX_ packWARN(WARN_MISC),
4529 "Undefined value assigned to typeglob");
4532 GV *gv = gv_fetchsv_nomg(sstr, GV_ADD, SVt_PVGV);
4533 if (dstr != (const SV *)gv) {
4534 const char * const name = GvNAME((const GV *)dstr);
4535 const STRLEN len = GvNAMELEN(dstr);
4536 HV *old_stash = NULL;
4537 bool reset_isa = FALSE;
4538 if ((len > 1 && name[len-2] == ':' && name[len-1] == ':')
4539 || (len == 1 && name[0] == ':')) {
4540 /* Set aside the old stash, so we can reset isa caches
4541 on its subclasses. */
4542 if((old_stash = GvHV(dstr))) {
4543 /* Make sure we do not lose it early. */
4544 SvREFCNT_inc_simple_void_NN(
4545 sv_2mortal((SV *)old_stash)
4552 SvREFCNT_inc_simple_void_NN(sv_2mortal(dstr));
4553 gp_free(MUTABLE_GV(dstr));
4555 GvGP_set(dstr, gp_ref(GvGP(gv)));
4558 HV * const stash = GvHV(dstr);
4560 old_stash ? (HV *)HvENAME_get(old_stash) : stash
4570 else if ((dtype == SVt_REGEXP || dtype == SVt_PVLV)
4571 && (stype == SVt_REGEXP || isREGEXP(sstr))) {
4572 reg_temp_copy((REGEXP*)dstr, (REGEXP*)sstr);
4574 else if (sflags & SVp_POK) {
4575 const STRLEN cur = SvCUR(sstr);
4576 const STRLEN len = SvLEN(sstr);
4579 * We have three basic ways to copy the string:
4585 * Which we choose is based on various factors. The following
4586 * things are listed in order of speed, fastest to slowest:
4588 * - Copying a short string
4589 * - Copy-on-write bookkeeping
4591 * - Copying a long string
4593 * We swipe the string (steal the string buffer) if the SV on the
4594 * rhs is about to be freed anyway (TEMP and refcnt==1). This is a
4595 * big win on long strings. It should be a win on short strings if
4596 * SvPVX_const(dstr) has to be allocated. If not, it should not
4597 * slow things down, as SvPVX_const(sstr) would have been freed
4600 * We also steal the buffer from a PADTMP (operator target) if it
4601 * is ‘long enough’. For short strings, a swipe does not help
4602 * here, as it causes more malloc calls the next time the target
4603 * is used. Benchmarks show that even if SvPVX_const(dstr) has to
4604 * be allocated it is still not worth swiping PADTMPs for short
4605 * strings, as the savings here are small.
4607 * If swiping is not an option, then we see whether it is
4608 * worth using copy-on-write. If the lhs already has a buf-
4609 * fer big enough and the string is short, we skip it and fall back
4610 * to method 3, since memcpy is faster for short strings than the
4611 * later bookkeeping overhead that copy-on-write entails.
4613 * If the rhs is not a copy-on-write string yet, then we also
4614 * consider whether the buffer is too large relative to the string
4615 * it holds. Some operations such as readline allocate a large
4616 * buffer in the expectation of reusing it. But turning such into
4617 * a COW buffer is counter-productive because it increases memory
4618 * usage by making readline allocate a new large buffer the sec-
4619 * ond time round. So, if the buffer is too large, again, we use
4622 * Finally, if there is no buffer on the left, or the buffer is too
4623 * small, then we use copy-on-write and make both SVs share the
4628 /* Whichever path we take through the next code, we want this true,
4629 and doing it now facilitates the COW check. */
4630 (void)SvPOK_only(dstr);
4634 /* slated for free anyway (and not COW)? */
4635 (sflags & (SVs_TEMP|SVf_IsCOW)) == SVs_TEMP
4636 /* or a swipable TARG */
4638 (SVs_PADTMP|SVf_READONLY|SVf_PROTECT|SVf_IsCOW))
4640 /* whose buffer is worth stealing */
4641 && CHECK_COWBUF_THRESHOLD(cur,len)
4644 !(sflags & SVf_OOK) && /* and not involved in OOK hack? */
4645 (!(flags & SV_NOSTEAL)) &&
4646 /* and we're allowed to steal temps */
4647 SvREFCNT(sstr) == 1 &&