3 * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
4 * 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by Larry Wall
7 * You may distribute under the terms of either the GNU General Public
8 * License or the Artistic License, as specified in the README file.
13 * 'I wonder what the Entish is for "yes" and "no",' he thought.
16 * [p.480 of _The Lord of the Rings_, III/iv: "Treebeard"]
22 * This file contains the code that creates, manipulates and destroys
23 * scalar values (SVs). The other types (AV, HV, GV, etc.) reuse the
24 * structure of an SV, so their creation and destruction is handled
25 * here; higher-level functions are in av.c, hv.c, and so on. Opcode
26 * level functions (eg. substr, split, join) for each of the types are
39 /* Missing proto on LynxOS */
40 char *gconvert(double, int, int, char *);
44 # define SNPRINTF_G(nv, buffer, size, ndig) \
45 quadmath_snprintf(buffer, size, "%.*Qg", (int)ndig, (NV)(nv))
47 # define SNPRINTF_G(nv, buffer, size, ndig) \
48 PERL_UNUSED_RESULT(Gconvert((NV)(nv), (int)ndig, 0, buffer))
51 #ifndef SV_COW_THRESHOLD
52 # define SV_COW_THRESHOLD 0 /* COW iff len > K */
54 #ifndef SV_COWBUF_THRESHOLD
55 # define SV_COWBUF_THRESHOLD 1250 /* COW iff len > K */
57 #ifndef SV_COW_MAX_WASTE_THRESHOLD
58 # define SV_COW_MAX_WASTE_THRESHOLD 80 /* COW iff (len - cur) < K */
60 #ifndef SV_COWBUF_WASTE_THRESHOLD
61 # define SV_COWBUF_WASTE_THRESHOLD 80 /* COW iff (len - cur) < K */
63 #ifndef SV_COW_MAX_WASTE_FACTOR_THRESHOLD
64 # define SV_COW_MAX_WASTE_FACTOR_THRESHOLD 2 /* COW iff len < (cur * K) */
66 #ifndef SV_COWBUF_WASTE_FACTOR_THRESHOLD
67 # define SV_COWBUF_WASTE_FACTOR_THRESHOLD 2 /* COW iff len < (cur * K) */
69 /* Work around compiler warnings about unsigned >= THRESHOLD when thres-
72 # define GE_COW_THRESHOLD(cur) ((cur) >= SV_COW_THRESHOLD)
74 # define GE_COW_THRESHOLD(cur) 1
76 #if SV_COWBUF_THRESHOLD
77 # define GE_COWBUF_THRESHOLD(cur) ((cur) >= SV_COWBUF_THRESHOLD)
79 # define GE_COWBUF_THRESHOLD(cur) 1
81 #if SV_COW_MAX_WASTE_THRESHOLD
82 # define GE_COW_MAX_WASTE_THRESHOLD(cur,len) (((len)-(cur)) < SV_COW_MAX_WASTE_THRESHOLD)
84 # define GE_COW_MAX_WASTE_THRESHOLD(cur,len) 1
86 #if SV_COWBUF_WASTE_THRESHOLD
87 # define GE_COWBUF_WASTE_THRESHOLD(cur,len) (((len)-(cur)) < SV_COWBUF_WASTE_THRESHOLD)
89 # define GE_COWBUF_WASTE_THRESHOLD(cur,len) 1
91 #if SV_COW_MAX_WASTE_FACTOR_THRESHOLD
92 # define GE_COW_MAX_WASTE_FACTOR_THRESHOLD(cur,len) ((len) < SV_COW_MAX_WASTE_FACTOR_THRESHOLD * (cur))
94 # define GE_COW_MAX_WASTE_FACTOR_THRESHOLD(cur,len) 1
96 #if SV_COWBUF_WASTE_FACTOR_THRESHOLD
97 # define GE_COWBUF_WASTE_FACTOR_THRESHOLD(cur,len) ((len) < SV_COWBUF_WASTE_FACTOR_THRESHOLD * (cur))
99 # define GE_COWBUF_WASTE_FACTOR_THRESHOLD(cur,len) 1
102 #define CHECK_COW_THRESHOLD(cur,len) (\
103 GE_COW_THRESHOLD((cur)) && \
104 GE_COW_MAX_WASTE_THRESHOLD((cur),(len)) && \
105 GE_COW_MAX_WASTE_FACTOR_THRESHOLD((cur),(len)) \
107 #define CHECK_COWBUF_THRESHOLD(cur,len) (\
108 GE_COWBUF_THRESHOLD((cur)) && \
109 GE_COWBUF_WASTE_THRESHOLD((cur),(len)) && \
110 GE_COWBUF_WASTE_FACTOR_THRESHOLD((cur),(len)) \
113 #ifdef PERL_UTF8_CACHE_ASSERT
114 /* if adding more checks watch out for the following tests:
115 * t/op/index.t t/op/length.t t/op/pat.t t/op/substr.t
116 * lib/utf8.t lib/Unicode/Collate/t/index.t
119 # define ASSERT_UTF8_CACHE(cache) \
120 STMT_START { if (cache) { assert((cache)[0] <= (cache)[1]); \
121 assert((cache)[2] <= (cache)[3]); \
122 assert((cache)[3] <= (cache)[1]);} \
125 # define ASSERT_UTF8_CACHE(cache) NOOP
128 static const char S_destroy[] = "DESTROY";
129 #define S_destroy_len (sizeof(S_destroy)-1)
131 /* ============================================================================
133 =head1 Allocation and deallocation of SVs.
135 An SV (or AV, HV, etc.) is allocated in two parts: the head (struct
136 sv, av, hv...) contains type and reference count information, and for
137 many types, a pointer to the body (struct xrv, xpv, xpviv...), which
138 contains fields specific to each type. Some types store all they need
139 in the head, so don't have a body.
141 In all but the most memory-paranoid configurations (ex: PURIFY), heads
142 and bodies are allocated out of arenas, which by default are
143 approximately 4K chunks of memory parcelled up into N heads or bodies.
144 Sv-bodies are allocated by their sv-type, guaranteeing size
145 consistency needed to allocate safely from arrays.
147 For SV-heads, the first slot in each arena is reserved, and holds a
148 link to the next arena, some flags, and a note of the number of slots.
149 Snaked through each arena chain is a linked list of free items; when
150 this becomes empty, an extra arena is allocated and divided up into N
151 items which are threaded into the free list.
153 SV-bodies are similar, but they use arena-sets by default, which
154 separate the link and info from the arena itself, and reclaim the 1st
155 slot in the arena. SV-bodies are further described later.
157 The following global variables are associated with arenas:
159 PL_sv_arenaroot pointer to list of SV arenas
160 PL_sv_root pointer to list of free SV structures
162 PL_body_arenas head of linked-list of body arenas
163 PL_body_roots[] array of pointers to list of free bodies of svtype
164 arrays are indexed by the svtype needed
166 A few special SV heads are not allocated from an arena, but are
167 instead directly created in the interpreter structure, eg PL_sv_undef.
168 The size of arenas can be changed from the default by setting
169 PERL_ARENA_SIZE appropriately at compile time.
171 The SV arena serves the secondary purpose of allowing still-live SVs
172 to be located and destroyed during final cleanup.
174 At the lowest level, the macros new_SV() and del_SV() grab and free
175 an SV head. (If debugging with -DD, del_SV() calls the function S_del_sv()
176 to return the SV to the free list with error checking.) new_SV() calls
177 more_sv() / sv_add_arena() to add an extra arena if the free list is empty.
178 SVs in the free list have their SvTYPE field set to all ones.
180 At the time of very final cleanup, sv_free_arenas() is called from
181 perl_destruct() to physically free all the arenas allocated since the
182 start of the interpreter.
184 The function visit() scans the SV arenas list, and calls a specified
185 function for each SV it finds which is still live - ie which has an SvTYPE
186 other than all 1's, and a non-zero SvREFCNT. visit() is used by the
187 following functions (specified as [function that calls visit()] / [function
188 called by visit() for each SV]):
190 sv_report_used() / do_report_used()
191 dump all remaining SVs (debugging aid)
193 sv_clean_objs() / do_clean_objs(),do_clean_named_objs(),
194 do_clean_named_io_objs(),do_curse()
195 Attempt to free all objects pointed to by RVs,
196 try to do the same for all objects indir-
197 ectly referenced by typeglobs too, and
198 then do a final sweep, cursing any
199 objects that remain. Called once from
200 perl_destruct(), prior to calling sv_clean_all()
203 sv_clean_all() / do_clean_all()
204 SvREFCNT_dec(sv) each remaining SV, possibly
205 triggering an sv_free(). It also sets the
206 SVf_BREAK flag on the SV to indicate that the
207 refcnt has been artificially lowered, and thus
208 stopping sv_free() from giving spurious warnings
209 about SVs which unexpectedly have a refcnt
210 of zero. called repeatedly from perl_destruct()
211 until there are no SVs left.
213 =head2 Arena allocator API Summary
215 Private API to rest of sv.c
219 new_XPVNV(), del_XPVGV(),
224 sv_report_used(), sv_clean_objs(), sv_clean_all(), sv_free_arenas()
228 * ========================================================================= */
231 * "A time to plant, and a time to uproot what was planted..."
235 # define MEM_LOG_NEW_SV(sv, file, line, func) \
236 Perl_mem_log_new_sv(sv, file, line, func)
237 # define MEM_LOG_DEL_SV(sv, file, line, func) \
238 Perl_mem_log_del_sv(sv, file, line, func)
240 # define MEM_LOG_NEW_SV(sv, file, line, func) NOOP
241 # define MEM_LOG_DEL_SV(sv, file, line, func) NOOP
244 #ifdef DEBUG_LEAKING_SCALARS
245 # define FREE_SV_DEBUG_FILE(sv) STMT_START { \
246 if ((sv)->sv_debug_file) PerlMemShared_free((sv)->sv_debug_file); \
248 # define DEBUG_SV_SERIAL(sv) \
249 DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%" UVxf ": (%05ld) del_SV\n", \
250 PTR2UV(sv), (long)(sv)->sv_debug_serial))
252 # define FREE_SV_DEBUG_FILE(sv)
253 # define DEBUG_SV_SERIAL(sv) NOOP
257 # define SvARENA_CHAIN(sv) ((sv)->sv_u.svu_rv)
258 # define SvARENA_CHAIN_SET(sv,val) (sv)->sv_u.svu_rv = MUTABLE_SV((val))
259 /* Whilst I'd love to do this, it seems that things like to check on
261 # define POISON_SV_HEAD(sv) PoisonNew(sv, 1, struct STRUCT_SV)
263 # define POISON_SV_HEAD(sv) PoisonNew(&SvANY(sv), 1, void *), \
264 PoisonNew(&SvREFCNT(sv), 1, U32)
266 # define SvARENA_CHAIN(sv) SvANY(sv)
267 # define SvARENA_CHAIN_SET(sv,val) SvANY(sv) = (void *)(val)
268 # define POISON_SV_HEAD(sv)
271 /* Mark an SV head as unused, and add to free list.
273 * If SVf_BREAK is set, skip adding it to the free list, as this SV had
274 * its refcount artificially decremented during global destruction, so
275 * there may be dangling pointers to it. The last thing we want in that
276 * case is for it to be reused. */
278 #define plant_SV(p) \
280 const U32 old_flags = SvFLAGS(p); \
281 MEM_LOG_DEL_SV(p, __FILE__, __LINE__, FUNCTION__); \
282 DEBUG_SV_SERIAL(p); \
283 FREE_SV_DEBUG_FILE(p); \
285 SvFLAGS(p) = SVTYPEMASK; \
286 if (!(old_flags & SVf_BREAK)) { \
287 SvARENA_CHAIN_SET(p, PL_sv_root); \
293 #define uproot_SV(p) \
296 PL_sv_root = MUTABLE_SV(SvARENA_CHAIN(p)); \
301 /* make some more SVs by adding another arena */
307 char *chunk; /* must use New here to match call to */
308 Newx(chunk,PERL_ARENA_SIZE,char); /* Safefree() in sv_free_arenas() */
309 sv_add_arena(chunk, PERL_ARENA_SIZE, 0);
314 /* new_SV(): return a new, empty SV head */
316 #ifdef DEBUG_LEAKING_SCALARS
317 /* provide a real function for a debugger to play with */
319 S_new_SV(pTHX_ const char *file, int line, const char *func)
326 sv = S_more_sv(aTHX);
330 sv->sv_debug_optype = PL_op ? PL_op->op_type : 0;
331 sv->sv_debug_line = (U16) (PL_parser && PL_parser->copline != NOLINE
337 sv->sv_debug_inpad = 0;
338 sv->sv_debug_parent = NULL;
339 sv->sv_debug_file = PL_curcop ? savesharedpv(CopFILE(PL_curcop)): NULL;
341 sv->sv_debug_serial = PL_sv_serial++;
343 MEM_LOG_NEW_SV(sv, file, line, func);
344 DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%" UVxf ": (%05ld) new_SV (from %s:%d [%s])\n",
345 PTR2UV(sv), (long)sv->sv_debug_serial, file, line, func));
349 # define new_SV(p) (p)=S_new_SV(aTHX_ __FILE__, __LINE__, FUNCTION__)
357 (p) = S_more_sv(aTHX); \
361 MEM_LOG_NEW_SV(p, __FILE__, __LINE__, FUNCTION__); \
366 /* del_SV(): return an empty SV head to the free list */
379 S_del_sv(pTHX_ SV *p)
381 PERL_ARGS_ASSERT_DEL_SV;
386 for (sva = PL_sv_arenaroot; sva; sva = MUTABLE_SV(SvANY(sva))) {
387 const SV * const sv = sva + 1;
388 const SV * const svend = &sva[SvREFCNT(sva)];
389 if (p >= sv && p < svend) {
395 Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL),
396 "Attempt to free non-arena SV: 0x%" UVxf
397 pTHX__FORMAT, PTR2UV(p) pTHX__VALUE);
404 #else /* ! DEBUGGING */
406 #define del_SV(p) plant_SV(p)
408 #endif /* DEBUGGING */
412 =head1 SV Manipulation Functions
414 =for apidoc sv_add_arena
416 Given a chunk of memory, link it to the head of the list of arenas,
417 and split it into a list of free SVs.
423 S_sv_add_arena(pTHX_ char *const ptr, const U32 size, const U32 flags)
425 SV *const sva = MUTABLE_SV(ptr);
429 PERL_ARGS_ASSERT_SV_ADD_ARENA;
431 /* The first SV in an arena isn't an SV. */
432 SvANY(sva) = (void *) PL_sv_arenaroot; /* ptr to next arena */
433 SvREFCNT(sva) = size / sizeof(SV); /* number of SV slots */
434 SvFLAGS(sva) = flags; /* FAKE if not to be freed */
436 PL_sv_arenaroot = sva;
437 PL_sv_root = sva + 1;
439 svend = &sva[SvREFCNT(sva) - 1];
442 SvARENA_CHAIN_SET(sv, (sv + 1));
446 /* Must always set typemask because it's always checked in on cleanup
447 when the arenas are walked looking for objects. */
448 SvFLAGS(sv) = SVTYPEMASK;
451 SvARENA_CHAIN_SET(sv, 0);
455 SvFLAGS(sv) = SVTYPEMASK;
458 /* visit(): call the named function for each non-free SV in the arenas
459 * whose flags field matches the flags/mask args. */
462 S_visit(pTHX_ SVFUNC_t f, const U32 flags, const U32 mask)
467 PERL_ARGS_ASSERT_VISIT;
469 for (sva = PL_sv_arenaroot; sva; sva = MUTABLE_SV(SvANY(sva))) {
470 const SV * const svend = &sva[SvREFCNT(sva)];
472 for (sv = sva + 1; sv < svend; ++sv) {
473 if (SvTYPE(sv) != (svtype)SVTYPEMASK
474 && (sv->sv_flags & mask) == flags
487 /* called by sv_report_used() for each live SV */
490 do_report_used(pTHX_ SV *const sv)
492 if (SvTYPE(sv) != (svtype)SVTYPEMASK) {
493 PerlIO_printf(Perl_debug_log, "****\n");
500 =for apidoc sv_report_used
502 Dump the contents of all SVs not yet freed (debugging aid).
508 Perl_sv_report_used(pTHX)
511 visit(do_report_used, 0, 0);
517 /* called by sv_clean_objs() for each live SV */
520 do_clean_objs(pTHX_ SV *const ref)
524 SV * const target = SvRV(ref);
525 if (SvOBJECT(target)) {
526 DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning object ref:\n "), sv_dump(ref)));
527 if (SvWEAKREF(ref)) {
528 sv_del_backref(target, ref);
534 SvREFCNT_dec_NN(target);
541 /* clear any slots in a GV which hold objects - except IO;
542 * called by sv_clean_objs() for each live GV */
545 do_clean_named_objs(pTHX_ SV *const sv)
548 assert(SvTYPE(sv) == SVt_PVGV);
549 assert(isGV_with_GP(sv));
553 /* freeing GP entries may indirectly free the current GV;
554 * hold onto it while we mess with the GP slots */
557 if ( ((obj = GvSV(sv) )) && SvOBJECT(obj)) {
558 DEBUG_D((PerlIO_printf(Perl_debug_log,
559 "Cleaning named glob SV object:\n "), sv_dump(obj)));
561 SvREFCNT_dec_NN(obj);
563 if ( ((obj = MUTABLE_SV(GvAV(sv)) )) && SvOBJECT(obj)) {
564 DEBUG_D((PerlIO_printf(Perl_debug_log,
565 "Cleaning named glob AV object:\n "), sv_dump(obj)));
567 SvREFCNT_dec_NN(obj);
569 if ( ((obj = MUTABLE_SV(GvHV(sv)) )) && SvOBJECT(obj)) {
570 DEBUG_D((PerlIO_printf(Perl_debug_log,
571 "Cleaning named glob HV object:\n "), sv_dump(obj)));
573 SvREFCNT_dec_NN(obj);
575 if ( ((obj = MUTABLE_SV(GvCV(sv)) )) && SvOBJECT(obj)) {
576 DEBUG_D((PerlIO_printf(Perl_debug_log,
577 "Cleaning named glob CV object:\n "), sv_dump(obj)));
579 SvREFCNT_dec_NN(obj);
581 SvREFCNT_dec_NN(sv); /* undo the inc above */
584 /* clear any IO slots in a GV which hold objects (except stderr, defout);
585 * called by sv_clean_objs() for each live GV */
588 do_clean_named_io_objs(pTHX_ SV *const sv)
591 assert(SvTYPE(sv) == SVt_PVGV);
592 assert(isGV_with_GP(sv));
593 if (!GvGP(sv) || sv == (SV*)PL_stderrgv || sv == (SV*)PL_defoutgv)
597 if ( ((obj = MUTABLE_SV(GvIO(sv)) )) && SvOBJECT(obj)) {
598 DEBUG_D((PerlIO_printf(Perl_debug_log,
599 "Cleaning named glob IO object:\n "), sv_dump(obj)));
601 SvREFCNT_dec_NN(obj);
603 SvREFCNT_dec_NN(sv); /* undo the inc above */
606 /* Void wrapper to pass to visit() */
608 do_curse(pTHX_ SV * const sv) {
609 if ((PL_stderrgv && GvGP(PL_stderrgv) && (SV*)GvIO(PL_stderrgv) == sv)
610 || (PL_defoutgv && GvGP(PL_defoutgv) && (SV*)GvIO(PL_defoutgv) == sv))
616 =for apidoc sv_clean_objs
618 Attempt to destroy all objects not yet freed.
624 Perl_sv_clean_objs(pTHX)
627 PL_in_clean_objs = TRUE;
628 visit(do_clean_objs, SVf_ROK, SVf_ROK);
629 /* Some barnacles may yet remain, clinging to typeglobs.
630 * Run the non-IO destructors first: they may want to output
631 * error messages, close files etc */
632 visit(do_clean_named_objs, SVt_PVGV|SVpgv_GP, SVTYPEMASK|SVp_POK|SVpgv_GP);
633 visit(do_clean_named_io_objs, SVt_PVGV|SVpgv_GP, SVTYPEMASK|SVp_POK|SVpgv_GP);
634 /* And if there are some very tenacious barnacles clinging to arrays,
635 closures, or what have you.... */
636 visit(do_curse, SVs_OBJECT, SVs_OBJECT);
637 olddef = PL_defoutgv;
638 PL_defoutgv = NULL; /* disable skip of PL_defoutgv */
639 if (olddef && isGV_with_GP(olddef))
640 do_clean_named_io_objs(aTHX_ MUTABLE_SV(olddef));
641 olderr = PL_stderrgv;
642 PL_stderrgv = NULL; /* disable skip of PL_stderrgv */
643 if (olderr && isGV_with_GP(olderr))
644 do_clean_named_io_objs(aTHX_ MUTABLE_SV(olderr));
645 SvREFCNT_dec(olddef);
646 PL_in_clean_objs = FALSE;
649 /* called by sv_clean_all() for each live SV */
652 do_clean_all(pTHX_ SV *const sv)
654 if (sv == (const SV *) PL_fdpid || sv == (const SV *)PL_strtab) {
655 /* don't clean pid table and strtab */
658 DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning loops: SV at 0x%" UVxf "\n", PTR2UV(sv)) ));
659 SvFLAGS(sv) |= SVf_BREAK;
664 =for apidoc sv_clean_all
666 Decrement the refcnt of each remaining SV, possibly triggering a
667 cleanup. This function may have to be called multiple times to free
668 SVs which are in complex self-referential hierarchies.
674 Perl_sv_clean_all(pTHX)
677 PL_in_clean_all = TRUE;
678 cleaned = visit(do_clean_all, 0,0);
683 ARENASETS: a meta-arena implementation which separates arena-info
684 into struct arena_set, which contains an array of struct
685 arena_descs, each holding info for a single arena. By separating
686 the meta-info from the arena, we recover the 1st slot, formerly
687 borrowed for list management. The arena_set is about the size of an
688 arena, avoiding the needless malloc overhead of a naive linked-list.
690 The cost is 1 arena-set malloc per ~320 arena-mallocs, + the unused
691 memory in the last arena-set (1/2 on average). In trade, we get
692 back the 1st slot in each arena (ie 1.7% of a CV-arena, less for
693 smaller types). The recovery of the wasted space allows use of
694 small arenas for large, rare body types, by changing array* fields
695 in body_details_by_type[] below.
698 char *arena; /* the raw storage, allocated aligned */
699 size_t size; /* its size ~4k typ */
700 svtype utype; /* bodytype stored in arena */
705 /* Get the maximum number of elements in set[] such that struct arena_set
706 will fit within PERL_ARENA_SIZE, which is probably just under 4K, and
707 therefore likely to be 1 aligned memory page. */
709 #define ARENAS_PER_SET ((PERL_ARENA_SIZE - sizeof(struct arena_set*) \
710 - 2 * sizeof(int)) / sizeof (struct arena_desc))
713 struct arena_set* next;
714 unsigned int set_size; /* ie ARENAS_PER_SET */
715 unsigned int curr; /* index of next available arena-desc */
716 struct arena_desc set[ARENAS_PER_SET];
720 =for apidoc sv_free_arenas
722 Deallocate the memory used by all arenas. Note that all the individual SV
723 heads and bodies within the arenas must already have been freed.
729 Perl_sv_free_arenas(pTHX)
735 /* Free arenas here, but be careful about fake ones. (We assume
736 contiguity of the fake ones with the corresponding real ones.) */
738 for (sva = PL_sv_arenaroot; sva; sva = svanext) {
739 svanext = MUTABLE_SV(SvANY(sva));
740 while (svanext && SvFAKE(svanext))
741 svanext = MUTABLE_SV(SvANY(svanext));
748 struct arena_set *aroot = (struct arena_set*) PL_body_arenas;
751 struct arena_set *current = aroot;
754 assert(aroot->set[i].arena);
755 Safefree(aroot->set[i].arena);
763 i = PERL_ARENA_ROOTS_SIZE;
765 PL_body_roots[i] = 0;
772 Here are mid-level routines that manage the allocation of bodies out
773 of the various arenas. There are 4 kinds of arenas:
775 1. SV-head arenas, which are discussed and handled above
776 2. regular body arenas
777 3. arenas for reduced-size bodies
780 Arena types 2 & 3 are chained by body-type off an array of
781 arena-root pointers, which is indexed by svtype. Some of the
782 larger/less used body types are malloced singly, since a large
783 unused block of them is wasteful. Also, several svtypes dont have
784 bodies; the data fits into the sv-head itself. The arena-root
785 pointer thus has a few unused root-pointers (which may be hijacked
786 later for arena type 4)
788 3 differs from 2 as an optimization; some body types have several
789 unused fields in the front of the structure (which are kept in-place
790 for consistency). These bodies can be allocated in smaller chunks,
791 because the leading fields arent accessed. Pointers to such bodies
792 are decremented to point at the unused 'ghost' memory, knowing that
793 the pointers are used with offsets to the real memory.
795 Allocation of SV-bodies is similar to SV-heads, differing as follows;
796 the allocation mechanism is used for many body types, so is somewhat
797 more complicated, it uses arena-sets, and has no need for still-live
800 At the outermost level, (new|del)_X*V macros return bodies of the
801 appropriate type. These macros call either (new|del)_body_type or
802 (new|del)_body_allocated macro pairs, depending on specifics of the
803 type. Most body types use the former pair, the latter pair is used to
804 allocate body types with "ghost fields".
806 "ghost fields" are fields that are unused in certain types, and
807 consequently don't need to actually exist. They are declared because
808 they're part of a "base type", which allows use of functions as
809 methods. The simplest examples are AVs and HVs, 2 aggregate types
810 which don't use the fields which support SCALAR semantics.
812 For these types, the arenas are carved up into appropriately sized
813 chunks, we thus avoid wasted memory for those unaccessed members.
814 When bodies are allocated, we adjust the pointer back in memory by the
815 size of the part not allocated, so it's as if we allocated the full
816 structure. (But things will all go boom if you write to the part that
817 is "not there", because you'll be overwriting the last members of the
818 preceding structure in memory.)
820 We calculate the correction using the STRUCT_OFFSET macro on the first
821 member present. If the allocated structure is smaller (no initial NV
822 actually allocated) then the net effect is to subtract the size of the NV
823 from the pointer, to return a new pointer as if an initial NV were actually
824 allocated. (We were using structures named *_allocated for this, but
825 this turned out to be a subtle bug, because a structure without an NV
826 could have a lower alignment constraint, but the compiler is allowed to
827 optimised accesses based on the alignment constraint of the actual pointer
828 to the full structure, for example, using a single 64 bit load instruction
829 because it "knows" that two adjacent 32 bit members will be 8-byte aligned.)
831 This is the same trick as was used for NV and IV bodies. Ironically it
832 doesn't need to be used for NV bodies any more, because NV is now at
833 the start of the structure. IV bodies, and also in some builds NV bodies,
834 don't need it either, because they are no longer allocated.
836 In turn, the new_body_* allocators call S_new_body(), which invokes
837 new_body_inline macro, which takes a lock, and takes a body off the
838 linked list at PL_body_roots[sv_type], calling Perl_more_bodies() if
839 necessary to refresh an empty list. Then the lock is released, and
840 the body is returned.
842 Perl_more_bodies allocates a new arena, and carves it up into an array of N
843 bodies, which it strings into a linked list. It looks up arena-size
844 and body-size from the body_details table described below, thus
845 supporting the multiple body-types.
847 If PURIFY is defined, or PERL_ARENA_SIZE=0, arenas are not used, and
848 the (new|del)_X*V macros are mapped directly to malloc/free.
850 For each sv-type, struct body_details bodies_by_type[] carries
851 parameters which control these aspects of SV handling:
853 Arena_size determines whether arenas are used for this body type, and if
854 so, how big they are. PURIFY or PERL_ARENA_SIZE=0 set this field to
855 zero, forcing individual mallocs and frees.
857 Body_size determines how big a body is, and therefore how many fit into
858 each arena. Offset carries the body-pointer adjustment needed for
859 "ghost fields", and is used in *_allocated macros.
861 But its main purpose is to parameterize info needed in
862 Perl_sv_upgrade(). The info here dramatically simplifies the function
863 vs the implementation in 5.8.8, making it table-driven. All fields
864 are used for this, except for arena_size.
866 For the sv-types that have no bodies, arenas are not used, so those
867 PL_body_roots[sv_type] are unused, and can be overloaded. In
868 something of a special case, SVt_NULL is borrowed for HE arenas;
869 PL_body_roots[HE_SVSLOT=SVt_NULL] is filled by S_more_he, but the
870 bodies_by_type[SVt_NULL] slot is not used, as the table is not
875 struct body_details {
876 U8 body_size; /* Size to allocate */
877 U8 copy; /* Size of structure to copy (may be shorter) */
878 U8 offset; /* Size of unalloced ghost fields to first alloced field*/
879 PERL_BITFIELD8 type : 4; /* We have space for a sanity check. */
880 PERL_BITFIELD8 cant_upgrade : 1;/* Cannot upgrade this type */
881 PERL_BITFIELD8 zero_nv : 1; /* zero the NV when upgrading from this */
882 PERL_BITFIELD8 arena : 1; /* Allocated from an arena */
883 U32 arena_size; /* Size of arena to allocate */
891 /* With -DPURFIY we allocate everything directly, and don't use arenas.
892 This seems a rather elegant way to simplify some of the code below. */
893 #define HASARENA FALSE
895 #define HASARENA TRUE
897 #define NOARENA FALSE
899 /* Size the arenas to exactly fit a given number of bodies. A count
900 of 0 fits the max number bodies into a PERL_ARENA_SIZE.block,
901 simplifying the default. If count > 0, the arena is sized to fit
902 only that many bodies, allowing arenas to be used for large, rare
903 bodies (XPVFM, XPVIO) without undue waste. The arena size is
904 limited by PERL_ARENA_SIZE, so we can safely oversize the
907 #define FIT_ARENA0(body_size) \
908 ((size_t)(PERL_ARENA_SIZE / body_size) * body_size)
909 #define FIT_ARENAn(count,body_size) \
910 ( count * body_size <= PERL_ARENA_SIZE) \
911 ? count * body_size \
912 : FIT_ARENA0 (body_size)
913 #define FIT_ARENA(count,body_size) \
915 ? FIT_ARENAn (count, body_size) \
916 : FIT_ARENA0 (body_size))
918 /* Calculate the length to copy. Specifically work out the length less any
919 final padding the compiler needed to add. See the comment in sv_upgrade
920 for why copying the padding proved to be a bug. */
922 #define copy_length(type, last_member) \
923 STRUCT_OFFSET(type, last_member) \
924 + sizeof (((type*)SvANY((const SV *)0))->last_member)
926 static const struct body_details bodies_by_type[] = {
927 /* HEs use this offset for their arena. */
928 { 0, 0, 0, SVt_NULL, FALSE, NONV, NOARENA, 0 },
930 /* IVs are in the head, so the allocation size is 0. */
932 sizeof(IV), /* This is used to copy out the IV body. */
933 STRUCT_OFFSET(XPVIV, xiv_iv), SVt_IV, FALSE, NONV,
934 NOARENA /* IVS don't need an arena */, 0
939 STRUCT_OFFSET(XPVNV, xnv_u),
940 SVt_NV, FALSE, HADNV, NOARENA, 0 },
942 { sizeof(NV), sizeof(NV),
943 STRUCT_OFFSET(XPVNV, xnv_u),
944 SVt_NV, FALSE, HADNV, HASARENA, FIT_ARENA(0, sizeof(NV)) },
947 { sizeof(XPV) - STRUCT_OFFSET(XPV, xpv_cur),
948 copy_length(XPV, xpv_len) - STRUCT_OFFSET(XPV, xpv_cur),
949 + STRUCT_OFFSET(XPV, xpv_cur),
950 SVt_PV, FALSE, NONV, HASARENA,
951 FIT_ARENA(0, sizeof(XPV) - STRUCT_OFFSET(XPV, xpv_cur)) },
953 { sizeof(XINVLIST) - STRUCT_OFFSET(XPV, xpv_cur),
954 copy_length(XINVLIST, is_offset) - STRUCT_OFFSET(XPV, xpv_cur),
955 + STRUCT_OFFSET(XPV, xpv_cur),
956 SVt_INVLIST, TRUE, NONV, HASARENA,
957 FIT_ARENA(0, sizeof(XINVLIST) - STRUCT_OFFSET(XPV, xpv_cur)) },
959 { sizeof(XPVIV) - STRUCT_OFFSET(XPV, xpv_cur),
960 copy_length(XPVIV, xiv_u) - STRUCT_OFFSET(XPV, xpv_cur),
961 + STRUCT_OFFSET(XPV, xpv_cur),
962 SVt_PVIV, FALSE, NONV, HASARENA,
963 FIT_ARENA(0, sizeof(XPVIV) - STRUCT_OFFSET(XPV, xpv_cur)) },
965 { sizeof(XPVNV) - STRUCT_OFFSET(XPV, xpv_cur),
966 copy_length(XPVNV, xnv_u) - STRUCT_OFFSET(XPV, xpv_cur),
967 + STRUCT_OFFSET(XPV, xpv_cur),
968 SVt_PVNV, FALSE, HADNV, HASARENA,
969 FIT_ARENA(0, sizeof(XPVNV) - STRUCT_OFFSET(XPV, xpv_cur)) },
971 { sizeof(XPVMG), copy_length(XPVMG, xnv_u), 0, SVt_PVMG, FALSE, HADNV,
972 HASARENA, FIT_ARENA(0, sizeof(XPVMG)) },
977 SVt_REGEXP, TRUE, NONV, HASARENA,
978 FIT_ARENA(0, sizeof(regexp))
981 { sizeof(XPVGV), sizeof(XPVGV), 0, SVt_PVGV, TRUE, HADNV,
982 HASARENA, FIT_ARENA(0, sizeof(XPVGV)) },
984 { sizeof(XPVLV), sizeof(XPVLV), 0, SVt_PVLV, TRUE, HADNV,
985 HASARENA, FIT_ARENA(0, sizeof(XPVLV)) },
988 copy_length(XPVAV, xav_alloc),
990 SVt_PVAV, TRUE, NONV, HASARENA,
991 FIT_ARENA(0, sizeof(XPVAV)) },
994 copy_length(XPVHV, xhv_max),
996 SVt_PVHV, TRUE, NONV, HASARENA,
997 FIT_ARENA(0, sizeof(XPVHV)) },
1002 SVt_PVCV, TRUE, NONV, HASARENA,
1003 FIT_ARENA(0, sizeof(XPVCV)) },
1008 SVt_PVFM, TRUE, NONV, NOARENA,
1009 FIT_ARENA(20, sizeof(XPVFM)) },
1014 SVt_PVIO, TRUE, NONV, HASARENA,
1015 FIT_ARENA(24, sizeof(XPVIO)) },
1018 #define new_body_allocated(sv_type) \
1019 (void *)((char *)S_new_body(aTHX_ sv_type) \
1020 - bodies_by_type[sv_type].offset)
1022 /* return a thing to the free list */
1024 #define del_body(thing, root) \
1026 void ** const thing_copy = (void **)thing; \
1027 *thing_copy = *root; \
1028 *root = (void*)thing_copy; \
1032 #if !(NVSIZE <= IVSIZE)
1033 # define new_XNV() safemalloc(sizeof(XPVNV))
1035 #define new_XPVNV() safemalloc(sizeof(XPVNV))
1036 #define new_XPVMG() safemalloc(sizeof(XPVMG))
1038 #define del_XPVGV(p) safefree(p)
1042 #if !(NVSIZE <= IVSIZE)
1043 # define new_XNV() new_body_allocated(SVt_NV)
1045 #define new_XPVNV() new_body_allocated(SVt_PVNV)
1046 #define new_XPVMG() new_body_allocated(SVt_PVMG)
1048 #define del_XPVGV(p) del_body(p + bodies_by_type[SVt_PVGV].offset, \
1049 &PL_body_roots[SVt_PVGV])
1053 /* no arena for you! */
1055 #define new_NOARENA(details) \
1056 safemalloc((details)->body_size + (details)->offset)
1057 #define new_NOARENAZ(details) \
1058 safecalloc((details)->body_size + (details)->offset, 1)
1061 Perl_more_bodies (pTHX_ const svtype sv_type, const size_t body_size,
1062 const size_t arena_size)
1064 void ** const root = &PL_body_roots[sv_type];
1065 struct arena_desc *adesc;
1066 struct arena_set *aroot = (struct arena_set *) PL_body_arenas;
1070 const size_t good_arena_size = Perl_malloc_good_size(arena_size);
1071 #if defined(DEBUGGING) && defined(PERL_GLOBAL_STRUCT)
1074 #if defined(DEBUGGING) && !defined(PERL_GLOBAL_STRUCT_PRIVATE)
1075 static bool done_sanity_check;
1077 /* PERL_GLOBAL_STRUCT_PRIVATE cannot coexist with global
1078 * variables like done_sanity_check. */
1079 if (!done_sanity_check) {
1080 unsigned int i = SVt_LAST;
1082 done_sanity_check = TRUE;
1085 assert (bodies_by_type[i].type == i);
1091 /* may need new arena-set to hold new arena */
1092 if (!aroot || aroot->curr >= aroot->set_size) {
1093 struct arena_set *newroot;
1094 Newxz(newroot, 1, struct arena_set);
1095 newroot->set_size = ARENAS_PER_SET;
1096 newroot->next = aroot;
1098 PL_body_arenas = (void *) newroot;
1099 DEBUG_m(PerlIO_printf(Perl_debug_log, "new arenaset %p\n", (void*)aroot));
1102 /* ok, now have arena-set with at least 1 empty/available arena-desc */
1103 curr = aroot->curr++;
1104 adesc = &(aroot->set[curr]);
1105 assert(!adesc->arena);
1107 Newx(adesc->arena, good_arena_size, char);
1108 adesc->size = good_arena_size;
1109 adesc->utype = sv_type;
1110 DEBUG_m(PerlIO_printf(Perl_debug_log, "arena %d added: %p size %" UVuf "\n",
1111 curr, (void*)adesc->arena, (UV)good_arena_size));
1113 start = (char *) adesc->arena;
1115 /* Get the address of the byte after the end of the last body we can fit.
1116 Remember, this is integer division: */
1117 end = start + good_arena_size / body_size * body_size;
1119 /* computed count doesn't reflect the 1st slot reservation */
1120 #if defined(MYMALLOC) || defined(HAS_MALLOC_GOOD_SIZE)
1121 DEBUG_m(PerlIO_printf(Perl_debug_log,
1122 "arena %p end %p arena-size %d (from %d) type %d "
1124 (void*)start, (void*)end, (int)good_arena_size,
1125 (int)arena_size, sv_type, (int)body_size,
1126 (int)good_arena_size / (int)body_size));
1128 DEBUG_m(PerlIO_printf(Perl_debug_log,
1129 "arena %p end %p arena-size %d type %d size %d ct %d\n",
1130 (void*)start, (void*)end,
1131 (int)arena_size, sv_type, (int)body_size,
1132 (int)good_arena_size / (int)body_size));
1134 *root = (void *)start;
1137 /* Where the next body would start: */
1138 char * const next = start + body_size;
1141 /* This is the last body: */
1142 assert(next == end);
1144 *(void **)start = 0;
1148 *(void**) start = (void *)next;
1153 /* grab a new thing from the free list, allocating more if necessary.
1154 The inline version is used for speed in hot routines, and the
1155 function using it serves the rest (unless PURIFY).
1157 #define new_body_inline(xpv, sv_type) \
1159 void ** const r3wt = &PL_body_roots[sv_type]; \
1160 xpv = (PTR_TBL_ENT_t*) (*((void **)(r3wt)) \
1161 ? *((void **)(r3wt)) : Perl_more_bodies(aTHX_ sv_type, \
1162 bodies_by_type[sv_type].body_size,\
1163 bodies_by_type[sv_type].arena_size)); \
1164 *(r3wt) = *(void**)(xpv); \
1170 S_new_body(pTHX_ const svtype sv_type)
1173 new_body_inline(xpv, sv_type);
1179 static const struct body_details fake_rv =
1180 { 0, 0, 0, SVt_IV, FALSE, NONV, NOARENA, 0 };
1183 =for apidoc sv_upgrade
1185 Upgrade an SV to a more complex form. Generally adds a new body type to the
1186 SV, then copies across as much information as possible from the old body.
1187 It croaks if the SV is already in a more complex form than requested. You
1188 generally want to use the C<SvUPGRADE> macro wrapper, which checks the type
1189 before calling C<sv_upgrade>, and hence does not croak. See also
1196 Perl_sv_upgrade(pTHX_ SV *const sv, svtype new_type)
1200 const svtype old_type = SvTYPE(sv);
1201 const struct body_details *new_type_details;
1202 const struct body_details *old_type_details
1203 = bodies_by_type + old_type;
1204 SV *referent = NULL;
1206 PERL_ARGS_ASSERT_SV_UPGRADE;
1208 if (old_type == new_type)
1211 /* This clause was purposefully added ahead of the early return above to
1212 the shared string hackery for (sort {$a <=> $b} keys %hash), with the
1213 inference by Nick I-S that it would fix other troublesome cases. See
1214 changes 7162, 7163 (f130fd4589cf5fbb24149cd4db4137c8326f49c1 and parent)
1216 Given that shared hash key scalars are no longer PVIV, but PV, there is
1217 no longer need to unshare so as to free up the IVX slot for its proper
1218 purpose. So it's safe to move the early return earlier. */
1220 if (new_type > SVt_PVMG && SvIsCOW(sv)) {
1221 sv_force_normal_flags(sv, 0);
1224 old_body = SvANY(sv);
1226 /* Copying structures onto other structures that have been neatly zeroed
1227 has a subtle gotcha. Consider XPVMG
1229 +------+------+------+------+------+-------+-------+
1230 | NV | CUR | LEN | IV | MAGIC | STASH |
1231 +------+------+------+------+------+-------+-------+
1232 0 4 8 12 16 20 24 28
1234 where NVs are aligned to 8 bytes, so that sizeof that structure is
1235 actually 32 bytes long, with 4 bytes of padding at the end:
1237 +------+------+------+------+------+-------+-------+------+
1238 | NV | CUR | LEN | IV | MAGIC | STASH | ??? |
1239 +------+------+------+------+------+-------+-------+------+
1240 0 4 8 12 16 20 24 28 32
1242 so what happens if you allocate memory for this structure:
1244 +------+------+------+------+------+-------+-------+------+------+...
1245 | NV | CUR | LEN | IV | MAGIC | STASH | GP | NAME |
1246 +------+------+------+------+------+-------+-------+------+------+...
1247 0 4 8 12 16 20 24 28 32 36
1249 zero it, then copy sizeof(XPVMG) bytes on top of it? Not quite what you
1250 expect, because you copy the area marked ??? onto GP. Now, ??? may have
1251 started out as zero once, but it's quite possible that it isn't. So now,
1252 rather than a nicely zeroed GP, you have it pointing somewhere random.
1255 (In fact, GP ends up pointing at a previous GP structure, because the
1256 principle cause of the padding in XPVMG getting garbage is a copy of
1257 sizeof(XPVMG) bytes from a XPVGV structure in sv_unglob. Right now
1258 this happens to be moot because XPVGV has been re-ordered, with GP
1259 no longer after STASH)
1261 So we are careful and work out the size of used parts of all the
1269 referent = SvRV(sv);
1270 old_type_details = &fake_rv;
1271 if (new_type == SVt_NV)
1272 new_type = SVt_PVNV;
1274 if (new_type < SVt_PVIV) {
1275 new_type = (new_type == SVt_NV)
1276 ? SVt_PVNV : SVt_PVIV;
1281 if (new_type < SVt_PVNV) {
1282 new_type = SVt_PVNV;
1286 assert(new_type > SVt_PV);
1287 STATIC_ASSERT_STMT(SVt_IV < SVt_PV);
1288 STATIC_ASSERT_STMT(SVt_NV < SVt_PV);
1295 /* Because the XPVMG of PL_mess_sv isn't allocated from the arena,
1296 there's no way that it can be safely upgraded, because perl.c
1297 expects to Safefree(SvANY(PL_mess_sv)) */
1298 assert(sv != PL_mess_sv);
1301 if (UNLIKELY(old_type_details->cant_upgrade))
1302 Perl_croak(aTHX_ "Can't upgrade %s (%" UVuf ") to %" UVuf,
1303 sv_reftype(sv, 0), (UV) old_type, (UV) new_type);
1306 if (UNLIKELY(old_type > new_type))
1307 Perl_croak(aTHX_ "sv_upgrade from type %d down to type %d",
1308 (int)old_type, (int)new_type);
1310 new_type_details = bodies_by_type + new_type;
1312 SvFLAGS(sv) &= ~SVTYPEMASK;
1313 SvFLAGS(sv) |= new_type;
1315 /* This can't happen, as SVt_NULL is <= all values of new_type, so one of
1316 the return statements above will have triggered. */
1317 assert (new_type != SVt_NULL);
1320 assert(old_type == SVt_NULL);
1321 SET_SVANY_FOR_BODYLESS_IV(sv);
1325 assert(old_type == SVt_NULL);
1326 #if NVSIZE <= IVSIZE
1327 SET_SVANY_FOR_BODYLESS_NV(sv);
1329 SvANY(sv) = new_XNV();
1335 assert(new_type_details->body_size);
1338 assert(new_type_details->arena);
1339 assert(new_type_details->arena_size);
1340 /* This points to the start of the allocated area. */
1341 new_body_inline(new_body, new_type);
1342 Zero(new_body, new_type_details->body_size, char);
1343 new_body = ((char *)new_body) - new_type_details->offset;
1345 /* We always allocated the full length item with PURIFY. To do this
1346 we fake things so that arena is false for all 16 types.. */
1347 new_body = new_NOARENAZ(new_type_details);
1349 SvANY(sv) = new_body;
1350 if (new_type == SVt_PVAV) {
1354 if (old_type_details->body_size) {
1357 /* It will have been zeroed when the new body was allocated.
1358 Lets not write to it, in case it confuses a write-back
1364 #ifndef NODEFAULT_SHAREKEYS
1365 HvSHAREKEYS_on(sv); /* key-sharing on by default */
1367 /* start with PERL_HASH_DEFAULT_HvMAX+1 buckets: */
1368 HvMAX(sv) = PERL_HASH_DEFAULT_HvMAX;
1371 /* SVt_NULL isn't the only thing upgraded to AV or HV.
1372 The target created by newSVrv also is, and it can have magic.
1373 However, it never has SvPVX set.
1375 if (old_type == SVt_IV) {
1377 } else if (old_type >= SVt_PV) {
1378 assert(SvPVX_const(sv) == 0);
1381 if (old_type >= SVt_PVMG) {
1382 SvMAGIC_set(sv, ((XPVMG*)old_body)->xmg_u.xmg_magic);
1383 SvSTASH_set(sv, ((XPVMG*)old_body)->xmg_stash);
1385 sv->sv_u.svu_array = NULL; /* or svu_hash */
1390 /* XXX Is this still needed? Was it ever needed? Surely as there is
1391 no route from NV to PVIV, NOK can never be true */
1392 assert(!SvNOKp(sv));
1406 assert(new_type_details->body_size);
1407 /* We always allocated the full length item with PURIFY. To do this
1408 we fake things so that arena is false for all 16 types.. */
1409 if(new_type_details->arena) {
1410 /* This points to the start of the allocated area. */
1411 new_body_inline(new_body, new_type);
1412 Zero(new_body, new_type_details->body_size, char);
1413 new_body = ((char *)new_body) - new_type_details->offset;
1415 new_body = new_NOARENAZ(new_type_details);
1417 SvANY(sv) = new_body;
1419 if (old_type_details->copy) {
1420 /* There is now the potential for an upgrade from something without
1421 an offset (PVNV or PVMG) to something with one (PVCV, PVFM) */
1422 int offset = old_type_details->offset;
1423 int length = old_type_details->copy;
1425 if (new_type_details->offset > old_type_details->offset) {
1426 const int difference
1427 = new_type_details->offset - old_type_details->offset;
1428 offset += difference;
1429 length -= difference;
1431 assert (length >= 0);
1433 Copy((char *)old_body + offset, (char *)new_body + offset, length,
1437 #ifndef NV_ZERO_IS_ALLBITS_ZERO
1438 /* If NV 0.0 is stores as all bits 0 then Zero() already creates a
1439 * correct 0.0 for us. Otherwise, if the old body didn't have an
1440 * NV slot, but the new one does, then we need to initialise the
1441 * freshly created NV slot with whatever the correct bit pattern is
1443 if (old_type_details->zero_nv && !new_type_details->zero_nv
1444 && !isGV_with_GP(sv))
1448 if (UNLIKELY(new_type == SVt_PVIO)) {
1449 IO * const io = MUTABLE_IO(sv);
1450 GV *iogv = gv_fetchpvs("IO::File::", GV_ADD, SVt_PVHV);
1453 /* Clear the stashcache because a new IO could overrule a package
1455 DEBUG_o(Perl_deb(aTHX_ "sv_upgrade clearing PL_stashcache\n"));
1456 hv_clear(PL_stashcache);
1458 SvSTASH_set(io, MUTABLE_HV(SvREFCNT_inc(GvHV(iogv))));
1459 IoPAGE_LEN(sv) = 60;
1461 if (old_type < SVt_PV) {
1462 /* referent will be NULL unless the old type was SVt_IV emulating
1464 sv->sv_u.svu_rv = referent;
1468 Perl_croak(aTHX_ "panic: sv_upgrade to unknown type %lu",
1469 (unsigned long)new_type);
1472 /* if this is zero, this is a body-less SVt_NULL, SVt_IV/SVt_RV,
1473 and sometimes SVt_NV */
1474 if (old_type_details->body_size) {
1478 /* Note that there is an assumption that all bodies of types that
1479 can be upgraded came from arenas. Only the more complex non-
1480 upgradable types are allowed to be directly malloc()ed. */
1481 assert(old_type_details->arena);
1482 del_body((void*)((char*)old_body + old_type_details->offset),
1483 &PL_body_roots[old_type]);
1489 =for apidoc sv_backoff
1491 Remove any string offset. You should normally use the C<SvOOK_off> macro
1497 /* prior to 5.000 stable, this function returned the new OOK-less SvFLAGS
1498 prior to 5.23.4 this function always returned 0
1502 Perl_sv_backoff(SV *const sv)
1505 const char * const s = SvPVX_const(sv);
1507 PERL_ARGS_ASSERT_SV_BACKOFF;
1510 assert(SvTYPE(sv) != SVt_PVHV);
1511 assert(SvTYPE(sv) != SVt_PVAV);
1513 SvOOK_offset(sv, delta);
1515 SvLEN_set(sv, SvLEN(sv) + delta);
1516 SvPV_set(sv, SvPVX(sv) - delta);
1517 SvFLAGS(sv) &= ~SVf_OOK;
1518 Move(s, SvPVX(sv), SvCUR(sv)+1, char);
1523 /* forward declaration */
1524 static void S_sv_uncow(pTHX_ SV * const sv, const U32 flags);
1530 Expands the character buffer in the SV. If necessary, uses C<sv_unref> and
1531 upgrades the SV to C<SVt_PV>. Returns a pointer to the character buffer.
1532 Use the C<SvGROW> wrapper instead.
1539 Perl_sv_grow(pTHX_ SV *const sv, STRLEN newlen)
1543 PERL_ARGS_ASSERT_SV_GROW;
1547 if (SvTYPE(sv) < SVt_PV) {
1548 sv_upgrade(sv, SVt_PV);
1549 s = SvPVX_mutable(sv);
1551 else if (SvOOK(sv)) { /* pv is offset? */
1553 s = SvPVX_mutable(sv);
1554 if (newlen > SvLEN(sv))
1555 newlen += 10 * (newlen - SvCUR(sv)); /* avoid copy each time */
1559 if (SvIsCOW(sv)) S_sv_uncow(aTHX_ sv, 0);
1560 s = SvPVX_mutable(sv);
1563 #ifdef PERL_COPY_ON_WRITE
1564 /* the new COW scheme uses SvPVX(sv)[SvLEN(sv)-1] (if spare)
1565 * to store the COW count. So in general, allocate one more byte than
1566 * asked for, to make it likely this byte is always spare: and thus
1567 * make more strings COW-able.
1569 * Only increment if the allocation isn't MEM_SIZE_MAX,
1570 * otherwise it will wrap to 0.
1572 if ( newlen != MEM_SIZE_MAX )
1576 #if defined(PERL_USE_MALLOC_SIZE) && defined(Perl_safesysmalloc_size)
1577 #define PERL_UNWARANTED_CHUMMINESS_WITH_MALLOC
1580 if (newlen > SvLEN(sv)) { /* need more room? */
1581 STRLEN minlen = SvCUR(sv);
1582 minlen += (minlen >> PERL_STRLEN_EXPAND_SHIFT) + 10;
1583 if (newlen < minlen)
1585 #ifndef PERL_UNWARANTED_CHUMMINESS_WITH_MALLOC
1587 /* Don't round up on the first allocation, as odds are pretty good that
1588 * the initial request is accurate as to what is really needed */
1590 STRLEN rounded = PERL_STRLEN_ROUNDUP(newlen);
1591 if (rounded > newlen)
1595 if (SvLEN(sv) && s) {
1596 s = (char*)saferealloc(s, newlen);
1599 s = (char*)safemalloc(newlen);
1600 if (SvPVX_const(sv) && SvCUR(sv)) {
1601 Move(SvPVX_const(sv), s, SvCUR(sv), char);
1605 #ifdef PERL_UNWARANTED_CHUMMINESS_WITH_MALLOC
1606 /* Do this here, do it once, do it right, and then we will never get
1607 called back into sv_grow() unless there really is some growing
1609 SvLEN_set(sv, Perl_safesysmalloc_size(s));
1611 SvLEN_set(sv, newlen);
1618 =for apidoc sv_setiv
1620 Copies an integer into the given SV, upgrading first if necessary.
1621 Does not handle 'set' magic. See also C<L</sv_setiv_mg>>.
1627 Perl_sv_setiv(pTHX_ SV *const sv, const IV i)
1629 PERL_ARGS_ASSERT_SV_SETIV;
1631 SV_CHECK_THINKFIRST_COW_DROP(sv);
1632 switch (SvTYPE(sv)) {
1635 sv_upgrade(sv, SVt_IV);
1638 sv_upgrade(sv, SVt_PVIV);
1642 if (!isGV_with_GP(sv))
1650 /* diag_listed_as: Can't coerce %s to %s in %s */
1651 Perl_croak(aTHX_ "Can't coerce %s to integer in %s", sv_reftype(sv,0),
1653 NOT_REACHED; /* NOTREACHED */
1657 (void)SvIOK_only(sv); /* validate number */
1663 =for apidoc sv_setiv_mg
1665 Like C<sv_setiv>, but also handles 'set' magic.
1671 Perl_sv_setiv_mg(pTHX_ SV *const sv, const IV i)
1673 PERL_ARGS_ASSERT_SV_SETIV_MG;
1680 =for apidoc sv_setuv
1682 Copies an unsigned integer into the given SV, upgrading first if necessary.
1683 Does not handle 'set' magic. See also C<L</sv_setuv_mg>>.
1689 Perl_sv_setuv(pTHX_ SV *const sv, const UV u)
1691 PERL_ARGS_ASSERT_SV_SETUV;
1693 /* With the if statement to ensure that integers are stored as IVs whenever
1695 u=1.49 s=0.52 cu=72.49 cs=10.64 scripts=270 tests=20865
1698 u=1.35 s=0.47 cu=73.45 cs=11.43 scripts=270 tests=20865
1700 If you wish to remove the following if statement, so that this routine
1701 (and its callers) always return UVs, please benchmark to see what the
1702 effect is. Modern CPUs may be different. Or may not :-)
1704 if (u <= (UV)IV_MAX) {
1705 sv_setiv(sv, (IV)u);
1714 =for apidoc sv_setuv_mg
1716 Like C<sv_setuv>, but also handles 'set' magic.
1722 Perl_sv_setuv_mg(pTHX_ SV *const sv, const UV u)
1724 PERL_ARGS_ASSERT_SV_SETUV_MG;
1731 =for apidoc sv_setnv
1733 Copies a double into the given SV, upgrading first if necessary.
1734 Does not handle 'set' magic. See also C<L</sv_setnv_mg>>.
1740 Perl_sv_setnv(pTHX_ SV *const sv, const NV num)
1742 PERL_ARGS_ASSERT_SV_SETNV;
1744 SV_CHECK_THINKFIRST_COW_DROP(sv);
1745 switch (SvTYPE(sv)) {
1748 sv_upgrade(sv, SVt_NV);
1752 sv_upgrade(sv, SVt_PVNV);
1756 if (!isGV_with_GP(sv))
1764 /* diag_listed_as: Can't coerce %s to %s in %s */
1765 Perl_croak(aTHX_ "Can't coerce %s to number in %s", sv_reftype(sv,0),
1767 NOT_REACHED; /* NOTREACHED */
1772 (void)SvNOK_only(sv); /* validate number */
1777 =for apidoc sv_setnv_mg
1779 Like C<sv_setnv>, but also handles 'set' magic.
1785 Perl_sv_setnv_mg(pTHX_ SV *const sv, const NV num)
1787 PERL_ARGS_ASSERT_SV_SETNV_MG;
1793 /* Return a cleaned-up, printable version of sv, for non-numeric, or
1794 * not incrementable warning display.
1795 * Originally part of S_not_a_number().
1796 * The return value may be != tmpbuf.
1800 S_sv_display(pTHX_ SV *const sv, char *tmpbuf, STRLEN tmpbuf_size) {
1803 PERL_ARGS_ASSERT_SV_DISPLAY;
1806 SV *dsv = newSVpvs_flags("", SVs_TEMP);
1807 pv = sv_uni_display(dsv, sv, 32, UNI_DISPLAY_ISPRINT);
1810 const char * const limit = tmpbuf + tmpbuf_size - 8;
1811 /* each *s can expand to 4 chars + "...\0",
1812 i.e. need room for 8 chars */
1814 const char *s = SvPVX_const(sv);
1815 const char * const end = s + SvCUR(sv);
1816 for ( ; s < end && d < limit; s++ ) {
1818 if (! isASCII(ch) && !isPRINT_LC(ch)) {
1822 /* Map to ASCII "equivalent" of Latin1 */
1823 ch = LATIN1_TO_NATIVE(NATIVE_TO_LATIN1(ch) & 127);
1829 else if (ch == '\r') {
1833 else if (ch == '\f') {
1837 else if (ch == '\\') {
1841 else if (ch == '\0') {
1845 else if (isPRINT_LC(ch))
1864 /* Print an "isn't numeric" warning, using a cleaned-up,
1865 * printable version of the offending string
1869 S_not_a_number(pTHX_ SV *const sv)
1874 PERL_ARGS_ASSERT_NOT_A_NUMBER;
1876 pv = sv_display(sv, tmpbuf, sizeof(tmpbuf));
1879 Perl_warner(aTHX_ packWARN(WARN_NUMERIC),
1880 /* diag_listed_as: Argument "%s" isn't numeric%s */
1881 "Argument \"%s\" isn't numeric in %s", pv,
1884 Perl_warner(aTHX_ packWARN(WARN_NUMERIC),
1885 /* diag_listed_as: Argument "%s" isn't numeric%s */
1886 "Argument \"%s\" isn't numeric", pv);
1890 S_not_incrementable(pTHX_ SV *const sv) {
1894 PERL_ARGS_ASSERT_NOT_INCREMENTABLE;
1896 pv = sv_display(sv, tmpbuf, sizeof(tmpbuf));
1898 Perl_warner(aTHX_ packWARN(WARN_NUMERIC),
1899 "Argument \"%s\" treated as 0 in increment (++)", pv);
1903 =for apidoc looks_like_number
1905 Test if the content of an SV looks like a number (or is a number).
1906 C<Inf> and C<Infinity> are treated as numbers (so will not issue a
1907 non-numeric warning), even if your C<atof()> doesn't grok them. Get-magic is
1914 Perl_looks_like_number(pTHX_ SV *const sv)
1920 PERL_ARGS_ASSERT_LOOKS_LIKE_NUMBER;
1922 if (SvPOK(sv) || SvPOKp(sv)) {
1923 sbegin = SvPV_nomg_const(sv, len);
1926 return SvFLAGS(sv) & (SVf_NOK|SVp_NOK|SVf_IOK|SVp_IOK);
1927 numtype = grok_number(sbegin, len, NULL);
1928 return ((numtype & IS_NUMBER_TRAILING)) ? 0 : numtype;
1932 S_glob_2number(pTHX_ GV * const gv)
1934 PERL_ARGS_ASSERT_GLOB_2NUMBER;
1936 /* We know that all GVs stringify to something that is not-a-number,
1937 so no need to test that. */
1938 if (ckWARN(WARN_NUMERIC))
1940 SV *const buffer = sv_newmortal();
1941 gv_efullname3(buffer, gv, "*");
1942 not_a_number(buffer);
1944 /* We just want something true to return, so that S_sv_2iuv_common
1945 can tail call us and return true. */
1949 /* Actually, ISO C leaves conversion of UV to IV undefined, but
1950 until proven guilty, assume that things are not that bad... */
1955 As 64 bit platforms often have an NV that doesn't preserve all bits of
1956 an IV (an assumption perl has been based on to date) it becomes necessary
1957 to remove the assumption that the NV always carries enough precision to
1958 recreate the IV whenever needed, and that the NV is the canonical form.
1959 Instead, IV/UV and NV need to be given equal rights. So as to not lose
1960 precision as a side effect of conversion (which would lead to insanity
1961 and the dragon(s) in t/op/numconvert.t getting very angry) the intent is
1962 1) to distinguish between IV/UV/NV slots that have a valid conversion cached
1963 where precision was lost, and IV/UV/NV slots that have a valid conversion
1964 which has lost no precision
1965 2) to ensure that if a numeric conversion to one form is requested that
1966 would lose precision, the precise conversion (or differently
1967 imprecise conversion) is also performed and cached, to prevent
1968 requests for different numeric formats on the same SV causing
1969 lossy conversion chains. (lossless conversion chains are perfectly
1974 SvIOKp is true if the IV slot contains a valid value
1975 SvIOK is true only if the IV value is accurate (UV if SvIOK_UV true)
1976 SvNOKp is true if the NV slot contains a valid value
1977 SvNOK is true only if the NV value is accurate
1980 while converting from PV to NV, check to see if converting that NV to an
1981 IV(or UV) would lose accuracy over a direct conversion from PV to
1982 IV(or UV). If it would, cache both conversions, return NV, but mark
1983 SV as IOK NOKp (ie not NOK).
1985 While converting from PV to IV, check to see if converting that IV to an
1986 NV would lose accuracy over a direct conversion from PV to NV. If it
1987 would, cache both conversions, flag similarly.
1989 Before, the SV value "3.2" could become NV=3.2 IV=3 NOK, IOK quite
1990 correctly because if IV & NV were set NV *always* overruled.
1991 Now, "3.2" will become NV=3.2 IV=3 NOK, IOKp, because the flag's meaning
1992 changes - now IV and NV together means that the two are interchangeable:
1993 SvIVX == (IV) SvNVX && SvNVX == (NV) SvIVX;
1995 The benefit of this is that operations such as pp_add know that if
1996 SvIOK is true for both left and right operands, then integer addition
1997 can be used instead of floating point (for cases where the result won't
1998 overflow). Before, floating point was always used, which could lead to
1999 loss of precision compared with integer addition.
2001 * making IV and NV equal status should make maths accurate on 64 bit
2003 * may speed up maths somewhat if pp_add and friends start to use
2004 integers when possible instead of fp. (Hopefully the overhead in
2005 looking for SvIOK and checking for overflow will not outweigh the
2006 fp to integer speedup)
2007 * will slow down integer operations (callers of SvIV) on "inaccurate"
2008 values, as the change from SvIOK to SvIOKp will cause a call into
2009 sv_2iv each time rather than a macro access direct to the IV slot
2010 * should speed up number->string conversion on integers as IV is
2011 favoured when IV and NV are equally accurate
2013 ####################################################################
2014 You had better be using SvIOK_notUV if you want an IV for arithmetic:
2015 SvIOK is true if (IV or UV), so you might be getting (IV)SvUV.
2016 On the other hand, SvUOK is true iff UV.
2017 ####################################################################
2019 Your mileage will vary depending your CPU's relative fp to integer
2023 #ifndef NV_PRESERVES_UV
2024 # define IS_NUMBER_UNDERFLOW_IV 1
2025 # define IS_NUMBER_UNDERFLOW_UV 2
2026 # define IS_NUMBER_IV_AND_UV 2
2027 # define IS_NUMBER_OVERFLOW_IV 4
2028 # define IS_NUMBER_OVERFLOW_UV 5
2030 /* sv_2iuv_non_preserve(): private routine for use by sv_2iv() and sv_2uv() */
2032 /* For sv_2nv these three cases are "SvNOK and don't bother casting" */
2034 S_sv_2iuv_non_preserve(pTHX_ SV *const sv
2040 PERL_ARGS_ASSERT_SV_2IUV_NON_PRESERVE;
2041 PERL_UNUSED_CONTEXT;
2043 DEBUG_c(PerlIO_printf(Perl_debug_log,"sv_2iuv_non '%s', IV=0x%" UVxf " NV=%" NVgf " inttype=%" UVXf "\n", SvPVX_const(sv), SvIVX(sv), SvNVX(sv), (UV)numtype));
2044 if (SvNVX(sv) < (NV)IV_MIN) {
2045 (void)SvIOKp_on(sv);
2047 SvIV_set(sv, IV_MIN);
2048 return IS_NUMBER_UNDERFLOW_IV;
2050 if (SvNVX(sv) > (NV)UV_MAX) {
2051 (void)SvIOKp_on(sv);
2054 SvUV_set(sv, UV_MAX);
2055 return IS_NUMBER_OVERFLOW_UV;
2057 (void)SvIOKp_on(sv);
2059 /* Can't use strtol etc to convert this string. (See truth table in
2061 if (SvNVX(sv) <= (UV)IV_MAX) {
2062 SvIV_set(sv, I_V(SvNVX(sv)));
2063 if ((NV)(SvIVX(sv)) == SvNVX(sv)) {
2064 SvIOK_on(sv); /* Integer is precise. NOK, IOK */
2066 /* Integer is imprecise. NOK, IOKp */
2068 return SvNVX(sv) < 0 ? IS_NUMBER_UNDERFLOW_UV : IS_NUMBER_IV_AND_UV;
2071 SvUV_set(sv, U_V(SvNVX(sv)));
2072 if ((NV)(SvUVX(sv)) == SvNVX(sv)) {
2073 if (SvUVX(sv) == UV_MAX) {
2074 /* As we know that NVs don't preserve UVs, UV_MAX cannot
2075 possibly be preserved by NV. Hence, it must be overflow.
2077 return IS_NUMBER_OVERFLOW_UV;
2079 SvIOK_on(sv); /* Integer is precise. NOK, UOK */
2081 /* Integer is imprecise. NOK, IOKp */
2083 return IS_NUMBER_OVERFLOW_IV;
2085 #endif /* !NV_PRESERVES_UV*/
2087 /* If numtype is infnan, set the NV of the sv accordingly.
2088 * If numtype is anything else, try setting the NV using Atof(PV). */
2090 # pragma warning(push)
2091 # pragma warning(disable:4756;disable:4056)
2094 S_sv_setnv(pTHX_ SV* sv, int numtype)
2096 bool pok = cBOOL(SvPOK(sv));
2099 if ((numtype & IS_NUMBER_INFINITY)) {
2100 SvNV_set(sv, (numtype & IS_NUMBER_NEG) ? -NV_INF : NV_INF);
2105 if ((numtype & IS_NUMBER_NAN)) {
2106 SvNV_set(sv, NV_NAN);
2111 SvNV_set(sv, Atof(SvPVX_const(sv)));
2112 /* Purposefully no true nok here, since we don't want to blow
2113 * away the possible IOK/UV of an existing sv. */
2116 SvNOK_only(sv); /* No IV or UV please, this is pure infnan. */
2118 SvPOK_on(sv); /* PV is okay, though. */
2122 # pragma warning(pop)
2126 S_sv_2iuv_common(pTHX_ SV *const sv)
2128 PERL_ARGS_ASSERT_SV_2IUV_COMMON;
2131 /* erm. not sure. *should* never get NOKp (without NOK) from sv_2nv
2132 * without also getting a cached IV/UV from it at the same time
2133 * (ie PV->NV conversion should detect loss of accuracy and cache
2134 * IV or UV at same time to avoid this. */
2135 /* IV-over-UV optimisation - choose to cache IV if possible */
2137 if (SvTYPE(sv) == SVt_NV)
2138 sv_upgrade(sv, SVt_PVNV);
2140 (void)SvIOKp_on(sv); /* Must do this first, to clear any SvOOK */
2141 /* < not <= as for NV doesn't preserve UV, ((NV)IV_MAX+1) will almost
2142 certainly cast into the IV range at IV_MAX, whereas the correct
2143 answer is the UV IV_MAX +1. Hence < ensures that dodgy boundary
2145 #if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan)
2146 if (Perl_isnan(SvNVX(sv))) {
2152 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2153 SvIV_set(sv, I_V(SvNVX(sv)));
2154 if (SvNVX(sv) == (NV) SvIVX(sv)
2155 #ifndef NV_PRESERVES_UV
2156 && SvIVX(sv) != IV_MIN /* avoid negating IV_MIN below */
2157 && (((UV)1 << NV_PRESERVES_UV_BITS) >
2158 (UV)(SvIVX(sv) > 0 ? SvIVX(sv) : -SvIVX(sv)))
2159 /* Don't flag it as "accurately an integer" if the number
2160 came from a (by definition imprecise) NV operation, and
2161 we're outside the range of NV integer precision */
2165 SvIOK_on(sv); /* Can this go wrong with rounding? NWC */
2167 /* scalar has trailing garbage, eg "42a" */
2169 DEBUG_c(PerlIO_printf(Perl_debug_log,
2170 "0x%" UVxf " iv(%" NVgf " => %" IVdf ") (precise)\n",
2176 /* IV not precise. No need to convert from PV, as NV
2177 conversion would already have cached IV if it detected
2178 that PV->IV would be better than PV->NV->IV
2179 flags already correct - don't set public IOK. */
2180 DEBUG_c(PerlIO_printf(Perl_debug_log,
2181 "0x%" UVxf " iv(%" NVgf " => %" IVdf ") (imprecise)\n",
2186 /* Can the above go wrong if SvIVX == IV_MIN and SvNVX < IV_MIN,
2187 but the cast (NV)IV_MIN rounds to a the value less (more
2188 negative) than IV_MIN which happens to be equal to SvNVX ??
2189 Analogous to 0xFFFFFFFFFFFFFFFF rounding up to NV (2**64) and
2190 NV rounding back to 0xFFFFFFFFFFFFFFFF, so UVX == UV(NVX) and
2191 (NV)UVX == NVX are both true, but the values differ. :-(
2192 Hopefully for 2s complement IV_MIN is something like
2193 0x8000000000000000 which will be exact. NWC */
2196 SvUV_set(sv, U_V(SvNVX(sv)));
2198 (SvNVX(sv) == (NV) SvUVX(sv))
2199 #ifndef NV_PRESERVES_UV
2200 /* Make sure it's not 0xFFFFFFFFFFFFFFFF */
2201 /*&& (SvUVX(sv) != UV_MAX) irrelevant with code below */
2202 && (((UV)1 << NV_PRESERVES_UV_BITS) > SvUVX(sv))
2203 /* Don't flag it as "accurately an integer" if the number
2204 came from a (by definition imprecise) NV operation, and
2205 we're outside the range of NV integer precision */
2211 DEBUG_c(PerlIO_printf(Perl_debug_log,
2212 "0x%" UVxf " 2iv(%" UVuf " => %" IVdf ") (as unsigned)\n",
2218 else if (SvPOKp(sv)) {
2221 const char *s = SvPVX_const(sv);
2222 const STRLEN cur = SvCUR(sv);
2224 /* short-cut for a single digit string like "1" */
2229 if (SvTYPE(sv) < SVt_PVIV)
2230 sv_upgrade(sv, SVt_PVIV);
2232 SvIV_set(sv, (IV)(c - '0'));
2237 numtype = grok_number(s, cur, &value);
2238 /* We want to avoid a possible problem when we cache an IV/ a UV which
2239 may be later translated to an NV, and the resulting NV is not
2240 the same as the direct translation of the initial string
2241 (eg 123.456 can shortcut to the IV 123 with atol(), but we must
2242 be careful to ensure that the value with the .456 is around if the
2243 NV value is requested in the future).
2245 This means that if we cache such an IV/a UV, we need to cache the
2246 NV as well. Moreover, we trade speed for space, and do not
2247 cache the NV if we are sure it's not needed.
2250 /* SVt_PVNV is one higher than SVt_PVIV, hence this order */
2251 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2252 == IS_NUMBER_IN_UV) {
2253 /* It's definitely an integer, only upgrade to PVIV */
2254 if (SvTYPE(sv) < SVt_PVIV)
2255 sv_upgrade(sv, SVt_PVIV);
2257 } else if (SvTYPE(sv) < SVt_PVNV)
2258 sv_upgrade(sv, SVt_PVNV);
2260 if ((numtype & (IS_NUMBER_INFINITY | IS_NUMBER_NAN))) {
2261 if (ckWARN(WARN_NUMERIC) && ((numtype & IS_NUMBER_TRAILING)))
2263 S_sv_setnv(aTHX_ sv, numtype);
2267 /* If NVs preserve UVs then we only use the UV value if we know that
2268 we aren't going to call atof() below. If NVs don't preserve UVs
2269 then the value returned may have more precision than atof() will
2270 return, even though value isn't perfectly accurate. */
2271 if ((numtype & (IS_NUMBER_IN_UV
2272 #ifdef NV_PRESERVES_UV
2275 )) == IS_NUMBER_IN_UV) {
2276 /* This won't turn off the public IOK flag if it was set above */
2277 (void)SvIOKp_on(sv);
2279 if (!(numtype & IS_NUMBER_NEG)) {
2281 if (value <= (UV)IV_MAX) {
2282 SvIV_set(sv, (IV)value);
2284 /* it didn't overflow, and it was positive. */
2285 SvUV_set(sv, value);
2289 /* 2s complement assumption */
2290 if (value <= (UV)IV_MIN) {
2291 SvIV_set(sv, value == (UV)IV_MIN
2292 ? IV_MIN : -(IV)value);
2294 /* Too negative for an IV. This is a double upgrade, but
2295 I'm assuming it will be rare. */
2296 if (SvTYPE(sv) < SVt_PVNV)
2297 sv_upgrade(sv, SVt_PVNV);
2301 SvNV_set(sv, -(NV)value);
2302 SvIV_set(sv, IV_MIN);
2306 /* For !NV_PRESERVES_UV and IS_NUMBER_IN_UV and IS_NUMBER_NOT_INT we
2307 will be in the previous block to set the IV slot, and the next
2308 block to set the NV slot. So no else here. */
2310 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2311 != IS_NUMBER_IN_UV) {
2312 /* It wasn't an (integer that doesn't overflow the UV). */
2313 S_sv_setnv(aTHX_ sv, numtype);
2315 if (! numtype && ckWARN(WARN_NUMERIC))
2318 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%" UVxf " 2iv(%" NVgf ")\n",
2319 PTR2UV(sv), SvNVX(sv)));
2321 #ifdef NV_PRESERVES_UV
2322 (void)SvIOKp_on(sv);
2324 #if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan)
2325 if (Perl_isnan(SvNVX(sv))) {
2331 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2332 SvIV_set(sv, I_V(SvNVX(sv)));
2333 if ((NV)(SvIVX(sv)) == SvNVX(sv)) {
2336 NOOP; /* Integer is imprecise. NOK, IOKp */
2338 /* UV will not work better than IV */
2340 if (SvNVX(sv) > (NV)UV_MAX) {
2342 /* Integer is inaccurate. NOK, IOKp, is UV */
2343 SvUV_set(sv, UV_MAX);
2345 SvUV_set(sv, U_V(SvNVX(sv)));
2346 /* 0xFFFFFFFFFFFFFFFF not an issue in here, NVs
2347 NV preservse UV so can do correct comparison. */
2348 if ((NV)(SvUVX(sv)) == SvNVX(sv)) {
2351 NOOP; /* Integer is imprecise. NOK, IOKp, is UV */
2356 #else /* NV_PRESERVES_UV */
2357 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2358 == (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT)) {
2359 /* The IV/UV slot will have been set from value returned by
2360 grok_number above. The NV slot has just been set using
2363 assert (SvIOKp(sv));
2365 if (((UV)1 << NV_PRESERVES_UV_BITS) >
2366 U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))) {
2367 /* Small enough to preserve all bits. */
2368 (void)SvIOKp_on(sv);
2370 SvIV_set(sv, I_V(SvNVX(sv)));
2371 if ((NV)(SvIVX(sv)) == SvNVX(sv))
2373 /* Assumption: first non-preserved integer is < IV_MAX,
2374 this NV is in the preserved range, therefore: */
2375 if (!(U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))
2377 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);
2381 0 0 already failed to read UV.
2382 0 1 already failed to read UV.
2383 1 0 you won't get here in this case. IV/UV
2384 slot set, public IOK, Atof() unneeded.
2385 1 1 already read UV.
2386 so there's no point in sv_2iuv_non_preserve() attempting
2387 to use atol, strtol, strtoul etc. */
2389 sv_2iuv_non_preserve (sv, numtype);
2391 sv_2iuv_non_preserve (sv);
2395 #endif /* NV_PRESERVES_UV */
2396 /* It might be more code efficient to go through the entire logic above
2397 and conditionally set with SvIOKp_on() rather than SvIOK(), but it
2398 gets complex and potentially buggy, so more programmer efficient
2399 to do it this way, by turning off the public flags: */
2401 SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK);
2405 if (isGV_with_GP(sv))
2406 return glob_2number(MUTABLE_GV(sv));
2408 if (!PL_localizing && ckWARN(WARN_UNINITIALIZED))
2410 if (SvTYPE(sv) < SVt_IV)
2411 /* Typically the caller expects that sv_any is not NULL now. */
2412 sv_upgrade(sv, SVt_IV);
2413 /* Return 0 from the caller. */
2420 =for apidoc sv_2iv_flags
2422 Return the integer value of an SV, doing any necessary string
2423 conversion. If C<flags> has the C<SV_GMAGIC> bit set, does an C<mg_get()> first.
2424 Normally used via the C<SvIV(sv)> and C<SvIVx(sv)> macros.
2430 Perl_sv_2iv_flags(pTHX_ SV *const sv, const I32 flags)
2432 PERL_ARGS_ASSERT_SV_2IV_FLAGS;
2434 assert (SvTYPE(sv) != SVt_PVAV && SvTYPE(sv) != SVt_PVHV
2435 && SvTYPE(sv) != SVt_PVFM);
2437 if (SvGMAGICAL(sv) && (flags & SV_GMAGIC))
2443 if (flags & SV_SKIP_OVERLOAD)
2445 tmpstr = AMG_CALLunary(sv, numer_amg);
2446 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2447 return SvIV(tmpstr);
2450 return PTR2IV(SvRV(sv));
2453 if (SvVALID(sv) || isREGEXP(sv)) {
2454 /* FBMs use the space for SvIVX and SvNVX for other purposes, so
2455 must not let them cache IVs.
2456 In practice they are extremely unlikely to actually get anywhere
2457 accessible by user Perl code - the only way that I'm aware of is when
2458 a constant subroutine which is used as the second argument to index.
2460 Regexps have no SvIVX and SvNVX fields.
2465 const char * const ptr =
2466 isREGEXP(sv) ? RX_WRAPPED((REGEXP*)sv) : SvPVX_const(sv);
2468 = grok_number(ptr, SvCUR(sv), &value);
2470 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2471 == IS_NUMBER_IN_UV) {
2472 /* It's definitely an integer */
2473 if (numtype & IS_NUMBER_NEG) {
2474 if (value < (UV)IV_MIN)
2477 if (value < (UV)IV_MAX)
2482 /* Quite wrong but no good choices. */
2483 if ((numtype & IS_NUMBER_INFINITY)) {
2484 return (numtype & IS_NUMBER_NEG) ? IV_MIN : IV_MAX;
2485 } else if ((numtype & IS_NUMBER_NAN)) {
2486 return 0; /* So wrong. */
2490 if (ckWARN(WARN_NUMERIC))
2493 return I_V(Atof(ptr));
2497 if (SvTHINKFIRST(sv)) {
2498 if (SvREADONLY(sv) && !SvOK(sv)) {
2499 if (ckWARN(WARN_UNINITIALIZED))
2506 if (S_sv_2iuv_common(aTHX_ sv))
2510 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%" UVxf " 2iv(%" IVdf ")\n",
2511 PTR2UV(sv),SvIVX(sv)));
2512 return SvIsUV(sv) ? (IV)SvUVX(sv) : SvIVX(sv);
2516 =for apidoc sv_2uv_flags
2518 Return the unsigned integer value of an SV, doing any necessary string
2519 conversion. If C<flags> has the C<SV_GMAGIC> bit set, does an C<mg_get()> first.
2520 Normally used via the C<SvUV(sv)> and C<SvUVx(sv)> macros.
2526 Perl_sv_2uv_flags(pTHX_ SV *const sv, const I32 flags)
2528 PERL_ARGS_ASSERT_SV_2UV_FLAGS;
2530 if (SvGMAGICAL(sv) && (flags & SV_GMAGIC))
2536 if (flags & SV_SKIP_OVERLOAD)
2538 tmpstr = AMG_CALLunary(sv, numer_amg);
2539 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2540 return SvUV(tmpstr);
2543 return PTR2UV(SvRV(sv));
2546 if (SvVALID(sv) || isREGEXP(sv)) {
2547 /* FBMs use the space for SvIVX and SvNVX for other purposes, and use
2548 the same flag bit as SVf_IVisUV, so must not let them cache IVs.
2549 Regexps have no SvIVX and SvNVX fields. */
2553 const char * const ptr =
2554 isREGEXP(sv) ? RX_WRAPPED((REGEXP*)sv) : SvPVX_const(sv);
2556 = grok_number(ptr, SvCUR(sv), &value);
2558 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2559 == IS_NUMBER_IN_UV) {
2560 /* It's definitely an integer */
2561 if (!(numtype & IS_NUMBER_NEG))
2565 /* Quite wrong but no good choices. */
2566 if ((numtype & IS_NUMBER_INFINITY)) {
2567 return UV_MAX; /* So wrong. */
2568 } else if ((numtype & IS_NUMBER_NAN)) {
2569 return 0; /* So wrong. */
2573 if (ckWARN(WARN_NUMERIC))
2576 return U_V(Atof(ptr));
2580 if (SvTHINKFIRST(sv)) {
2581 if (SvREADONLY(sv) && !SvOK(sv)) {
2582 if (ckWARN(WARN_UNINITIALIZED))
2589 if (S_sv_2iuv_common(aTHX_ sv))
2593 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%" UVxf " 2uv(%" UVuf ")\n",
2594 PTR2UV(sv),SvUVX(sv)));
2595 return SvIsUV(sv) ? SvUVX(sv) : (UV)SvIVX(sv);
2599 =for apidoc sv_2nv_flags
2601 Return the num value of an SV, doing any necessary string or integer
2602 conversion. If C<flags> has the C<SV_GMAGIC> bit set, does an C<mg_get()> first.
2603 Normally used via the C<SvNV(sv)> and C<SvNVx(sv)> macros.
2609 Perl_sv_2nv_flags(pTHX_ SV *const sv, const I32 flags)
2611 PERL_ARGS_ASSERT_SV_2NV_FLAGS;
2613 assert (SvTYPE(sv) != SVt_PVAV && SvTYPE(sv) != SVt_PVHV
2614 && SvTYPE(sv) != SVt_PVFM);
2615 if (SvGMAGICAL(sv) || SvVALID(sv) || isREGEXP(sv)) {
2616 /* FBMs use the space for SvIVX and SvNVX for other purposes, and use
2617 the same flag bit as SVf_IVisUV, so must not let them cache NVs.
2618 Regexps have no SvIVX and SvNVX fields. */
2620 if (flags & SV_GMAGIC)
2624 if (SvPOKp(sv) && !SvIOKp(sv)) {
2625 ptr = SvPVX_const(sv);
2626 if (!SvIOKp(sv) && ckWARN(WARN_NUMERIC) &&
2627 !grok_number(ptr, SvCUR(sv), NULL))
2633 return (NV)SvUVX(sv);
2635 return (NV)SvIVX(sv);
2640 assert(SvTYPE(sv) >= SVt_PVMG);
2641 /* This falls through to the report_uninit near the end of the
2643 } else if (SvTHINKFIRST(sv)) {
2648 if (flags & SV_SKIP_OVERLOAD)
2650 tmpstr = AMG_CALLunary(sv, numer_amg);
2651 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2652 return SvNV(tmpstr);
2655 return PTR2NV(SvRV(sv));
2657 if (SvREADONLY(sv) && !SvOK(sv)) {
2658 if (ckWARN(WARN_UNINITIALIZED))
2663 if (SvTYPE(sv) < SVt_NV) {
2664 /* The logic to use SVt_PVNV if necessary is in sv_upgrade. */
2665 sv_upgrade(sv, SVt_NV);
2666 CLANG_DIAG_IGNORE_STMT(-Wthread-safety);
2668 DECLARATION_FOR_LC_NUMERIC_MANIPULATION;
2669 STORE_LC_NUMERIC_SET_STANDARD();
2670 PerlIO_printf(Perl_debug_log,
2671 "0x%" UVxf " num(%" NVgf ")\n",
2672 PTR2UV(sv), SvNVX(sv));
2673 RESTORE_LC_NUMERIC();
2675 CLANG_DIAG_RESTORE_STMT;
2678 else if (SvTYPE(sv) < SVt_PVNV)
2679 sv_upgrade(sv, SVt_PVNV);
2684 SvNV_set(sv, SvIsUV(sv) ? (NV)SvUVX(sv) : (NV)SvIVX(sv));
2685 #ifdef NV_PRESERVES_UV
2691 /* Only set the public NV OK flag if this NV preserves the IV */
2692 /* Check it's not 0xFFFFFFFFFFFFFFFF */
2694 SvIsUV(sv) ? ((SvUVX(sv) != UV_MAX)&&(SvUVX(sv) == U_V(SvNVX(sv))))
2695 : (SvIVX(sv) == I_V(SvNVX(sv))))
2701 else if (SvPOKp(sv)) {
2703 const int numtype = grok_number(SvPVX_const(sv), SvCUR(sv), &value);
2704 if (!SvIOKp(sv) && !numtype && ckWARN(WARN_NUMERIC))
2706 #ifdef NV_PRESERVES_UV
2707 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2708 == IS_NUMBER_IN_UV) {
2709 /* It's definitely an integer */
2710 SvNV_set(sv, (numtype & IS_NUMBER_NEG) ? -(NV)value : (NV)value);
2712 S_sv_setnv(aTHX_ sv, numtype);
2719 SvNV_set(sv, Atof(SvPVX_const(sv)));
2720 /* Only set the public NV OK flag if this NV preserves the value in
2721 the PV at least as well as an IV/UV would.
2722 Not sure how to do this 100% reliably. */
2723 /* if that shift count is out of range then Configure's test is
2724 wonky. We shouldn't be in here with NV_PRESERVES_UV_BITS ==
2726 if (((UV)1 << NV_PRESERVES_UV_BITS) >
2727 U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))) {
2728 SvNOK_on(sv); /* Definitely small enough to preserve all bits */
2729 } else if (!(numtype & IS_NUMBER_IN_UV)) {
2730 /* Can't use strtol etc to convert this string, so don't try.
2731 sv_2iv and sv_2uv will use the NV to convert, not the PV. */
2734 /* value has been set. It may not be precise. */
2735 if ((numtype & IS_NUMBER_NEG) && (value >= (UV)IV_MIN)) {
2736 /* 2s complement assumption for (UV)IV_MIN */
2737 SvNOK_on(sv); /* Integer is too negative. */
2742 if (numtype & IS_NUMBER_NEG) {
2743 /* -IV_MIN is undefined, but we should never reach
2744 * this point with both IS_NUMBER_NEG and value ==
2746 assert(value != (UV)IV_MIN);
2747 SvIV_set(sv, -(IV)value);
2748 } else if (value <= (UV)IV_MAX) {
2749 SvIV_set(sv, (IV)value);
2751 SvUV_set(sv, value);
2755 if (numtype & IS_NUMBER_NOT_INT) {
2756 /* I believe that even if the original PV had decimals,
2757 they are lost beyond the limit of the FP precision.
2758 However, neither is canonical, so both only get p
2759 flags. NWC, 2000/11/25 */
2760 /* Both already have p flags, so do nothing */
2762 const NV nv = SvNVX(sv);
2763 /* XXX should this spot have NAN_COMPARE_BROKEN, too? */
2764 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2765 if (SvIVX(sv) == I_V(nv)) {
2768 /* It had no "." so it must be integer. */
2772 /* between IV_MAX and NV(UV_MAX).
2773 Could be slightly > UV_MAX */
2775 if (numtype & IS_NUMBER_NOT_INT) {
2776 /* UV and NV both imprecise. */
2778 const UV nv_as_uv = U_V(nv);
2780 if (value == nv_as_uv && SvUVX(sv) != UV_MAX) {
2789 /* It might be more code efficient to go through the entire logic above
2790 and conditionally set with SvNOKp_on() rather than SvNOK(), but it
2791 gets complex and potentially buggy, so more programmer efficient
2792 to do it this way, by turning off the public flags: */
2794 SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK);
2795 #endif /* NV_PRESERVES_UV */
2798 if (isGV_with_GP(sv)) {
2799 glob_2number(MUTABLE_GV(sv));
2803 if (!PL_localizing && ckWARN(WARN_UNINITIALIZED))
2805 assert (SvTYPE(sv) >= SVt_NV);
2806 /* Typically the caller expects that sv_any is not NULL now. */
2807 /* XXX Ilya implies that this is a bug in callers that assume this
2808 and ideally should be fixed. */
2811 CLANG_DIAG_IGNORE_STMT(-Wthread-safety);
2813 DECLARATION_FOR_LC_NUMERIC_MANIPULATION;
2814 STORE_LC_NUMERIC_SET_STANDARD();
2815 PerlIO_printf(Perl_debug_log, "0x%" UVxf " 2nv(%" NVgf ")\n",
2816 PTR2UV(sv), SvNVX(sv));
2817 RESTORE_LC_NUMERIC();
2819 CLANG_DIAG_RESTORE_STMT;
2826 Return an SV with the numeric value of the source SV, doing any necessary
2827 reference or overload conversion. The caller is expected to have handled
2834 Perl_sv_2num(pTHX_ SV *const sv)
2836 PERL_ARGS_ASSERT_SV_2NUM;
2841 SV * const tmpsv = AMG_CALLunary(sv, numer_amg);
2842 TAINT_IF(tmpsv && SvTAINTED(tmpsv));
2843 if (tmpsv && (!SvROK(tmpsv) || (SvRV(tmpsv) != SvRV(sv))))
2844 return sv_2num(tmpsv);
2846 return sv_2mortal(newSVuv(PTR2UV(SvRV(sv))));
2849 /* uiv_2buf(): private routine for use by sv_2pv_flags(): print an IV or
2850 * UV as a string towards the end of buf, and return pointers to start and
2853 * We assume that buf is at least TYPE_CHARS(UV) long.
2857 S_uiv_2buf(char *const buf, const IV iv, UV uv, const int is_uv, char **const peob)
2859 char *ptr = buf + TYPE_CHARS(UV);
2860 char * const ebuf = ptr;
2863 PERL_ARGS_ASSERT_UIV_2BUF;
2875 *--ptr = '0' + (char)(uv % 10);
2883 /* Helper for sv_2pv_flags and sv_vcatpvfn_flags. If the NV is an
2884 * infinity or a not-a-number, writes the appropriate strings to the
2885 * buffer, including a zero byte. On success returns the written length,
2886 * excluding the zero byte, on failure (not an infinity, not a nan)
2887 * returns zero, assert-fails on maxlen being too short.
2889 * XXX for "Inf", "-Inf", and "NaN", we could have three read-only
2890 * shared string constants we point to, instead of generating a new
2891 * string for each instance. */
2893 S_infnan_2pv(NV nv, char* buffer, size_t maxlen, char plus) {
2895 assert(maxlen >= 4);
2896 if (Perl_isinf(nv)) {
2898 if (maxlen < 5) /* "-Inf\0" */
2908 else if (Perl_isnan(nv)) {
2912 /* XXX optionally output the payload mantissa bits as
2913 * "(unsigned)" (to match the nan("...") C99 function,
2914 * or maybe as "(0xhhh...)" would make more sense...
2915 * provide a format string so that the user can decide?
2916 * NOTE: would affect the maxlen and assert() logic.*/
2921 assert((s == buffer + 3) || (s == buffer + 4));
2927 =for apidoc sv_2pv_flags
2929 Returns a pointer to the string value of an SV, and sets C<*lp> to its length.
2930 If flags has the C<SV_GMAGIC> bit set, does an C<mg_get()> first. Coerces C<sv> to a
2931 string if necessary. Normally invoked via the C<SvPV_flags> macro.
2932 C<sv_2pv()> and C<sv_2pv_nomg> usually end up here too.
2938 Perl_sv_2pv_flags(pTHX_ SV *const sv, STRLEN *const lp, const I32 flags)
2942 PERL_ARGS_ASSERT_SV_2PV_FLAGS;
2944 assert (SvTYPE(sv) != SVt_PVAV && SvTYPE(sv) != SVt_PVHV
2945 && SvTYPE(sv) != SVt_PVFM);
2946 if (SvGMAGICAL(sv) && (flags & SV_GMAGIC))
2951 if (flags & SV_SKIP_OVERLOAD)
2953 tmpstr = AMG_CALLunary(sv, string_amg);
2954 TAINT_IF(tmpstr && SvTAINTED(tmpstr));
2955 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2957 /* char *pv = lp ? SvPV(tmpstr, *lp) : SvPV_nolen(tmpstr);
2961 if ((SvFLAGS(tmpstr) & (SVf_POK)) == SVf_POK) {
2962 if (flags & SV_CONST_RETURN) {
2963 pv = (char *) SvPVX_const(tmpstr);
2965 pv = (flags & SV_MUTABLE_RETURN)
2966 ? SvPVX_mutable(tmpstr) : SvPVX(tmpstr);
2969 *lp = SvCUR(tmpstr);
2971 pv = sv_2pv_flags(tmpstr, lp, flags);
2984 SV *const referent = SvRV(sv);
2988 retval = buffer = savepvn("NULLREF", len);
2989 } else if (SvTYPE(referent) == SVt_REGEXP &&
2990 (!(PL_curcop->cop_hints & HINT_NO_AMAGIC) ||
2991 amagic_is_enabled(string_amg))) {
2992 REGEXP * const re = (REGEXP *)MUTABLE_PTR(referent);
2996 /* If the regex is UTF-8 we want the containing scalar to
2997 have an UTF-8 flag too */
3004 *lp = RX_WRAPLEN(re);
3006 return RX_WRAPPED(re);
3008 const char *const typestr = sv_reftype(referent, 0);
3009 const STRLEN typelen = strlen(typestr);
3010 UV addr = PTR2UV(referent);
3011 const char *stashname = NULL;
3012 STRLEN stashnamelen = 0; /* hush, gcc */
3013 const char *buffer_end;
3015 if (SvOBJECT(referent)) {
3016 const HEK *const name = HvNAME_HEK(SvSTASH(referent));
3019 stashname = HEK_KEY(name);
3020 stashnamelen = HEK_LEN(name);
3022 if (HEK_UTF8(name)) {
3028 stashname = "__ANON__";
3031 len = stashnamelen + 1 /* = */ + typelen + 3 /* (0x */
3032 + 2 * sizeof(UV) + 2 /* )\0 */;
3034 len = typelen + 3 /* (0x */
3035 + 2 * sizeof(UV) + 2 /* )\0 */;
3038 Newx(buffer, len, char);
3039 buffer_end = retval = buffer + len;
3041 /* Working backwards */
3045 *--retval = PL_hexdigit[addr & 15];
3046 } while (addr >>= 4);
3052 memcpy(retval, typestr, typelen);
3056 retval -= stashnamelen;
3057 memcpy(retval, stashname, stashnamelen);
3059 /* retval may not necessarily have reached the start of the
3061 assert (retval >= buffer);
3063 len = buffer_end - retval - 1; /* -1 for that \0 */
3075 if (flags & SV_MUTABLE_RETURN)
3076 return SvPVX_mutable(sv);
3077 if (flags & SV_CONST_RETURN)
3078 return (char *)SvPVX_const(sv);
3083 /* I'm assuming that if both IV and NV are equally valid then
3084 converting the IV is going to be more efficient */
3085 const U32 isUIOK = SvIsUV(sv);
3086 char buf[TYPE_CHARS(UV)];
3090 if (SvTYPE(sv) < SVt_PVIV)
3091 sv_upgrade(sv, SVt_PVIV);
3092 ptr = uiv_2buf(buf, SvIVX(sv), SvUVX(sv), isUIOK, &ebuf);
3094 /* inlined from sv_setpvn */
3095 s = SvGROW_mutable(sv, len + 1);
3096 Move(ptr, s, len, char);
3101 else if (SvNOK(sv)) {
3102 if (SvTYPE(sv) < SVt_PVNV)
3103 sv_upgrade(sv, SVt_PVNV);
3104 if (SvNVX(sv) == 0.0
3105 #if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan)
3106 && !Perl_isnan(SvNVX(sv))
3109 s = SvGROW_mutable(sv, 2);
3114 STRLEN size = 5; /* "-Inf\0" */
3116 s = SvGROW_mutable(sv, size);
3117 len = S_infnan_2pv(SvNVX(sv), s, size, 0);
3123 /* some Xenix systems wipe out errno here */
3132 5 + /* exponent digits */
3136 s = SvGROW_mutable(sv, size);
3137 #ifndef USE_LOCALE_NUMERIC
3138 SNPRINTF_G(SvNVX(sv), s, SvLEN(sv), NV_DIG);
3144 DECLARATION_FOR_LC_NUMERIC_MANIPULATION;
3145 STORE_LC_NUMERIC_SET_TO_NEEDED();
3147 local_radix = _NOT_IN_NUMERIC_STANDARD;
3148 if (local_radix && SvCUR(PL_numeric_radix_sv) > 1) {
3149 size += SvCUR(PL_numeric_radix_sv) - 1;
3150 s = SvGROW_mutable(sv, size);
3153 SNPRINTF_G(SvNVX(sv), s, SvLEN(sv), NV_DIG);
3155 /* If the radix character is UTF-8, and actually is in the
3156 * output, turn on the UTF-8 flag for the scalar */
3158 && SvUTF8(PL_numeric_radix_sv)
3159 && instr(s, SvPVX_const(PL_numeric_radix_sv)))
3164 RESTORE_LC_NUMERIC();
3167 /* We don't call SvPOK_on(), because it may come to
3168 * pass that the locale changes so that the
3169 * stringification we just did is no longer correct. We
3170 * will have to re-stringify every time it is needed */
3177 else if (isGV_with_GP(sv)) {
3178 GV *const gv = MUTABLE_GV(sv);
3179 SV *const buffer = sv_newmortal();
3181 gv_efullname3(buffer, gv, "*");
3183 assert(SvPOK(buffer));
3189 *lp = SvCUR(buffer);
3190 return SvPVX(buffer);
3195 if (flags & SV_UNDEF_RETURNS_NULL)
3197 if (!PL_localizing && ckWARN(WARN_UNINITIALIZED))
3199 /* Typically the caller expects that sv_any is not NULL now. */
3200 if (!SvREADONLY(sv) && SvTYPE(sv) < SVt_PV)
3201 sv_upgrade(sv, SVt_PV);
3206 const STRLEN len = s - SvPVX_const(sv);
3211 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%" UVxf " 2pv(%s)\n",
3212 PTR2UV(sv),SvPVX_const(sv)));
3213 if (flags & SV_CONST_RETURN)
3214 return (char *)SvPVX_const(sv);
3215 if (flags & SV_MUTABLE_RETURN)
3216 return SvPVX_mutable(sv);
3221 =for apidoc sv_copypv
3223 Copies a stringified representation of the source SV into the
3224 destination SV. Automatically performs any necessary C<mg_get> and
3225 coercion of numeric values into strings. Guaranteed to preserve
3226 C<UTF8> flag even from overloaded objects. Similar in nature to
3227 C<sv_2pv[_flags]> but operates directly on an SV instead of just the
3228 string. Mostly uses C<sv_2pv_flags> to do its work, except when that
3229 would lose the UTF-8'ness of the PV.
3231 =for apidoc sv_copypv_nomg
3233 Like C<sv_copypv>, but doesn't invoke get magic first.
3235 =for apidoc sv_copypv_flags
3237 Implementation of C<sv_copypv> and C<sv_copypv_nomg>. Calls get magic iff flags
3238 has the C<SV_GMAGIC> bit set.
3244 Perl_sv_copypv_flags(pTHX_ SV *const dsv, SV *const ssv, const I32 flags)
3249 PERL_ARGS_ASSERT_SV_COPYPV_FLAGS;
3251 s = SvPV_flags_const(ssv,len,(flags & SV_GMAGIC));
3252 sv_setpvn(dsv,s,len);
3260 =for apidoc sv_2pvbyte
3262 Return a pointer to the byte-encoded representation of the SV, and set C<*lp>
3263 to its length. May cause the SV to be downgraded from UTF-8 as a
3266 Usually accessed via the C<SvPVbyte> macro.
3272 Perl_sv_2pvbyte(pTHX_ SV *sv, STRLEN *const lp)
3274 PERL_ARGS_ASSERT_SV_2PVBYTE;
3277 if (((SvREADONLY(sv) || SvFAKE(sv)) && !SvIsCOW(sv))
3278 || isGV_with_GP(sv) || SvROK(sv)) {
3279 SV *sv2 = sv_newmortal();
3280 sv_copypv_nomg(sv2,sv);
3283 sv_utf8_downgrade(sv,0);
3284 return lp ? SvPV_nomg(sv,*lp) : SvPV_nomg_nolen(sv);
3288 =for apidoc sv_2pvutf8
3290 Return a pointer to the UTF-8-encoded representation of the SV, and set C<*lp>
3291 to its length. May cause the SV to be upgraded to UTF-8 as a side-effect.
3293 Usually accessed via the C<SvPVutf8> macro.
3299 Perl_sv_2pvutf8(pTHX_ SV *sv, STRLEN *const lp)
3301 PERL_ARGS_ASSERT_SV_2PVUTF8;
3303 if (((SvREADONLY(sv) || SvFAKE(sv)) && !SvIsCOW(sv))
3304 || isGV_with_GP(sv) || SvROK(sv))
3305 sv = sv_mortalcopy(sv);
3308 sv_utf8_upgrade_nomg(sv);
3309 return lp ? SvPV_nomg(sv,*lp) : SvPV_nomg_nolen(sv);
3314 =for apidoc sv_2bool
3316 This macro is only used by C<sv_true()> or its macro equivalent, and only if
3317 the latter's argument is neither C<SvPOK>, C<SvIOK> nor C<SvNOK>.
3318 It calls C<sv_2bool_flags> with the C<SV_GMAGIC> flag.
3320 =for apidoc sv_2bool_flags
3322 This function is only used by C<sv_true()> and friends, and only if
3323 the latter's argument is neither C<SvPOK>, C<SvIOK> nor C<SvNOK>. If the flags
3324 contain C<SV_GMAGIC>, then it does an C<mg_get()> first.
3331 Perl_sv_2bool_flags(pTHX_ SV *sv, I32 flags)
3333 PERL_ARGS_ASSERT_SV_2BOOL_FLAGS;
3336 if(flags & SV_GMAGIC) SvGETMAGIC(sv);
3342 SV * const tmpsv = AMG_CALLunary(sv, bool__amg);
3343 if (tmpsv && (!SvROK(tmpsv) || (SvRV(tmpsv) != SvRV(sv)))) {
3346 if(SvGMAGICAL(sv)) {
3348 goto restart; /* call sv_2bool */
3350 /* expanded SvTRUE_common(sv, (flags = 0, goto restart)) */
3351 else if(!SvOK(sv)) {
3354 else if(SvPOK(sv)) {
3355 svb = SvPVXtrue(sv);
3357 else if((SvFLAGS(sv) & (SVf_IOK|SVf_NOK))) {
3358 svb = (SvIOK(sv) && SvIVX(sv) != 0)
3359 || (SvNOK(sv) && SvNVX(sv) != 0.0);
3363 goto restart; /* call sv_2bool_nomg */
3373 RX_WRAPLEN(sv) > 1 || (RX_WRAPLEN(sv) && *RX_WRAPPED(sv) != '0');
3375 if (SvNOK(sv) && !SvPOK(sv))
3376 return SvNVX(sv) != 0.0;
3378 return SvTRUE_common(sv, isGV_with_GP(sv) ? 1 : 0);
3382 =for apidoc sv_utf8_upgrade
3384 Converts the PV of an SV to its UTF-8-encoded form.
3385 Forces the SV to string form if it is not already.
3386 Will C<mg_get> on C<sv> if appropriate.
3387 Always sets the C<SvUTF8> flag to avoid future validity checks even
3388 if the whole string is the same in UTF-8 as not.
3389 Returns the number of bytes in the converted string
3391 This is not a general purpose byte encoding to Unicode interface:
3392 use the Encode extension for that.
3394 =for apidoc sv_utf8_upgrade_nomg
3396 Like C<sv_utf8_upgrade>, but doesn't do magic on C<sv>.
3398 =for apidoc sv_utf8_upgrade_flags
3400 Converts the PV of an SV to its UTF-8-encoded form.
3401 Forces the SV to string form if it is not already.
3402 Always sets the SvUTF8 flag to avoid future validity checks even
3403 if all the bytes are invariant in UTF-8.
3404 If C<flags> has C<SV_GMAGIC> bit set,
3405 will C<mg_get> on C<sv> if appropriate, else not.
3407 The C<SV_FORCE_UTF8_UPGRADE> flag is now ignored.
3409 Returns the number of bytes in the converted string.
3411 This is not a general purpose byte encoding to Unicode interface:
3412 use the Encode extension for that.
3414 =for apidoc sv_utf8_upgrade_flags_grow
3416 Like C<sv_utf8_upgrade_flags>, but has an additional parameter C<extra>, which is
3417 the number of unused bytes the string of C<sv> is guaranteed to have free after
3418 it upon return. This allows the caller to reserve extra space that it intends
3419 to fill, to avoid extra grows.
3421 C<sv_utf8_upgrade>, C<sv_utf8_upgrade_nomg>, and C<sv_utf8_upgrade_flags>
3422 are implemented in terms of this function.
3424 Returns the number of bytes in the converted string (not including the spares).
3428 If the routine itself changes the string, it adds a trailing C<NUL>. Such a
3429 C<NUL> isn't guaranteed due to having other routines do the work in some input
3430 cases, or if the input is already flagged as being in utf8.
3435 Perl_sv_utf8_upgrade_flags_grow(pTHX_ SV *const sv, const I32 flags, STRLEN extra)
3437 PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS_GROW;
3439 if (sv == &PL_sv_undef)
3441 if (!SvPOK_nog(sv)) {
3443 if (SvREADONLY(sv) && (SvPOKp(sv) || SvIOKp(sv) || SvNOKp(sv))) {
3444 (void) sv_2pv_flags(sv,&len, flags);
3446 if (extra) SvGROW(sv, SvCUR(sv) + extra);
3450 (void) SvPV_force_flags(sv,len,flags & SV_GMAGIC);
3454 /* SVt_REGEXP's shouldn't be upgraded to UTF8 - they're already
3455 * compiled and individual nodes will remain non-utf8 even if the
3456 * stringified version of the pattern gets upgraded. Whether the
3457 * PVX of a REGEXP should be grown or we should just croak, I don't
3459 if (SvUTF8(sv) || isREGEXP(sv)) {
3460 if (extra) SvGROW(sv, SvCUR(sv) + extra);
3465 S_sv_uncow(aTHX_ sv, 0);
3468 if (SvCUR(sv) == 0) {
3469 if (extra) SvGROW(sv, extra);
3470 } else { /* Assume Latin-1/EBCDIC */
3471 /* This function could be much more efficient if we
3472 * had a FLAG in SVs to signal if there are any variant
3473 * chars in the PV. Given that there isn't such a flag
3474 * make the loop as fast as possible. */
3475 U8 * s = (U8 *) SvPVX_const(sv);
3478 if (is_utf8_invariant_string_loc(s, SvCUR(sv), (const U8 **) &t)) {
3480 /* utf8 conversion not needed because all are invariants. Mark
3481 * as UTF-8 even if no variant - saves scanning loop */
3483 if (extra) SvGROW(sv, SvCUR(sv) + extra);
3487 /* Here, there is at least one variant (t points to the first one), so
3488 * the string should be converted to utf8. Everything from 's' to
3489 * 't - 1' will occupy only 1 byte each on output.
3491 * Note that the incoming SV may not have a trailing '\0', as certain
3492 * code in pp_formline can send us partially built SVs.
3494 * There are two main ways to convert. One is to create a new string
3495 * and go through the input starting from the beginning, appending each
3496 * converted value onto the new string as we go along. Going this
3497 * route, it's probably best to initially allocate enough space in the
3498 * string rather than possibly running out of space and having to
3499 * reallocate and then copy what we've done so far. Since everything
3500 * from 's' to 't - 1' is invariant, the destination can be initialized
3501 * with these using a fast memory copy. To be sure to allocate enough
3502 * space, one could use the worst case scenario, where every remaining
3503 * byte expands to two under UTF-8, or one could parse it and count
3504 * exactly how many do expand.
3506 * The other way is to unconditionally parse the remainder of the
3507 * string to figure out exactly how big the expanded string will be,
3508 * growing if needed. Then start at the end of the string and place
3509 * the character there at the end of the unfilled space in the expanded
3510 * one, working backwards until reaching 't'.
3512 * The problem with assuming the worst case scenario is that for very
3513 * long strings, we could allocate much more memory than actually
3514 * needed, which can create performance problems. If we have to parse
3515 * anyway, the second method is the winner as it may avoid an extra
3516 * copy. The code used to use the first method under some
3517 * circumstances, but now that there is faster variant counting on
3518 * ASCII platforms, the second method is used exclusively, eliminating
3519 * some code that no longer has to be maintained. */
3522 /* Count the total number of variants there are. We can start
3523 * just beyond the first one, which is known to be at 't' */
3524 const Size_t invariant_length = t - s;
3525 U8 * e = (U8 *) SvEND(sv);
3527 /* The length of the left overs, plus 1. */
3528 const Size_t remaining_length_p1 = e - t;
3530 /* We expand by 1 for the variant at 't' and one for each remaining
3531 * variant (we start looking at 't+1') */
3532 Size_t expansion = 1 + variant_under_utf8_count(t + 1, e);
3534 /* +1 = trailing NUL */
3535 Size_t need = SvCUR(sv) + expansion + extra + 1;
3538 /* Grow if needed */
3539 if (SvLEN(sv) < need) {
3540 t = invariant_length + (U8*) SvGROW(sv, need);
3541 e = t + remaining_length_p1;
3543 SvCUR_set(sv, invariant_length + remaining_length_p1 + expansion);
3545 /* Set the NUL at the end */
3546 d = (U8 *) SvEND(sv);
3549 /* Having decremented d, it points to the position to put the
3550 * very last byte of the expanded string. Go backwards through
3551 * the string, copying and expanding as we go, stopping when we
3552 * get to the part that is invariant the rest of the way down */
3556 if (NATIVE_BYTE_IS_INVARIANT(*e)) {
3559 *d-- = UTF8_EIGHT_BIT_LO(*e);
3560 *d-- = UTF8_EIGHT_BIT_HI(*e);
3565 if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv)) {
3566 /* Update pos. We do it at the end rather than during
3567 * the upgrade, to avoid slowing down the common case
3568 * (upgrade without pos).
3569 * pos can be stored as either bytes or characters. Since
3570 * this was previously a byte string we can just turn off
3571 * the bytes flag. */
3572 MAGIC * mg = mg_find(sv, PERL_MAGIC_regex_global);
3574 mg->mg_flags &= ~MGf_BYTES;
3576 if ((mg = mg_find(sv, PERL_MAGIC_utf8)))
3577 magic_setutf8(sv,mg); /* clear UTF8 cache */
3587 =for apidoc sv_utf8_downgrade
3589 Attempts to convert the PV of an SV from characters to bytes.
3590 If the PV contains a character that cannot fit
3591 in a byte, this conversion will fail;
3592 in this case, either returns false or, if C<fail_ok> is not
3595 This is not a general purpose Unicode to byte encoding interface:
3596 use the C<Encode> extension for that.
3602 Perl_sv_utf8_downgrade(pTHX_ SV *const sv, const bool fail_ok)
3604 PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE;
3606 if (SvPOKp(sv) && SvUTF8(sv)) {
3610 int mg_flags = SV_GMAGIC;
3613 S_sv_uncow(aTHX_ sv, 0);
3615 if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv)) {
3617 MAGIC * mg = mg_find(sv, PERL_MAGIC_regex_global);
3618 if (mg && mg->mg_len > 0 && mg->mg_flags & MGf_BYTES) {
3619 mg->mg_len = sv_pos_b2u_flags(sv, mg->mg_len,
3620 SV_GMAGIC|SV_CONST_RETURN);
3621 mg_flags = 0; /* sv_pos_b2u does get magic */
3623 if ((mg = mg_find(sv, PERL_MAGIC_utf8)))
3624 magic_setutf8(sv,mg); /* clear UTF8 cache */
3627 s = (U8 *) SvPV_flags(sv, len, mg_flags);
3629 if (!utf8_to_bytes(s, &len)) {
3634 Perl_croak(aTHX_ "Wide character in %s",
3637 Perl_croak(aTHX_ "Wide character");
3648 =for apidoc sv_utf8_encode
3650 Converts the PV of an SV to UTF-8, but then turns the C<SvUTF8>
3651 flag off so that it looks like octets again.
3657 Perl_sv_utf8_encode(pTHX_ SV *const sv)
3659 PERL_ARGS_ASSERT_SV_UTF8_ENCODE;
3661 if (SvREADONLY(sv)) {
3662 sv_force_normal_flags(sv, 0);
3664 (void) sv_utf8_upgrade(sv);
3669 =for apidoc sv_utf8_decode
3671 If the PV of the SV is an octet sequence in Perl's extended UTF-8
3672 and contains a multiple-byte character, the C<SvUTF8> flag is turned on
3673 so that it looks like a character. If the PV contains only single-byte
3674 characters, the C<SvUTF8> flag stays off.
3675 Scans PV for validity and returns FALSE if the PV is invalid UTF-8.
3681 Perl_sv_utf8_decode(pTHX_ SV *const sv)
3683 PERL_ARGS_ASSERT_SV_UTF8_DECODE;
3686 const U8 *start, *c, *first_variant;
3688 /* The octets may have got themselves encoded - get them back as
3691 if (!sv_utf8_downgrade(sv, TRUE))
3694 /* it is actually just a matter of turning the utf8 flag on, but
3695 * we want to make sure everything inside is valid utf8 first.
3697 c = start = (const U8 *) SvPVX_const(sv);
3698 if (! is_utf8_invariant_string_loc(c, SvCUR(sv), &first_variant)) {
3699 if (!is_utf8_string(first_variant, SvCUR(sv) - (first_variant -c)))
3703 if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv)) {
3704 /* XXX Is this dead code? XS_utf8_decode calls SvSETMAGIC
3705 after this, clearing pos. Does anything on CPAN
3707 /* adjust pos to the start of a UTF8 char sequence */
3708 MAGIC * mg = mg_find(sv, PERL_MAGIC_regex_global);
3710 I32 pos = mg->mg_len;
3712 for (c = start + pos; c > start; c--) {
3713 if (UTF8_IS_START(*c))
3716 mg->mg_len = c - start;
3719 if ((mg = mg_find(sv, PERL_MAGIC_utf8)))
3720 magic_setutf8(sv,mg); /* clear UTF8 cache */
3727 =for apidoc sv_setsv
3729 Copies the contents of the source SV C<ssv> into the destination SV
3730 C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
3731 function if the source SV needs to be reused. Does not handle 'set' magic on
3732 destination SV. Calls 'get' magic on source SV. Loosely speaking, it
3733 performs a copy-by-value, obliterating any previous content of the
3736 You probably want to use one of the assortment of wrappers, such as
3737 C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
3738 C<SvSetMagicSV_nosteal>.
3740 =for apidoc sv_setsv_flags
3742 Copies the contents of the source SV C<ssv> into the destination SV
3743 C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
3744 function if the source SV needs to be reused. Does not handle 'set' magic.
3745 Loosely speaking, it performs a copy-by-value, obliterating any previous
3746 content of the destination.
3747 If the C<flags> parameter has the C<SV_GMAGIC> bit set, will C<mg_get> on
3748 C<ssv> if appropriate, else not. If the C<flags>
3749 parameter has the C<SV_NOSTEAL> bit set then the
3750 buffers of temps will not be stolen. C<sv_setsv>
3751 and C<sv_setsv_nomg> are implemented in terms of this function.
3753 You probably want to use one of the assortment of wrappers, such as
3754 C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
3755 C<SvSetMagicSV_nosteal>.
3757 This is the primary function for copying scalars, and most other
3758 copy-ish functions and macros use this underneath.
3764 S_glob_assign_glob(pTHX_ SV *const dstr, SV *const sstr, const int dtype)
3766 I32 mro_changes = 0; /* 1 = method, 2 = isa, 3 = recursive isa */
3767 HV *old_stash = NULL;
3769 PERL_ARGS_ASSERT_GLOB_ASSIGN_GLOB;
3771 if (dtype != SVt_PVGV && !isGV_with_GP(dstr)) {
3772 const char * const name = GvNAME(sstr);
3773 const STRLEN len = GvNAMELEN(sstr);
3775 if (dtype >= SVt_PV) {
3781 SvUPGRADE(dstr, SVt_PVGV);
3782 (void)SvOK_off(dstr);
3783 isGV_with_GP_on(dstr);
3785 GvSTASH(dstr) = GvSTASH(sstr);
3787 Perl_sv_add_backref(aTHX_ MUTABLE_SV(GvSTASH(dstr)), dstr);
3788 gv_name_set(MUTABLE_GV(dstr), name, len,
3789 GV_ADD | (GvNAMEUTF8(sstr) ? SVf_UTF8 : 0 ));
3790 SvFAKE_on(dstr); /* can coerce to non-glob */
3793 if(GvGP(MUTABLE_GV(sstr))) {
3794 /* If source has method cache entry, clear it */
3796 SvREFCNT_dec(GvCV(sstr));
3797 GvCV_set(sstr, NULL);
3800 /* If source has a real method, then a method is
3803 GvCV((const GV *)sstr) && GvSTASH(dstr) && HvENAME(GvSTASH(dstr))
3809 /* If dest already had a real method, that's a change as well */
3811 !mro_changes && GvGP(MUTABLE_GV(dstr)) && GvCVu((const GV *)dstr)
3812 && GvSTASH(dstr) && HvENAME(GvSTASH(dstr))
3817 /* We don't need to check the name of the destination if it was not a
3818 glob to begin with. */
3819 if(dtype == SVt_PVGV) {
3820 const char * const name = GvNAME((const GV *)dstr);
3821 const STRLEN len = GvNAMELEN(dstr);
3822 if(memEQs(name, len, "ISA")
3823 /* The stash may have been detached from the symbol table, so
3825 && GvSTASH(dstr) && HvENAME(GvSTASH(dstr))
3829 if ((len > 1 && name[len-2] == ':' && name[len-1] == ':')
3830 || (len == 1 && name[0] == ':')) {
3833 /* Set aside the old stash, so we can reset isa caches on
3835 if((old_stash = GvHV(dstr)))
3836 /* Make sure we do not lose it early. */
3837 SvREFCNT_inc_simple_void_NN(
3838 sv_2mortal((SV *)old_stash)
3843 SvREFCNT_inc_simple_void_NN(sv_2mortal(dstr));
3846 /* freeing dstr's GP might free sstr (e.g. *x = $x),
3847 * so temporarily protect it */
3849 SAVEFREESV(SvREFCNT_inc_simple_NN(sstr));
3850 gp_free(MUTABLE_GV(dstr));
3851 GvINTRO_off(dstr); /* one-shot flag */
3852 GvGP_set(dstr, gp_ref(GvGP(sstr)));
3855 if (SvTAINTED(sstr))
3857 if (GvIMPORTED(dstr) != GVf_IMPORTED
3858 && CopSTASH_ne(PL_curcop, GvSTASH(dstr)))
3860 GvIMPORTED_on(dstr);
3863 if(mro_changes == 2) {
3864 if (GvAV((const GV *)sstr)) {
3866 SV * const sref = (SV *)GvAV((const GV *)dstr);
3867 if (SvSMAGICAL(sref) && (mg = mg_find(sref, PERL_MAGIC_isa))) {
3868 if (SvTYPE(mg->mg_obj) != SVt_PVAV) {
3869 AV * const ary = newAV();
3870 av_push(ary, mg->mg_obj); /* takes the refcount */
3871 mg->mg_obj = (SV *)ary;
3873 av_push((AV *)mg->mg_obj, SvREFCNT_inc_simple_NN(dstr));
3875 else sv_magic(sref, dstr, PERL_MAGIC_isa, NULL, 0);
3877 mro_isa_changed_in(GvSTASH(dstr));
3879 else if(mro_changes == 3) {
3880 HV * const stash = GvHV(dstr);
3881 if(old_stash ? (HV *)HvENAME_get(old_stash) : stash)
3887 else if(mro_changes) mro_method_changed_in(GvSTASH(dstr));
3888 if (GvIO(dstr) && dtype == SVt_PVGV) {
3889 DEBUG_o(Perl_deb(aTHX_
3890 "glob_assign_glob clearing PL_stashcache\n"));
3891 /* It's a cache. It will rebuild itself quite happily.
3892 It's a lot of effort to work out exactly which key (or keys)
3893 might be invalidated by the creation of the this file handle.
3895 hv_clear(PL_stashcache);
3901 Perl_gv_setref(pTHX_ SV *const dstr, SV *const sstr)
3903 SV * const sref = SvRV(sstr);
3905 const int intro = GvINTRO(dstr);
3908 const U32 stype = SvTYPE(sref);
3910 PERL_ARGS_ASSERT_GV_SETREF;
3913 GvINTRO_off(dstr); /* one-shot flag */
3914 GvLINE(dstr) = CopLINE(PL_curcop);
3915 GvEGV(dstr) = MUTABLE_GV(dstr);
3920 location = (SV **) &(GvGP(dstr)->gp_cv); /* XXX bypassing GvCV_set */
3921 import_flag = GVf_IMPORTED_CV;
3924 location = (SV **) &GvHV(dstr);
3925 import_flag = GVf_IMPORTED_HV;
3928 location = (SV **) &GvAV(dstr);
3929 import_flag = GVf_IMPORTED_AV;
3932 location = (SV **) &GvIOp(dstr);
3935 location = (SV **) &GvFORM(dstr);
3938 location = &GvSV(dstr);
3939 import_flag = GVf_IMPORTED_SV;
3942 if (stype == SVt_PVCV) {
3943 /*if (GvCVGEN(dstr) && (GvCV(dstr) != (const CV *)sref || GvCVGEN(dstr))) {*/
3944 if (GvCVGEN(dstr)) {
3945 SvREFCNT_dec(GvCV(dstr));
3946 GvCV_set(dstr, NULL);
3947 GvCVGEN(dstr) = 0; /* Switch off cacheness. */
3950 /* SAVEt_GVSLOT takes more room on the savestack and has more
3951 overhead in leave_scope than SAVEt_GENERIC_SV. But for CVs
3952 leave_scope needs access to the GV so it can reset method
3953 caches. We must use SAVEt_GVSLOT whenever the type is
3954 SVt_PVCV, even if the stash is anonymous, as the stash may
3955 gain a name somehow before leave_scope. */
3956 if (stype == SVt_PVCV) {
3957 /* There is no save_pushptrptrptr. Creating it for this
3958 one call site would be overkill. So inline the ss add
3962 SS_ADD_PTR(location);
3963 SS_ADD_PTR(SvREFCNT_inc(*location));
3964 SS_ADD_UV(SAVEt_GVSLOT);
3967 else SAVEGENERICSV(*location);
3970 if (stype == SVt_PVCV && (*location != sref || GvCVGEN(dstr))) {
3971 CV* const cv = MUTABLE_CV(*location);
3973 if (!GvCVGEN((const GV *)dstr) &&
3974 (CvROOT(cv) || CvXSUB(cv)) &&
3975 /* redundant check that avoids creating the extra SV
3976 most of the time: */
3977 (CvCONST(cv) || ckWARN(WARN_REDEFINE)))
3979 SV * const new_const_sv =
3980 CvCONST((const CV *)sref)
3981 ? cv_const_sv((const CV *)sref)
3983 HV * const stash = GvSTASH((const GV *)dstr);
3984 report_redefined_cv(
3987 ? Perl_newSVpvf(aTHX_
3988 "%" HEKf "::%" HEKf,
3989 HEKfARG(HvNAME_HEK(stash)),
3990 HEKfARG(GvENAME_HEK(MUTABLE_GV(dstr))))
3991 : Perl_newSVpvf(aTHX_
3993 HEKfARG(GvENAME_HEK(MUTABLE_GV(dstr))))
3996 CvCONST((const CV *)sref) ? &new_const_sv : NULL
4000 cv_ckproto_len_flags(cv, (const GV *)dstr,
4001 SvPOK(sref) ? CvPROTO(sref) : NULL,
4002 SvPOK(sref) ? CvPROTOLEN(sref) : 0,
4003 SvPOK(sref) ? SvUTF8(sref) : 0);
4005 GvCVGEN(dstr) = 0; /* Switch off cacheness. */
4006 GvASSUMECV_on(dstr);
4007 if(GvSTASH(dstr)) { /* sub foo { 1 } sub bar { 2 } *bar = \&foo */
4008 if (intro && GvREFCNT(dstr) > 1) {
4009 /* temporary remove extra savestack's ref */
4011 gv_method_changed(dstr);
4014 else gv_method_changed(dstr);
4017 *location = SvREFCNT_inc_simple_NN(sref);
4018 if (import_flag && !(GvFLAGS(dstr) & import_flag)
4019 && CopSTASH_ne(PL_curcop, GvSTASH(dstr))) {
4020 GvFLAGS(dstr) |= import_flag;
4023 if (stype == SVt_PVHV) {
4024 const char * const name = GvNAME((GV*)dstr);
4025 const STRLEN len = GvNAMELEN(dstr);
4028 (len > 1 && name[len-2] == ':' && name[len-1] == ':')
4029 || (len == 1 && name[0] == ':')
4031 && (!dref || HvENAME_get(dref))
4034 (HV *)sref, (HV *)dref,
4040 stype == SVt_PVAV && sref != dref
4041 && memEQs(GvNAME((GV*)dstr), GvNAMELEN((GV*)dstr), "ISA")
4042 /* The stash may have been detached from the symbol table, so
4043 check its name before doing anything. */
4044 && GvSTASH(dstr) && HvENAME(GvSTASH(dstr))
4047 MAGIC * const omg = dref && SvSMAGICAL(dref)
4048 ? mg_find(dref, PERL_MAGIC_isa)
4050 if (SvSMAGICAL(sref) && (mg = mg_find(sref, PERL_MAGIC_isa))) {
4051 if (SvTYPE(mg->mg_obj) != SVt_PVAV) {
4052 AV * const ary = newAV();
4053 av_push(ary, mg->mg_obj); /* takes the refcount */
4054 mg->mg_obj = (SV *)ary;
4057 if (SvTYPE(omg->mg_obj) == SVt_PVAV) {
4058 SV **svp = AvARRAY((AV *)omg->mg_obj);
4059 I32 items = AvFILLp((AV *)omg->mg_obj) + 1;
4063 SvREFCNT_inc_simple_NN(*svp++)
4069 SvREFCNT_inc_simple_NN(omg->mg_obj)
4073 av_push((AV *)mg->mg_obj,SvREFCNT_inc_simple_NN(dstr));
4079 sref, omg ? omg->mg_obj : dstr, PERL_MAGIC_isa, NULL, 0
4081 for (i = 0; i <= AvFILL(sref); ++i) {
4082 SV **elem = av_fetch ((AV*)sref, i, 0);
4085 *elem, sref, PERL_MAGIC_isaelem, NULL, i
4089 mg = mg_find(sref, PERL_MAGIC_isa);
4091 /* Since the *ISA assignment could have affected more than
4092 one stash, don't call mro_isa_changed_in directly, but let
4093 magic_clearisa do it for us, as it already has the logic for
4094 dealing with globs vs arrays of globs. */
4096 Perl_magic_clearisa(aTHX_ NULL, mg);
4098 else if (stype == SVt_PVIO) {
4099 DEBUG_o(Perl_deb(aTHX_ "gv_setref clearing PL_stashcache\n"));
4100 /* It's a cache. It will rebuild itself quite happily.
4101 It's a lot of effort to work out exactly which key (or keys)
4102 might be invalidated by the creation of the this file handle.
4104 hv_clear(PL_stashcache);
4108 if (!intro) SvREFCNT_dec(dref);
4109 if (SvTAINTED(sstr))
4117 #ifdef PERL_DEBUG_READONLY_COW
4118 # include <sys/mman.h>
4120 # ifndef PERL_MEMORY_DEBUG_HEADER_SIZE
4121 # define PERL_MEMORY_DEBUG_HEADER_SIZE 0
4125 Perl_sv_buf_to_ro(pTHX_ SV *sv)
4127 struct perl_memory_debug_header * const header =
4128 (struct perl_memory_debug_header *)(SvPVX(sv)-PERL_MEMORY_DEBUG_HEADER_SIZE);
4129 const MEM_SIZE len = header->size;
4130 PERL_ARGS_ASSERT_SV_BUF_TO_RO;
4131 # ifdef PERL_TRACK_MEMPOOL
4132 if (!header->readonly) header->readonly = 1;
4134 if (mprotect(header, len, PROT_READ))
4135 Perl_warn(aTHX_ "mprotect RW for COW string %p %lu failed with %d",
4136 header, len, errno);
4140 S_sv_buf_to_rw(pTHX_ SV *sv)
4142 struct perl_memory_debug_header * const header =
4143 (struct perl_memory_debug_header *)(SvPVX(sv)-PERL_MEMORY_DEBUG_HEADER_SIZE);
4144 const MEM_SIZE len = header->size;
4145 PERL_ARGS_ASSERT_SV_BUF_TO_RW;
4146 if (mprotect(header, len, PROT_READ|PROT_WRITE))
4147 Perl_warn(aTHX_ "mprotect for COW string %p %lu failed with %d",
4148 header, len, errno);
4149 # ifdef PERL_TRACK_MEMPOOL
4150 header->readonly = 0;
4155 # define sv_buf_to_ro(sv) NOOP
4156 # define sv_buf_to_rw(sv) NOOP
4160 Perl_sv_setsv_flags(pTHX_ SV *dstr, SV* sstr, const I32 flags)
4165 unsigned int both_type;
4167 PERL_ARGS_ASSERT_SV_SETSV_FLAGS;
4169 if (UNLIKELY( sstr == dstr ))
4172 if (UNLIKELY( !sstr ))
4173 sstr = &PL_sv_undef;
4175 stype = SvTYPE(sstr);
4176 dtype = SvTYPE(dstr);
4177 both_type = (stype | dtype);
4179 /* with these values, we can check that both SVs are NULL/IV (and not
4180 * freed) just by testing the or'ed types */
4181 STATIC_ASSERT_STMT(SVt_NULL == 0);
4182 STATIC_ASSERT_STMT(SVt_IV == 1);
4183 if (both_type <= 1) {
4184 /* both src and dst are UNDEF/IV/RV, so we can do a lot of
4190 /* minimal subset of SV_CHECK_THINKFIRST_COW_DROP(dstr) */
4191 if (SvREADONLY(dstr))
4192 Perl_croak_no_modify();
4194 if (SvWEAKREF(dstr))
4195 sv_unref_flags(dstr, 0);
4197 old_rv = SvRV(dstr);
4200 assert(!SvGMAGICAL(sstr));
4201 assert(!SvGMAGICAL(dstr));
4203 sflags = SvFLAGS(sstr);
4204 if (sflags & (SVf_IOK|SVf_ROK)) {
4205 SET_SVANY_FOR_BODYLESS_IV(dstr);
4206 new_dflags = SVt_IV;
4208 if (sflags & SVf_ROK) {
4209 dstr->sv_u.svu_rv = SvREFCNT_inc(SvRV(sstr));
4210 new_dflags |= SVf_ROK;
4213 /* both src and dst are <= SVt_IV, so sv_any points to the
4214 * head; so access the head directly
4216 assert( &(sstr->sv_u.svu_iv)
4217 == &(((XPVIV*) SvANY(sstr))->xiv_iv));
4218 assert( &(dstr->sv_u.svu_iv)
4219 == &(((XPVIV*) SvANY(dstr))->xiv_iv));
4220 dstr->sv_u.svu_iv = sstr->sv_u.svu_iv;
4221 new_dflags |= (SVf_IOK|SVp_IOK|(sflags & SVf_IVisUV));
4225 new_dflags = dtype; /* turn off everything except the type */
4227 SvFLAGS(dstr) = new_dflags;
4228 SvREFCNT_dec(old_rv);
4233 if (UNLIKELY(both_type == SVTYPEMASK)) {
4234 if (SvIS_FREED(dstr)) {
4235 Perl_croak(aTHX_ "panic: attempt to copy value %" SVf
4236 " to a freed scalar %p", SVfARG(sstr), (void *)dstr);
4238 if (SvIS_FREED(sstr)) {
4239 Perl_croak(aTHX_ "panic: attempt to copy freed scalar %p to %p",
4240 (void*)sstr, (void*)dstr);
4246 SV_CHECK_THINKFIRST_COW_DROP(dstr);
4247 dtype = SvTYPE(dstr); /* THINKFIRST may have changed type */
4249 /* There's a lot of redundancy below but we're going for speed here */
4254 if (LIKELY( dtype != SVt_PVGV && dtype != SVt_PVLV )) {
4255 (void)SvOK_off(dstr);
4263 /* For performance, we inline promoting to type SVt_IV. */
4264 /* We're starting from SVt_NULL, so provided that define is
4265 * actual 0, we don't have to unset any SV type flags
4266 * to promote to SVt_IV. */
4267 STATIC_ASSERT_STMT(SVt_NULL == 0);
4268 SET_SVANY_FOR_BODYLESS_IV(dstr);
4269 SvFLAGS(dstr) |= SVt_IV;
4273 sv_upgrade(dstr, SVt_PVIV);
4277 goto end_of_first_switch;
4279 (void)SvIOK_only(dstr);
4280 SvIV_set(dstr, SvIVX(sstr));
4283 /* SvTAINTED can only be true if the SV has taint magic, which in
4284 turn means that the SV type is PVMG (or greater). This is the
4285 case statement for SVt_IV, so this cannot be true (whatever gcov
4287 assert(!SvTAINTED(sstr));
4292 if (dtype < SVt_PV && dtype != SVt_IV)
4293 sv_upgrade(dstr, SVt_IV);
4297 if (LIKELY( SvNOK(sstr) )) {
4301 sv_upgrade(dstr, SVt_NV);
4305 sv_upgrade(dstr, SVt_PVNV);
4309 goto end_of_first_switch;
4311 SvNV_set(dstr, SvNVX(sstr));
4312 (void)SvNOK_only(dstr);
4313 /* SvTAINTED can only be true if the SV has taint magic, which in
4314 turn means that the SV type is PVMG (or greater). This is the
4315 case statement for SVt_NV, so this cannot be true (whatever gcov
4317 assert(!SvTAINTED(sstr));
4324 sv_upgrade(dstr, SVt_PV);
4327 if (dtype < SVt_PVIV)
4328 sv_upgrade(dstr, SVt_PVIV);
4331 if (dtype < SVt_PVNV)
4332 sv_upgrade(dstr, SVt_PVNV);
4336 invlist_clone(sstr, dstr);
4340 const char * const type = sv_reftype(sstr,0);
4342 /* diag_listed_as: Bizarre copy of %s */
4343 Perl_croak(aTHX_ "Bizarre copy of %s in %s", type, OP_DESC(PL_op));
4345 Perl_croak(aTHX_ "Bizarre copy of %s", type);
4347 NOT_REACHED; /* NOTREACHED */
4351 if (dtype < SVt_REGEXP)
4352 sv_upgrade(dstr, SVt_REGEXP);
4358 if (SvGMAGICAL(sstr) && (flags & SV_GMAGIC)) {
4360 if (SvTYPE(sstr) != stype)
4361 stype = SvTYPE(sstr);
4363 if (isGV_with_GP(sstr) && dtype <= SVt_PVLV) {
4364 glob_assign_glob(dstr, sstr, dtype);
4367 if (stype == SVt_PVLV)
4369 if (isREGEXP(sstr)) goto upgregexp;
4370 SvUPGRADE(dstr, SVt_PVNV);
4373 SvUPGRADE(dstr, (svtype)stype);
4375 end_of_first_switch:
4377 /* dstr may have been upgraded. */
4378 dtype = SvTYPE(dstr);
4379 sflags = SvFLAGS(sstr);
4381 if (UNLIKELY( dtype == SVt_PVCV )) {
4382 /* Assigning to a subroutine sets the prototype. */
4385 const char *const ptr = SvPV_const(sstr, len);
4387 SvGROW(dstr, len + 1);
4388 Copy(ptr, SvPVX(dstr), len + 1, char);
4389 SvCUR_set(dstr, len);
4391 SvFLAGS(dstr) |= sflags & SVf_UTF8;
4392 CvAUTOLOAD_off(dstr);
4397 else if (UNLIKELY(dtype == SVt_PVAV || dtype == SVt_PVHV
4398 || dtype == SVt_PVFM))
4400 const char * const type = sv_reftype(dstr,0);
4402 /* diag_listed_as: Cannot copy to %s */
4403 Perl_croak(aTHX_ "Cannot copy to %s in %s", type, OP_DESC(PL_op));
4405 Perl_croak(aTHX_ "Cannot copy to %s", type);
4406 } else if (sflags & SVf_ROK) {
4407 if (isGV_with_GP(dstr)
4408 && SvTYPE(SvRV(sstr)) == SVt_PVGV && isGV_with_GP(SvRV(sstr))) {
4411 if (GvIMPORTED(dstr) != GVf_IMPORTED
4412 && CopSTASH_ne(PL_curcop, GvSTASH(dstr)))
4414 GvIMPORTED_on(dstr);
4419 glob_assign_glob(dstr, sstr, dtype);
4423 if (dtype >= SVt_PV) {
4424 if (isGV_with_GP(dstr)) {
4425 gv_setref(dstr, sstr);
4428 if (SvPVX_const(dstr)) {
4434 (void)SvOK_off(dstr);
4435 SvRV_set(dstr, SvREFCNT_inc(SvRV(sstr)));
4436 SvFLAGS(dstr) |= sflags & SVf_ROK;
4437 assert(!(sflags & SVp_NOK));
4438 assert(!(sflags & SVp_IOK));
4439 assert(!(sflags & SVf_NOK));
4440 assert(!(sflags & SVf_IOK));
4442 else if (isGV_with_GP(dstr)) {
4443 if (!(sflags & SVf_OK)) {
4444 Perl_ck_warner(aTHX_ packWARN(WARN_MISC),
4445 "Undefined value assigned to typeglob");
4448 GV *gv = gv_fetchsv_nomg(sstr, GV_ADD, SVt_PVGV);
4449 if (dstr != (const SV *)gv) {
4450 const char * const name = GvNAME((const GV *)dstr);
4451 const STRLEN len = GvNAMELEN(dstr);
4452 HV *old_stash = NULL;
4453 bool reset_isa = FALSE;
4454 if ((len > 1 && name[len-2] == ':' && name[len-1] == ':')
4455 || (len == 1 && name[0] == ':')) {
4456 /* Set aside the old stash, so we can reset isa caches
4457 on its subclasses. */
4458 if((old_stash = GvHV(dstr))) {
4459 /* Make sure we do not lose it early. */
4460 SvREFCNT_inc_simple_void_NN(
4461 sv_2mortal((SV *)old_stash)
4468 SvREFCNT_inc_simple_void_NN(sv_2mortal(dstr));
4469 gp_free(MUTABLE_GV(dstr));
4471 GvGP_set(dstr, gp_ref(GvGP(gv)));
4474 HV * const stash = GvHV(dstr);
4476 old_stash ? (HV *)HvENAME_get(old_stash) : stash
4486 else if ((dtype == SVt_REGEXP || dtype == SVt_PVLV)
4487 && (stype == SVt_REGEXP || isREGEXP(sstr))) {
4488 reg_temp_copy((REGEXP*)dstr, (REGEXP*)sstr);
4490 else if (sflags & SVp_POK) {
4491 const STRLEN cur = SvCUR(sstr);
4492 const STRLEN len = SvLEN(sstr);
4495 * We have three basic ways to copy the string:
4501 * Which we choose is based on various factors. The following
4502 * things are listed in order of speed, fastest to slowest:
4504 * - Copying a short string
4505 * - Copy-on-write bookkeeping
4507 * - Copying a long string
4509 * We swipe the string (steal the string buffer) if the SV on the
4510 * rhs is about to be freed anyway (TEMP and refcnt==1). This is a
4511 * big win on long strings. It should be a win on short strings if
4512 * SvPVX_const(dstr) has to be allocated. If not, it should not
4513 * slow things down, as SvPVX_const(sstr) would have been freed
4516 * We also steal the buffer from a PADTMP (operator target) if it
4517 * is ‘long enough’. For short strings, a swipe does not help
4518 * here, as it causes more malloc calls the next time the target
4519 * is used. Benchmarks show that even if SvPVX_const(dstr) has to
4520 * be allocated it is still not worth swiping PADTMPs for short
4521 * strings, as the savings here are small.
4523 * If swiping is not an option, then we see whether it is
4524 * worth using copy-on-write. If the lhs already has a buf-
4525 * fer big enough and the string is short, we skip it and fall back
4526 * to method 3, since memcpy is faster for short strings than the
4527 * later bookkeeping overhead that copy-on-write entails.
4529 * If the rhs is not a copy-on-write string yet, then we also
4530 * consider whether the buffer is too large relative to the string
4531 * it holds. Some operations such as readline allocate a large
4532 * buffer in the expectation of reusing it. But turning such into
4533 * a COW buffer is counter-productive because it increases memory
4534 * usage by making readline allocate a new large buffer the sec-
4535 * ond time round. So, if the buffer is too large, again, we use
4538 * Finally, if there is no buffer on the left, or the buffer is too
4539 * small, then we use copy-on-write and make both SVs share the
4544 /* Whichever path we take through the next code, we want this true,
4545 and doing it now facilitates the COW check. */
4546 (void)SvPOK_only(dstr);
4550 /* slated for free anyway (and not COW)? */
4551 (sflags & (SVs_TEMP|SVf_IsCOW)) == SVs_TEMP
4552 /* or a swipable TARG */
4554 (SVs_PADTMP|SVf_READONLY|SVf_PROTECT|SVf_IsCOW))
4556 /* whose buffer is worth stealing */
4557 && CHECK_COWBUF_THRESHOLD(cur,len)
4560 !(sflags & SVf_OOK) && /* and not involved in OOK hack? */
4561 (!(flags & SV_NOSTEAL)) &&
4562 /* and we're allowed to steal temps */
4563 SvREFCNT(sstr) == 1 && /* and no other references to it? */
4564 len) /* and really is a string */
4565 { /* Passes the swipe test. */
4566 if (SvPVX_const(dstr)) /* we know that dtype >= SVt_PV */
4568 SvPV_set(dstr, SvPVX_mutable(sstr));
4569 SvLEN_set(dstr, SvLEN(sstr));
4570 SvCUR_set(dstr, SvCUR(sstr));
4573 (void)SvOK_off(sstr); /* NOTE: nukes most SvFLAGS on sstr */
4574 SvPV_set(sstr, NULL);
4579 else if (flags & SV_COW_SHARED_HASH_KEYS
4581 #ifdef PERL_COPY_ON_WRITE
4584 ( (CHECK_COWBUF_THRESHOLD(cur,len) || SvLEN(dstr) < cur+1)
4585 /* If this is a regular (non-hek) COW, only so
4586 many COW "copies" are possible. */
4587 && CowREFCNT(sstr) != SV_COW_REFCNT_MAX ))
4588 : ( (sflags & CAN_COW_MASK) == CAN_COW_FLAGS
4589 && !(SvFLAGS(dstr) & SVf_BREAK)
4590 && CHECK_COW_THRESHOLD(cur,len) && cur+1 < len
4591 && (CHECK_COWBUF_THRESHOLD(cur,len) || SvLEN(dstr) < cur+1)
4595 && !(SvFLAGS(dstr) & SVf_BREAK)
4598 /* Either it's a shared hash key, or it's suitable for
4602 PerlIO_printf(Perl_debug_log, "Copy on write: sstr --> dstr\n");
4608 if (!(sflags & SVf_IsCOW)) {
4610 CowREFCNT(sstr) = 0;
4613 if (SvPVX_const(dstr)) { /* we know that dtype >= SVt_PV */
4619 if (sflags & SVf_IsCOW) {
4623 SvPV_set(dstr, SvPVX_mutable(sstr));
4628 /* SvIsCOW_shared_hash */
4629 DEBUG_C(PerlIO_printf(Perl_debug_log,
4630 "Copy on write: Sharing hash\n"));
4632 assert (SvTYPE(dstr) >= SVt_PV);
4634 HEK_KEY(share_hek_hek(SvSHARED_HEK_FROM_PV(SvPVX_const(sstr)))));
4636 SvLEN_set(dstr, len);
4637 SvCUR_set(dstr, cur);