3 * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
4 * 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by Larry Wall
7 * You may distribute under the terms of either the GNU General Public
8 * License or the Artistic License, as specified in the README file.
13 * 'I wonder what the Entish is for "yes" and "no",' he thought.
16 * [p.480 of _The Lord of the Rings_, III/iv: "Treebeard"]
22 * This file contains the code that creates, manipulates and destroys
23 * scalar values (SVs). The other types (AV, HV, GV, etc.) reuse the
24 * structure of an SV, so their creation and destruction is handled
25 * here; higher-level functions are in av.c, hv.c, and so on. Opcode
26 * level functions (eg. substr, split, join) for each of the types are
36 # if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L && !defined(VMS)
45 /* Missing proto on LynxOS */
46 char *gconvert(double, int, int, char *);
49 #ifdef PERL_NEW_COPY_ON_WRITE
50 # ifndef SV_COW_THRESHOLD
51 # define SV_COW_THRESHOLD 0 /* COW iff len > K */
53 # ifndef SV_COWBUF_THRESHOLD
54 # define SV_COWBUF_THRESHOLD 1250 /* COW iff len > K */
56 # ifndef SV_COW_MAX_WASTE_THRESHOLD
57 # define SV_COW_MAX_WASTE_THRESHOLD 80 /* COW iff (len - cur) < K */
59 # ifndef SV_COWBUF_WASTE_THRESHOLD
60 # define SV_COWBUF_WASTE_THRESHOLD 80 /* COW iff (len - cur) < K */
62 # ifndef SV_COW_MAX_WASTE_FACTOR_THRESHOLD
63 # define SV_COW_MAX_WASTE_FACTOR_THRESHOLD 2 /* COW iff len < (cur * K) */
65 # ifndef SV_COWBUF_WASTE_FACTOR_THRESHOLD
66 # 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)) \
112 /* void Gconvert: on Linux at least, gcvt (which Gconvert gets deffed to),
113 * has a mandatory return value, even though that value is just the same
116 #ifdef PERL_UTF8_CACHE_ASSERT
117 /* if adding more checks watch out for the following tests:
118 * t/op/index.t t/op/length.t t/op/pat.t t/op/substr.t
119 * lib/utf8.t lib/Unicode/Collate/t/index.t
122 # define ASSERT_UTF8_CACHE(cache) \
123 STMT_START { if (cache) { assert((cache)[0] <= (cache)[1]); \
124 assert((cache)[2] <= (cache)[3]); \
125 assert((cache)[3] <= (cache)[1]);} \
128 # define ASSERT_UTF8_CACHE(cache) NOOP
131 #ifdef PERL_OLD_COPY_ON_WRITE
132 #define SV_COW_NEXT_SV(sv) INT2PTR(SV *,SvUVX(sv))
133 #define SV_COW_NEXT_SV_SET(current,next) SvUV_set(current, PTR2UV(next))
136 /* ============================================================================
138 =head1 Allocation and deallocation of SVs.
140 An SV (or AV, HV, etc.) is allocated in two parts: the head (struct
141 sv, av, hv...) contains type and reference count information, and for
142 many types, a pointer to the body (struct xrv, xpv, xpviv...), which
143 contains fields specific to each type. Some types store all they need
144 in the head, so don't have a body.
146 In all but the most memory-paranoid configurations (ex: PURIFY), heads
147 and bodies are allocated out of arenas, which by default are
148 approximately 4K chunks of memory parcelled up into N heads or bodies.
149 Sv-bodies are allocated by their sv-type, guaranteeing size
150 consistency needed to allocate safely from arrays.
152 For SV-heads, the first slot in each arena is reserved, and holds a
153 link to the next arena, some flags, and a note of the number of slots.
154 Snaked through each arena chain is a linked list of free items; when
155 this becomes empty, an extra arena is allocated and divided up into N
156 items which are threaded into the free list.
158 SV-bodies are similar, but they use arena-sets by default, which
159 separate the link and info from the arena itself, and reclaim the 1st
160 slot in the arena. SV-bodies are further described later.
162 The following global variables are associated with arenas:
164 PL_sv_arenaroot pointer to list of SV arenas
165 PL_sv_root pointer to list of free SV structures
167 PL_body_arenas head of linked-list of body arenas
168 PL_body_roots[] array of pointers to list of free bodies of svtype
169 arrays are indexed by the svtype needed
171 A few special SV heads are not allocated from an arena, but are
172 instead directly created in the interpreter structure, eg PL_sv_undef.
173 The size of arenas can be changed from the default by setting
174 PERL_ARENA_SIZE appropriately at compile time.
176 The SV arena serves the secondary purpose of allowing still-live SVs
177 to be located and destroyed during final cleanup.
179 At the lowest level, the macros new_SV() and del_SV() grab and free
180 an SV head. (If debugging with -DD, del_SV() calls the function S_del_sv()
181 to return the SV to the free list with error checking.) new_SV() calls
182 more_sv() / sv_add_arena() to add an extra arena if the free list is empty.
183 SVs in the free list have their SvTYPE field set to all ones.
185 At the time of very final cleanup, sv_free_arenas() is called from
186 perl_destruct() to physically free all the arenas allocated since the
187 start of the interpreter.
189 The function visit() scans the SV arenas list, and calls a specified
190 function for each SV it finds which is still live - ie which has an SvTYPE
191 other than all 1's, and a non-zero SvREFCNT. visit() is used by the
192 following functions (specified as [function that calls visit()] / [function
193 called by visit() for each SV]):
195 sv_report_used() / do_report_used()
196 dump all remaining SVs (debugging aid)
198 sv_clean_objs() / do_clean_objs(),do_clean_named_objs(),
199 do_clean_named_io_objs(),do_curse()
200 Attempt to free all objects pointed to by RVs,
201 try to do the same for all objects indir-
202 ectly referenced by typeglobs too, and
203 then do a final sweep, cursing any
204 objects that remain. Called once from
205 perl_destruct(), prior to calling sv_clean_all()
208 sv_clean_all() / do_clean_all()
209 SvREFCNT_dec(sv) each remaining SV, possibly
210 triggering an sv_free(). It also sets the
211 SVf_BREAK flag on the SV to indicate that the
212 refcnt has been artificially lowered, and thus
213 stopping sv_free() from giving spurious warnings
214 about SVs which unexpectedly have a refcnt
215 of zero. called repeatedly from perl_destruct()
216 until there are no SVs left.
218 =head2 Arena allocator API Summary
220 Private API to rest of sv.c
224 new_XPVNV(), del_XPVGV(),
229 sv_report_used(), sv_clean_objs(), sv_clean_all(), sv_free_arenas()
233 * ========================================================================= */
236 * "A time to plant, and a time to uproot what was planted..."
240 # define MEM_LOG_NEW_SV(sv, file, line, func) \
241 Perl_mem_log_new_sv(sv, file, line, func)
242 # define MEM_LOG_DEL_SV(sv, file, line, func) \
243 Perl_mem_log_del_sv(sv, file, line, func)
245 # define MEM_LOG_NEW_SV(sv, file, line, func) NOOP
246 # define MEM_LOG_DEL_SV(sv, file, line, func) NOOP
249 #ifdef DEBUG_LEAKING_SCALARS
250 # define FREE_SV_DEBUG_FILE(sv) STMT_START { \
251 if ((sv)->sv_debug_file) PerlMemShared_free((sv)->sv_debug_file); \
253 # define DEBUG_SV_SERIAL(sv) \
254 DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) del_SV\n", \
255 PTR2UV(sv), (long)(sv)->sv_debug_serial))
257 # define FREE_SV_DEBUG_FILE(sv)
258 # define DEBUG_SV_SERIAL(sv) NOOP
262 # define SvARENA_CHAIN(sv) ((sv)->sv_u.svu_rv)
263 # define SvARENA_CHAIN_SET(sv,val) (sv)->sv_u.svu_rv = MUTABLE_SV((val))
264 /* Whilst I'd love to do this, it seems that things like to check on
266 # define POSION_SV_HEAD(sv) PoisonNew(sv, 1, struct STRUCT_SV)
268 # define POSION_SV_HEAD(sv) PoisonNew(&SvANY(sv), 1, void *), \
269 PoisonNew(&SvREFCNT(sv), 1, U32)
271 # define SvARENA_CHAIN(sv) SvANY(sv)
272 # define SvARENA_CHAIN_SET(sv,val) SvANY(sv) = (void *)(val)
273 # define POSION_SV_HEAD(sv)
276 /* Mark an SV head as unused, and add to free list.
278 * If SVf_BREAK is set, skip adding it to the free list, as this SV had
279 * its refcount artificially decremented during global destruction, so
280 * there may be dangling pointers to it. The last thing we want in that
281 * case is for it to be reused. */
283 #define plant_SV(p) \
285 const U32 old_flags = SvFLAGS(p); \
286 MEM_LOG_DEL_SV(p, __FILE__, __LINE__, FUNCTION__); \
287 DEBUG_SV_SERIAL(p); \
288 FREE_SV_DEBUG_FILE(p); \
290 SvFLAGS(p) = SVTYPEMASK; \
291 if (!(old_flags & SVf_BREAK)) { \
292 SvARENA_CHAIN_SET(p, PL_sv_root); \
298 #define uproot_SV(p) \
301 PL_sv_root = MUTABLE_SV(SvARENA_CHAIN(p)); \
306 /* make some more SVs by adding another arena */
313 char *chunk; /* must use New here to match call to */
314 Newx(chunk,PERL_ARENA_SIZE,char); /* Safefree() in sv_free_arenas() */
315 sv_add_arena(chunk, PERL_ARENA_SIZE, 0);
320 /* new_SV(): return a new, empty SV head */
322 #ifdef DEBUG_LEAKING_SCALARS
323 /* provide a real function for a debugger to play with */
325 S_new_SV(pTHX_ const char *file, int line, const char *func)
332 sv = S_more_sv(aTHX);
336 sv->sv_debug_optype = PL_op ? PL_op->op_type : 0;
337 sv->sv_debug_line = (U16) (PL_parser && PL_parser->copline != NOLINE
343 sv->sv_debug_inpad = 0;
344 sv->sv_debug_parent = NULL;
345 sv->sv_debug_file = PL_curcop ? savesharedpv(CopFILE(PL_curcop)): NULL;
347 sv->sv_debug_serial = PL_sv_serial++;
349 MEM_LOG_NEW_SV(sv, file, line, func);
350 DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) new_SV (from %s:%d [%s])\n",
351 PTR2UV(sv), (long)sv->sv_debug_serial, file, line, func));
355 # define new_SV(p) (p)=S_new_SV(aTHX_ __FILE__, __LINE__, FUNCTION__)
363 (p) = S_more_sv(aTHX); \
367 MEM_LOG_NEW_SV(p, __FILE__, __LINE__, FUNCTION__); \
372 /* del_SV(): return an empty SV head to the free list */
385 S_del_sv(pTHX_ SV *p)
389 PERL_ARGS_ASSERT_DEL_SV;
394 for (sva = PL_sv_arenaroot; sva; sva = MUTABLE_SV(SvANY(sva))) {
395 const SV * const sv = sva + 1;
396 const SV * const svend = &sva[SvREFCNT(sva)];
397 if (p >= sv && p < svend) {
403 Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL),
404 "Attempt to free non-arena SV: 0x%"UVxf
405 pTHX__FORMAT, PTR2UV(p) pTHX__VALUE);
412 #else /* ! DEBUGGING */
414 #define del_SV(p) plant_SV(p)
416 #endif /* DEBUGGING */
420 =head1 SV Manipulation Functions
422 =for apidoc sv_add_arena
424 Given a chunk of memory, link it to the head of the list of arenas,
425 and split it into a list of free SVs.
431 S_sv_add_arena(pTHX_ char *const ptr, const U32 size, const U32 flags)
434 SV *const sva = MUTABLE_SV(ptr);
438 PERL_ARGS_ASSERT_SV_ADD_ARENA;
440 /* The first SV in an arena isn't an SV. */
441 SvANY(sva) = (void *) PL_sv_arenaroot; /* ptr to next arena */
442 SvREFCNT(sva) = size / sizeof(SV); /* number of SV slots */
443 SvFLAGS(sva) = flags; /* FAKE if not to be freed */
445 PL_sv_arenaroot = sva;
446 PL_sv_root = sva + 1;
448 svend = &sva[SvREFCNT(sva) - 1];
451 SvARENA_CHAIN_SET(sv, (sv + 1));
455 /* Must always set typemask because it's always checked in on cleanup
456 when the arenas are walked looking for objects. */
457 SvFLAGS(sv) = SVTYPEMASK;
460 SvARENA_CHAIN_SET(sv, 0);
464 SvFLAGS(sv) = SVTYPEMASK;
467 /* visit(): call the named function for each non-free SV in the arenas
468 * whose flags field matches the flags/mask args. */
471 S_visit(pTHX_ SVFUNC_t f, const U32 flags, const U32 mask)
477 PERL_ARGS_ASSERT_VISIT;
479 for (sva = PL_sv_arenaroot; sva; sva = MUTABLE_SV(SvANY(sva))) {
480 const SV * const svend = &sva[SvREFCNT(sva)];
482 for (sv = sva + 1; sv < svend; ++sv) {
483 if (SvTYPE(sv) != (svtype)SVTYPEMASK
484 && (sv->sv_flags & mask) == flags
497 /* called by sv_report_used() for each live SV */
500 do_report_used(pTHX_ SV *const sv)
502 if (SvTYPE(sv) != (svtype)SVTYPEMASK) {
503 PerlIO_printf(Perl_debug_log, "****\n");
510 =for apidoc sv_report_used
512 Dump the contents of all SVs not yet freed (debugging aid).
518 Perl_sv_report_used(pTHX)
521 visit(do_report_used, 0, 0);
527 /* called by sv_clean_objs() for each live SV */
530 do_clean_objs(pTHX_ SV *const ref)
535 SV * const target = SvRV(ref);
536 if (SvOBJECT(target)) {
537 DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning object ref:\n "), sv_dump(ref)));
538 if (SvWEAKREF(ref)) {
539 sv_del_backref(target, ref);
545 SvREFCNT_dec_NN(target);
552 /* clear any slots in a GV which hold objects - except IO;
553 * called by sv_clean_objs() for each live GV */
556 do_clean_named_objs(pTHX_ SV *const sv)
560 assert(SvTYPE(sv) == SVt_PVGV);
561 assert(isGV_with_GP(sv));
565 /* freeing GP entries may indirectly free the current GV;
566 * hold onto it while we mess with the GP slots */
569 if ( ((obj = GvSV(sv) )) && SvOBJECT(obj)) {
570 DEBUG_D((PerlIO_printf(Perl_debug_log,
571 "Cleaning named glob SV object:\n "), sv_dump(obj)));
573 SvREFCNT_dec_NN(obj);
575 if ( ((obj = MUTABLE_SV(GvAV(sv)) )) && SvOBJECT(obj)) {
576 DEBUG_D((PerlIO_printf(Perl_debug_log,
577 "Cleaning named glob AV object:\n "), sv_dump(obj)));
579 SvREFCNT_dec_NN(obj);
581 if ( ((obj = MUTABLE_SV(GvHV(sv)) )) && SvOBJECT(obj)) {
582 DEBUG_D((PerlIO_printf(Perl_debug_log,
583 "Cleaning named glob HV object:\n "), sv_dump(obj)));
585 SvREFCNT_dec_NN(obj);
587 if ( ((obj = MUTABLE_SV(GvCV(sv)) )) && SvOBJECT(obj)) {
588 DEBUG_D((PerlIO_printf(Perl_debug_log,
589 "Cleaning named glob CV object:\n "), sv_dump(obj)));
591 SvREFCNT_dec_NN(obj);
593 SvREFCNT_dec_NN(sv); /* undo the inc above */
596 /* clear any IO slots in a GV which hold objects (except stderr, defout);
597 * called by sv_clean_objs() for each live GV */
600 do_clean_named_io_objs(pTHX_ SV *const sv)
604 assert(SvTYPE(sv) == SVt_PVGV);
605 assert(isGV_with_GP(sv));
606 if (!GvGP(sv) || sv == (SV*)PL_stderrgv || sv == (SV*)PL_defoutgv)
610 if ( ((obj = MUTABLE_SV(GvIO(sv)) )) && SvOBJECT(obj)) {
611 DEBUG_D((PerlIO_printf(Perl_debug_log,
612 "Cleaning named glob IO object:\n "), sv_dump(obj)));
614 SvREFCNT_dec_NN(obj);
616 SvREFCNT_dec_NN(sv); /* undo the inc above */
619 /* Void wrapper to pass to visit() */
621 do_curse(pTHX_ SV * const sv) {
622 if ((PL_stderrgv && GvGP(PL_stderrgv) && (SV*)GvIO(PL_stderrgv) == sv)
623 || (PL_defoutgv && GvGP(PL_defoutgv) && (SV*)GvIO(PL_defoutgv) == sv))
629 =for apidoc sv_clean_objs
631 Attempt to destroy all objects not yet freed.
637 Perl_sv_clean_objs(pTHX)
641 PL_in_clean_objs = TRUE;
642 visit(do_clean_objs, SVf_ROK, SVf_ROK);
643 /* Some barnacles may yet remain, clinging to typeglobs.
644 * Run the non-IO destructors first: they may want to output
645 * error messages, close files etc */
646 visit(do_clean_named_objs, SVt_PVGV|SVpgv_GP, SVTYPEMASK|SVp_POK|SVpgv_GP);
647 visit(do_clean_named_io_objs, SVt_PVGV|SVpgv_GP, SVTYPEMASK|SVp_POK|SVpgv_GP);
648 /* And if there are some very tenacious barnacles clinging to arrays,
649 closures, or what have you.... */
650 visit(do_curse, SVs_OBJECT, SVs_OBJECT);
651 olddef = PL_defoutgv;
652 PL_defoutgv = NULL; /* disable skip of PL_defoutgv */
653 if (olddef && isGV_with_GP(olddef))
654 do_clean_named_io_objs(aTHX_ MUTABLE_SV(olddef));
655 olderr = PL_stderrgv;
656 PL_stderrgv = NULL; /* disable skip of PL_stderrgv */
657 if (olderr && isGV_with_GP(olderr))
658 do_clean_named_io_objs(aTHX_ MUTABLE_SV(olderr));
659 SvREFCNT_dec(olddef);
660 PL_in_clean_objs = FALSE;
663 /* called by sv_clean_all() for each live SV */
666 do_clean_all(pTHX_ SV *const sv)
669 if (sv == (const SV *) PL_fdpid || sv == (const SV *)PL_strtab) {
670 /* don't clean pid table and strtab */
673 DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning loops: SV at 0x%"UVxf"\n", PTR2UV(sv)) ));
674 SvFLAGS(sv) |= SVf_BREAK;
679 =for apidoc sv_clean_all
681 Decrement the refcnt of each remaining SV, possibly triggering a
682 cleanup. This function may have to be called multiple times to free
683 SVs which are in complex self-referential hierarchies.
689 Perl_sv_clean_all(pTHX)
693 PL_in_clean_all = TRUE;
694 cleaned = visit(do_clean_all, 0,0);
699 ARENASETS: a meta-arena implementation which separates arena-info
700 into struct arena_set, which contains an array of struct
701 arena_descs, each holding info for a single arena. By separating
702 the meta-info from the arena, we recover the 1st slot, formerly
703 borrowed for list management. The arena_set is about the size of an
704 arena, avoiding the needless malloc overhead of a naive linked-list.
706 The cost is 1 arena-set malloc per ~320 arena-mallocs, + the unused
707 memory in the last arena-set (1/2 on average). In trade, we get
708 back the 1st slot in each arena (ie 1.7% of a CV-arena, less for
709 smaller types). The recovery of the wasted space allows use of
710 small arenas for large, rare body types, by changing array* fields
711 in body_details_by_type[] below.
714 char *arena; /* the raw storage, allocated aligned */
715 size_t size; /* its size ~4k typ */
716 svtype utype; /* bodytype stored in arena */
721 /* Get the maximum number of elements in set[] such that struct arena_set
722 will fit within PERL_ARENA_SIZE, which is probably just under 4K, and
723 therefore likely to be 1 aligned memory page. */
725 #define ARENAS_PER_SET ((PERL_ARENA_SIZE - sizeof(struct arena_set*) \
726 - 2 * sizeof(int)) / sizeof (struct arena_desc))
729 struct arena_set* next;
730 unsigned int set_size; /* ie ARENAS_PER_SET */
731 unsigned int curr; /* index of next available arena-desc */
732 struct arena_desc set[ARENAS_PER_SET];
736 =for apidoc sv_free_arenas
738 Deallocate the memory used by all arenas. Note that all the individual SV
739 heads and bodies within the arenas must already have been freed.
744 Perl_sv_free_arenas(pTHX)
751 /* Free arenas here, but be careful about fake ones. (We assume
752 contiguity of the fake ones with the corresponding real ones.) */
754 for (sva = PL_sv_arenaroot; sva; sva = svanext) {
755 svanext = MUTABLE_SV(SvANY(sva));
756 while (svanext && SvFAKE(svanext))
757 svanext = MUTABLE_SV(SvANY(svanext));
764 struct arena_set *aroot = (struct arena_set*) PL_body_arenas;
767 struct arena_set *current = aroot;
770 assert(aroot->set[i].arena);
771 Safefree(aroot->set[i].arena);
779 i = PERL_ARENA_ROOTS_SIZE;
781 PL_body_roots[i] = 0;
788 Here are mid-level routines that manage the allocation of bodies out
789 of the various arenas. There are 5 kinds of arenas:
791 1. SV-head arenas, which are discussed and handled above
792 2. regular body arenas
793 3. arenas for reduced-size bodies
796 Arena types 2 & 3 are chained by body-type off an array of
797 arena-root pointers, which is indexed by svtype. Some of the
798 larger/less used body types are malloced singly, since a large
799 unused block of them is wasteful. Also, several svtypes dont have
800 bodies; the data fits into the sv-head itself. The arena-root
801 pointer thus has a few unused root-pointers (which may be hijacked
802 later for arena types 4,5)
804 3 differs from 2 as an optimization; some body types have several
805 unused fields in the front of the structure (which are kept in-place
806 for consistency). These bodies can be allocated in smaller chunks,
807 because the leading fields arent accessed. Pointers to such bodies
808 are decremented to point at the unused 'ghost' memory, knowing that
809 the pointers are used with offsets to the real memory.
812 =head1 SV-Body Allocation
814 Allocation of SV-bodies is similar to SV-heads, differing as follows;
815 the allocation mechanism is used for many body types, so is somewhat
816 more complicated, it uses arena-sets, and has no need for still-live
819 At the outermost level, (new|del)_X*V macros return bodies of the
820 appropriate type. These macros call either (new|del)_body_type or
821 (new|del)_body_allocated macro pairs, depending on specifics of the
822 type. Most body types use the former pair, the latter pair is used to
823 allocate body types with "ghost fields".
825 "ghost fields" are fields that are unused in certain types, and
826 consequently don't need to actually exist. They are declared because
827 they're part of a "base type", which allows use of functions as
828 methods. The simplest examples are AVs and HVs, 2 aggregate types
829 which don't use the fields which support SCALAR semantics.
831 For these types, the arenas are carved up into appropriately sized
832 chunks, we thus avoid wasted memory for those unaccessed members.
833 When bodies are allocated, we adjust the pointer back in memory by the
834 size of the part not allocated, so it's as if we allocated the full
835 structure. (But things will all go boom if you write to the part that
836 is "not there", because you'll be overwriting the last members of the
837 preceding structure in memory.)
839 We calculate the correction using the STRUCT_OFFSET macro on the first
840 member present. If the allocated structure is smaller (no initial NV
841 actually allocated) then the net effect is to subtract the size of the NV
842 from the pointer, to return a new pointer as if an initial NV were actually
843 allocated. (We were using structures named *_allocated for this, but
844 this turned out to be a subtle bug, because a structure without an NV
845 could have a lower alignment constraint, but the compiler is allowed to
846 optimised accesses based on the alignment constraint of the actual pointer
847 to the full structure, for example, using a single 64 bit load instruction
848 because it "knows" that two adjacent 32 bit members will be 8-byte aligned.)
850 This is the same trick as was used for NV and IV bodies. Ironically it
851 doesn't need to be used for NV bodies any more, because NV is now at
852 the start of the structure. IV bodies don't need it either, because
853 they are no longer allocated.
855 In turn, the new_body_* allocators call S_new_body(), which invokes
856 new_body_inline macro, which takes a lock, and takes a body off the
857 linked list at PL_body_roots[sv_type], calling Perl_more_bodies() if
858 necessary to refresh an empty list. Then the lock is released, and
859 the body is returned.
861 Perl_more_bodies allocates a new arena, and carves it up into an array of N
862 bodies, which it strings into a linked list. It looks up arena-size
863 and body-size from the body_details table described below, thus
864 supporting the multiple body-types.
866 If PURIFY is defined, or PERL_ARENA_SIZE=0, arenas are not used, and
867 the (new|del)_X*V macros are mapped directly to malloc/free.
869 For each sv-type, struct body_details bodies_by_type[] carries
870 parameters which control these aspects of SV handling:
872 Arena_size determines whether arenas are used for this body type, and if
873 so, how big they are. PURIFY or PERL_ARENA_SIZE=0 set this field to
874 zero, forcing individual mallocs and frees.
876 Body_size determines how big a body is, and therefore how many fit into
877 each arena. Offset carries the body-pointer adjustment needed for
878 "ghost fields", and is used in *_allocated macros.
880 But its main purpose is to parameterize info needed in
881 Perl_sv_upgrade(). The info here dramatically simplifies the function
882 vs the implementation in 5.8.8, making it table-driven. All fields
883 are used for this, except for arena_size.
885 For the sv-types that have no bodies, arenas are not used, so those
886 PL_body_roots[sv_type] are unused, and can be overloaded. In
887 something of a special case, SVt_NULL is borrowed for HE arenas;
888 PL_body_roots[HE_SVSLOT=SVt_NULL] is filled by S_more_he, but the
889 bodies_by_type[SVt_NULL] slot is not used, as the table is not
894 struct body_details {
895 U8 body_size; /* Size to allocate */
896 U8 copy; /* Size of structure to copy (may be shorter) */
898 unsigned int type : 4; /* We have space for a sanity check. */
899 unsigned int cant_upgrade : 1; /* Cannot upgrade this type */
900 unsigned int zero_nv : 1; /* zero the NV when upgrading from this */
901 unsigned int arena : 1; /* Allocated from an arena */
902 size_t arena_size; /* Size of arena to allocate */
910 /* With -DPURFIY we allocate everything directly, and don't use arenas.
911 This seems a rather elegant way to simplify some of the code below. */
912 #define HASARENA FALSE
914 #define HASARENA TRUE
916 #define NOARENA FALSE
918 /* Size the arenas to exactly fit a given number of bodies. A count
919 of 0 fits the max number bodies into a PERL_ARENA_SIZE.block,
920 simplifying the default. If count > 0, the arena is sized to fit
921 only that many bodies, allowing arenas to be used for large, rare
922 bodies (XPVFM, XPVIO) without undue waste. The arena size is
923 limited by PERL_ARENA_SIZE, so we can safely oversize the
926 #define FIT_ARENA0(body_size) \
927 ((size_t)(PERL_ARENA_SIZE / body_size) * body_size)
928 #define FIT_ARENAn(count,body_size) \
929 ( count * body_size <= PERL_ARENA_SIZE) \
930 ? count * body_size \
931 : FIT_ARENA0 (body_size)
932 #define FIT_ARENA(count,body_size) \
934 ? FIT_ARENAn (count, body_size) \
935 : FIT_ARENA0 (body_size)
937 /* Calculate the length to copy. Specifically work out the length less any
938 final padding the compiler needed to add. See the comment in sv_upgrade
939 for why copying the padding proved to be a bug. */
941 #define copy_length(type, last_member) \
942 STRUCT_OFFSET(type, last_member) \
943 + sizeof (((type*)SvANY((const SV *)0))->last_member)
945 static const struct body_details bodies_by_type[] = {
946 /* HEs use this offset for their arena. */
947 { 0, 0, 0, SVt_NULL, FALSE, NONV, NOARENA, 0 },
949 /* IVs are in the head, so the allocation size is 0. */
951 sizeof(IV), /* This is used to copy out the IV body. */
952 STRUCT_OFFSET(XPVIV, xiv_iv), SVt_IV, FALSE, NONV,
953 NOARENA /* IVS don't need an arena */, 0
956 { sizeof(NV), sizeof(NV),
957 STRUCT_OFFSET(XPVNV, xnv_u),
958 SVt_NV, FALSE, HADNV, HASARENA, FIT_ARENA(0, sizeof(NV)) },
960 { sizeof(XPV) - STRUCT_OFFSET(XPV, xpv_cur),
961 copy_length(XPV, xpv_len) - STRUCT_OFFSET(XPV, xpv_cur),
962 + STRUCT_OFFSET(XPV, xpv_cur),
963 SVt_PV, FALSE, NONV, HASARENA,
964 FIT_ARENA(0, sizeof(XPV) - STRUCT_OFFSET(XPV, xpv_cur)) },
966 { sizeof(XINVLIST) - STRUCT_OFFSET(XPV, xpv_cur),
967 copy_length(XINVLIST, is_offset) - STRUCT_OFFSET(XPV, xpv_cur),
968 + STRUCT_OFFSET(XPV, xpv_cur),
969 SVt_INVLIST, TRUE, NONV, HASARENA,
970 FIT_ARENA(0, sizeof(XINVLIST) - STRUCT_OFFSET(XPV, xpv_cur)) },
972 { sizeof(XPVIV) - STRUCT_OFFSET(XPV, xpv_cur),
973 copy_length(XPVIV, xiv_u) - STRUCT_OFFSET(XPV, xpv_cur),
974 + STRUCT_OFFSET(XPV, xpv_cur),
975 SVt_PVIV, FALSE, NONV, HASARENA,
976 FIT_ARENA(0, sizeof(XPVIV) - STRUCT_OFFSET(XPV, xpv_cur)) },
978 { sizeof(XPVNV) - STRUCT_OFFSET(XPV, xpv_cur),
979 copy_length(XPVNV, xnv_u) - STRUCT_OFFSET(XPV, xpv_cur),
980 + STRUCT_OFFSET(XPV, xpv_cur),
981 SVt_PVNV, FALSE, HADNV, HASARENA,
982 FIT_ARENA(0, sizeof(XPVNV) - STRUCT_OFFSET(XPV, xpv_cur)) },
984 { sizeof(XPVMG), copy_length(XPVMG, xnv_u), 0, SVt_PVMG, FALSE, HADNV,
985 HASARENA, FIT_ARENA(0, sizeof(XPVMG)) },
990 SVt_REGEXP, TRUE, NONV, HASARENA,
991 FIT_ARENA(0, sizeof(regexp))
994 { sizeof(XPVGV), sizeof(XPVGV), 0, SVt_PVGV, TRUE, HADNV,
995 HASARENA, FIT_ARENA(0, sizeof(XPVGV)) },
997 { sizeof(XPVLV), sizeof(XPVLV), 0, SVt_PVLV, TRUE, HADNV,
998 HASARENA, FIT_ARENA(0, sizeof(XPVLV)) },
1001 copy_length(XPVAV, xav_alloc),
1003 SVt_PVAV, TRUE, NONV, HASARENA,
1004 FIT_ARENA(0, sizeof(XPVAV)) },
1007 copy_length(XPVHV, xhv_max),
1009 SVt_PVHV, TRUE, NONV, HASARENA,
1010 FIT_ARENA(0, sizeof(XPVHV)) },
1015 SVt_PVCV, TRUE, NONV, HASARENA,
1016 FIT_ARENA(0, sizeof(XPVCV)) },
1021 SVt_PVFM, TRUE, NONV, NOARENA,
1022 FIT_ARENA(20, sizeof(XPVFM)) },
1027 SVt_PVIO, TRUE, NONV, HASARENA,
1028 FIT_ARENA(24, sizeof(XPVIO)) },
1031 #define new_body_allocated(sv_type) \
1032 (void *)((char *)S_new_body(aTHX_ sv_type) \
1033 - bodies_by_type[sv_type].offset)
1035 /* return a thing to the free list */
1037 #define del_body(thing, root) \
1039 void ** const thing_copy = (void **)thing; \
1040 *thing_copy = *root; \
1041 *root = (void*)thing_copy; \
1046 #define new_XNV() safemalloc(sizeof(XPVNV))
1047 #define new_XPVNV() safemalloc(sizeof(XPVNV))
1048 #define new_XPVMG() safemalloc(sizeof(XPVMG))
1050 #define del_XPVGV(p) safefree(p)
1054 #define new_XNV() new_body_allocated(SVt_NV)
1055 #define new_XPVNV() new_body_allocated(SVt_PVNV)
1056 #define new_XPVMG() new_body_allocated(SVt_PVMG)
1058 #define del_XPVGV(p) del_body(p + bodies_by_type[SVt_PVGV].offset, \
1059 &PL_body_roots[SVt_PVGV])
1063 /* no arena for you! */
1065 #define new_NOARENA(details) \
1066 safemalloc((details)->body_size + (details)->offset)
1067 #define new_NOARENAZ(details) \
1068 safecalloc((details)->body_size + (details)->offset, 1)
1071 Perl_more_bodies (pTHX_ const svtype sv_type, const size_t body_size,
1072 const size_t arena_size)
1075 void ** const root = &PL_body_roots[sv_type];
1076 struct arena_desc *adesc;
1077 struct arena_set *aroot = (struct arena_set *) PL_body_arenas;
1081 const size_t good_arena_size = Perl_malloc_good_size(arena_size);
1082 #if defined(DEBUGGING) && !defined(PERL_GLOBAL_STRUCT_PRIVATE)
1083 static bool done_sanity_check;
1085 /* PERL_GLOBAL_STRUCT_PRIVATE cannot coexist with global
1086 * variables like done_sanity_check. */
1087 if (!done_sanity_check) {
1088 unsigned int i = SVt_LAST;
1090 done_sanity_check = TRUE;
1093 assert (bodies_by_type[i].type == i);
1099 /* may need new arena-set to hold new arena */
1100 if (!aroot || aroot->curr >= aroot->set_size) {
1101 struct arena_set *newroot;
1102 Newxz(newroot, 1, struct arena_set);
1103 newroot->set_size = ARENAS_PER_SET;
1104 newroot->next = aroot;
1106 PL_body_arenas = (void *) newroot;
1107 DEBUG_m(PerlIO_printf(Perl_debug_log, "new arenaset %p\n", (void*)aroot));
1110 /* ok, now have arena-set with at least 1 empty/available arena-desc */
1111 curr = aroot->curr++;
1112 adesc = &(aroot->set[curr]);
1113 assert(!adesc->arena);
1115 Newx(adesc->arena, good_arena_size, char);
1116 adesc->size = good_arena_size;
1117 adesc->utype = sv_type;
1118 DEBUG_m(PerlIO_printf(Perl_debug_log, "arena %d added: %p size %"UVuf"\n",
1119 curr, (void*)adesc->arena, (UV)good_arena_size));
1121 start = (char *) adesc->arena;
1123 /* Get the address of the byte after the end of the last body we can fit.
1124 Remember, this is integer division: */
1125 end = start + good_arena_size / body_size * body_size;
1127 /* computed count doesn't reflect the 1st slot reservation */
1128 #if defined(MYMALLOC) || defined(HAS_MALLOC_GOOD_SIZE)
1129 DEBUG_m(PerlIO_printf(Perl_debug_log,
1130 "arena %p end %p arena-size %d (from %d) type %d "
1132 (void*)start, (void*)end, (int)good_arena_size,
1133 (int)arena_size, sv_type, (int)body_size,
1134 (int)good_arena_size / (int)body_size));
1136 DEBUG_m(PerlIO_printf(Perl_debug_log,
1137 "arena %p end %p arena-size %d type %d size %d ct %d\n",
1138 (void*)start, (void*)end,
1139 (int)arena_size, sv_type, (int)body_size,
1140 (int)good_arena_size / (int)body_size));
1142 *root = (void *)start;
1145 /* Where the next body would start: */
1146 char * const next = start + body_size;
1149 /* This is the last body: */
1150 assert(next == end);
1152 *(void **)start = 0;
1156 *(void**) start = (void *)next;
1161 /* grab a new thing from the free list, allocating more if necessary.
1162 The inline version is used for speed in hot routines, and the
1163 function using it serves the rest (unless PURIFY).
1165 #define new_body_inline(xpv, sv_type) \
1167 void ** const r3wt = &PL_body_roots[sv_type]; \
1168 xpv = (PTR_TBL_ENT_t*) (*((void **)(r3wt)) \
1169 ? *((void **)(r3wt)) : Perl_more_bodies(aTHX_ sv_type, \
1170 bodies_by_type[sv_type].body_size,\
1171 bodies_by_type[sv_type].arena_size)); \
1172 *(r3wt) = *(void**)(xpv); \
1178 S_new_body(pTHX_ const svtype sv_type)
1182 new_body_inline(xpv, sv_type);
1188 static const struct body_details fake_rv =
1189 { 0, 0, 0, SVt_IV, FALSE, NONV, NOARENA, 0 };
1192 =for apidoc sv_upgrade
1194 Upgrade an SV to a more complex form. Generally adds a new body type to the
1195 SV, then copies across as much information as possible from the old body.
1196 It croaks if the SV is already in a more complex form than requested. You
1197 generally want to use the C<SvUPGRADE> macro wrapper, which checks the type
1198 before calling C<sv_upgrade>, and hence does not croak. See also
1205 Perl_sv_upgrade(pTHX_ SV *const sv, svtype new_type)
1210 const svtype old_type = SvTYPE(sv);
1211 const struct body_details *new_type_details;
1212 const struct body_details *old_type_details
1213 = bodies_by_type + old_type;
1214 SV *referant = NULL;
1216 PERL_ARGS_ASSERT_SV_UPGRADE;
1218 if (old_type == new_type)
1221 /* This clause was purposefully added ahead of the early return above to
1222 the shared string hackery for (sort {$a <=> $b} keys %hash), with the
1223 inference by Nick I-S that it would fix other troublesome cases. See
1224 changes 7162, 7163 (f130fd4589cf5fbb24149cd4db4137c8326f49c1 and parent)
1226 Given that shared hash key scalars are no longer PVIV, but PV, there is
1227 no longer need to unshare so as to free up the IVX slot for its proper
1228 purpose. So it's safe to move the early return earlier. */
1230 if (new_type > SVt_PVMG && SvIsCOW(sv)) {
1231 sv_force_normal_flags(sv, 0);
1234 old_body = SvANY(sv);
1236 /* Copying structures onto other structures that have been neatly zeroed
1237 has a subtle gotcha. Consider XPVMG
1239 +------+------+------+------+------+-------+-------+
1240 | NV | CUR | LEN | IV | MAGIC | STASH |
1241 +------+------+------+------+------+-------+-------+
1242 0 4 8 12 16 20 24 28
1244 where NVs are aligned to 8 bytes, so that sizeof that structure is
1245 actually 32 bytes long, with 4 bytes of padding at the end:
1247 +------+------+------+------+------+-------+-------+------+
1248 | NV | CUR | LEN | IV | MAGIC | STASH | ??? |
1249 +------+------+------+------+------+-------+-------+------+
1250 0 4 8 12 16 20 24 28 32
1252 so what happens if you allocate memory for this structure:
1254 +------+------+------+------+------+-------+-------+------+------+...
1255 | NV | CUR | LEN | IV | MAGIC | STASH | GP | NAME |
1256 +------+------+------+------+------+-------+-------+------+------+...
1257 0 4 8 12 16 20 24 28 32 36
1259 zero it, then copy sizeof(XPVMG) bytes on top of it? Not quite what you
1260 expect, because you copy the area marked ??? onto GP. Now, ??? may have
1261 started out as zero once, but it's quite possible that it isn't. So now,
1262 rather than a nicely zeroed GP, you have it pointing somewhere random.
1265 (In fact, GP ends up pointing at a previous GP structure, because the
1266 principle cause of the padding in XPVMG getting garbage is a copy of
1267 sizeof(XPVMG) bytes from a XPVGV structure in sv_unglob. Right now
1268 this happens to be moot because XPVGV has been re-ordered, with GP
1269 no longer after STASH)
1271 So we are careful and work out the size of used parts of all the
1279 referant = SvRV(sv);
1280 old_type_details = &fake_rv;
1281 if (new_type == SVt_NV)
1282 new_type = SVt_PVNV;
1284 if (new_type < SVt_PVIV) {
1285 new_type = (new_type == SVt_NV)
1286 ? SVt_PVNV : SVt_PVIV;
1291 if (new_type < SVt_PVNV) {
1292 new_type = SVt_PVNV;
1296 assert(new_type > SVt_PV);
1297 assert(SVt_IV < SVt_PV);
1298 assert(SVt_NV < SVt_PV);
1305 /* Because the XPVMG of PL_mess_sv isn't allocated from the arena,
1306 there's no way that it can be safely upgraded, because perl.c
1307 expects to Safefree(SvANY(PL_mess_sv)) */
1308 assert(sv != PL_mess_sv);
1309 /* This flag bit is used to mean other things in other scalar types.
1310 Given that it only has meaning inside the pad, it shouldn't be set
1311 on anything that can get upgraded. */
1312 assert(!SvPAD_TYPED(sv));
1315 if (UNLIKELY(old_type_details->cant_upgrade))
1316 Perl_croak(aTHX_ "Can't upgrade %s (%" UVuf ") to %" UVuf,
1317 sv_reftype(sv, 0), (UV) old_type, (UV) new_type);
1320 if (UNLIKELY(old_type > new_type))
1321 Perl_croak(aTHX_ "sv_upgrade from type %d down to type %d",
1322 (int)old_type, (int)new_type);
1324 new_type_details = bodies_by_type + new_type;
1326 SvFLAGS(sv) &= ~SVTYPEMASK;
1327 SvFLAGS(sv) |= new_type;
1329 /* This can't happen, as SVt_NULL is <= all values of new_type, so one of
1330 the return statements above will have triggered. */
1331 assert (new_type != SVt_NULL);
1334 assert(old_type == SVt_NULL);
1335 SvANY(sv) = (XPVIV*)((char*)&(sv->sv_u.svu_iv) - STRUCT_OFFSET(XPVIV, xiv_iv));
1339 assert(old_type == SVt_NULL);
1340 SvANY(sv) = new_XNV();
1345 assert(new_type_details->body_size);
1348 assert(new_type_details->arena);
1349 assert(new_type_details->arena_size);
1350 /* This points to the start of the allocated area. */
1351 new_body_inline(new_body, new_type);
1352 Zero(new_body, new_type_details->body_size, char);
1353 new_body = ((char *)new_body) - new_type_details->offset;
1355 /* We always allocated the full length item with PURIFY. To do this
1356 we fake things so that arena is false for all 16 types.. */
1357 new_body = new_NOARENAZ(new_type_details);
1359 SvANY(sv) = new_body;
1360 if (new_type == SVt_PVAV) {
1364 if (old_type_details->body_size) {
1367 /* It will have been zeroed when the new body was allocated.
1368 Lets not write to it, in case it confuses a write-back
1374 #ifndef NODEFAULT_SHAREKEYS
1375 HvSHAREKEYS_on(sv); /* key-sharing on by default */
1377 /* start with PERL_HASH_DEFAULT_HvMAX+1 buckets: */
1378 HvMAX(sv) = PERL_HASH_DEFAULT_HvMAX;
1381 /* SVt_NULL isn't the only thing upgraded to AV or HV.
1382 The target created by newSVrv also is, and it can have magic.
1383 However, it never has SvPVX set.
1385 if (old_type == SVt_IV) {
1387 } else if (old_type >= SVt_PV) {
1388 assert(SvPVX_const(sv) == 0);
1391 if (old_type >= SVt_PVMG) {
1392 SvMAGIC_set(sv, ((XPVMG*)old_body)->xmg_u.xmg_magic);
1393 SvSTASH_set(sv, ((XPVMG*)old_body)->xmg_stash);
1395 sv->sv_u.svu_array = NULL; /* or svu_hash */
1400 /* XXX Is this still needed? Was it ever needed? Surely as there is
1401 no route from NV to PVIV, NOK can never be true */
1402 assert(!SvNOKp(sv));
1415 assert(new_type_details->body_size);
1416 /* We always allocated the full length item with PURIFY. To do this
1417 we fake things so that arena is false for all 16 types.. */
1418 if(new_type_details->arena) {
1419 /* This points to the start of the allocated area. */
1420 new_body_inline(new_body, new_type);
1421 Zero(new_body, new_type_details->body_size, char);
1422 new_body = ((char *)new_body) - new_type_details->offset;
1424 new_body = new_NOARENAZ(new_type_details);
1426 SvANY(sv) = new_body;
1428 if (old_type_details->copy) {
1429 /* There is now the potential for an upgrade from something without
1430 an offset (PVNV or PVMG) to something with one (PVCV, PVFM) */
1431 int offset = old_type_details->offset;
1432 int length = old_type_details->copy;
1434 if (new_type_details->offset > old_type_details->offset) {
1435 const int difference
1436 = new_type_details->offset - old_type_details->offset;
1437 offset += difference;
1438 length -= difference;
1440 assert (length >= 0);
1442 Copy((char *)old_body + offset, (char *)new_body + offset, length,
1446 #ifndef NV_ZERO_IS_ALLBITS_ZERO
1447 /* If NV 0.0 is stores as all bits 0 then Zero() already creates a
1448 * correct 0.0 for us. Otherwise, if the old body didn't have an
1449 * NV slot, but the new one does, then we need to initialise the
1450 * freshly created NV slot with whatever the correct bit pattern is
1452 if (old_type_details->zero_nv && !new_type_details->zero_nv
1453 && !isGV_with_GP(sv))
1457 if (UNLIKELY(new_type == SVt_PVIO)) {
1458 IO * const io = MUTABLE_IO(sv);
1459 GV *iogv = gv_fetchpvs("IO::File::", GV_ADD, SVt_PVHV);
1462 /* Clear the stashcache because a new IO could overrule a package
1464 DEBUG_o(Perl_deb(aTHX_ "sv_upgrade clearing PL_stashcache\n"));
1465 hv_clear(PL_stashcache);
1467 SvSTASH_set(io, MUTABLE_HV(SvREFCNT_inc(GvHV(iogv))));
1468 IoPAGE_LEN(sv) = 60;
1470 if (UNLIKELY(new_type == SVt_REGEXP))
1471 sv->sv_u.svu_rx = (regexp *)new_body;
1472 else if (old_type < SVt_PV) {
1473 /* referant will be NULL unless the old type was SVt_IV emulating
1475 sv->sv_u.svu_rv = referant;
1479 Perl_croak(aTHX_ "panic: sv_upgrade to unknown type %lu",
1480 (unsigned long)new_type);
1483 if (old_type > SVt_IV) {
1487 /* Note that there is an assumption that all bodies of types that
1488 can be upgraded came from arenas. Only the more complex non-
1489 upgradable types are allowed to be directly malloc()ed. */
1490 assert(old_type_details->arena);
1491 del_body((void*)((char*)old_body + old_type_details->offset),
1492 &PL_body_roots[old_type]);
1498 =for apidoc sv_backoff
1500 Remove any string offset. You should normally use the C<SvOOK_off> macro
1507 Perl_sv_backoff(pTHX_ SV *const sv)
1510 const char * const s = SvPVX_const(sv);
1512 PERL_ARGS_ASSERT_SV_BACKOFF;
1513 PERL_UNUSED_CONTEXT;
1516 assert(SvTYPE(sv) != SVt_PVHV);
1517 assert(SvTYPE(sv) != SVt_PVAV);
1519 SvOOK_offset(sv, delta);
1521 SvLEN_set(sv, SvLEN(sv) + delta);
1522 SvPV_set(sv, SvPVX(sv) - delta);
1523 Move(s, SvPVX(sv), SvCUR(sv)+1, char);
1524 SvFLAGS(sv) &= ~SVf_OOK;
1531 Expands the character buffer in the SV. If necessary, uses C<sv_unref> and
1532 upgrades the SV to C<SVt_PV>. Returns a pointer to the character buffer.
1533 Use the C<SvGROW> wrapper instead.
1538 static void S_sv_uncow(pTHX_ SV * const sv, const U32 flags);
1541 Perl_sv_grow(pTHX_ SV *const sv, STRLEN newlen)
1545 PERL_ARGS_ASSERT_SV_GROW;
1549 if (SvTYPE(sv) < SVt_PV) {
1550 sv_upgrade(sv, SVt_PV);
1551 s = SvPVX_mutable(sv);
1553 else if (SvOOK(sv)) { /* pv is offset? */
1555 s = SvPVX_mutable(sv);
1556 if (newlen > SvLEN(sv))
1557 newlen += 10 * (newlen - SvCUR(sv)); /* avoid copy each time */
1561 if (SvIsCOW(sv)) S_sv_uncow(aTHX_ sv, 0);
1562 s = SvPVX_mutable(sv);
1565 #ifdef PERL_NEW_COPY_ON_WRITE
1566 /* the new COW scheme uses SvPVX(sv)[SvLEN(sv)-1] (if spare)
1567 * to store the COW count. So in general, allocate one more byte than
1568 * asked for, to make it likely this byte is always spare: and thus
1569 * make more strings COW-able.
1570 * If the new size is a big power of two, don't bother: we assume the
1571 * caller wanted a nice 2^N sized block and will be annoyed at getting
1577 if (newlen > SvLEN(sv)) { /* need more room? */
1578 STRLEN minlen = SvCUR(sv);
1579 minlen += (minlen >> PERL_STRLEN_EXPAND_SHIFT) + 10;
1580 if (newlen < minlen)
1582 #ifndef Perl_safesysmalloc_size
1584 newlen = PERL_STRLEN_ROUNDUP(newlen);
1586 if (SvLEN(sv) && s) {
1587 s = (char*)saferealloc(s, newlen);
1590 s = (char*)safemalloc(newlen);
1591 if (SvPVX_const(sv) && SvCUR(sv)) {
1592 Move(SvPVX_const(sv), s, (newlen < SvCUR(sv)) ? newlen : SvCUR(sv), char);
1596 #ifdef Perl_safesysmalloc_size
1597 /* Do this here, do it once, do it right, and then we will never get
1598 called back into sv_grow() unless there really is some growing
1600 SvLEN_set(sv, Perl_safesysmalloc_size(s));
1602 SvLEN_set(sv, newlen);
1609 =for apidoc sv_setiv
1611 Copies an integer into the given SV, upgrading first if necessary.
1612 Does not handle 'set' magic. See also C<sv_setiv_mg>.
1618 Perl_sv_setiv(pTHX_ SV *const sv, const IV i)
1622 PERL_ARGS_ASSERT_SV_SETIV;
1624 SV_CHECK_THINKFIRST_COW_DROP(sv);
1625 switch (SvTYPE(sv)) {
1628 sv_upgrade(sv, SVt_IV);
1631 sv_upgrade(sv, SVt_PVIV);
1635 if (!isGV_with_GP(sv))
1642 /* diag_listed_as: Can't coerce %s to %s in %s */
1643 Perl_croak(aTHX_ "Can't coerce %s to integer in %s", sv_reftype(sv,0),
1647 (void)SvIOK_only(sv); /* validate number */
1653 =for apidoc sv_setiv_mg
1655 Like C<sv_setiv>, but also handles 'set' magic.
1661 Perl_sv_setiv_mg(pTHX_ SV *const sv, const IV i)
1663 PERL_ARGS_ASSERT_SV_SETIV_MG;
1670 =for apidoc sv_setuv
1672 Copies an unsigned integer into the given SV, upgrading first if necessary.
1673 Does not handle 'set' magic. See also C<sv_setuv_mg>.
1679 Perl_sv_setuv(pTHX_ SV *const sv, const UV u)
1681 PERL_ARGS_ASSERT_SV_SETUV;
1683 /* With the if statement to ensure that integers are stored as IVs whenever
1685 u=1.49 s=0.52 cu=72.49 cs=10.64 scripts=270 tests=20865
1688 u=1.35 s=0.47 cu=73.45 cs=11.43 scripts=270 tests=20865
1690 If you wish to remove the following if statement, so that this routine
1691 (and its callers) always return UVs, please benchmark to see what the
1692 effect is. Modern CPUs may be different. Or may not :-)
1694 if (u <= (UV)IV_MAX) {
1695 sv_setiv(sv, (IV)u);
1704 =for apidoc sv_setuv_mg
1706 Like C<sv_setuv>, but also handles 'set' magic.
1712 Perl_sv_setuv_mg(pTHX_ SV *const sv, const UV u)
1714 PERL_ARGS_ASSERT_SV_SETUV_MG;
1721 =for apidoc sv_setnv
1723 Copies a double into the given SV, upgrading first if necessary.
1724 Does not handle 'set' magic. See also C<sv_setnv_mg>.
1730 Perl_sv_setnv(pTHX_ SV *const sv, const NV num)
1734 PERL_ARGS_ASSERT_SV_SETNV;
1736 SV_CHECK_THINKFIRST_COW_DROP(sv);
1737 switch (SvTYPE(sv)) {
1740 sv_upgrade(sv, SVt_NV);
1744 sv_upgrade(sv, SVt_PVNV);
1748 if (!isGV_with_GP(sv))
1755 /* diag_listed_as: Can't coerce %s to %s in %s */
1756 Perl_croak(aTHX_ "Can't coerce %s to number in %s", sv_reftype(sv,0),
1761 (void)SvNOK_only(sv); /* validate number */
1766 =for apidoc sv_setnv_mg
1768 Like C<sv_setnv>, but also handles 'set' magic.
1774 Perl_sv_setnv_mg(pTHX_ SV *const sv, const NV num)
1776 PERL_ARGS_ASSERT_SV_SETNV_MG;
1782 /* Print an "isn't numeric" warning, using a cleaned-up,
1783 * printable version of the offending string
1787 S_not_a_number(pTHX_ SV *const sv)
1794 PERL_ARGS_ASSERT_NOT_A_NUMBER;
1797 dsv = newSVpvs_flags("", SVs_TEMP);
1798 pv = sv_uni_display(dsv, sv, 10, UNI_DISPLAY_ISPRINT);
1801 const char * const limit = tmpbuf + sizeof(tmpbuf) - 8;
1802 /* each *s can expand to 4 chars + "...\0",
1803 i.e. need room for 8 chars */
1805 const char *s = SvPVX_const(sv);
1806 const char * const end = s + SvCUR(sv);
1807 for ( ; s < end && d < limit; s++ ) {
1809 if (! isASCII(ch) && !isPRINT_LC(ch)) {
1813 /* Map to ASCII "equivalent" of Latin1 */
1814 ch = LATIN1_TO_NATIVE(NATIVE_TO_LATIN1(ch) & 127);
1820 else if (ch == '\r') {
1824 else if (ch == '\f') {
1828 else if (ch == '\\') {
1832 else if (ch == '\0') {
1836 else if (isPRINT_LC(ch))
1853 Perl_warner(aTHX_ packWARN(WARN_NUMERIC),
1854 /* diag_listed_as: Argument "%s" isn't numeric%s */
1855 "Argument \"%s\" isn't numeric in %s", pv,
1858 Perl_warner(aTHX_ packWARN(WARN_NUMERIC),
1859 /* diag_listed_as: Argument "%s" isn't numeric%s */
1860 "Argument \"%s\" isn't numeric", pv);
1864 =for apidoc looks_like_number
1866 Test if the content of an SV looks like a number (or is a number).
1867 C<Inf> and C<Infinity> are treated as numbers (so will not issue a
1868 non-numeric warning), even if your atof() doesn't grok them. Get-magic is
1875 Perl_looks_like_number(pTHX_ SV *const sv)
1880 PERL_ARGS_ASSERT_LOOKS_LIKE_NUMBER;
1882 if (SvPOK(sv) || SvPOKp(sv)) {
1883 sbegin = SvPV_nomg_const(sv, len);
1886 return SvFLAGS(sv) & (SVf_NOK|SVp_NOK|SVf_IOK|SVp_IOK);
1887 return grok_number(sbegin, len, NULL);
1891 S_glob_2number(pTHX_ GV * const gv)
1893 PERL_ARGS_ASSERT_GLOB_2NUMBER;
1895 /* We know that all GVs stringify to something that is not-a-number,
1896 so no need to test that. */
1897 if (ckWARN(WARN_NUMERIC))
1899 SV *const buffer = sv_newmortal();
1900 gv_efullname3(buffer, gv, "*");
1901 not_a_number(buffer);
1903 /* We just want something true to return, so that S_sv_2iuv_common
1904 can tail call us and return true. */
1908 /* Actually, ISO C leaves conversion of UV to IV undefined, but
1909 until proven guilty, assume that things are not that bad... */
1914 As 64 bit platforms often have an NV that doesn't preserve all bits of
1915 an IV (an assumption perl has been based on to date) it becomes necessary
1916 to remove the assumption that the NV always carries enough precision to
1917 recreate the IV whenever needed, and that the NV is the canonical form.
1918 Instead, IV/UV and NV need to be given equal rights. So as to not lose
1919 precision as a side effect of conversion (which would lead to insanity
1920 and the dragon(s) in t/op/numconvert.t getting very angry) the intent is
1921 1) to distinguish between IV/UV/NV slots that have cached a valid
1922 conversion where precision was lost and IV/UV/NV slots that have a
1923 valid conversion which has lost no precision
1924 2) to ensure that if a numeric conversion to one form is requested that
1925 would lose precision, the precise conversion (or differently
1926 imprecise conversion) is also performed and cached, to prevent
1927 requests for different numeric formats on the same SV causing
1928 lossy conversion chains. (lossless conversion chains are perfectly
1933 SvIOKp is true if the IV slot contains a valid value
1934 SvIOK is true only if the IV value is accurate (UV if SvIOK_UV true)
1935 SvNOKp is true if the NV slot contains a valid value
1936 SvNOK is true only if the NV value is accurate
1939 while converting from PV to NV, check to see if converting that NV to an
1940 IV(or UV) would lose accuracy over a direct conversion from PV to
1941 IV(or UV). If it would, cache both conversions, return NV, but mark
1942 SV as IOK NOKp (ie not NOK).
1944 While converting from PV to IV, check to see if converting that IV to an
1945 NV would lose accuracy over a direct conversion from PV to NV. If it
1946 would, cache both conversions, flag similarly.
1948 Before, the SV value "3.2" could become NV=3.2 IV=3 NOK, IOK quite
1949 correctly because if IV & NV were set NV *always* overruled.
1950 Now, "3.2" will become NV=3.2 IV=3 NOK, IOKp, because the flag's meaning
1951 changes - now IV and NV together means that the two are interchangeable:
1952 SvIVX == (IV) SvNVX && SvNVX == (NV) SvIVX;
1954 The benefit of this is that operations such as pp_add know that if
1955 SvIOK is true for both left and right operands, then integer addition
1956 can be used instead of floating point (for cases where the result won't
1957 overflow). Before, floating point was always used, which could lead to
1958 loss of precision compared with integer addition.
1960 * making IV and NV equal status should make maths accurate on 64 bit
1962 * may speed up maths somewhat if pp_add and friends start to use
1963 integers when possible instead of fp. (Hopefully the overhead in
1964 looking for SvIOK and checking for overflow will not outweigh the
1965 fp to integer speedup)
1966 * will slow down integer operations (callers of SvIV) on "inaccurate"
1967 values, as the change from SvIOK to SvIOKp will cause a call into
1968 sv_2iv each time rather than a macro access direct to the IV slot
1969 * should speed up number->string conversion on integers as IV is
1970 favoured when IV and NV are equally accurate
1972 ####################################################################
1973 You had better be using SvIOK_notUV if you want an IV for arithmetic:
1974 SvIOK is true if (IV or UV), so you might be getting (IV)SvUV.
1975 On the other hand, SvUOK is true iff UV.
1976 ####################################################################
1978 Your mileage will vary depending your CPU's relative fp to integer
1982 #ifndef NV_PRESERVES_UV
1983 # define IS_NUMBER_UNDERFLOW_IV 1
1984 # define IS_NUMBER_UNDERFLOW_UV 2
1985 # define IS_NUMBER_IV_AND_UV 2
1986 # define IS_NUMBER_OVERFLOW_IV 4
1987 # define IS_NUMBER_OVERFLOW_UV 5
1989 /* sv_2iuv_non_preserve(): private routine for use by sv_2iv() and sv_2uv() */
1991 /* For sv_2nv these three cases are "SvNOK and don't bother casting" */
1993 S_sv_2iuv_non_preserve(pTHX_ SV *const sv
2001 PERL_ARGS_ASSERT_SV_2IUV_NON_PRESERVE;
2003 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));
2004 if (SvNVX(sv) < (NV)IV_MIN) {
2005 (void)SvIOKp_on(sv);
2007 SvIV_set(sv, IV_MIN);
2008 return IS_NUMBER_UNDERFLOW_IV;
2010 if (SvNVX(sv) > (NV)UV_MAX) {
2011 (void)SvIOKp_on(sv);
2014 SvUV_set(sv, UV_MAX);
2015 return IS_NUMBER_OVERFLOW_UV;
2017 (void)SvIOKp_on(sv);
2019 /* Can't use strtol etc to convert this string. (See truth table in
2021 if (SvNVX(sv) <= (UV)IV_MAX) {
2022 SvIV_set(sv, I_V(SvNVX(sv)));
2023 if ((NV)(SvIVX(sv)) == SvNVX(sv)) {
2024 SvIOK_on(sv); /* Integer is precise. NOK, IOK */
2026 /* Integer is imprecise. NOK, IOKp */
2028 return SvNVX(sv) < 0 ? IS_NUMBER_UNDERFLOW_UV : IS_NUMBER_IV_AND_UV;
2031 SvUV_set(sv, U_V(SvNVX(sv)));
2032 if ((NV)(SvUVX(sv)) == SvNVX(sv)) {
2033 if (SvUVX(sv) == UV_MAX) {
2034 /* As we know that NVs don't preserve UVs, UV_MAX cannot
2035 possibly be preserved by NV. Hence, it must be overflow.
2037 return IS_NUMBER_OVERFLOW_UV;
2039 SvIOK_on(sv); /* Integer is precise. NOK, UOK */
2041 /* Integer is imprecise. NOK, IOKp */
2043 return IS_NUMBER_OVERFLOW_IV;
2045 #endif /* !NV_PRESERVES_UV*/
2048 S_sv_2iuv_common(pTHX_ SV *const sv)
2052 PERL_ARGS_ASSERT_SV_2IUV_COMMON;
2055 /* erm. not sure. *should* never get NOKp (without NOK) from sv_2nv
2056 * without also getting a cached IV/UV from it at the same time
2057 * (ie PV->NV conversion should detect loss of accuracy and cache
2058 * IV or UV at same time to avoid this. */
2059 /* IV-over-UV optimisation - choose to cache IV if possible */
2061 if (SvTYPE(sv) == SVt_NV)
2062 sv_upgrade(sv, SVt_PVNV);
2064 (void)SvIOKp_on(sv); /* Must do this first, to clear any SvOOK */
2065 /* < not <= as for NV doesn't preserve UV, ((NV)IV_MAX+1) will almost
2066 certainly cast into the IV range at IV_MAX, whereas the correct
2067 answer is the UV IV_MAX +1. Hence < ensures that dodgy boundary
2069 #if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan)
2070 if (Perl_isnan(SvNVX(sv))) {
2076 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2077 SvIV_set(sv, I_V(SvNVX(sv)));
2078 if (SvNVX(sv) == (NV) SvIVX(sv)
2079 #ifndef NV_PRESERVES_UV
2080 && (((UV)1 << NV_PRESERVES_UV_BITS) >
2081 (UV)(SvIVX(sv) > 0 ? SvIVX(sv) : -SvIVX(sv)))
2082 /* Don't flag it as "accurately an integer" if the number
2083 came from a (by definition imprecise) NV operation, and
2084 we're outside the range of NV integer precision */
2088 SvIOK_on(sv); /* Can this go wrong with rounding? NWC */
2090 /* scalar has trailing garbage, eg "42a" */
2092 DEBUG_c(PerlIO_printf(Perl_debug_log,
2093 "0x%"UVxf" iv(%"NVgf" => %"IVdf") (precise)\n",
2099 /* IV not precise. No need to convert from PV, as NV
2100 conversion would already have cached IV if it detected
2101 that PV->IV would be better than PV->NV->IV
2102 flags already correct - don't set public IOK. */
2103 DEBUG_c(PerlIO_printf(Perl_debug_log,
2104 "0x%"UVxf" iv(%"NVgf" => %"IVdf") (imprecise)\n",
2109 /* Can the above go wrong if SvIVX == IV_MIN and SvNVX < IV_MIN,
2110 but the cast (NV)IV_MIN rounds to a the value less (more
2111 negative) than IV_MIN which happens to be equal to SvNVX ??
2112 Analogous to 0xFFFFFFFFFFFFFFFF rounding up to NV (2**64) and
2113 NV rounding back to 0xFFFFFFFFFFFFFFFF, so UVX == UV(NVX) and
2114 (NV)UVX == NVX are both true, but the values differ. :-(
2115 Hopefully for 2s complement IV_MIN is something like
2116 0x8000000000000000 which will be exact. NWC */
2119 SvUV_set(sv, U_V(SvNVX(sv)));
2121 (SvNVX(sv) == (NV) SvUVX(sv))
2122 #ifndef NV_PRESERVES_UV
2123 /* Make sure it's not 0xFFFFFFFFFFFFFFFF */
2124 /*&& (SvUVX(sv) != UV_MAX) irrelevant with code below */
2125 && (((UV)1 << NV_PRESERVES_UV_BITS) > SvUVX(sv))
2126 /* Don't flag it as "accurately an integer" if the number
2127 came from a (by definition imprecise) NV operation, and
2128 we're outside the range of NV integer precision */
2134 DEBUG_c(PerlIO_printf(Perl_debug_log,
2135 "0x%"UVxf" 2iv(%"UVuf" => %"IVdf") (as unsigned)\n",
2141 else if (SvPOKp(sv)) {
2143 const int numtype = grok_number(SvPVX_const(sv), SvCUR(sv), &value);
2144 /* We want to avoid a possible problem when we cache an IV/ a UV which
2145 may be later translated to an NV, and the resulting NV is not
2146 the same as the direct translation of the initial string
2147 (eg 123.456 can shortcut to the IV 123 with atol(), but we must
2148 be careful to ensure that the value with the .456 is around if the
2149 NV value is requested in the future).
2151 This means that if we cache such an IV/a UV, we need to cache the
2152 NV as well. Moreover, we trade speed for space, and do not
2153 cache the NV if we are sure it's not needed.
2156 /* SVt_PVNV is one higher than SVt_PVIV, hence this order */
2157 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2158 == IS_NUMBER_IN_UV) {
2159 /* It's definitely an integer, only upgrade to PVIV */
2160 if (SvTYPE(sv) < SVt_PVIV)
2161 sv_upgrade(sv, SVt_PVIV);
2163 } else if (SvTYPE(sv) < SVt_PVNV)
2164 sv_upgrade(sv, SVt_PVNV);
2166 /* If NVs preserve UVs then we only use the UV value if we know that
2167 we aren't going to call atof() below. If NVs don't preserve UVs
2168 then the value returned may have more precision than atof() will
2169 return, even though value isn't perfectly accurate. */
2170 if ((numtype & (IS_NUMBER_IN_UV
2171 #ifdef NV_PRESERVES_UV
2174 )) == IS_NUMBER_IN_UV) {
2175 /* This won't turn off the public IOK flag if it was set above */
2176 (void)SvIOKp_on(sv);
2178 if (!(numtype & IS_NUMBER_NEG)) {
2180 if (value <= (UV)IV_MAX) {
2181 SvIV_set(sv, (IV)value);
2183 /* it didn't overflow, and it was positive. */
2184 SvUV_set(sv, value);
2188 /* 2s complement assumption */
2189 if (value <= (UV)IV_MIN) {
2190 SvIV_set(sv, -(IV)value);
2192 /* Too negative for an IV. This is a double upgrade, but
2193 I'm assuming it will be rare. */
2194 if (SvTYPE(sv) < SVt_PVNV)
2195 sv_upgrade(sv, SVt_PVNV);
2199 SvNV_set(sv, -(NV)value);
2200 SvIV_set(sv, IV_MIN);
2204 /* For !NV_PRESERVES_UV and IS_NUMBER_IN_UV and IS_NUMBER_NOT_INT we
2205 will be in the previous block to set the IV slot, and the next
2206 block to set the NV slot. So no else here. */
2208 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2209 != IS_NUMBER_IN_UV) {
2210 /* It wasn't an (integer that doesn't overflow the UV). */
2211 SvNV_set(sv, Atof(SvPVX_const(sv)));
2213 if (! numtype && ckWARN(WARN_NUMERIC))
2216 #if defined(USE_LONG_DOUBLE)
2217 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2iv(%" PERL_PRIgldbl ")\n",
2218 PTR2UV(sv), SvNVX(sv)));
2220 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2iv(%"NVgf")\n",
2221 PTR2UV(sv), SvNVX(sv)));
2224 #ifdef NV_PRESERVES_UV
2225 (void)SvIOKp_on(sv);
2227 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2228 SvIV_set(sv, I_V(SvNVX(sv)));
2229 if ((NV)(SvIVX(sv)) == SvNVX(sv)) {
2232 NOOP; /* Integer is imprecise. NOK, IOKp */
2234 /* UV will not work better than IV */
2236 if (SvNVX(sv) > (NV)UV_MAX) {
2238 /* Integer is inaccurate. NOK, IOKp, is UV */
2239 SvUV_set(sv, UV_MAX);
2241 SvUV_set(sv, U_V(SvNVX(sv)));
2242 /* 0xFFFFFFFFFFFFFFFF not an issue in here, NVs
2243 NV preservse UV so can do correct comparison. */
2244 if ((NV)(SvUVX(sv)) == SvNVX(sv)) {
2247 NOOP; /* Integer is imprecise. NOK, IOKp, is UV */
2252 #else /* NV_PRESERVES_UV */
2253 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2254 == (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT)) {
2255 /* The IV/UV slot will have been set from value returned by
2256 grok_number above. The NV slot has just been set using
2259 assert (SvIOKp(sv));
2261 if (((UV)1 << NV_PRESERVES_UV_BITS) >
2262 U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))) {
2263 /* Small enough to preserve all bits. */
2264 (void)SvIOKp_on(sv);
2266 SvIV_set(sv, I_V(SvNVX(sv)));
2267 if ((NV)(SvIVX(sv)) == SvNVX(sv))
2269 /* Assumption: first non-preserved integer is < IV_MAX,
2270 this NV is in the preserved range, therefore: */
2271 if (!(U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))
2273 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);
2277 0 0 already failed to read UV.
2278 0 1 already failed to read UV.
2279 1 0 you won't get here in this case. IV/UV
2280 slot set, public IOK, Atof() unneeded.
2281 1 1 already read UV.
2282 so there's no point in sv_2iuv_non_preserve() attempting
2283 to use atol, strtol, strtoul etc. */
2285 sv_2iuv_non_preserve (sv, numtype);
2287 sv_2iuv_non_preserve (sv);
2291 #endif /* NV_PRESERVES_UV */
2292 /* It might be more code efficient to go through the entire logic above
2293 and conditionally set with SvIOKp_on() rather than SvIOK(), but it
2294 gets complex and potentially buggy, so more programmer efficient
2295 to do it this way, by turning off the public flags: */
2297 SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK);
2301 if (isGV_with_GP(sv))
2302 return glob_2number(MUTABLE_GV(sv));
2304 if (!PL_localizing && ckWARN(WARN_UNINITIALIZED))
2306 if (SvTYPE(sv) < SVt_IV)
2307 /* Typically the caller expects that sv_any is not NULL now. */
2308 sv_upgrade(sv, SVt_IV);
2309 /* Return 0 from the caller. */
2316 =for apidoc sv_2iv_flags
2318 Return the integer value of an SV, doing any necessary string
2319 conversion. If flags includes SV_GMAGIC, does an mg_get() first.
2320 Normally used via the C<SvIV(sv)> and C<SvIVx(sv)> macros.
2326 Perl_sv_2iv_flags(pTHX_ SV *const sv, const I32 flags)
2330 PERL_ARGS_ASSERT_SV_2IV_FLAGS;
2332 assert (SvTYPE(sv) != SVt_PVAV && SvTYPE(sv) != SVt_PVHV
2333 && SvTYPE(sv) != SVt_PVFM);
2335 if (SvGMAGICAL(sv) && (flags & SV_GMAGIC))
2341 if (flags & SV_SKIP_OVERLOAD)
2343 tmpstr = AMG_CALLunary(sv, numer_amg);
2344 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2345 return SvIV(tmpstr);
2348 return PTR2IV(SvRV(sv));
2351 if (SvVALID(sv) || isREGEXP(sv)) {
2352 /* FBMs use the space for SvIVX and SvNVX for other purposes, and use
2353 the same flag bit as SVf_IVisUV, so must not let them cache IVs.
2354 In practice they are extremely unlikely to actually get anywhere
2355 accessible by user Perl code - the only way that I'm aware of is when
2356 a constant subroutine which is used as the second argument to index.
2358 Regexps have no SvIVX and SvNVX fields.
2360 assert(isREGEXP(sv) || SvPOKp(sv));
2363 const char * const ptr =
2364 isREGEXP(sv) ? RX_WRAPPED((REGEXP*)sv) : SvPVX_const(sv);
2366 = grok_number(ptr, SvCUR(sv), &value);
2368 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2369 == IS_NUMBER_IN_UV) {
2370 /* It's definitely an integer */
2371 if (numtype & IS_NUMBER_NEG) {
2372 if (value < (UV)IV_MIN)
2375 if (value < (UV)IV_MAX)
2380 if (ckWARN(WARN_NUMERIC))
2383 return I_V(Atof(ptr));
2387 if (SvTHINKFIRST(sv)) {
2388 #ifdef PERL_OLD_COPY_ON_WRITE
2390 sv_force_normal_flags(sv, 0);
2393 if (SvREADONLY(sv) && !SvOK(sv)) {
2394 if (ckWARN(WARN_UNINITIALIZED))
2401 if (S_sv_2iuv_common(aTHX_ sv))
2405 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2iv(%"IVdf")\n",
2406 PTR2UV(sv),SvIVX(sv)));
2407 return SvIsUV(sv) ? (IV)SvUVX(sv) : SvIVX(sv);
2411 =for apidoc sv_2uv_flags
2413 Return the unsigned integer value of an SV, doing any necessary string
2414 conversion. If flags includes SV_GMAGIC, does an mg_get() first.
2415 Normally used via the C<SvUV(sv)> and C<SvUVx(sv)> macros.
2421 Perl_sv_2uv_flags(pTHX_ SV *const sv, const I32 flags)
2425 PERL_ARGS_ASSERT_SV_2UV_FLAGS;
2427 if (SvGMAGICAL(sv) && (flags & SV_GMAGIC))
2433 if (flags & SV_SKIP_OVERLOAD)
2435 tmpstr = AMG_CALLunary(sv, numer_amg);
2436 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2437 return SvUV(tmpstr);
2440 return PTR2UV(SvRV(sv));
2443 if (SvVALID(sv) || isREGEXP(sv)) {
2444 /* FBMs use the space for SvIVX and SvNVX for other purposes, and use
2445 the same flag bit as SVf_IVisUV, so must not let them cache IVs.
2446 Regexps have no SvIVX and SvNVX fields. */
2447 assert(isREGEXP(sv) || SvPOKp(sv));
2450 const char * const ptr =
2451 isREGEXP(sv) ? RX_WRAPPED((REGEXP*)sv) : SvPVX_const(sv);
2453 = grok_number(ptr, SvCUR(sv), &value);
2455 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2456 == IS_NUMBER_IN_UV) {
2457 /* It's definitely an integer */
2458 if (!(numtype & IS_NUMBER_NEG))
2462 if (ckWARN(WARN_NUMERIC))
2465 return U_V(Atof(ptr));
2469 if (SvTHINKFIRST(sv)) {
2470 #ifdef PERL_OLD_COPY_ON_WRITE
2472 sv_force_normal_flags(sv, 0);
2475 if (SvREADONLY(sv) && !SvOK(sv)) {
2476 if (ckWARN(WARN_UNINITIALIZED))
2483 if (S_sv_2iuv_common(aTHX_ sv))
2487 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2uv(%"UVuf")\n",
2488 PTR2UV(sv),SvUVX(sv)));
2489 return SvIsUV(sv) ? SvUVX(sv) : (UV)SvIVX(sv);
2493 =for apidoc sv_2nv_flags
2495 Return the num value of an SV, doing any necessary string or integer
2496 conversion. If flags includes SV_GMAGIC, does an mg_get() first.
2497 Normally used via the C<SvNV(sv)> and C<SvNVx(sv)> macros.
2503 Perl_sv_2nv_flags(pTHX_ SV *const sv, const I32 flags)
2507 PERL_ARGS_ASSERT_SV_2NV_FLAGS;
2509 assert (SvTYPE(sv) != SVt_PVAV && SvTYPE(sv) != SVt_PVHV
2510 && SvTYPE(sv) != SVt_PVFM);
2511 if (SvGMAGICAL(sv) || SvVALID(sv) || isREGEXP(sv)) {
2512 /* FBMs use the space for SvIVX and SvNVX for other purposes, and use
2513 the same flag bit as SVf_IVisUV, so must not let them cache NVs.
2514 Regexps have no SvIVX and SvNVX fields. */
2516 if (flags & SV_GMAGIC)
2520 if (SvPOKp(sv) && !SvIOKp(sv)) {
2521 ptr = SvPVX_const(sv);
2523 if (!SvIOKp(sv) && ckWARN(WARN_NUMERIC) &&
2524 !grok_number(ptr, SvCUR(sv), NULL))
2530 return (NV)SvUVX(sv);
2532 return (NV)SvIVX(sv);
2538 ptr = RX_WRAPPED((REGEXP *)sv);
2541 assert(SvTYPE(sv) >= SVt_PVMG);
2542 /* This falls through to the report_uninit near the end of the
2544 } else if (SvTHINKFIRST(sv)) {
2549 if (flags & SV_SKIP_OVERLOAD)
2551 tmpstr = AMG_CALLunary(sv, numer_amg);
2552 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2553 return SvNV(tmpstr);
2556 return PTR2NV(SvRV(sv));
2558 #ifdef PERL_OLD_COPY_ON_WRITE
2560 sv_force_normal_flags(sv, 0);
2563 if (SvREADONLY(sv) && !SvOK(sv)) {
2564 if (ckWARN(WARN_UNINITIALIZED))
2569 if (SvTYPE(sv) < SVt_NV) {
2570 /* The logic to use SVt_PVNV if necessary is in sv_upgrade. */
2571 sv_upgrade(sv, SVt_NV);
2572 #ifdef USE_LONG_DOUBLE
2574 STORE_NUMERIC_LOCAL_SET_STANDARD();
2575 PerlIO_printf(Perl_debug_log,
2576 "0x%"UVxf" num(%" PERL_PRIgldbl ")\n",
2577 PTR2UV(sv), SvNVX(sv));
2578 RESTORE_NUMERIC_LOCAL();
2582 STORE_NUMERIC_LOCAL_SET_STANDARD();
2583 PerlIO_printf(Perl_debug_log, "0x%"UVxf" num(%"NVgf")\n",
2584 PTR2UV(sv), SvNVX(sv));
2585 RESTORE_NUMERIC_LOCAL();
2589 else if (SvTYPE(sv) < SVt_PVNV)
2590 sv_upgrade(sv, SVt_PVNV);
2595 SvNV_set(sv, SvIsUV(sv) ? (NV)SvUVX(sv) : (NV)SvIVX(sv));
2596 #ifdef NV_PRESERVES_UV
2602 /* Only set the public NV OK flag if this NV preserves the IV */
2603 /* Check it's not 0xFFFFFFFFFFFFFFFF */
2605 SvIsUV(sv) ? ((SvUVX(sv) != UV_MAX)&&(SvUVX(sv) == U_V(SvNVX(sv))))
2606 : (SvIVX(sv) == I_V(SvNVX(sv))))
2612 else if (SvPOKp(sv)) {
2614 const int numtype = grok_number(SvPVX_const(sv), SvCUR(sv), &value);
2615 if (!SvIOKp(sv) && !numtype && ckWARN(WARN_NUMERIC))
2617 #ifdef NV_PRESERVES_UV
2618 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2619 == IS_NUMBER_IN_UV) {
2620 /* It's definitely an integer */
2621 SvNV_set(sv, (numtype & IS_NUMBER_NEG) ? -(NV)value : (NV)value);
2623 SvNV_set(sv, Atof(SvPVX_const(sv)));
2629 SvNV_set(sv, Atof(SvPVX_const(sv)));
2630 /* Only set the public NV OK flag if this NV preserves the value in
2631 the PV at least as well as an IV/UV would.
2632 Not sure how to do this 100% reliably. */
2633 /* if that shift count is out of range then Configure's test is
2634 wonky. We shouldn't be in here with NV_PRESERVES_UV_BITS ==
2636 if (((UV)1 << NV_PRESERVES_UV_BITS) >
2637 U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))) {
2638 SvNOK_on(sv); /* Definitely small enough to preserve all bits */
2639 } else if (!(numtype & IS_NUMBER_IN_UV)) {
2640 /* Can't use strtol etc to convert this string, so don't try.
2641 sv_2iv and sv_2uv will use the NV to convert, not the PV. */
2644 /* value has been set. It may not be precise. */
2645 if ((numtype & IS_NUMBER_NEG) && (value > (UV)IV_MIN)) {
2646 /* 2s complement assumption for (UV)IV_MIN */
2647 SvNOK_on(sv); /* Integer is too negative. */
2652 if (numtype & IS_NUMBER_NEG) {
2653 SvIV_set(sv, -(IV)value);
2654 } else if (value <= (UV)IV_MAX) {
2655 SvIV_set(sv, (IV)value);
2657 SvUV_set(sv, value);
2661 if (numtype & IS_NUMBER_NOT_INT) {
2662 /* I believe that even if the original PV had decimals,
2663 they are lost beyond the limit of the FP precision.
2664 However, neither is canonical, so both only get p
2665 flags. NWC, 2000/11/25 */
2666 /* Both already have p flags, so do nothing */
2668 const NV nv = SvNVX(sv);
2669 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2670 if (SvIVX(sv) == I_V(nv)) {
2673 /* It had no "." so it must be integer. */
2677 /* between IV_MAX and NV(UV_MAX).
2678 Could be slightly > UV_MAX */
2680 if (numtype & IS_NUMBER_NOT_INT) {
2681 /* UV and NV both imprecise. */
2683 const UV nv_as_uv = U_V(nv);
2685 if (value == nv_as_uv && SvUVX(sv) != UV_MAX) {
2694 /* It might be more code efficient to go through the entire logic above
2695 and conditionally set with SvNOKp_on() rather than SvNOK(), but it
2696 gets complex and potentially buggy, so more programmer efficient
2697 to do it this way, by turning off the public flags: */
2699 SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK);
2700 #endif /* NV_PRESERVES_UV */
2703 if (isGV_with_GP(sv)) {
2704 glob_2number(MUTABLE_GV(sv));
2708 if (!PL_localizing && ckWARN(WARN_UNINITIALIZED))
2710 assert (SvTYPE(sv) >= SVt_NV);
2711 /* Typically the caller expects that sv_any is not NULL now. */
2712 /* XXX Ilya implies that this is a bug in callers that assume this
2713 and ideally should be fixed. */
2716 #if defined(USE_LONG_DOUBLE)
2718 STORE_NUMERIC_LOCAL_SET_STANDARD();
2719 PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2nv(%" PERL_PRIgldbl ")\n",
2720 PTR2UV(sv), SvNVX(sv));
2721 RESTORE_NUMERIC_LOCAL();
2725 STORE_NUMERIC_LOCAL_SET_STANDARD();
2726 PerlIO_printf(Perl_debug_log, "0x%"UVxf" 1nv(%"NVgf")\n",
2727 PTR2UV(sv), SvNVX(sv));
2728 RESTORE_NUMERIC_LOCAL();
2737 Return an SV with the numeric value of the source SV, doing any necessary
2738 reference or overload conversion. You must use the C<SvNUM(sv)> macro to
2739 access this function.
2745 Perl_sv_2num(pTHX_ SV *const sv)
2747 PERL_ARGS_ASSERT_SV_2NUM;
2752 SV * const tmpsv = AMG_CALLunary(sv, numer_amg);
2753 TAINT_IF(tmpsv && SvTAINTED(tmpsv));
2754 if (tmpsv && (!SvROK(tmpsv) || (SvRV(tmpsv) != SvRV(sv))))
2755 return sv_2num(tmpsv);
2757 return sv_2mortal(newSVuv(PTR2UV(SvRV(sv))));
2760 /* uiv_2buf(): private routine for use by sv_2pv_flags(): print an IV or
2761 * UV as a string towards the end of buf, and return pointers to start and
2764 * We assume that buf is at least TYPE_CHARS(UV) long.
2768 S_uiv_2buf(char *const buf, const IV iv, UV uv, const int is_uv, char **const peob)
2770 char *ptr = buf + TYPE_CHARS(UV);
2771 char * const ebuf = ptr;
2774 PERL_ARGS_ASSERT_UIV_2BUF;
2786 *--ptr = '0' + (char)(uv % 10);
2795 =for apidoc sv_2pv_flags
2797 Returns a pointer to the string value of an SV, and sets *lp to its length.
2798 If flags includes SV_GMAGIC, does an mg_get() first. Coerces sv to a
2799 string if necessary. Normally invoked via the C<SvPV_flags> macro.
2800 C<sv_2pv()> and C<sv_2pv_nomg> usually end up here too.
2806 Perl_sv_2pv_flags(pTHX_ SV *const sv, STRLEN *const lp, const I32 flags)
2811 PERL_ARGS_ASSERT_SV_2PV_FLAGS;
2813 assert (SvTYPE(sv) != SVt_PVAV && SvTYPE(sv) != SVt_PVHV
2814 && SvTYPE(sv) != SVt_PVFM);
2815 if (SvGMAGICAL(sv) && (flags & SV_GMAGIC))
2820 if (flags & SV_SKIP_OVERLOAD)
2822 tmpstr = AMG_CALLunary(sv, string_amg);
2823 TAINT_IF(tmpstr && SvTAINTED(tmpstr));
2824 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2826 /* char *pv = lp ? SvPV(tmpstr, *lp) : SvPV_nolen(tmpstr);
2830 if ((SvFLAGS(tmpstr) & (SVf_POK)) == SVf_POK) {
2831 if (flags & SV_CONST_RETURN) {
2832 pv = (char *) SvPVX_const(tmpstr);
2834 pv = (flags & SV_MUTABLE_RETURN)
2835 ? SvPVX_mutable(tmpstr) : SvPVX(tmpstr);
2838 *lp = SvCUR(tmpstr);
2840 pv = sv_2pv_flags(tmpstr, lp, flags);
2853 SV *const referent = SvRV(sv);
2857 retval = buffer = savepvn("NULLREF", len);
2858 } else if (SvTYPE(referent) == SVt_REGEXP &&
2859 (!(PL_curcop->cop_hints & HINT_NO_AMAGIC) ||
2860 amagic_is_enabled(string_amg))) {
2861 REGEXP * const re = (REGEXP *)MUTABLE_PTR(referent);
2865 /* If the regex is UTF-8 we want the containing scalar to
2866 have an UTF-8 flag too */
2873 *lp = RX_WRAPLEN(re);
2875 return RX_WRAPPED(re);
2877 const char *const typestr = sv_reftype(referent, 0);
2878 const STRLEN typelen = strlen(typestr);
2879 UV addr = PTR2UV(referent);
2880 const char *stashname = NULL;
2881 STRLEN stashnamelen = 0; /* hush, gcc */
2882 const char *buffer_end;
2884 if (SvOBJECT(referent)) {
2885 const HEK *const name = HvNAME_HEK(SvSTASH(referent));
2888 stashname = HEK_KEY(name);
2889 stashnamelen = HEK_LEN(name);
2891 if (HEK_UTF8(name)) {
2897 stashname = "__ANON__";
2900 len = stashnamelen + 1 /* = */ + typelen + 3 /* (0x */
2901 + 2 * sizeof(UV) + 2 /* )\0 */;
2903 len = typelen + 3 /* (0x */
2904 + 2 * sizeof(UV) + 2 /* )\0 */;
2907 Newx(buffer, len, char);
2908 buffer_end = retval = buffer + len;
2910 /* Working backwards */
2914 *--retval = PL_hexdigit[addr & 15];
2915 } while (addr >>= 4);
2921 memcpy(retval, typestr, typelen);
2925 retval -= stashnamelen;
2926 memcpy(retval, stashname, stashnamelen);
2928 /* retval may not necessarily have reached the start of the
2930 assert (retval >= buffer);
2932 len = buffer_end - retval - 1; /* -1 for that \0 */
2944 if (flags & SV_MUTABLE_RETURN)
2945 return SvPVX_mutable(sv);
2946 if (flags & SV_CONST_RETURN)
2947 return (char *)SvPVX_const(sv);
2952 /* I'm assuming that if both IV and NV are equally valid then
2953 converting the IV is going to be more efficient */
2954 const U32 isUIOK = SvIsUV(sv);
2955 char buf[TYPE_CHARS(UV)];
2959 if (SvTYPE(sv) < SVt_PVIV)
2960 sv_upgrade(sv, SVt_PVIV);
2961 ptr = uiv_2buf(buf, SvIVX(sv), SvUVX(sv), isUIOK, &ebuf);
2963 /* inlined from sv_setpvn */
2964 s = SvGROW_mutable(sv, len + 1);
2965 Move(ptr, s, len, char);
2970 else if (SvNOK(sv)) {
2971 if (SvTYPE(sv) < SVt_PVNV)
2972 sv_upgrade(sv, SVt_PVNV);
2973 if (SvNVX(sv) == 0.0) {
2974 s = SvGROW_mutable(sv, 2);
2979 /* The +20 is pure guesswork. Configure test needed. --jhi */
2980 s = SvGROW_mutable(sv, NV_DIG + 20);
2981 /* some Xenix systems wipe out errno here */
2983 #ifndef USE_LOCALE_NUMERIC
2984 PERL_UNUSED_RESULT(Gconvert(SvNVX(sv), NV_DIG, 0, s));
2988 DECLARE_STORE_LC_NUMERIC_SET_TO_NEEDED();
2989 PERL_UNUSED_RESULT(Gconvert(SvNVX(sv), NV_DIG, 0, s));
2991 /* If the radix character is UTF-8, and actually is in the
2992 * output, turn on the UTF-8 flag for the scalar */
2993 if (PL_numeric_local
2994 && PL_numeric_radix_sv && SvUTF8(PL_numeric_radix_sv)
2995 && instr(s, SvPVX_const(PL_numeric_radix_sv)))
2999 RESTORE_LC_NUMERIC();
3002 /* We don't call SvPOK_on(), because it may come to pass that the
3003 * locale changes so that the stringification we just did is no
3004 * longer correct. We will have to re-stringify every time it is
3011 else if (isGV_with_GP(sv)) {
3012 GV *const gv = MUTABLE_GV(sv);
3013 SV *const buffer = sv_newmortal();
3015 gv_efullname3(buffer, gv, "*");
3017 assert(SvPOK(buffer));
3021 *lp = SvCUR(buffer);
3022 return SvPVX(buffer);
3024 else if (isREGEXP(sv)) {
3025 if (lp) *lp = RX_WRAPLEN((REGEXP *)sv);
3026 return RX_WRAPPED((REGEXP *)sv);
3031 if (flags & SV_UNDEF_RETURNS_NULL)
3033 if (!PL_localizing && ckWARN(WARN_UNINITIALIZED))
3035 /* Typically the caller expects that sv_any is not NULL now. */
3036 if (!SvREADONLY(sv) && SvTYPE(sv) < SVt_PV)
3037 sv_upgrade(sv, SVt_PV);
3042 const STRLEN len = s - SvPVX_const(sv);
3047 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2pv(%s)\n",
3048 PTR2UV(sv),SvPVX_const(sv)));
3049 if (flags & SV_CONST_RETURN)
3050 return (char *)SvPVX_const(sv);
3051 if (flags & SV_MUTABLE_RETURN)
3052 return SvPVX_mutable(sv);
3057 =for apidoc sv_copypv
3059 Copies a stringified representation of the source SV into the
3060 destination SV. Automatically performs any necessary mg_get and
3061 coercion of numeric values into strings. Guaranteed to preserve
3062 UTF8 flag even from overloaded objects. Similar in nature to
3063 sv_2pv[_flags] but operates directly on an SV instead of just the
3064 string. Mostly uses sv_2pv_flags to do its work, except when that
3065 would lose the UTF-8'ness of the PV.
3067 =for apidoc sv_copypv_nomg
3069 Like sv_copypv, but doesn't invoke get magic first.
3071 =for apidoc sv_copypv_flags
3073 Implementation of sv_copypv and sv_copypv_nomg. Calls get magic iff flags
3080 Perl_sv_copypv(pTHX_ SV *const dsv, SV *const ssv)
3082 PERL_ARGS_ASSERT_SV_COPYPV;
3084 sv_copypv_flags(dsv, ssv, 0);
3088 Perl_sv_copypv_flags(pTHX_ SV *const dsv, SV *const ssv, const I32 flags)
3093 PERL_ARGS_ASSERT_SV_COPYPV_FLAGS;
3095 if ((flags & SV_GMAGIC) && SvGMAGICAL(ssv))
3097 s = SvPV_nomg_const(ssv,len);
3098 sv_setpvn(dsv,s,len);
3106 =for apidoc sv_2pvbyte
3108 Return a pointer to the byte-encoded representation of the SV, and set *lp
3109 to its length. May cause the SV to be downgraded from UTF-8 as a
3112 Usually accessed via the C<SvPVbyte> macro.
3118 Perl_sv_2pvbyte(pTHX_ SV *sv, STRLEN *const lp)
3120 PERL_ARGS_ASSERT_SV_2PVBYTE;
3123 if (((SvREADONLY(sv) || SvFAKE(sv)) && !SvIsCOW(sv))
3124 || isGV_with_GP(sv) || SvROK(sv)) {
3125 SV *sv2 = sv_newmortal();
3126 sv_copypv_nomg(sv2,sv);
3129 sv_utf8_downgrade(sv,0);
3130 return lp ? SvPV_nomg(sv,*lp) : SvPV_nomg_nolen(sv);
3134 =for apidoc sv_2pvutf8
3136 Return a pointer to the UTF-8-encoded representation of the SV, and set *lp
3137 to its length. May cause the SV to be upgraded to UTF-8 as a side-effect.
3139 Usually accessed via the C<SvPVutf8> macro.
3145 Perl_sv_2pvutf8(pTHX_ SV *sv, STRLEN *const lp)
3147 PERL_ARGS_ASSERT_SV_2PVUTF8;
3149 if (((SvREADONLY(sv) || SvFAKE(sv)) && !SvIsCOW(sv))
3150 || isGV_with_GP(sv) || SvROK(sv))
3151 sv = sv_mortalcopy(sv);
3154 sv_utf8_upgrade_nomg(sv);
3155 return lp ? SvPV_nomg(sv,*lp) : SvPV_nomg_nolen(sv);
3160 =for apidoc sv_2bool
3162 This macro is only used by sv_true() or its macro equivalent, and only if
3163 the latter's argument is neither SvPOK, SvIOK nor SvNOK.
3164 It calls sv_2bool_flags with the SV_GMAGIC flag.
3166 =for apidoc sv_2bool_flags
3168 This function is only used by sv_true() and friends, and only if
3169 the latter's argument is neither SvPOK, SvIOK nor SvNOK. If the flags
3170 contain SV_GMAGIC, then it does an mg_get() first.
3177 Perl_sv_2bool_flags(pTHX_ SV *sv, I32 flags)
3181 PERL_ARGS_ASSERT_SV_2BOOL_FLAGS;
3184 if(flags & SV_GMAGIC) SvGETMAGIC(sv);
3190 SV * const tmpsv = AMG_CALLunary(sv, bool__amg);
3191 if (tmpsv && (!SvROK(tmpsv) || (SvRV(tmpsv) != SvRV(sv)))) {
3194 if(SvGMAGICAL(sv)) {
3196 goto restart; /* call sv_2bool */
3198 /* expanded SvTRUE_common(sv, (flags = 0, goto restart)) */
3199 else if(!SvOK(sv)) {
3202 else if(SvPOK(sv)) {
3203 svb = SvPVXtrue(sv);
3205 else if((SvFLAGS(sv) & (SVf_IOK|SVf_NOK))) {
3206 svb = (SvIOK(sv) && SvIVX(sv) != 0)
3207 || (SvNOK(sv) && SvNVX(sv) != 0.0);
3211 goto restart; /* call sv_2bool_nomg */
3216 return SvRV(sv) != 0;
3220 RX_WRAPLEN(sv) > 1 || (RX_WRAPLEN(sv) && *RX_WRAPPED(sv) != '0');
3221 return SvTRUE_common(sv, isGV_with_GP(sv) ? 1 : 0);
3225 =for apidoc sv_utf8_upgrade
3227 Converts the PV of an SV to its UTF-8-encoded form.
3228 Forces the SV to string form if it is not already.
3229 Will C<mg_get> on C<sv> if appropriate.
3230 Always sets the SvUTF8 flag to avoid future validity checks even
3231 if the whole string is the same in UTF-8 as not.
3232 Returns the number of bytes in the converted string
3234 This is not a general purpose byte encoding to Unicode interface:
3235 use the Encode extension for that.
3237 =for apidoc sv_utf8_upgrade_nomg
3239 Like sv_utf8_upgrade, but doesn't do magic on C<sv>.
3241 =for apidoc sv_utf8_upgrade_flags
3243 Converts the PV of an SV to its UTF-8-encoded form.
3244 Forces the SV to string form if it is not already.
3245 Always sets the SvUTF8 flag to avoid future validity checks even
3246 if all the bytes are invariant in UTF-8.
3247 If C<flags> has C<SV_GMAGIC> bit set,
3248 will C<mg_get> on C<sv> if appropriate, else not.
3250 If C<flags> has SV_FORCE_UTF8_UPGRADE set, this function assumes that the PV
3251 will expand when converted to UTF-8, and skips the extra work of checking for
3252 that. Typically this flag is used by a routine that has already parsed the
3253 string and found such characters, and passes this information on so that the
3254 work doesn't have to be repeated.
3256 Returns the number of bytes in the converted string.
3258 This is not a general purpose byte encoding to Unicode interface:
3259 use the Encode extension for that.
3261 =for apidoc sv_utf8_upgrade_flags_grow
3263 Like sv_utf8_upgrade_flags, but has an additional parameter C<extra>, which is
3264 the number of unused bytes the string of 'sv' is guaranteed to have free after
3265 it upon return. This allows the caller to reserve extra space that it intends
3266 to fill, to avoid extra grows.
3268 C<sv_utf8_upgrade>, C<sv_utf8_upgrade_nomg>, and C<sv_utf8_upgrade_flags>
3269 are implemented in terms of this function.
3271 Returns the number of bytes in the converted string (not including the spares).
3275 (One might think that the calling routine could pass in the position of the
3276 first variant character when it has set SV_FORCE_UTF8_UPGRADE, so it wouldn't
3277 have to be found again. But that is not the case, because typically when the
3278 caller is likely to use this flag, it won't be calling this routine unless it
3279 finds something that won't fit into a byte. Otherwise it tries to not upgrade
3280 and just use bytes. But some things that do fit into a byte are variants in
3281 utf8, and the caller may not have been keeping track of these.)
3283 If the routine itself changes the string, it adds a trailing NUL. Such a NUL
3284 isn't guaranteed due to having other routines do the work in some input cases,
3285 or if the input is already flagged as being in utf8.
3287 The speed of this could perhaps be improved for many cases if someone wanted to
3288 write a fast function that counts the number of variant characters in a string,
3289 especially if it could return the position of the first one.
3294 Perl_sv_utf8_upgrade_flags_grow(pTHX_ SV *const sv, const I32 flags, STRLEN extra)
3298 PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS_GROW;
3300 if (sv == &PL_sv_undef)
3302 if (!SvPOK_nog(sv)) {
3304 if (SvREADONLY(sv) && (SvPOKp(sv) || SvIOKp(sv) || SvNOKp(sv))) {
3305 (void) sv_2pv_flags(sv,&len, flags);
3307 if (extra) SvGROW(sv, SvCUR(sv) + extra);
3311 (void) SvPV_force_flags(sv,len,flags & SV_GMAGIC);
3316 if (extra) SvGROW(sv, SvCUR(sv) + extra);
3321 S_sv_uncow(aTHX_ sv, 0);
3324 if (PL_encoding && !(flags & SV_UTF8_NO_ENCODING)) {
3325 sv_recode_to_utf8(sv, PL_encoding);
3326 if (extra) SvGROW(sv, SvCUR(sv) + extra);
3330 if (SvCUR(sv) == 0) {
3331 if (extra) SvGROW(sv, extra);
3332 } else { /* Assume Latin-1/EBCDIC */
3333 /* This function could be much more efficient if we
3334 * had a FLAG in SVs to signal if there are any variant
3335 * chars in the PV. Given that there isn't such a flag
3336 * make the loop as fast as possible (although there are certainly ways
3337 * to speed this up, eg. through vectorization) */
3338 U8 * s = (U8 *) SvPVX_const(sv);
3339 U8 * e = (U8 *) SvEND(sv);
3341 STRLEN two_byte_count = 0;
3343 if (flags & SV_FORCE_UTF8_UPGRADE) goto must_be_utf8;
3345 /* See if really will need to convert to utf8. We mustn't rely on our
3346 * incoming SV being well formed and having a trailing '\0', as certain
3347 * code in pp_formline can send us partially built SVs. */
3351 if (NATIVE_BYTE_IS_INVARIANT(ch)) continue;
3353 t--; /* t already incremented; re-point to first variant */
3358 /* utf8 conversion not needed because all are invariants. Mark as
3359 * UTF-8 even if no variant - saves scanning loop */
3361 if (extra) SvGROW(sv, SvCUR(sv) + extra);
3366 /* Here, the string should be converted to utf8, either because of an
3367 * input flag (two_byte_count = 0), or because a character that
3368 * requires 2 bytes was found (two_byte_count = 1). t points either to
3369 * the beginning of the string (if we didn't examine anything), or to
3370 * the first variant. In either case, everything from s to t - 1 will
3371 * occupy only 1 byte each on output.
3373 * There are two main ways to convert. One is to create a new string
3374 * and go through the input starting from the beginning, appending each
3375 * converted value onto the new string as we go along. It's probably
3376 * best to allocate enough space in the string for the worst possible
3377 * case rather than possibly running out of space and having to
3378 * reallocate and then copy what we've done so far. Since everything
3379 * from s to t - 1 is invariant, the destination can be initialized
3380 * with these using a fast memory copy
3382 * The other way is to figure out exactly how big the string should be
3383 * by parsing the entire input. Then you don't have to make it big
3384 * enough to handle the worst possible case, and more importantly, if
3385 * the string you already have is large enough, you don't have to
3386 * allocate a new string, you can copy the last character in the input
3387 * string to the final position(s) that will be occupied by the
3388 * converted string and go backwards, stopping at t, since everything
3389 * before that is invariant.
3391 * There are advantages and disadvantages to each method.
3393 * In the first method, we can allocate a new string, do the memory
3394 * copy from the s to t - 1, and then proceed through the rest of the
3395 * string byte-by-byte.
3397 * In the second method, we proceed through the rest of the input
3398 * string just calculating how big the converted string will be. Then
3399 * there are two cases:
3400 * 1) if the string has enough extra space to handle the converted
3401 * value. We go backwards through the string, converting until we
3402 * get to the position we are at now, and then stop. If this
3403 * position is far enough along in the string, this method is
3404 * faster than the other method. If the memory copy were the same
3405 * speed as the byte-by-byte loop, that position would be about
3406 * half-way, as at the half-way mark, parsing to the end and back
3407 * is one complete string's parse, the same amount as starting
3408 * over and going all the way through. Actually, it would be
3409 * somewhat less than half-way, as it's faster to just count bytes
3410 * than to also copy, and we don't have the overhead of allocating
3411 * a new string, changing the scalar to use it, and freeing the
3412 * existing one. But if the memory copy is fast, the break-even
3413 * point is somewhere after half way. The counting loop could be
3414 * sped up by vectorization, etc, to move the break-even point
3415 * further towards the beginning.
3416 * 2) if the string doesn't have enough space to handle the converted
3417 * value. A new string will have to be allocated, and one might
3418 * as well, given that, start from the beginning doing the first
3419 * method. We've spent extra time parsing the string and in
3420 * exchange all we've gotten is that we know precisely how big to
3421 * make the new one. Perl is more optimized for time than space,
3422 * so this case is a loser.
3423 * So what I've decided to do is not use the 2nd method unless it is
3424 * guaranteed that a new string won't have to be allocated, assuming
3425 * the worst case. I also decided not to put any more conditions on it
3426 * than this, for now. It seems likely that, since the worst case is
3427 * twice as big as the unknown portion of the string (plus 1), we won't
3428 * be guaranteed enough space, causing us to go to the first method,
3429 * unless the string is short, or the first variant character is near
3430 * the end of it. In either of these cases, it seems best to use the
3431 * 2nd method. The only circumstance I can think of where this would
3432 * be really slower is if the string had once had much more data in it
3433 * than it does now, but there is still a substantial amount in it */
3436 STRLEN invariant_head = t - s;
3437 STRLEN size = invariant_head + (e - t) * 2 + 1 + extra;
3438 if (SvLEN(sv) < size) {
3440 /* Here, have decided to allocate a new string */
3445 Newx(dst, size, U8);
3447 /* If no known invariants at the beginning of the input string,
3448 * set so starts from there. Otherwise, can use memory copy to
3449 * get up to where we are now, and then start from here */
3451 if (invariant_head <= 0) {
3454 Copy(s, dst, invariant_head, char);
3455 d = dst + invariant_head;
3459 append_utf8_from_native_byte(*t, &d);
3463 SvPV_free(sv); /* No longer using pre-existing string */
3464 SvPV_set(sv, (char*)dst);
3465 SvCUR_set(sv, d - dst);
3466 SvLEN_set(sv, size);
3469 /* Here, have decided to get the exact size of the string.
3470 * Currently this happens only when we know that there is
3471 * guaranteed enough space to fit the converted string, so
3472 * don't have to worry about growing. If two_byte_count is 0,
3473 * then t points to the first byte of the string which hasn't
3474 * been examined yet. Otherwise two_byte_count is 1, and t
3475 * points to the first byte in the string that will expand to
3476 * two. Depending on this, start examining at t or 1 after t.
3479 U8 *d = t + two_byte_count;
3482 /* Count up the remaining bytes that expand to two */
3485 const U8 chr = *d++;
3486 if (! NATIVE_BYTE_IS_INVARIANT(chr)) two_byte_count++;
3489 /* The string will expand by just the number of bytes that
3490 * occupy two positions. But we are one afterwards because of
3491 * the increment just above. This is the place to put the
3492 * trailing NUL, and to set the length before we decrement */
3494 d += two_byte_count;
3495 SvCUR_set(sv, d - s);
3499 /* Having decremented d, it points to the position to put the
3500 * very last byte of the expanded string. Go backwards through
3501 * the string, copying and expanding as we go, stopping when we
3502 * get to the part that is invariant the rest of the way down */
3506 if (NATIVE_BYTE_IS_INVARIANT(*e)) {
3509 *d-- = UTF8_EIGHT_BIT_LO(*e);
3510 *d-- = UTF8_EIGHT_BIT_HI(*e);
3516 if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv)) {
3517 /* Update pos. We do it at the end rather than during
3518 * the upgrade, to avoid slowing down the common case
3519 * (upgrade without pos).
3520 * pos can be stored as either bytes or characters. Since
3521 * this was previously a byte string we can just turn off
3522 * the bytes flag. */
3523 MAGIC * mg = mg_find(sv, PERL_MAGIC_regex_global);
3525 mg->mg_flags &= ~MGf_BYTES;
3527 if ((mg = mg_find(sv, PERL_MAGIC_utf8)))
3528 magic_setutf8(sv,mg); /* clear UTF8 cache */
3533 /* Mark as UTF-8 even if no variant - saves scanning loop */
3539 =for apidoc sv_utf8_downgrade
3541 Attempts to convert the PV of an SV from characters to bytes.
3542 If the PV contains a character that cannot fit
3543 in a byte, this conversion will fail;
3544 in this case, either returns false or, if C<fail_ok> is not
3547 This is not a general purpose Unicode to byte encoding interface:
3548 use the Encode extension for that.
3554 Perl_sv_utf8_downgrade(pTHX_ SV *const sv, const bool fail_ok)
3558 PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE;
3560 if (SvPOKp(sv) && SvUTF8(sv)) {
3564 int mg_flags = SV_GMAGIC;
3567 S_sv_uncow(aTHX_ sv, 0);
3569 if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv)) {
3571 MAGIC * mg = mg_find(sv, PERL_MAGIC_regex_global);
3572 if (mg && mg->mg_len > 0 && mg->mg_flags & MGf_BYTES) {
3573 mg->mg_len = sv_pos_b2u_flags(sv, mg->mg_len,
3574 SV_GMAGIC|SV_CONST_RETURN);
3575 mg_flags = 0; /* sv_pos_b2u does get magic */
3577 if ((mg = mg_find(sv, PERL_MAGIC_utf8)))
3578 magic_setutf8(sv,mg); /* clear UTF8 cache */
3581 s = (U8 *) SvPV_flags(sv, len, mg_flags);
3583 if (!utf8_to_bytes(s, &len)) {
3588 Perl_croak(aTHX_ "Wide character in %s",
3591 Perl_croak(aTHX_ "Wide character");
3602 =for apidoc sv_utf8_encode
3604 Converts the PV of an SV to UTF-8, but then turns the C<SvUTF8>
3605 flag off so that it looks like octets again.
3611 Perl_sv_utf8_encode(pTHX_ SV *const sv)
3613 PERL_ARGS_ASSERT_SV_UTF8_ENCODE;
3615 if (SvREADONLY(sv)) {
3616 sv_force_normal_flags(sv, 0);
3618 (void) sv_utf8_upgrade(sv);
3623 =for apidoc sv_utf8_decode
3625 If the PV of the SV is an octet sequence in UTF-8
3626 and contains a multiple-byte character, the C<SvUTF8> flag is turned on
3627 so that it looks like a character. If the PV contains only single-byte
3628 characters, the C<SvUTF8> flag stays off.
3629 Scans PV for validity and returns false if the PV is invalid UTF-8.
3635 Perl_sv_utf8_decode(pTHX_ SV *const sv)
3637 PERL_ARGS_ASSERT_SV_UTF8_DECODE;
3640 const U8 *start, *c;
3643 /* The octets may have got themselves encoded - get them back as
3646 if (!sv_utf8_downgrade(sv, TRUE))
3649 /* it is actually just a matter of turning the utf8 flag on, but
3650 * we want to make sure everything inside is valid utf8 first.
3652 c = start = (const U8 *) SvPVX_const(sv);
3653 if (!is_utf8_string(c, SvCUR(sv)))
3655 e = (const U8 *) SvEND(sv);
3658 if (!UTF8_IS_INVARIANT(ch)) {
3663 if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv)) {
3664 /* XXX Is this dead code? XS_utf8_decode calls SvSETMAGIC
3665 after this, clearing pos. Does anything on CPAN
3667 /* adjust pos to the start of a UTF8 char sequence */
3668 MAGIC * mg = mg_find(sv, PERL_MAGIC_regex_global);
3670 I32 pos = mg->mg_len;
3672 for (c = start + pos; c > start; c--) {
3673 if (UTF8_IS_START(*c))
3676 mg->mg_len = c - start;
3679 if ((mg = mg_find(sv, PERL_MAGIC_utf8)))
3680 magic_setutf8(sv,mg); /* clear UTF8 cache */
3687 =for apidoc sv_setsv
3689 Copies the contents of the source SV C<ssv> into the destination SV
3690 C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
3691 function if the source SV needs to be reused. Does not handle 'set' magic on
3692 destination SV. Calls 'get' magic on source SV. Loosely speaking, it
3693 performs a copy-by-value, obliterating any previous content of the
3696 You probably want to use one of the assortment of wrappers, such as
3697 C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
3698 C<SvSetMagicSV_nosteal>.
3700 =for apidoc sv_setsv_flags
3702 Copies the contents of the source SV C<ssv> into the destination SV
3703 C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
3704 function if the source SV needs to be reused. Does not handle 'set' magic.
3705 Loosely speaking, it performs a copy-by-value, obliterating any previous
3706 content of the destination.
3707 If the C<flags> parameter has the C<SV_GMAGIC> bit set, will C<mg_get> on
3708 C<ssv> if appropriate, else not. If the C<flags>
3709 parameter has the C<SV_NOSTEAL> bit set then the
3710 buffers of temps will not be stolen. <sv_setsv>
3711 and C<sv_setsv_nomg> are implemented in terms of this function.
3713 You probably want to use one of the assortment of wrappers, such as
3714 C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
3715 C<SvSetMagicSV_nosteal>.
3717 This is the primary function for copying scalars, and most other
3718 copy-ish functions and macros use this underneath.
3724 S_glob_assign_glob(pTHX_ SV *const dstr, SV *const sstr, const int dtype)
3726 I32 mro_changes = 0; /* 1 = method, 2 = isa, 3 = recursive isa */
3727 HV *old_stash = NULL;
3729 PERL_ARGS_ASSERT_GLOB_ASSIGN_GLOB;
3731 if (dtype != SVt_PVGV && !isGV_with_GP(dstr)) {
3732 const char * const name = GvNAME(sstr);
3733 const STRLEN len = GvNAMELEN(sstr);
3735 if (dtype >= SVt_PV) {
3741 SvUPGRADE(dstr, SVt_PVGV);
3742 (void)SvOK_off(dstr);
3743 isGV_with_GP_on(dstr);
3745 GvSTASH(dstr) = GvSTASH(sstr);
3747 Perl_sv_add_backref(aTHX_ MUTABLE_SV(GvSTASH(dstr)), dstr);
3748 gv_name_set(MUTABLE_GV(dstr), name, len,
3749 GV_ADD | (GvNAMEUTF8(sstr) ? SVf_UTF8 : 0 ));
3750 SvFAKE_on(dstr); /* can coerce to non-glob */
3753 if(GvGP(MUTABLE_GV(sstr))) {
3754 /* If source has method cache entry, clear it */
3756 SvREFCNT_dec(GvCV(sstr));
3757 GvCV_set(sstr, NULL);
3760 /* If source has a real method, then a method is
3763 GvCV((const GV *)sstr) && GvSTASH(dstr) && HvENAME(GvSTASH(dstr))
3769 /* If dest already had a real method, that's a change as well */
3771 !mro_changes && GvGP(MUTABLE_GV(dstr)) && GvCVu((const GV *)dstr)
3772 && GvSTASH(dstr) && HvENAME(GvSTASH(dstr))
3777 /* We don't need to check the name of the destination if it was not a
3778 glob to begin with. */
3779 if(dtype == SVt_PVGV) {
3780 const char * const name = GvNAME((const GV *)dstr);
3783 /* The stash may have been detached from the symbol table, so
3785 && GvSTASH(dstr) && HvENAME(GvSTASH(dstr))
3789 const STRLEN len = GvNAMELEN(dstr);
3790 if ((len > 1 && name[len-2] == ':' && name[len-1] == ':')
3791 || (len == 1 && name[0] == ':')) {
3794 /* Set aside the old stash, so we can reset isa caches on
3796 if((old_stash = GvHV(dstr)))
3797 /* Make sure we do not lose it early. */
3798 SvREFCNT_inc_simple_void_NN(
3799 sv_2mortal((SV *)old_stash)
3804 SvREFCNT_inc_simple_void_NN(sv_2mortal(dstr));
3807 gp_free(MUTABLE_GV(dstr));
3808 GvINTRO_off(dstr); /* one-shot flag */
3809 GvGP_set(dstr, gp_ref(GvGP(sstr)));
3810 if (SvTAINTED(sstr))
3812 if (GvIMPORTED(dstr) != GVf_IMPORTED
3813 && CopSTASH_ne(PL_curcop, GvSTASH(dstr)))
3815 GvIMPORTED_on(dstr);
3818 if(mro_changes == 2) {
3819 if (GvAV((const GV *)sstr)) {
3821 SV * const sref = (SV *)GvAV((const GV *)dstr);
3822 if (SvSMAGICAL(sref) && (mg = mg_find(sref, PERL_MAGIC_isa))) {
3823 if (SvTYPE(mg->mg_obj) != SVt_PVAV) {
3824 AV * const ary = newAV();
3825 av_push(ary, mg->mg_obj); /* takes the refcount */
3826 mg->mg_obj = (SV *)ary;
3828 av_push((AV *)mg->mg_obj, SvREFCNT_inc_simple_NN(dstr));
3830 else sv_magic(sref, dstr, PERL_MAGIC_isa, NULL, 0);
3832 mro_isa_changed_in(GvSTASH(dstr));
3834 else if(mro_changes == 3) {
3835 HV * const stash = GvHV(dstr);
3836 if(old_stash ? (HV *)HvENAME_get(old_stash) : stash)
3842 else if(mro_changes) mro_method_changed_in(GvSTASH(dstr));
3843 if (GvIO(dstr) && dtype == SVt_PVGV) {
3844 DEBUG_o(Perl_deb(aTHX_
3845 "glob_assign_glob clearing PL_stashcache\n"));
3846 /* It's a cache. It will rebuild itself quite happily.
3847 It's a lot of effort to work out exactly which key (or keys)
3848 might be invalidated by the creation of the this file handle.
3850 hv_clear(PL_stashcache);
3856 S_glob_assign_ref(pTHX_ SV *const dstr, SV *const sstr)
3858 SV * const sref = SvRV(sstr);
3860 const int intro = GvINTRO(dstr);
3863 const U32 stype = SvTYPE(sref);
3865 PERL_ARGS_ASSERT_GLOB_ASSIGN_REF;
3868 GvINTRO_off(dstr); /* one-shot flag */
3869 GvLINE(dstr) = CopLINE(PL_curcop);
3870 GvEGV(dstr) = MUTABLE_GV(dstr);
3875 location = (SV **) &(GvGP(dstr)->gp_cv); /* XXX bypassing GvCV_set */
3876 import_flag = GVf_IMPORTED_CV;
3879 location = (SV **) &GvHV(dstr);
3880 import_flag = GVf_IMPORTED_HV;
3883 location = (SV **) &GvAV(dstr);
3884 import_flag = GVf_IMPORTED_AV;
3887 location = (SV **) &GvIOp(dstr);
3890 location = (SV **) &GvFORM(dstr);
3893 location = &GvSV(dstr);
3894 import_flag = GVf_IMPORTED_SV;
3897 if (stype == SVt_PVCV) {
3898 /*if (GvCVGEN(dstr) && (GvCV(dstr) != (const CV *)sref || GvCVGEN(dstr))) {*/
3899 if (GvCVGEN(dstr)) {
3900 SvREFCNT_dec(GvCV(dstr));
3901 GvCV_set(dstr, NULL);
3902 GvCVGEN(dstr) = 0; /* Switch off cacheness. */
3905 /* SAVEt_GVSLOT takes more room on the savestack and has more
3906 overhead in leave_scope than SAVEt_GENERIC_SV. But for CVs
3907 leave_scope needs access to the GV so it can reset method
3908 caches. We must use SAVEt_GVSLOT whenever the type is
3909 SVt_PVCV, even if the stash is anonymous, as the stash may
3910 gain a name somehow before leave_scope. */
3911 if (stype == SVt_PVCV) {
3912 /* There is no save_pushptrptrptr. Creating it for this
3913 one call site would be overkill. So inline the ss add
3917 SS_ADD_PTR(location);
3918 SS_ADD_PTR(SvREFCNT_inc(*location));
3919 SS_ADD_UV(SAVEt_GVSLOT);
3922 else SAVEGENERICSV(*location);
3925 if (stype == SVt_PVCV && (*location != sref || GvCVGEN(dstr))) {
3926 CV* const cv = MUTABLE_CV(*location);
3928 if (!GvCVGEN((const GV *)dstr) &&
3929 (CvROOT(cv) || CvXSUB(cv)) &&
3930 /* redundant check that avoids creating the extra SV
3931 most of the time: */
3932 (CvCONST(cv) || ckWARN(WARN_REDEFINE)))
3934 SV * const new_const_sv =
3935 CvCONST((const CV *)sref)
3936 ? cv_const_sv((const CV *)sref)
3938 report_redefined_cv(
3939 sv_2mortal(Perl_newSVpvf(aTHX_
3942 HvNAME_HEK(GvSTASH((const GV *)dstr))
3944 HEKfARG(GvENAME_HEK(MUTABLE_GV(dstr)))
3947 CvCONST((const CV *)sref) ? &new_const_sv : NULL
3951 cv_ckproto_len_flags(cv, (const GV *)dstr,
3952 SvPOK(sref) ? CvPROTO(sref) : NULL,
3953 SvPOK(sref) ? CvPROTOLEN(sref) : 0,
3954 SvPOK(sref) ? SvUTF8(sref) : 0);
3956 GvCVGEN(dstr) = 0; /* Switch off cacheness. */
3957 GvASSUMECV_on(dstr);
3958 if(GvSTASH(dstr)) gv_method_changed(dstr); /* sub foo { 1 } sub bar { 2 } *bar = \&foo */
3960 *location = SvREFCNT_inc_simple_NN(sref);
3961 if (import_flag && !(GvFLAGS(dstr) & import_flag)
3962 && CopSTASH_ne(PL_curcop, GvSTASH(dstr))) {
3963 GvFLAGS(dstr) |= import_flag;
3965 if (stype == SVt_PVHV) {
3966 const char * const name = GvNAME((GV*)dstr);
3967 const STRLEN len = GvNAMELEN(dstr);
3970 (len > 1 && name[len-2] == ':' && name[len-1] == ':')
3971 || (len == 1 && name[0] == ':')
3973 && (!dref || HvENAME_get(dref))
3976 (HV *)sref, (HV *)dref,
3982 stype == SVt_PVAV && sref != dref
3983 && strEQ(GvNAME((GV*)dstr), "ISA")
3984 /* The stash may have been detached from the symbol table, so
3985 check its name before doing anything. */
3986 && GvSTASH(dstr) && HvENAME(GvSTASH(dstr))
3989 MAGIC * const omg = dref && SvSMAGICAL(dref)
3990 ? mg_find(dref, PERL_MAGIC_isa)
3992 if (SvSMAGICAL(sref) && (mg = mg_find(sref, PERL_MAGIC_isa))) {
3993 if (SvTYPE(mg->mg_obj) != SVt_PVAV) {
3994 AV * const ary = newAV();
3995 av_push(ary, mg->mg_obj); /* takes the refcount */
3996 mg->mg_obj = (SV *)ary;
3999 if (SvTYPE(omg->mg_obj) == SVt_PVAV) {
4000 SV **svp = AvARRAY((AV *)omg->mg_obj);
4001 I32 items = AvFILLp((AV *)omg->mg_obj) + 1;
4005 SvREFCNT_inc_simple_NN(*svp++)
4011 SvREFCNT_inc_simple_NN(omg->mg_obj)
4015 av_push((AV *)mg->mg_obj,SvREFCNT_inc_simple_NN(dstr));
4020 sref, omg ? omg->mg_obj : dstr, PERL_MAGIC_isa, NULL, 0
4022 mg = mg_find(sref, PERL_MAGIC_isa);
4024 /* Since the *ISA assignment could have affected more than
4025 one stash, don't call mro_isa_changed_in directly, but let
4026 magic_clearisa do it for us, as it already has the logic for
4027 dealing with globs vs arrays of globs. */
4029 Perl_magic_clearisa(aTHX_ NULL, mg);
4031 else if (stype == SVt_PVIO) {
4032 DEBUG_o(Perl_deb(aTHX_ "glob_assign_ref clearing PL_stashcache\n"));
4033 /* It's a cache. It will rebuild itself quite happily.
4034 It's a lot of effort to work out exactly which key (or keys)
4035 might be invalidated by the creation of the this file handle.
4037 hv_clear(PL_stashcache);
4041 if (!intro) SvREFCNT_dec(dref);
4042 if (SvTAINTED(sstr))
4050 #ifdef PERL_DEBUG_READONLY_COW
4051 # include <sys/mman.h>
4053 # ifndef PERL_MEMORY_DEBUG_HEADER_SIZE
4054 # define PERL_MEMORY_DEBUG_HEADER_SIZE 0
4058 Perl_sv_buf_to_ro(pTHX_ SV *sv)
4060 struct perl_memory_debug_header * const header =
4061 (struct perl_memory_debug_header *)(SvPVX(sv)-PERL_MEMORY_DEBUG_HEADER_SIZE);
4062 const MEM_SIZE len = header->size;
4063 PERL_ARGS_ASSERT_SV_BUF_TO_RO;
4064 # ifdef PERL_TRACK_MEMPOOL
4065 if (!header->readonly) header->readonly = 1;
4067 if (mprotect(header, len, PROT_READ))
4068 Perl_warn(aTHX_ "mprotect RW for COW string %p %lu failed with %d",
4069 header, len, errno);
4073 S_sv_buf_to_rw(pTHX_ SV *sv)
4075 struct perl_memory_debug_header * const header =
4076 (struct perl_memory_debug_header *)(SvPVX(sv)-PERL_MEMORY_DEBUG_HEADER_SIZE);
4077 const MEM_SIZE len = header->size;
4078 PERL_ARGS_ASSERT_SV_BUF_TO_RW;
4079 if (mprotect(header, len, PROT_READ|PROT_WRITE))
4080 Perl_warn(aTHX_ "mprotect for COW string %p %lu failed with %d",
4081 header, len, errno);
4082 # ifdef PERL_TRACK_MEMPOOL
4083 header->readonly = 0;
4088 # define sv_buf_to_ro(sv) NOOP
4089 # define sv_buf_to_rw(sv) NOOP
4093 Perl_sv_setsv_flags(pTHX_ SV *dstr, SV* sstr, const I32 flags)
4100 PERL_ARGS_ASSERT_SV_SETSV_FLAGS;
4105 if (SvIS_FREED(dstr)) {
4106 Perl_croak(aTHX_ "panic: attempt to copy value %" SVf
4107 " to a freed scalar %p", SVfARG(sstr), (void *)dstr);
4109 SV_CHECK_THINKFIRST_COW_DROP(dstr);
4111 sstr = &PL_sv_undef;
4112 if (SvIS_FREED(sstr)) {
4113 Perl_croak(aTHX_ "panic: attempt to copy freed scalar %p to %p",
4114 (void*)sstr, (void*)dstr);
4116 stype = SvTYPE(sstr);
4117 dtype = SvTYPE(dstr);
4119 /* There's a lot of redundancy below but we're going for speed here */
4124 if (dtype != SVt_PVGV && dtype != SVt_PVLV) {
4125 (void)SvOK_off(dstr);
4133 sv_upgrade(dstr, SVt_IV);
4137 sv_upgrade(dstr, SVt_PVIV);
4141 goto end_of_first_switch;
4143 (void)SvIOK_only(dstr);
4144 SvIV_set(dstr, SvIVX(sstr));
4147 /* SvTAINTED can only be true if the SV has taint magic, which in
4148 turn means that the SV type is PVMG (or greater). This is the
4149 case statement for SVt_IV, so this cannot be true (whatever gcov
4151 assert(!SvTAINTED(sstr));
4156 if (dtype < SVt_PV && dtype != SVt_IV)
4157 sv_upgrade(dstr, SVt_IV);
4165 sv_upgrade(dstr, SVt_NV);
4169 sv_upgrade(dstr, SVt_PVNV);
4173 goto end_of_first_switch;
4175 SvNV_set(dstr, SvNVX(sstr));
4176 (void)SvNOK_only(dstr);
4177 /* SvTAINTED can only be true if the SV has taint magic, which in
4178 turn means that the SV type is PVMG (or greater). This is the
4179 case statement for SVt_NV, so this cannot be true (whatever gcov
4181 assert(!SvTAINTED(sstr));
4188 sv_upgrade(dstr, SVt_PV);
4191 if (dtype < SVt_PVIV)
4192 sv_upgrade(dstr, SVt_PVIV);
4195 if (dtype < SVt_PVNV)
4196 sv_upgrade(dstr, SVt_PVNV);
4200 const char * const type = sv_reftype(sstr,0);
4202 /* diag_listed_as: Bizarre copy of %s */
4203 Perl_croak(aTHX_ "Bizarre copy of %s in %s", type, OP_DESC(PL_op));
4205 Perl_croak(aTHX_ "Bizarre copy of %s", type);
4211 if (dtype < SVt_REGEXP)
4213 if (dtype >= SVt_PV) {
4219 sv_upgrade(dstr, SVt_REGEXP);
4227 if (SvGMAGICAL(sstr) && (flags & SV_GMAGIC)) {
4229 if (SvTYPE(sstr) != stype)
4230 stype = SvTYPE(sstr);
4232 if (isGV_with_GP(sstr) && dtype <= SVt_PVLV) {
4233 glob_assign_glob(dstr, sstr, dtype);
4236 if (stype == SVt_PVLV)
4238 if (isREGEXP(sstr)) goto upgregexp;
4239 SvUPGRADE(dstr, SVt_PVNV);
4242 SvUPGRADE(dstr, (svtype)stype);
4244 end_of_first_switch:
4246 /* dstr may have been upgraded. */
4247 dtype = SvTYPE(dstr);
4248 sflags = SvFLAGS(sstr);
4250 if (dtype == SVt_PVCV) {
4251 /* Assigning to a subroutine sets the prototype. */
4254 const char *const ptr = SvPV_const(sstr, len);
4256 SvGROW(dstr, len + 1);
4257 Copy(ptr, SvPVX(dstr), len + 1, char);
4258 SvCUR_set(dstr, len);
4260 SvFLAGS(dstr) |= sflags & SVf_UTF8;
4261 CvAUTOLOAD_off(dstr);
4266 else if (dtype == SVt_PVAV || dtype == SVt_PVHV || dtype == SVt_PVFM) {
4267 const char * const type = sv_reftype(dstr,0);
4269 /* diag_listed_as: Cannot copy to %s */
4270 Perl_croak(aTHX_ "Cannot copy to %s in %s", type, OP_DESC(PL_op));
4272 Perl_croak(aTHX_ "Cannot copy to %s", type);
4273 } else if (sflags & SVf_ROK) {
4274 if (isGV_with_GP(dstr)
4275 && SvTYPE(SvRV(sstr)) == SVt_PVGV && isGV_with_GP(SvRV(sstr))) {
4278 if (GvIMPORTED(dstr) != GVf_IMPORTED
4279 && CopSTASH_ne(PL_curcop, GvSTASH(dstr)))
4281 GvIMPORTED_on(dstr);
4286 glob_assign_glob(dstr, sstr, dtype);
4290 if (dtype >= SVt_PV) {
4291 if (isGV_with_GP(dstr)) {
4292 glob_assign_ref(dstr, sstr);
4295 if (SvPVX_const(dstr)) {
4301 (void)SvOK_off(dstr);
4302 SvRV_set(dstr, SvREFCNT_inc(SvRV(sstr)));
4303 SvFLAGS(dstr) |= sflags & SVf_ROK;
4304 assert(!(sflags & SVp_NOK));
4305 assert(!(sflags & SVp_IOK));
4306 assert(!(sflags & SVf_NOK));
4307 assert(!(sflags & SVf_IOK));
4309 else if (isGV_with_GP(dstr)) {
4310 if (!(sflags & SVf_OK)) {
4311 Perl_ck_warner(aTHX_ packWARN(WARN_MISC),
4312 "Undefined value assigned to typeglob");
4315 GV *gv = gv_fetchsv_nomg(sstr, GV_ADD, SVt_PVGV);
4316 if (dstr != (const SV *)gv) {
4317 const char * const name = GvNAME((const GV *)dstr);
4318 const STRLEN len = GvNAMELEN(dstr);
4319 HV *old_stash = NULL;
4320 bool reset_isa = FALSE;
4321 if ((len > 1 && name[len-2] == ':' && name[len-1] == ':')
4322 || (len == 1 && name[0] == ':')) {
4323 /* Set aside the old stash, so we can reset isa caches
4324 on its subclasses. */
4325 if((old_stash = GvHV(dstr))) {
4326 /* Make sure we do not lose it early. */
4327 SvREFCNT_inc_simple_void_NN(
4328 sv_2mortal((SV *)old_stash)
4335 SvREFCNT_inc_simple_void_NN(sv_2mortal(dstr));
4336 gp_free(MUTABLE_GV(dstr));
4338 GvGP_set(dstr, gp_ref(GvGP(gv)));
4341 HV * const stash = GvHV(dstr);
4343 old_stash ? (HV *)HvENAME_get(old_stash) : stash
4353 else if ((dtype == SVt_REGEXP || dtype == SVt_PVLV)
4354 && (stype == SVt_REGEXP || isREGEXP(sstr))) {
4355 reg_temp_copy((REGEXP*)dstr, (REGEXP*)sstr);
4357 else if (sflags & SVp_POK) {
4358 const STRLEN cur = SvCUR(sstr);
4359 const STRLEN len = SvLEN(sstr);
4362 * We have three basic ways to copy the string:
4368 * Which we choose is based on various factors. The following
4369 * things are listed in order of speed, fastest to slowest:
4371 * - Copying a short string
4372 * - Copy-on-write bookkeeping
4374 * - Copying a long string
4376 * We swipe the string (steal the string buffer) if the SV on the
4377 * rhs is about to be freed anyway (TEMP and refcnt==1). This is a
4378 * big win on long strings. It should be a win on short strings if
4379 * SvPVX_const(dstr) has to be allocated. If not, it should not
4380 * slow things down, as SvPVX_const(sstr) would have been freed
4383 * We also steal the buffer from a PADTMP (operator target) if it
4384 * is ‘long enough’. For short strings, a swipe does not help
4385 * here, as it causes more malloc calls the next time the target
4386 * is used. Benchmarks show that even if SvPVX_const(dstr) has to
4387 * be allocated it is still not worth swiping PADTMPs for short
4388 * strings, as the savings here are small.
4390 * If the rhs is already flagged as a copy-on-write string and COW
4391 * is possible here, we use copy-on-write and make both SVs share
4392 * the string buffer.
4394 * If the rhs is not flagged as copy-on-write, then we see whether
4395 * it is worth upgrading it to such. If the lhs already has a buf-
4396 * fer big enough and the string is short, we skip it and fall back
4397 * to method 3, since memcpy is faster for short strings than the
4398 * later bookkeeping overhead that copy-on-write entails.
4400 * If there is no buffer on the left, or the buffer is too small,
4401 * then we use copy-on-write.
4404 /* Whichever path we take through the next code, we want this true,
4405 and doing it now facilitates the COW check. */
4406 (void)SvPOK_only(dstr);
4410 /* slated for free anyway (and not COW)? */
4411 (sflags & (SVs_TEMP|SVf_IsCOW)) == SVs_TEMP
4412 /* or a swipable TARG */
4413 || ((sflags & (SVs_PADTMP|SVf_READONLY|SVf_IsCOW))
4415 /* whose buffer is worth stealing */
4416 && CHECK_COWBUF_THRESHOLD(cur,len)
4419 !(sflags & SVf_OOK) && /* and not involved in OOK hack? */
4420 (!(flags & SV_NOSTEAL)) &&
4421 /* and we're allowed to steal temps */
4422 SvREFCNT(sstr) == 1 && /* and no other references to it? */
4423 len) /* and really is a string */
4424 { /* Passes the swipe test. */
4425 if (SvPVX_const(dstr)) /* we know that dtype >= SVt_PV */
4427 SvPV_set(dstr, SvPVX_mutable(sstr));
4428 SvLEN_set(dstr, SvLEN(sstr));
4429 SvCUR_set(dstr, SvCUR(sstr));
4432 (void)SvOK_off(sstr); /* NOTE: nukes most SvFLAGS on sstr */
4433 SvPV_set(sstr, NULL);
4438 else if (flags & SV_COW_SHARED_HASH_KEYS
4440 #ifdef PERL_OLD_COPY_ON_WRITE
4441 ( sflags & SVf_IsCOW
4442 || ( (sflags & CAN_COW_MASK) == CAN_COW_FLAGS
4443 && (SvFLAGS(dstr) & CAN_COW_MASK) == CAN_COW_FLAGS
4444 && SvTYPE(sstr) >= SVt_PVIV && len
4447 #elif defined(PERL_NEW_COPY_ON_WRITE)
4450 ( (CHECK_COWBUF_THRESHOLD(cur,len) || SvLEN(dstr) < cur+1)
4451 /* If this is a regular (non-hek) COW, only so
4452 many COW "copies" are possible. */
4453 && CowREFCNT(sstr) != SV_COW_REFCNT_MAX ))
4454 : ( (sflags & CAN_COW_MASK) == CAN_COW_FLAGS
4455 && !(SvFLAGS(dstr) & SVf_BREAK)
4456 && CHECK_COW_THRESHOLD(cur,len) && cur+1 < len
4457 && (CHECK_COWBUF_THRESHOLD(cur,len) || SvLEN(dstr) < cur+1)
4461 && !(SvFLAGS(dstr) & SVf_BREAK)
4464 /* Either it's a shared hash key, or it's suitable for
4467 PerlIO_printf(Perl_debug_log, "Copy on write: sstr --> dstr\n");
4472 if (!(sflags & SVf_IsCOW)) {
4474 # ifdef PERL_OLD_COPY_ON_WRITE
4475 /* Make the source SV into a loop of 1.
4476 (about to become 2) */
4477 SV_COW_NEXT_SV_SET(sstr, sstr);
4479 CowREFCNT(sstr) = 0;
4483 if (SvPVX_const(dstr)) { /* we know that dtype >= SVt_PV */
4489 # ifdef PERL_OLD_COPY_ON_WRITE
4490 assert (SvTYPE(dstr) >= SVt_PVIV);
4491 /* SvIsCOW_normal */
4492 /* splice us in between source and next-after-source. */
4493 SV_COW_NEXT_SV_SET(dstr, SV_COW_NEXT_SV(sstr));
4494 SV_COW_NEXT_SV_SET(sstr, dstr);
4496 if (sflags & SVf_IsCOW) {
4501 SvPV_set(dstr, SvPVX_mutable(sstr));
4506 /* SvIsCOW_shared_hash */
4507 DEBUG_C(PerlIO_printf(Perl_debug_log,
4508 "Copy on write: Sharing hash\n"));
4510 assert (SvTYPE(dstr) >= SVt_PV);
4512 HEK_KEY(share_hek_hek(SvSHARED_HEK_FROM_PV(SvPVX_const(sstr)))));
4514 SvLEN_set(dstr, len);
4515 SvCUR_set(dstr, cur);
4518 /* Failed the swipe test, and we cannot do copy-on-write either.
4519 Have to copy the string. */
4520 SvGROW(dstr, cur + 1); /* inlined from sv_setpvn */
4521 Move(SvPVX_const(sstr),SvPVX(dstr),cur,char);
4522 SvCUR_set(dstr, cur);
4523 *SvEND(dstr) = '\0';
4525 if (sflags & SVp_NOK) {
4526 SvNV_set(dstr, SvNVX(sstr));
4528 if (sflags & SVp_IOK) {
4529 SvIV_set(dstr, SvIVX(sstr));
4530 /* Must do this otherwise some other overloaded use of 0x80000000
4531 gets confused. I guess SVpbm_VALID */
4532 if (sflags & SVf_IVisUV)
4535 SvFLAGS(dstr) |= sflags & (SVf_IOK|SVp_IOK|SVf_NOK|SVp_NOK|SVf_UTF8);
4537 const MAGIC * const smg = SvVSTRING_mg(sstr);
4539 sv_magic(dstr, NULL, PERL_MAGIC_vstring,
4540 smg->mg_ptr, smg->mg_len);
4541 SvRMAGICAL_on(dstr);
4545 else if (sflags & (SVp_IOK|SVp_NOK)) {
4546 (void)SvOK_off(dstr);
4547 SvFLAGS(dstr) |= sflags & (SVf_IOK|SVp_IOK|SVf_IVisUV|SVf_NOK|SVp_NOK);
4548 if (sflags & SVp_IOK) {
4549 /* XXXX Do we want to set IsUV for IV(ROK)? Be extra safe... */
4550 SvIV_set(dstr, SvIVX(sstr));
4552 if (sflags & SVp_NOK) {
4553 SvNV_set(dstr, SvNVX(sstr));
4557 if (isGV_with_GP(sstr)) {
4558 gv_efullname3(dstr, MUTABLE_GV(sstr), "*");
4561 (void)SvOK_off(dstr);
4563 if (SvTAINTED(sstr))
4568 =for apidoc sv_setsv_mg
4570 Like C<sv_setsv>, but also handles 'set' magic.
4576 Perl_sv_setsv_mg(pTHX_ SV *const dstr, SV *const sstr)
4578 PERL_ARGS_ASSERT_SV_SETSV_MG;
4580 sv_setsv(dstr,sstr);
4585 # ifdef PERL_OLD_COPY_ON_WRITE
4586 # define SVt_COW SVt_PVIV
4588 # define SVt_COW SVt_PV
4591 Perl_sv_setsv_cow(pTHX_ SV *dstr, SV *sstr)
4593 STRLEN cur = SvCUR(sstr);
4594 STRLEN len = SvLEN(sstr);
4596 #if defined(PERL_DEBUG_READONLY_COW) && defined(PERL_NEW_COPY_ON_WRITE)
4597 const bool already = cBOOL(SvIsCOW(sstr));
4600 PERL_ARGS_ASSERT_SV_SETSV_COW;
4603 PerlIO_printf(Perl_debug_log, "Fast copy on write: %p -> %p\n",
4604 (void*)sstr, (void*)dstr);
4611 if (SvTHINKFIRST(dstr))
4612 sv_force_normal_flags(dstr, SV_COW_DROP_PV);
4613 else if (SvPVX_const(dstr))
4614 Safefree(SvPVX_mutable(dstr));
4618 SvUPGRADE(dstr, SVt_COW);
4620 assert (SvPOK(sstr));
4621 assert (SvPOKp(sstr));
4622 # ifdef PERL_OLD_COPY_ON_WRITE
4623 assert (!SvIOK(sstr));
4624 assert (!SvIOKp(sstr));
4625 assert (!SvNOK(sstr));
4626 assert (!SvNOKp(sstr));
4629 if (SvIsCOW(sstr)) {
4631 if (SvLEN(sstr) == 0) {
4632 /* source is a COW shared hash key. */
4633 DEBUG_C(PerlIO_printf(Perl_debug_log,
4634 "Fast copy on write: Sharing hash\n"));
4635 new_pv = HEK_KEY(share_hek_hek(SvSHARED_HEK_FROM_PV(SvPVX_const(sstr))));