3 * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
4 * 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by Larry Wall
7 * You may distribute under the terms of either the GNU General Public
8 * License or the Artistic License, as specified in the README file.
13 * 'I wonder what the Entish is for "yes" and "no",' he thought.
16 * [p.480 of _The Lord of the Rings_, III/iv: "Treebeard"]
22 * This file contains the code that creates, manipulates and destroys
23 * scalar values (SVs). The other types (AV, HV, GV, etc.) reuse the
24 * structure of an SV, so their creation and destruction is handled
25 * here; higher-level functions are in av.c, hv.c, and so on. Opcode
26 * level functions (eg. substr, split, join) for each of the types are
39 # if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L && !defined(__VMS)
48 /* Missing proto on LynxOS */
49 char *gconvert(double, int, int, char *);
52 #ifdef PERL_NEW_COPY_ON_WRITE
53 # ifndef SV_COW_THRESHOLD
54 # define SV_COW_THRESHOLD 0 /* COW iff len > K */
56 # ifndef SV_COWBUF_THRESHOLD
57 # define SV_COWBUF_THRESHOLD 1250 /* COW iff len > K */
59 # ifndef SV_COW_MAX_WASTE_THRESHOLD
60 # define SV_COW_MAX_WASTE_THRESHOLD 80 /* COW iff (len - cur) < K */
62 # ifndef SV_COWBUF_WASTE_THRESHOLD
63 # define SV_COWBUF_WASTE_THRESHOLD 80 /* COW iff (len - cur) < K */
65 # ifndef SV_COW_MAX_WASTE_FACTOR_THRESHOLD
66 # define SV_COW_MAX_WASTE_FACTOR_THRESHOLD 2 /* COW iff len < (cur * K) */
68 # ifndef SV_COWBUF_WASTE_FACTOR_THRESHOLD
69 # define SV_COWBUF_WASTE_FACTOR_THRESHOLD 2 /* COW iff len < (cur * K) */
72 /* Work around compiler warnings about unsigned >= THRESHOLD when thres-
75 # define GE_COW_THRESHOLD(cur) ((cur) >= SV_COW_THRESHOLD)
77 # define GE_COW_THRESHOLD(cur) 1
79 #if SV_COWBUF_THRESHOLD
80 # define GE_COWBUF_THRESHOLD(cur) ((cur) >= SV_COWBUF_THRESHOLD)
82 # define GE_COWBUF_THRESHOLD(cur) 1
84 #if SV_COW_MAX_WASTE_THRESHOLD
85 # define GE_COW_MAX_WASTE_THRESHOLD(cur,len) (((len)-(cur)) < SV_COW_MAX_WASTE_THRESHOLD)
87 # define GE_COW_MAX_WASTE_THRESHOLD(cur,len) 1
89 #if SV_COWBUF_WASTE_THRESHOLD
90 # define GE_COWBUF_WASTE_THRESHOLD(cur,len) (((len)-(cur)) < SV_COWBUF_WASTE_THRESHOLD)
92 # define GE_COWBUF_WASTE_THRESHOLD(cur,len) 1
94 #if SV_COW_MAX_WASTE_FACTOR_THRESHOLD
95 # define GE_COW_MAX_WASTE_FACTOR_THRESHOLD(cur,len) ((len) < SV_COW_MAX_WASTE_FACTOR_THRESHOLD * (cur))
97 # define GE_COW_MAX_WASTE_FACTOR_THRESHOLD(cur,len) 1
99 #if SV_COWBUF_WASTE_FACTOR_THRESHOLD
100 # define GE_COWBUF_WASTE_FACTOR_THRESHOLD(cur,len) ((len) < SV_COWBUF_WASTE_FACTOR_THRESHOLD * (cur))
102 # define GE_COWBUF_WASTE_FACTOR_THRESHOLD(cur,len) 1
105 #define CHECK_COW_THRESHOLD(cur,len) (\
106 GE_COW_THRESHOLD((cur)) && \
107 GE_COW_MAX_WASTE_THRESHOLD((cur),(len)) && \
108 GE_COW_MAX_WASTE_FACTOR_THRESHOLD((cur),(len)) \
110 #define CHECK_COWBUF_THRESHOLD(cur,len) (\
111 GE_COWBUF_THRESHOLD((cur)) && \
112 GE_COWBUF_WASTE_THRESHOLD((cur),(len)) && \
113 GE_COWBUF_WASTE_FACTOR_THRESHOLD((cur),(len)) \
115 /* void Gconvert: on Linux at least, gcvt (which Gconvert gets deffed to),
116 * has a mandatory return value, even though that value is just the same
119 #ifdef PERL_UTF8_CACHE_ASSERT
120 /* if adding more checks watch out for the following tests:
121 * t/op/index.t t/op/length.t t/op/pat.t t/op/substr.t
122 * lib/utf8.t lib/Unicode/Collate/t/index.t
125 # define ASSERT_UTF8_CACHE(cache) \
126 STMT_START { if (cache) { assert((cache)[0] <= (cache)[1]); \
127 assert((cache)[2] <= (cache)[3]); \
128 assert((cache)[3] <= (cache)[1]);} \
131 # define ASSERT_UTF8_CACHE(cache) NOOP
134 #ifdef PERL_OLD_COPY_ON_WRITE
135 #define SV_COW_NEXT_SV(sv) INT2PTR(SV *,SvUVX(sv))
136 #define SV_COW_NEXT_SV_SET(current,next) SvUV_set(current, PTR2UV(next))
139 /* ============================================================================
141 =head1 Allocation and deallocation of SVs.
142 An SV (or AV, HV, etc.) is allocated in two parts: the head (struct
143 sv, av, hv...) contains type and reference count information, and for
144 many types, a pointer to the body (struct xrv, xpv, xpviv...), which
145 contains fields specific to each type. Some types store all they need
146 in the head, so don't have a body.
148 In all but the most memory-paranoid configurations (ex: PURIFY), heads
149 and bodies are allocated out of arenas, which by default are
150 approximately 4K chunks of memory parcelled up into N heads or bodies.
151 Sv-bodies are allocated by their sv-type, guaranteeing size
152 consistency needed to allocate safely from arrays.
154 For SV-heads, the first slot in each arena is reserved, and holds a
155 link to the next arena, some flags, and a note of the number of slots.
156 Snaked through each arena chain is a linked list of free items; when
157 this becomes empty, an extra arena is allocated and divided up into N
158 items which are threaded into the free list.
160 SV-bodies are similar, but they use arena-sets by default, which
161 separate the link and info from the arena itself, and reclaim the 1st
162 slot in the arena. SV-bodies are further described later.
164 The following global variables are associated with arenas:
166 PL_sv_arenaroot pointer to list of SV arenas
167 PL_sv_root pointer to list of free SV structures
169 PL_body_arenas head of linked-list of body arenas
170 PL_body_roots[] array of pointers to list of free bodies of svtype
171 arrays are indexed by the svtype needed
173 A few special SV heads are not allocated from an arena, but are
174 instead directly created in the interpreter structure, eg PL_sv_undef.
175 The size of arenas can be changed from the default by setting
176 PERL_ARENA_SIZE appropriately at compile time.
178 The SV arena serves the secondary purpose of allowing still-live SVs
179 to be located and destroyed during final cleanup.
181 At the lowest level, the macros new_SV() and del_SV() grab and free
182 an SV head. (If debugging with -DD, del_SV() calls the function S_del_sv()
183 to return the SV to the free list with error checking.) new_SV() calls
184 more_sv() / sv_add_arena() to add an extra arena if the free list is empty.
185 SVs in the free list have their SvTYPE field set to all ones.
187 At the time of very final cleanup, sv_free_arenas() is called from
188 perl_destruct() to physically free all the arenas allocated since the
189 start of the interpreter.
191 The function visit() scans the SV arenas list, and calls a specified
192 function for each SV it finds which is still live - ie which has an SvTYPE
193 other than all 1's, and a non-zero SvREFCNT. visit() is used by the
194 following functions (specified as [function that calls visit()] / [function
195 called by visit() for each SV]):
197 sv_report_used() / do_report_used()
198 dump all remaining SVs (debugging aid)
200 sv_clean_objs() / do_clean_objs(),do_clean_named_objs(),
201 do_clean_named_io_objs(),do_curse()
202 Attempt to free all objects pointed to by RVs,
203 try to do the same for all objects indir-
204 ectly referenced by typeglobs too, and
205 then do a final sweep, cursing any
206 objects that remain. Called once from
207 perl_destruct(), prior to calling sv_clean_all()
210 sv_clean_all() / do_clean_all()
211 SvREFCNT_dec(sv) each remaining SV, possibly
212 triggering an sv_free(). It also sets the
213 SVf_BREAK flag on the SV to indicate that the
214 refcnt has been artificially lowered, and thus
215 stopping sv_free() from giving spurious warnings
216 about SVs which unexpectedly have a refcnt
217 of zero. called repeatedly from perl_destruct()
218 until there are no SVs left.
220 =head2 Arena allocator API Summary
222 Private API to rest of sv.c
226 new_XPVNV(), del_XPVGV(),
231 sv_report_used(), sv_clean_objs(), sv_clean_all(), sv_free_arenas()
235 * ========================================================================= */
238 * "A time to plant, and a time to uproot what was planted..."
242 # define MEM_LOG_NEW_SV(sv, file, line, func) \
243 Perl_mem_log_new_sv(sv, file, line, func)
244 # define MEM_LOG_DEL_SV(sv, file, line, func) \
245 Perl_mem_log_del_sv(sv, file, line, func)
247 # define MEM_LOG_NEW_SV(sv, file, line, func) NOOP
248 # define MEM_LOG_DEL_SV(sv, file, line, func) NOOP
251 #ifdef DEBUG_LEAKING_SCALARS
252 # define FREE_SV_DEBUG_FILE(sv) STMT_START { \
253 if ((sv)->sv_debug_file) PerlMemShared_free((sv)->sv_debug_file); \
255 # define DEBUG_SV_SERIAL(sv) \
256 DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) del_SV\n", \
257 PTR2UV(sv), (long)(sv)->sv_debug_serial))
259 # define FREE_SV_DEBUG_FILE(sv)
260 # define DEBUG_SV_SERIAL(sv) NOOP
264 # define SvARENA_CHAIN(sv) ((sv)->sv_u.svu_rv)
265 # define SvARENA_CHAIN_SET(sv,val) (sv)->sv_u.svu_rv = MUTABLE_SV((val))
266 /* Whilst I'd love to do this, it seems that things like to check on
268 # define POSION_SV_HEAD(sv) PoisonNew(sv, 1, struct STRUCT_SV)
270 # define POSION_SV_HEAD(sv) PoisonNew(&SvANY(sv), 1, void *), \
271 PoisonNew(&SvREFCNT(sv), 1, U32)
273 # define SvARENA_CHAIN(sv) SvANY(sv)
274 # define SvARENA_CHAIN_SET(sv,val) SvANY(sv) = (void *)(val)
275 # define POSION_SV_HEAD(sv)
278 /* Mark an SV head as unused, and add to free list.
280 * If SVf_BREAK is set, skip adding it to the free list, as this SV had
281 * its refcount artificially decremented during global destruction, so
282 * there may be dangling pointers to it. The last thing we want in that
283 * case is for it to be reused. */
285 #define plant_SV(p) \
287 const U32 old_flags = SvFLAGS(p); \
288 MEM_LOG_DEL_SV(p, __FILE__, __LINE__, FUNCTION__); \
289 DEBUG_SV_SERIAL(p); \
290 FREE_SV_DEBUG_FILE(p); \
292 SvFLAGS(p) = SVTYPEMASK; \
293 if (!(old_flags & SVf_BREAK)) { \
294 SvARENA_CHAIN_SET(p, PL_sv_root); \
300 #define uproot_SV(p) \
303 PL_sv_root = MUTABLE_SV(SvARENA_CHAIN(p)); \
308 /* make some more SVs by adding another arena */
314 char *chunk; /* must use New here to match call to */
315 Newx(chunk,PERL_ARENA_SIZE,char); /* Safefree() in sv_free_arenas() */
316 sv_add_arena(chunk, PERL_ARENA_SIZE, 0);
321 /* new_SV(): return a new, empty SV head */
323 #ifdef DEBUG_LEAKING_SCALARS
324 /* provide a real function for a debugger to play with */
326 S_new_SV(pTHX_ const char *file, int line, const char *func)
333 sv = S_more_sv(aTHX);
337 sv->sv_debug_optype = PL_op ? PL_op->op_type : 0;
338 sv->sv_debug_line = (U16) (PL_parser && PL_parser->copline != NOLINE
344 sv->sv_debug_inpad = 0;
345 sv->sv_debug_parent = NULL;
346 sv->sv_debug_file = PL_curcop ? savesharedpv(CopFILE(PL_curcop)): NULL;
348 sv->sv_debug_serial = PL_sv_serial++;
350 MEM_LOG_NEW_SV(sv, file, line, func);
351 DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) new_SV (from %s:%d [%s])\n",
352 PTR2UV(sv), (long)sv->sv_debug_serial, file, line, func));
356 # define new_SV(p) (p)=S_new_SV(aTHX_ __FILE__, __LINE__, FUNCTION__)
364 (p) = S_more_sv(aTHX); \
368 MEM_LOG_NEW_SV(p, __FILE__, __LINE__, FUNCTION__); \
373 /* del_SV(): return an empty SV head to the free list */
386 S_del_sv(pTHX_ SV *p)
388 PERL_ARGS_ASSERT_DEL_SV;
393 for (sva = PL_sv_arenaroot; sva; sva = MUTABLE_SV(SvANY(sva))) {
394 const SV * const sv = sva + 1;
395 const SV * const svend = &sva[SvREFCNT(sva)];
396 if (p >= sv && p < svend) {
402 Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL),
403 "Attempt to free non-arena SV: 0x%"UVxf
404 pTHX__FORMAT, PTR2UV(p) pTHX__VALUE);
411 #else /* ! DEBUGGING */
413 #define del_SV(p) plant_SV(p)
415 #endif /* DEBUGGING */
419 =head1 SV Manipulation Functions
421 =for apidoc sv_add_arena
423 Given a chunk of memory, link it to the head of the list of arenas,
424 and split it into a list of free SVs.
430 S_sv_add_arena(pTHX_ char *const ptr, const U32 size, const U32 flags)
432 SV *const sva = MUTABLE_SV(ptr);
436 PERL_ARGS_ASSERT_SV_ADD_ARENA;
438 /* The first SV in an arena isn't an SV. */
439 SvANY(sva) = (void *) PL_sv_arenaroot; /* ptr to next arena */
440 SvREFCNT(sva) = size / sizeof(SV); /* number of SV slots */
441 SvFLAGS(sva) = flags; /* FAKE if not to be freed */
443 PL_sv_arenaroot = sva;
444 PL_sv_root = sva + 1;
446 svend = &sva[SvREFCNT(sva) - 1];
449 SvARENA_CHAIN_SET(sv, (sv + 1));
453 /* Must always set typemask because it's always checked in on cleanup
454 when the arenas are walked looking for objects. */
455 SvFLAGS(sv) = SVTYPEMASK;
458 SvARENA_CHAIN_SET(sv, 0);
462 SvFLAGS(sv) = SVTYPEMASK;
465 /* visit(): call the named function for each non-free SV in the arenas
466 * whose flags field matches the flags/mask args. */
469 S_visit(pTHX_ SVFUNC_t f, const U32 flags, const U32 mask)
474 PERL_ARGS_ASSERT_VISIT;
476 for (sva = PL_sv_arenaroot; sva; sva = MUTABLE_SV(SvANY(sva))) {
477 const SV * const svend = &sva[SvREFCNT(sva)];
479 for (sv = sva + 1; sv < svend; ++sv) {
480 if (SvTYPE(sv) != (svtype)SVTYPEMASK
481 && (sv->sv_flags & mask) == flags
494 /* called by sv_report_used() for each live SV */
497 do_report_used(pTHX_ SV *const sv)
499 if (SvTYPE(sv) != (svtype)SVTYPEMASK) {
500 PerlIO_printf(Perl_debug_log, "****\n");
507 =for apidoc sv_report_used
509 Dump the contents of all SVs not yet freed (debugging aid).
515 Perl_sv_report_used(pTHX)
518 visit(do_report_used, 0, 0);
524 /* called by sv_clean_objs() for each live SV */
527 do_clean_objs(pTHX_ SV *const ref)
531 SV * const target = SvRV(ref);
532 if (SvOBJECT(target)) {
533 DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning object ref:\n "), sv_dump(ref)));
534 if (SvWEAKREF(ref)) {
535 sv_del_backref(target, ref);
541 SvREFCNT_dec_NN(target);
548 /* clear any slots in a GV which hold objects - except IO;
549 * called by sv_clean_objs() for each live GV */
552 do_clean_named_objs(pTHX_ SV *const sv)
555 assert(SvTYPE(sv) == SVt_PVGV);
556 assert(isGV_with_GP(sv));
560 /* freeing GP entries may indirectly free the current GV;
561 * hold onto it while we mess with the GP slots */
564 if ( ((obj = GvSV(sv) )) && SvOBJECT(obj)) {
565 DEBUG_D((PerlIO_printf(Perl_debug_log,
566 "Cleaning named glob SV object:\n "), sv_dump(obj)));
568 SvREFCNT_dec_NN(obj);
570 if ( ((obj = MUTABLE_SV(GvAV(sv)) )) && SvOBJECT(obj)) {
571 DEBUG_D((PerlIO_printf(Perl_debug_log,
572 "Cleaning named glob AV object:\n "), sv_dump(obj)));
574 SvREFCNT_dec_NN(obj);
576 if ( ((obj = MUTABLE_SV(GvHV(sv)) )) && SvOBJECT(obj)) {
577 DEBUG_D((PerlIO_printf(Perl_debug_log,
578 "Cleaning named glob HV object:\n "), sv_dump(obj)));
580 SvREFCNT_dec_NN(obj);
582 if ( ((obj = MUTABLE_SV(GvCV(sv)) )) && SvOBJECT(obj)) {
583 DEBUG_D((PerlIO_printf(Perl_debug_log,
584 "Cleaning named glob CV object:\n "), sv_dump(obj)));
586 SvREFCNT_dec_NN(obj);
588 SvREFCNT_dec_NN(sv); /* undo the inc above */
591 /* clear any IO slots in a GV which hold objects (except stderr, defout);
592 * called by sv_clean_objs() for each live GV */
595 do_clean_named_io_objs(pTHX_ SV *const sv)
598 assert(SvTYPE(sv) == SVt_PVGV);
599 assert(isGV_with_GP(sv));
600 if (!GvGP(sv) || sv == (SV*)PL_stderrgv || sv == (SV*)PL_defoutgv)
604 if ( ((obj = MUTABLE_SV(GvIO(sv)) )) && SvOBJECT(obj)) {
605 DEBUG_D((PerlIO_printf(Perl_debug_log,
606 "Cleaning named glob IO object:\n "), sv_dump(obj)));
608 SvREFCNT_dec_NN(obj);
610 SvREFCNT_dec_NN(sv); /* undo the inc above */
613 /* Void wrapper to pass to visit() */
615 do_curse(pTHX_ SV * const sv) {
616 if ((PL_stderrgv && GvGP(PL_stderrgv) && (SV*)GvIO(PL_stderrgv) == sv)
617 || (PL_defoutgv && GvGP(PL_defoutgv) && (SV*)GvIO(PL_defoutgv) == sv))
623 =for apidoc sv_clean_objs
625 Attempt to destroy all objects not yet freed.
631 Perl_sv_clean_objs(pTHX)
634 PL_in_clean_objs = TRUE;
635 visit(do_clean_objs, SVf_ROK, SVf_ROK);
636 /* Some barnacles may yet remain, clinging to typeglobs.
637 * Run the non-IO destructors first: they may want to output
638 * error messages, close files etc */
639 visit(do_clean_named_objs, SVt_PVGV|SVpgv_GP, SVTYPEMASK|SVp_POK|SVpgv_GP);
640 visit(do_clean_named_io_objs, SVt_PVGV|SVpgv_GP, SVTYPEMASK|SVp_POK|SVpgv_GP);
641 /* And if there are some very tenacious barnacles clinging to arrays,
642 closures, or what have you.... */
643 visit(do_curse, SVs_OBJECT, SVs_OBJECT);
644 olddef = PL_defoutgv;
645 PL_defoutgv = NULL; /* disable skip of PL_defoutgv */
646 if (olddef && isGV_with_GP(olddef))
647 do_clean_named_io_objs(aTHX_ MUTABLE_SV(olddef));
648 olderr = PL_stderrgv;
649 PL_stderrgv = NULL; /* disable skip of PL_stderrgv */
650 if (olderr && isGV_with_GP(olderr))
651 do_clean_named_io_objs(aTHX_ MUTABLE_SV(olderr));
652 SvREFCNT_dec(olddef);
653 PL_in_clean_objs = FALSE;
656 /* called by sv_clean_all() for each live SV */
659 do_clean_all(pTHX_ SV *const sv)
661 if (sv == (const SV *) PL_fdpid || sv == (const SV *)PL_strtab) {
662 /* don't clean pid table and strtab */
665 DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning loops: SV at 0x%"UVxf"\n", PTR2UV(sv)) ));
666 SvFLAGS(sv) |= SVf_BREAK;
671 =for apidoc sv_clean_all
673 Decrement the refcnt of each remaining SV, possibly triggering a
674 cleanup. This function may have to be called multiple times to free
675 SVs which are in complex self-referential hierarchies.
681 Perl_sv_clean_all(pTHX)
684 PL_in_clean_all = TRUE;
685 cleaned = visit(do_clean_all, 0,0);
690 ARENASETS: a meta-arena implementation which separates arena-info
691 into struct arena_set, which contains an array of struct
692 arena_descs, each holding info for a single arena. By separating
693 the meta-info from the arena, we recover the 1st slot, formerly
694 borrowed for list management. The arena_set is about the size of an
695 arena, avoiding the needless malloc overhead of a naive linked-list.
697 The cost is 1 arena-set malloc per ~320 arena-mallocs, + the unused
698 memory in the last arena-set (1/2 on average). In trade, we get
699 back the 1st slot in each arena (ie 1.7% of a CV-arena, less for
700 smaller types). The recovery of the wasted space allows use of
701 small arenas for large, rare body types, by changing array* fields
702 in body_details_by_type[] below.
705 char *arena; /* the raw storage, allocated aligned */
706 size_t size; /* its size ~4k typ */
707 svtype utype; /* bodytype stored in arena */
712 /* Get the maximum number of elements in set[] such that struct arena_set
713 will fit within PERL_ARENA_SIZE, which is probably just under 4K, and
714 therefore likely to be 1 aligned memory page. */
716 #define ARENAS_PER_SET ((PERL_ARENA_SIZE - sizeof(struct arena_set*) \
717 - 2 * sizeof(int)) / sizeof (struct arena_desc))
720 struct arena_set* next;
721 unsigned int set_size; /* ie ARENAS_PER_SET */
722 unsigned int curr; /* index of next available arena-desc */
723 struct arena_desc set[ARENAS_PER_SET];
727 =for apidoc sv_free_arenas
729 Deallocate the memory used by all arenas. Note that all the individual SV
730 heads and bodies within the arenas must already have been freed.
736 Perl_sv_free_arenas(pTHX)
742 /* Free arenas here, but be careful about fake ones. (We assume
743 contiguity of the fake ones with the corresponding real ones.) */
745 for (sva = PL_sv_arenaroot; sva; sva = svanext) {
746 svanext = MUTABLE_SV(SvANY(sva));
747 while (svanext && SvFAKE(svanext))
748 svanext = MUTABLE_SV(SvANY(svanext));
755 struct arena_set *aroot = (struct arena_set*) PL_body_arenas;
758 struct arena_set *current = aroot;
761 assert(aroot->set[i].arena);
762 Safefree(aroot->set[i].arena);
770 i = PERL_ARENA_ROOTS_SIZE;
772 PL_body_roots[i] = 0;
779 Here are mid-level routines that manage the allocation of bodies out
780 of the various arenas. There are 5 kinds of arenas:
782 1. SV-head arenas, which are discussed and handled above
783 2. regular body arenas
784 3. arenas for reduced-size bodies
787 Arena types 2 & 3 are chained by body-type off an array of
788 arena-root pointers, which is indexed by svtype. Some of the
789 larger/less used body types are malloced singly, since a large
790 unused block of them is wasteful. Also, several svtypes dont have
791 bodies; the data fits into the sv-head itself. The arena-root
792 pointer thus has a few unused root-pointers (which may be hijacked
793 later for arena types 4,5)
795 3 differs from 2 as an optimization; some body types have several
796 unused fields in the front of the structure (which are kept in-place
797 for consistency). These bodies can be allocated in smaller chunks,
798 because the leading fields arent accessed. Pointers to such bodies
799 are decremented to point at the unused 'ghost' memory, knowing that
800 the pointers are used with offsets to the real memory.
803 =head1 SV-Body Allocation
807 Allocation of SV-bodies is similar to SV-heads, differing as follows;
808 the allocation mechanism is used for many body types, so is somewhat
809 more complicated, it uses arena-sets, and has no need for still-live
812 At the outermost level, (new|del)_X*V macros return bodies of the
813 appropriate type. These macros call either (new|del)_body_type or
814 (new|del)_body_allocated macro pairs, depending on specifics of the
815 type. Most body types use the former pair, the latter pair is used to
816 allocate body types with "ghost fields".
818 "ghost fields" are fields that are unused in certain types, and
819 consequently don't need to actually exist. They are declared because
820 they're part of a "base type", which allows use of functions as
821 methods. The simplest examples are AVs and HVs, 2 aggregate types
822 which don't use the fields which support SCALAR semantics.
824 For these types, the arenas are carved up into appropriately sized
825 chunks, we thus avoid wasted memory for those unaccessed members.
826 When bodies are allocated, we adjust the pointer back in memory by the
827 size of the part not allocated, so it's as if we allocated the full
828 structure. (But things will all go boom if you write to the part that
829 is "not there", because you'll be overwriting the last members of the
830 preceding structure in memory.)
832 We calculate the correction using the STRUCT_OFFSET macro on the first
833 member present. If the allocated structure is smaller (no initial NV
834 actually allocated) then the net effect is to subtract the size of the NV
835 from the pointer, to return a new pointer as if an initial NV were actually
836 allocated. (We were using structures named *_allocated for this, but
837 this turned out to be a subtle bug, because a structure without an NV
838 could have a lower alignment constraint, but the compiler is allowed to
839 optimised accesses based on the alignment constraint of the actual pointer
840 to the full structure, for example, using a single 64 bit load instruction
841 because it "knows" that two adjacent 32 bit members will be 8-byte aligned.)
843 This is the same trick as was used for NV and IV bodies. Ironically it
844 doesn't need to be used for NV bodies any more, because NV is now at
845 the start of the structure. IV bodies don't need it either, because
846 they are no longer allocated.
848 In turn, the new_body_* allocators call S_new_body(), which invokes
849 new_body_inline macro, which takes a lock, and takes a body off the
850 linked list at PL_body_roots[sv_type], calling Perl_more_bodies() if
851 necessary to refresh an empty list. Then the lock is released, and
852 the body is returned.
854 Perl_more_bodies allocates a new arena, and carves it up into an array of N
855 bodies, which it strings into a linked list. It looks up arena-size
856 and body-size from the body_details table described below, thus
857 supporting the multiple body-types.
859 If PURIFY is defined, or PERL_ARENA_SIZE=0, arenas are not used, and
860 the (new|del)_X*V macros are mapped directly to malloc/free.
862 For each sv-type, struct body_details bodies_by_type[] carries
863 parameters which control these aspects of SV handling:
865 Arena_size determines whether arenas are used for this body type, and if
866 so, how big they are. PURIFY or PERL_ARENA_SIZE=0 set this field to
867 zero, forcing individual mallocs and frees.
869 Body_size determines how big a body is, and therefore how many fit into
870 each arena. Offset carries the body-pointer adjustment needed for
871 "ghost fields", and is used in *_allocated macros.
873 But its main purpose is to parameterize info needed in
874 Perl_sv_upgrade(). The info here dramatically simplifies the function
875 vs the implementation in 5.8.8, making it table-driven. All fields
876 are used for this, except for arena_size.
878 For the sv-types that have no bodies, arenas are not used, so those
879 PL_body_roots[sv_type] are unused, and can be overloaded. In
880 something of a special case, SVt_NULL is borrowed for HE arenas;
881 PL_body_roots[HE_SVSLOT=SVt_NULL] is filled by S_more_he, but the
882 bodies_by_type[SVt_NULL] slot is not used, as the table is not
887 struct body_details {
888 U8 body_size; /* Size to allocate */
889 U8 copy; /* Size of structure to copy (may be shorter) */
891 unsigned int type : 4; /* We have space for a sanity check. */
892 unsigned int cant_upgrade : 1; /* Cannot upgrade this type */
893 unsigned int zero_nv : 1; /* zero the NV when upgrading from this */
894 unsigned int arena : 1; /* Allocated from an arena */
895 size_t arena_size; /* Size of arena to allocate */
903 /* With -DPURFIY we allocate everything directly, and don't use arenas.
904 This seems a rather elegant way to simplify some of the code below. */
905 #define HASARENA FALSE
907 #define HASARENA TRUE
909 #define NOARENA FALSE
911 /* Size the arenas to exactly fit a given number of bodies. A count
912 of 0 fits the max number bodies into a PERL_ARENA_SIZE.block,
913 simplifying the default. If count > 0, the arena is sized to fit
914 only that many bodies, allowing arenas to be used for large, rare
915 bodies (XPVFM, XPVIO) without undue waste. The arena size is
916 limited by PERL_ARENA_SIZE, so we can safely oversize the
919 #define FIT_ARENA0(body_size) \
920 ((size_t)(PERL_ARENA_SIZE / body_size) * body_size)
921 #define FIT_ARENAn(count,body_size) \
922 ( count * body_size <= PERL_ARENA_SIZE) \
923 ? count * body_size \
924 : FIT_ARENA0 (body_size)
925 #define FIT_ARENA(count,body_size) \
927 ? FIT_ARENAn (count, body_size) \
928 : FIT_ARENA0 (body_size)
930 /* Calculate the length to copy. Specifically work out the length less any
931 final padding the compiler needed to add. See the comment in sv_upgrade
932 for why copying the padding proved to be a bug. */
934 #define copy_length(type, last_member) \
935 STRUCT_OFFSET(type, last_member) \
936 + sizeof (((type*)SvANY((const SV *)0))->last_member)
938 static const struct body_details bodies_by_type[] = {
939 /* HEs use this offset for their arena. */
940 { 0, 0, 0, SVt_NULL, FALSE, NONV, NOARENA, 0 },
942 /* IVs are in the head, so the allocation size is 0. */
944 sizeof(IV), /* This is used to copy out the IV body. */
945 STRUCT_OFFSET(XPVIV, xiv_iv), SVt_IV, FALSE, NONV,
946 NOARENA /* IVS don't need an arena */, 0
949 { sizeof(NV), sizeof(NV),
950 STRUCT_OFFSET(XPVNV, xnv_u),
951 SVt_NV, FALSE, HADNV, HASARENA, FIT_ARENA(0, sizeof(NV)) },
953 { sizeof(XPV) - STRUCT_OFFSET(XPV, xpv_cur),
954 copy_length(XPV, xpv_len) - STRUCT_OFFSET(XPV, xpv_cur),
955 + STRUCT_OFFSET(XPV, xpv_cur),
956 SVt_PV, FALSE, NONV, HASARENA,
957 FIT_ARENA(0, sizeof(XPV) - STRUCT_OFFSET(XPV, xpv_cur)) },
959 { sizeof(XINVLIST) - STRUCT_OFFSET(XPV, xpv_cur),
960 copy_length(XINVLIST, is_offset) - STRUCT_OFFSET(XPV, xpv_cur),
961 + STRUCT_OFFSET(XPV, xpv_cur),
962 SVt_INVLIST, TRUE, NONV, HASARENA,
963 FIT_ARENA(0, sizeof(XINVLIST) - STRUCT_OFFSET(XPV, xpv_cur)) },
965 { sizeof(XPVIV) - STRUCT_OFFSET(XPV, xpv_cur),
966 copy_length(XPVIV, xiv_u) - STRUCT_OFFSET(XPV, xpv_cur),
967 + STRUCT_OFFSET(XPV, xpv_cur),
968 SVt_PVIV, FALSE, NONV, HASARENA,
969 FIT_ARENA(0, sizeof(XPVIV) - STRUCT_OFFSET(XPV, xpv_cur)) },
971 { sizeof(XPVNV) - STRUCT_OFFSET(XPV, xpv_cur),
972 copy_length(XPVNV, xnv_u) - STRUCT_OFFSET(XPV, xpv_cur),
973 + STRUCT_OFFSET(XPV, xpv_cur),
974 SVt_PVNV, FALSE, HADNV, HASARENA,
975 FIT_ARENA(0, sizeof(XPVNV) - STRUCT_OFFSET(XPV, xpv_cur)) },
977 { sizeof(XPVMG), copy_length(XPVMG, xnv_u), 0, SVt_PVMG, FALSE, HADNV,
978 HASARENA, FIT_ARENA(0, sizeof(XPVMG)) },
983 SVt_REGEXP, TRUE, NONV, HASARENA,
984 FIT_ARENA(0, sizeof(regexp))
987 { sizeof(XPVGV), sizeof(XPVGV), 0, SVt_PVGV, TRUE, HADNV,
988 HASARENA, FIT_ARENA(0, sizeof(XPVGV)) },
990 { sizeof(XPVLV), sizeof(XPVLV), 0, SVt_PVLV, TRUE, HADNV,
991 HASARENA, FIT_ARENA(0, sizeof(XPVLV)) },
994 copy_length(XPVAV, xav_alloc),
996 SVt_PVAV, TRUE, NONV, HASARENA,
997 FIT_ARENA(0, sizeof(XPVAV)) },
1000 copy_length(XPVHV, xhv_max),
1002 SVt_PVHV, TRUE, NONV, HASARENA,
1003 FIT_ARENA(0, sizeof(XPVHV)) },
1008 SVt_PVCV, TRUE, NONV, HASARENA,
1009 FIT_ARENA(0, sizeof(XPVCV)) },
1014 SVt_PVFM, TRUE, NONV, NOARENA,
1015 FIT_ARENA(20, sizeof(XPVFM)) },
1020 SVt_PVIO, TRUE, NONV, HASARENA,
1021 FIT_ARENA(24, sizeof(XPVIO)) },
1024 #define new_body_allocated(sv_type) \
1025 (void *)((char *)S_new_body(aTHX_ sv_type) \
1026 - bodies_by_type[sv_type].offset)
1028 /* return a thing to the free list */
1030 #define del_body(thing, root) \
1032 void ** const thing_copy = (void **)thing; \
1033 *thing_copy = *root; \
1034 *root = (void*)thing_copy; \
1039 #define new_XNV() safemalloc(sizeof(XPVNV))
1040 #define new_XPVNV() safemalloc(sizeof(XPVNV))
1041 #define new_XPVMG() safemalloc(sizeof(XPVMG))
1043 #define del_XPVGV(p) safefree(p)
1047 #define new_XNV() new_body_allocated(SVt_NV)
1048 #define new_XPVNV() new_body_allocated(SVt_PVNV)
1049 #define new_XPVMG() new_body_allocated(SVt_PVMG)
1051 #define del_XPVGV(p) del_body(p + bodies_by_type[SVt_PVGV].offset, \
1052 &PL_body_roots[SVt_PVGV])
1056 /* no arena for you! */
1058 #define new_NOARENA(details) \
1059 safemalloc((details)->body_size + (details)->offset)
1060 #define new_NOARENAZ(details) \
1061 safecalloc((details)->body_size + (details)->offset, 1)
1064 Perl_more_bodies (pTHX_ const svtype sv_type, const size_t body_size,
1065 const size_t arena_size)
1067 void ** const root = &PL_body_roots[sv_type];
1068 struct arena_desc *adesc;
1069 struct arena_set *aroot = (struct arena_set *) PL_body_arenas;
1073 const size_t good_arena_size = Perl_malloc_good_size(arena_size);
1074 #if defined(DEBUGGING) && defined(PERL_GLOBAL_STRUCT)
1077 #if defined(DEBUGGING) && !defined(PERL_GLOBAL_STRUCT_PRIVATE)
1078 static bool done_sanity_check;
1080 /* PERL_GLOBAL_STRUCT_PRIVATE cannot coexist with global
1081 * variables like done_sanity_check. */
1082 if (!done_sanity_check) {
1083 unsigned int i = SVt_LAST;
1085 done_sanity_check = TRUE;
1088 assert (bodies_by_type[i].type == i);
1094 /* may need new arena-set to hold new arena */
1095 if (!aroot || aroot->curr >= aroot->set_size) {
1096 struct arena_set *newroot;
1097 Newxz(newroot, 1, struct arena_set);
1098 newroot->set_size = ARENAS_PER_SET;
1099 newroot->next = aroot;
1101 PL_body_arenas = (void *) newroot;
1102 DEBUG_m(PerlIO_printf(Perl_debug_log, "new arenaset %p\n", (void*)aroot));
1105 /* ok, now have arena-set with at least 1 empty/available arena-desc */
1106 curr = aroot->curr++;
1107 adesc = &(aroot->set[curr]);
1108 assert(!adesc->arena);
1110 Newx(adesc->arena, good_arena_size, char);
1111 adesc->size = good_arena_size;
1112 adesc->utype = sv_type;
1113 DEBUG_m(PerlIO_printf(Perl_debug_log, "arena %d added: %p size %"UVuf"\n",
1114 curr, (void*)adesc->arena, (UV)good_arena_size));
1116 start = (char *) adesc->arena;
1118 /* Get the address of the byte after the end of the last body we can fit.
1119 Remember, this is integer division: */
1120 end = start + good_arena_size / body_size * body_size;
1122 /* computed count doesn't reflect the 1st slot reservation */
1123 #if defined(MYMALLOC) || defined(HAS_MALLOC_GOOD_SIZE)
1124 DEBUG_m(PerlIO_printf(Perl_debug_log,
1125 "arena %p end %p arena-size %d (from %d) type %d "
1127 (void*)start, (void*)end, (int)good_arena_size,
1128 (int)arena_size, sv_type, (int)body_size,
1129 (int)good_arena_size / (int)body_size));
1131 DEBUG_m(PerlIO_printf(Perl_debug_log,
1132 "arena %p end %p arena-size %d type %d size %d ct %d\n",
1133 (void*)start, (void*)end,
1134 (int)arena_size, sv_type, (int)body_size,
1135 (int)good_arena_size / (int)body_size));
1137 *root = (void *)start;
1140 /* Where the next body would start: */
1141 char * const next = start + body_size;
1144 /* This is the last body: */
1145 assert(next == end);
1147 *(void **)start = 0;
1151 *(void**) start = (void *)next;
1156 /* grab a new thing from the free list, allocating more if necessary.
1157 The inline version is used for speed in hot routines, and the
1158 function using it serves the rest (unless PURIFY).
1160 #define new_body_inline(xpv, sv_type) \
1162 void ** const r3wt = &PL_body_roots[sv_type]; \
1163 xpv = (PTR_TBL_ENT_t*) (*((void **)(r3wt)) \
1164 ? *((void **)(r3wt)) : Perl_more_bodies(aTHX_ sv_type, \
1165 bodies_by_type[sv_type].body_size,\
1166 bodies_by_type[sv_type].arena_size)); \
1167 *(r3wt) = *(void**)(xpv); \
1173 S_new_body(pTHX_ const svtype sv_type)
1176 new_body_inline(xpv, sv_type);
1182 static const struct body_details fake_rv =
1183 { 0, 0, 0, SVt_IV, FALSE, NONV, NOARENA, 0 };
1186 =for apidoc sv_upgrade
1188 Upgrade an SV to a more complex form. Generally adds a new body type to the
1189 SV, then copies across as much information as possible from the old body.
1190 It croaks if the SV is already in a more complex form than requested. You
1191 generally want to use the C<SvUPGRADE> macro wrapper, which checks the type
1192 before calling C<sv_upgrade>, and hence does not croak. See also
1199 Perl_sv_upgrade(pTHX_ SV *const sv, svtype new_type)
1203 const svtype old_type = SvTYPE(sv);
1204 const struct body_details *new_type_details;
1205 const struct body_details *old_type_details
1206 = bodies_by_type + old_type;
1207 SV *referant = NULL;
1209 PERL_ARGS_ASSERT_SV_UPGRADE;
1211 if (old_type == new_type)
1214 /* This clause was purposefully added ahead of the early return above to
1215 the shared string hackery for (sort {$a <=> $b} keys %hash), with the
1216 inference by Nick I-S that it would fix other troublesome cases. See
1217 changes 7162, 7163 (f130fd4589cf5fbb24149cd4db4137c8326f49c1 and parent)
1219 Given that shared hash key scalars are no longer PVIV, but PV, there is
1220 no longer need to unshare so as to free up the IVX slot for its proper
1221 purpose. So it's safe to move the early return earlier. */
1223 if (new_type > SVt_PVMG && SvIsCOW(sv)) {
1224 sv_force_normal_flags(sv, 0);
1227 old_body = SvANY(sv);
1229 /* Copying structures onto other structures that have been neatly zeroed
1230 has a subtle gotcha. Consider XPVMG
1232 +------+------+------+------+------+-------+-------+
1233 | NV | CUR | LEN | IV | MAGIC | STASH |
1234 +------+------+------+------+------+-------+-------+
1235 0 4 8 12 16 20 24 28
1237 where NVs are aligned to 8 bytes, so that sizeof that structure is
1238 actually 32 bytes long, with 4 bytes of padding at the end:
1240 +------+------+------+------+------+-------+-------+------+
1241 | NV | CUR | LEN | IV | MAGIC | STASH | ??? |
1242 +------+------+------+------+------+-------+-------+------+
1243 0 4 8 12 16 20 24 28 32
1245 so what happens if you allocate memory for this structure:
1247 +------+------+------+------+------+-------+-------+------+------+...
1248 | NV | CUR | LEN | IV | MAGIC | STASH | GP | NAME |
1249 +------+------+------+------+------+-------+-------+------+------+...
1250 0 4 8 12 16 20 24 28 32 36
1252 zero it, then copy sizeof(XPVMG) bytes on top of it? Not quite what you
1253 expect, because you copy the area marked ??? onto GP. Now, ??? may have
1254 started out as zero once, but it's quite possible that it isn't. So now,
1255 rather than a nicely zeroed GP, you have it pointing somewhere random.
1258 (In fact, GP ends up pointing at a previous GP structure, because the
1259 principle cause of the padding in XPVMG getting garbage is a copy of
1260 sizeof(XPVMG) bytes from a XPVGV structure in sv_unglob. Right now
1261 this happens to be moot because XPVGV has been re-ordered, with GP
1262 no longer after STASH)
1264 So we are careful and work out the size of used parts of all the
1272 referant = SvRV(sv);
1273 old_type_details = &fake_rv;
1274 if (new_type == SVt_NV)
1275 new_type = SVt_PVNV;
1277 if (new_type < SVt_PVIV) {
1278 new_type = (new_type == SVt_NV)
1279 ? SVt_PVNV : SVt_PVIV;
1284 if (new_type < SVt_PVNV) {
1285 new_type = SVt_PVNV;
1289 assert(new_type > SVt_PV);
1290 assert(SVt_IV < SVt_PV);
1291 assert(SVt_NV < SVt_PV);
1298 /* Because the XPVMG of PL_mess_sv isn't allocated from the arena,
1299 there's no way that it can be safely upgraded, because perl.c
1300 expects to Safefree(SvANY(PL_mess_sv)) */
1301 assert(sv != PL_mess_sv);
1302 /* This flag bit is used to mean other things in other scalar types.
1303 Given that it only has meaning inside the pad, it shouldn't be set
1304 on anything that can get upgraded. */
1305 assert(!SvPAD_TYPED(sv));
1308 if (UNLIKELY(old_type_details->cant_upgrade))
1309 Perl_croak(aTHX_ "Can't upgrade %s (%" UVuf ") to %" UVuf,
1310 sv_reftype(sv, 0), (UV) old_type, (UV) new_type);
1313 if (UNLIKELY(old_type > new_type))
1314 Perl_croak(aTHX_ "sv_upgrade from type %d down to type %d",
1315 (int)old_type, (int)new_type);
1317 new_type_details = bodies_by_type + new_type;
1319 SvFLAGS(sv) &= ~SVTYPEMASK;
1320 SvFLAGS(sv) |= new_type;
1322 /* This can't happen, as SVt_NULL is <= all values of new_type, so one of
1323 the return statements above will have triggered. */
1324 assert (new_type != SVt_NULL);
1327 assert(old_type == SVt_NULL);
1328 SvANY(sv) = (XPVIV*)((char*)&(sv->sv_u.svu_iv) - STRUCT_OFFSET(XPVIV, xiv_iv));
1332 assert(old_type == SVt_NULL);
1333 SvANY(sv) = new_XNV();
1338 assert(new_type_details->body_size);
1341 assert(new_type_details->arena);
1342 assert(new_type_details->arena_size);
1343 /* This points to the start of the allocated area. */
1344 new_body_inline(new_body, new_type);
1345 Zero(new_body, new_type_details->body_size, char);
1346 new_body = ((char *)new_body) - new_type_details->offset;
1348 /* We always allocated the full length item with PURIFY. To do this
1349 we fake things so that arena is false for all 16 types.. */
1350 new_body = new_NOARENAZ(new_type_details);
1352 SvANY(sv) = new_body;
1353 if (new_type == SVt_PVAV) {
1357 if (old_type_details->body_size) {
1360 /* It will have been zeroed when the new body was allocated.
1361 Lets not write to it, in case it confuses a write-back
1367 #ifndef NODEFAULT_SHAREKEYS
1368 HvSHAREKEYS_on(sv); /* key-sharing on by default */
1370 /* start with PERL_HASH_DEFAULT_HvMAX+1 buckets: */
1371 HvMAX(sv) = PERL_HASH_DEFAULT_HvMAX;
1374 /* SVt_NULL isn't the only thing upgraded to AV or HV.
1375 The target created by newSVrv also is, and it can have magic.
1376 However, it never has SvPVX set.
1378 if (old_type == SVt_IV) {
1380 } else if (old_type >= SVt_PV) {
1381 assert(SvPVX_const(sv) == 0);
1384 if (old_type >= SVt_PVMG) {
1385 SvMAGIC_set(sv, ((XPVMG*)old_body)->xmg_u.xmg_magic);
1386 SvSTASH_set(sv, ((XPVMG*)old_body)->xmg_stash);
1388 sv->sv_u.svu_array = NULL; /* or svu_hash */
1393 /* XXX Is this still needed? Was it ever needed? Surely as there is
1394 no route from NV to PVIV, NOK can never be true */
1395 assert(!SvNOKp(sv));
1408 assert(new_type_details->body_size);
1409 /* We always allocated the full length item with PURIFY. To do this
1410 we fake things so that arena is false for all 16 types.. */
1411 if(new_type_details->arena) {
1412 /* This points to the start of the allocated area. */
1413 new_body_inline(new_body, new_type);
1414 Zero(new_body, new_type_details->body_size, char);
1415 new_body = ((char *)new_body) - new_type_details->offset;
1417 new_body = new_NOARENAZ(new_type_details);
1419 SvANY(sv) = new_body;
1421 if (old_type_details->copy) {
1422 /* There is now the potential for an upgrade from something without
1423 an offset (PVNV or PVMG) to something with one (PVCV, PVFM) */
1424 int offset = old_type_details->offset;
1425 int length = old_type_details->copy;
1427 if (new_type_details->offset > old_type_details->offset) {
1428 const int difference
1429 = new_type_details->offset - old_type_details->offset;
1430 offset += difference;
1431 length -= difference;
1433 assert (length >= 0);
1435 Copy((char *)old_body + offset, (char *)new_body + offset, length,
1439 #ifndef NV_ZERO_IS_ALLBITS_ZERO
1440 /* If NV 0.0 is stores as all bits 0 then Zero() already creates a
1441 * correct 0.0 for us. Otherwise, if the old body didn't have an
1442 * NV slot, but the new one does, then we need to initialise the
1443 * freshly created NV slot with whatever the correct bit pattern is
1445 if (old_type_details->zero_nv && !new_type_details->zero_nv
1446 && !isGV_with_GP(sv))
1450 if (UNLIKELY(new_type == SVt_PVIO)) {
1451 IO * const io = MUTABLE_IO(sv);
1452 GV *iogv = gv_fetchpvs("IO::File::", GV_ADD, SVt_PVHV);
1455 /* Clear the stashcache because a new IO could overrule a package
1457 DEBUG_o(Perl_deb(aTHX_ "sv_upgrade clearing PL_stashcache\n"));
1458 hv_clear(PL_stashcache);
1460 SvSTASH_set(io, MUTABLE_HV(SvREFCNT_inc(GvHV(iogv))));
1461 IoPAGE_LEN(sv) = 60;
1463 if (UNLIKELY(new_type == SVt_REGEXP))
1464 sv->sv_u.svu_rx = (regexp *)new_body;
1465 else if (old_type < SVt_PV) {
1466 /* referant will be NULL unless the old type was SVt_IV emulating
1468 sv->sv_u.svu_rv = referant;
1472 Perl_croak(aTHX_ "panic: sv_upgrade to unknown type %lu",
1473 (unsigned long)new_type);
1476 if (old_type > SVt_IV) {
1480 /* Note that there is an assumption that all bodies of types that
1481 can be upgraded came from arenas. Only the more complex non-
1482 upgradable types are allowed to be directly malloc()ed. */
1483 assert(old_type_details->arena);
1484 del_body((void*)((char*)old_body + old_type_details->offset),
1485 &PL_body_roots[old_type]);
1491 =for apidoc sv_backoff
1493 Remove any string offset. You should normally use the C<SvOOK_off> macro
1500 Perl_sv_backoff(SV *const sv)
1503 const char * const s = SvPVX_const(sv);
1505 PERL_ARGS_ASSERT_SV_BACKOFF;
1508 assert(SvTYPE(sv) != SVt_PVHV);
1509 assert(SvTYPE(sv) != SVt_PVAV);
1511 SvOOK_offset(sv, delta);
1513 SvLEN_set(sv, SvLEN(sv) + delta);
1514 SvPV_set(sv, SvPVX(sv) - delta);
1515 Move(s, SvPVX(sv), SvCUR(sv)+1, char);
1516 SvFLAGS(sv) &= ~SVf_OOK;
1523 Expands the character buffer in the SV. If necessary, uses C<sv_unref> and
1524 upgrades the SV to C<SVt_PV>. Returns a pointer to the character buffer.
1525 Use the C<SvGROW> wrapper instead.
1530 static void S_sv_uncow(pTHX_ SV * const sv, const U32 flags);
1533 Perl_sv_grow(pTHX_ SV *const sv, STRLEN newlen)
1537 PERL_ARGS_ASSERT_SV_GROW;
1541 if (SvTYPE(sv) < SVt_PV) {
1542 sv_upgrade(sv, SVt_PV);
1543 s = SvPVX_mutable(sv);
1545 else if (SvOOK(sv)) { /* pv is offset? */
1547 s = SvPVX_mutable(sv);
1548 if (newlen > SvLEN(sv))
1549 newlen += 10 * (newlen - SvCUR(sv)); /* avoid copy each time */
1553 if (SvIsCOW(sv)) S_sv_uncow(aTHX_ sv, 0);
1554 s = SvPVX_mutable(sv);
1557 #ifdef PERL_NEW_COPY_ON_WRITE
1558 /* the new COW scheme uses SvPVX(sv)[SvLEN(sv)-1] (if spare)
1559 * to store the COW count. So in general, allocate one more byte than
1560 * asked for, to make it likely this byte is always spare: and thus
1561 * make more strings COW-able.
1562 * If the new size is a big power of two, don't bother: we assume the
1563 * caller wanted a nice 2^N sized block and will be annoyed at getting
1569 #if defined(PERL_USE_MALLOC_SIZE) && defined(Perl_safesysmalloc_size)
1570 #define PERL_UNWARANTED_CHUMMINESS_WITH_MALLOC
1573 if (newlen > SvLEN(sv)) { /* need more room? */
1574 STRLEN minlen = SvCUR(sv);
1575 minlen += (minlen >> PERL_STRLEN_EXPAND_SHIFT) + 10;
1576 if (newlen < minlen)
1578 #ifndef PERL_UNWARANTED_CHUMMINESS_WITH_MALLOC
1580 /* Don't round up on the first allocation, as odds are pretty good that
1581 * the initial request is accurate as to what is really needed */
1583 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_UNWARANTED_CHUMMINESS_WITH_MALLOC
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)
1620 PERL_ARGS_ASSERT_SV_SETIV;
1622 SV_CHECK_THINKFIRST_COW_DROP(sv);
1623 switch (SvTYPE(sv)) {
1626 sv_upgrade(sv, SVt_IV);
1629 sv_upgrade(sv, SVt_PVIV);
1633 if (!isGV_with_GP(sv))
1640 /* diag_listed_as: Can't coerce %s to %s in %s */
1641 Perl_croak(aTHX_ "Can't coerce %s to integer in %s", sv_reftype(sv,0),
1645 (void)SvIOK_only(sv); /* validate number */
1651 =for apidoc sv_setiv_mg
1653 Like C<sv_setiv>, but also handles 'set' magic.
1659 Perl_sv_setiv_mg(pTHX_ SV *const sv, const IV i)
1661 PERL_ARGS_ASSERT_SV_SETIV_MG;
1668 =for apidoc sv_setuv
1670 Copies an unsigned integer into the given SV, upgrading first if necessary.
1671 Does not handle 'set' magic. See also C<sv_setuv_mg>.
1677 Perl_sv_setuv(pTHX_ SV *const sv, const UV u)
1679 PERL_ARGS_ASSERT_SV_SETUV;
1681 /* With the if statement to ensure that integers are stored as IVs whenever
1683 u=1.49 s=0.52 cu=72.49 cs=10.64 scripts=270 tests=20865
1686 u=1.35 s=0.47 cu=73.45 cs=11.43 scripts=270 tests=20865
1688 If you wish to remove the following if statement, so that this routine
1689 (and its callers) always return UVs, please benchmark to see what the
1690 effect is. Modern CPUs may be different. Or may not :-)
1692 if (u <= (UV)IV_MAX) {
1693 sv_setiv(sv, (IV)u);
1702 =for apidoc sv_setuv_mg
1704 Like C<sv_setuv>, but also handles 'set' magic.
1710 Perl_sv_setuv_mg(pTHX_ SV *const sv, const UV u)
1712 PERL_ARGS_ASSERT_SV_SETUV_MG;
1719 =for apidoc sv_setnv
1721 Copies a double into the given SV, upgrading first if necessary.
1722 Does not handle 'set' magic. See also C<sv_setnv_mg>.
1728 Perl_sv_setnv(pTHX_ SV *const sv, const NV num)
1730 PERL_ARGS_ASSERT_SV_SETNV;
1732 SV_CHECK_THINKFIRST_COW_DROP(sv);
1733 switch (SvTYPE(sv)) {
1736 sv_upgrade(sv, SVt_NV);
1740 sv_upgrade(sv, SVt_PVNV);
1744 if (!isGV_with_GP(sv))
1751 /* diag_listed_as: Can't coerce %s to %s in %s */
1752 Perl_croak(aTHX_ "Can't coerce %s to number in %s", sv_reftype(sv,0),
1757 (void)SvNOK_only(sv); /* validate number */
1762 =for apidoc sv_setnv_mg
1764 Like C<sv_setnv>, but also handles 'set' magic.
1770 Perl_sv_setnv_mg(pTHX_ SV *const sv, const NV num)
1772 PERL_ARGS_ASSERT_SV_SETNV_MG;
1778 /* Return a cleaned-up, printable version of sv, for non-numeric, or
1779 * not incrementable warning display.
1780 * Originally part of S_not_a_number().
1781 * The return value may be != tmpbuf.
1785 S_sv_display(pTHX_ SV *const sv, char *tmpbuf, STRLEN tmpbuf_size) {
1788 PERL_ARGS_ASSERT_SV_DISPLAY;
1791 SV *dsv = newSVpvs_flags("", SVs_TEMP);
1792 pv = sv_uni_display(dsv, sv, 10, UNI_DISPLAY_ISPRINT);
1795 const char * const limit = tmpbuf + tmpbuf_size - 8;
1796 /* each *s can expand to 4 chars + "...\0",
1797 i.e. need room for 8 chars */
1799 const char *s = SvPVX_const(sv);
1800 const char * const end = s + SvCUR(sv);
1801 for ( ; s < end && d < limit; s++ ) {
1803 if (! isASCII(ch) && !isPRINT_LC(ch)) {
1807 /* Map to ASCII "equivalent" of Latin1 */
1808 ch = LATIN1_TO_NATIVE(NATIVE_TO_LATIN1(ch) & 127);
1814 else if (ch == '\r') {
1818 else if (ch == '\f') {
1822 else if (ch == '\\') {
1826 else if (ch == '\0') {
1830 else if (isPRINT_LC(ch))
1849 /* Print an "isn't numeric" warning, using a cleaned-up,
1850 * printable version of the offending string
1854 S_not_a_number(pTHX_ SV *const sv)
1859 PERL_ARGS_ASSERT_NOT_A_NUMBER;
1861 pv = sv_display(sv, tmpbuf, sizeof(tmpbuf));
1864 Perl_warner(aTHX_ packWARN(WARN_NUMERIC),
1865 /* diag_listed_as: Argument "%s" isn't numeric%s */
1866 "Argument \"%s\" isn't numeric in %s", pv,
1869 Perl_warner(aTHX_ packWARN(WARN_NUMERIC),
1870 /* diag_listed_as: Argument "%s" isn't numeric%s */
1871 "Argument \"%s\" isn't numeric", pv);
1875 S_not_incrementable(pTHX_ SV *const sv) {
1879 PERL_ARGS_ASSERT_NOT_INCREMENTABLE;
1881 pv = sv_display(sv, tmpbuf, sizeof(tmpbuf));
1883 Perl_warner(aTHX_ packWARN(WARN_NUMERIC),
1884 "Argument \"%s\" treated as 0 in increment (++)", pv);
1888 =for apidoc looks_like_number
1890 Test if the content of an SV looks like a number (or is a number).
1891 C<Inf> and C<Infinity> are treated as numbers (so will not issue a
1892 non-numeric warning), even if your atof() doesn't grok them. Get-magic is
1899 Perl_looks_like_number(pTHX_ SV *const sv)
1904 PERL_ARGS_ASSERT_LOOKS_LIKE_NUMBER;
1906 if (SvPOK(sv) || SvPOKp(sv)) {
1907 sbegin = SvPV_nomg_const(sv, len);
1910 return SvFLAGS(sv) & (SVf_NOK|SVp_NOK|SVf_IOK|SVp_IOK);
1911 return grok_number(sbegin, len, NULL);
1915 S_glob_2number(pTHX_ GV * const gv)
1917 PERL_ARGS_ASSERT_GLOB_2NUMBER;
1919 /* We know that all GVs stringify to something that is not-a-number,
1920 so no need to test that. */
1921 if (ckWARN(WARN_NUMERIC))
1923 SV *const buffer = sv_newmortal();
1924 gv_efullname3(buffer, gv, "*");
1925 not_a_number(buffer);
1927 /* We just want something true to return, so that S_sv_2iuv_common
1928 can tail call us and return true. */
1932 /* Actually, ISO C leaves conversion of UV to IV undefined, but
1933 until proven guilty, assume that things are not that bad... */
1938 As 64 bit platforms often have an NV that doesn't preserve all bits of
1939 an IV (an assumption perl has been based on to date) it becomes necessary
1940 to remove the assumption that the NV always carries enough precision to
1941 recreate the IV whenever needed, and that the NV is the canonical form.
1942 Instead, IV/UV and NV need to be given equal rights. So as to not lose
1943 precision as a side effect of conversion (which would lead to insanity
1944 and the dragon(s) in t/op/numconvert.t getting very angry) the intent is
1945 1) to distinguish between IV/UV/NV slots that have a valid conversion cached
1946 where precision was lost, and IV/UV/NV slots that have a valid conversion
1947 which has lost no precision
1948 2) to ensure that if a numeric conversion to one form is requested that
1949 would lose precision, the precise conversion (or differently
1950 imprecise conversion) is also performed and cached, to prevent
1951 requests for different numeric formats on the same SV causing
1952 lossy conversion chains. (lossless conversion chains are perfectly
1957 SvIOKp is true if the IV slot contains a valid value
1958 SvIOK is true only if the IV value is accurate (UV if SvIOK_UV true)
1959 SvNOKp is true if the NV slot contains a valid value
1960 SvNOK is true only if the NV value is accurate
1963 while converting from PV to NV, check to see if converting that NV to an
1964 IV(or UV) would lose accuracy over a direct conversion from PV to
1965 IV(or UV). If it would, cache both conversions, return NV, but mark
1966 SV as IOK NOKp (ie not NOK).
1968 While converting from PV to IV, check to see if converting that IV to an
1969 NV would lose accuracy over a direct conversion from PV to NV. If it
1970 would, cache both conversions, flag similarly.
1972 Before, the SV value "3.2" could become NV=3.2 IV=3 NOK, IOK quite
1973 correctly because if IV & NV were set NV *always* overruled.
1974 Now, "3.2" will become NV=3.2 IV=3 NOK, IOKp, because the flag's meaning
1975 changes - now IV and NV together means that the two are interchangeable:
1976 SvIVX == (IV) SvNVX && SvNVX == (NV) SvIVX;
1978 The benefit of this is that operations such as pp_add know that if
1979 SvIOK is true for both left and right operands, then integer addition
1980 can be used instead of floating point (for cases where the result won't
1981 overflow). Before, floating point was always used, which could lead to
1982 loss of precision compared with integer addition.
1984 * making IV and NV equal status should make maths accurate on 64 bit
1986 * may speed up maths somewhat if pp_add and friends start to use
1987 integers when possible instead of fp. (Hopefully the overhead in
1988 looking for SvIOK and checking for overflow will not outweigh the
1989 fp to integer speedup)
1990 * will slow down integer operations (callers of SvIV) on "inaccurate"
1991 values, as the change from SvIOK to SvIOKp will cause a call into
1992 sv_2iv each time rather than a macro access direct to the IV slot
1993 * should speed up number->string conversion on integers as IV is
1994 favoured when IV and NV are equally accurate
1996 ####################################################################
1997 You had better be using SvIOK_notUV if you want an IV for arithmetic:
1998 SvIOK is true if (IV or UV), so you might be getting (IV)SvUV.
1999 On the other hand, SvUOK is true iff UV.
2000 ####################################################################
2002 Your mileage will vary depending your CPU's relative fp to integer
2006 #ifndef NV_PRESERVES_UV
2007 # define IS_NUMBER_UNDERFLOW_IV 1
2008 # define IS_NUMBER_UNDERFLOW_UV 2
2009 # define IS_NUMBER_IV_AND_UV 2
2010 # define IS_NUMBER_OVERFLOW_IV 4
2011 # define IS_NUMBER_OVERFLOW_UV 5
2013 /* sv_2iuv_non_preserve(): private routine for use by sv_2iv() and sv_2uv() */
2015 /* For sv_2nv these three cases are "SvNOK and don't bother casting" */
2017 S_sv_2iuv_non_preserve(pTHX_ SV *const sv
2023 PERL_ARGS_ASSERT_SV_2IUV_NON_PRESERVE;
2024 PERL_UNUSED_CONTEXT;
2026 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));
2027 if (SvNVX(sv) < (NV)IV_MIN) {
2028 (void)SvIOKp_on(sv);
2030 SvIV_set(sv, IV_MIN);
2031 return IS_NUMBER_UNDERFLOW_IV;
2033 if (SvNVX(sv) > (NV)UV_MAX) {
2034 (void)SvIOKp_on(sv);
2037 SvUV_set(sv, UV_MAX);
2038 return IS_NUMBER_OVERFLOW_UV;
2040 (void)SvIOKp_on(sv);
2042 /* Can't use strtol etc to convert this string. (See truth table in
2044 if (SvNVX(sv) <= (UV)IV_MAX) {
2045 SvIV_set(sv, I_V(SvNVX(sv)));
2046 if ((NV)(SvIVX(sv)) == SvNVX(sv)) {
2047 SvIOK_on(sv); /* Integer is precise. NOK, IOK */
2049 /* Integer is imprecise. NOK, IOKp */
2051 return SvNVX(sv) < 0 ? IS_NUMBER_UNDERFLOW_UV : IS_NUMBER_IV_AND_UV;
2054 SvUV_set(sv, U_V(SvNVX(sv)));
2055 if ((NV)(SvUVX(sv)) == SvNVX(sv)) {
2056 if (SvUVX(sv) == UV_MAX) {
2057 /* As we know that NVs don't preserve UVs, UV_MAX cannot
2058 possibly be preserved by NV. Hence, it must be overflow.
2060 return IS_NUMBER_OVERFLOW_UV;
2062 SvIOK_on(sv); /* Integer is precise. NOK, UOK */
2064 /* Integer is imprecise. NOK, IOKp */
2066 return IS_NUMBER_OVERFLOW_IV;
2068 #endif /* !NV_PRESERVES_UV*/
2071 S_sv_2iuv_common(pTHX_ SV *const sv)
2073 PERL_ARGS_ASSERT_SV_2IUV_COMMON;
2076 /* erm. not sure. *should* never get NOKp (without NOK) from sv_2nv
2077 * without also getting a cached IV/UV from it at the same time
2078 * (ie PV->NV conversion should detect loss of accuracy and cache
2079 * IV or UV at same time to avoid this. */
2080 /* IV-over-UV optimisation - choose to cache IV if possible */
2082 if (SvTYPE(sv) == SVt_NV)
2083 sv_upgrade(sv, SVt_PVNV);
2085 (void)SvIOKp_on(sv); /* Must do this first, to clear any SvOOK */
2086 /* < not <= as for NV doesn't preserve UV, ((NV)IV_MAX+1) will almost
2087 certainly cast into the IV range at IV_MAX, whereas the correct
2088 answer is the UV IV_MAX +1. Hence < ensures that dodgy boundary
2090 #if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan)
2091 if (Perl_isnan(SvNVX(sv))) {
2097 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2098 SvIV_set(sv, I_V(SvNVX(sv)));
2099 if (SvNVX(sv) == (NV) SvIVX(sv)
2100 #ifndef NV_PRESERVES_UV
2101 && (((UV)1 << NV_PRESERVES_UV_BITS) >
2102 (UV)(SvIVX(sv) > 0 ? SvIVX(sv) : -SvIVX(sv)))
2103 /* Don't flag it as "accurately an integer" if the number
2104 came from a (by definition imprecise) NV operation, and
2105 we're outside the range of NV integer precision */
2109 SvIOK_on(sv); /* Can this go wrong with rounding? NWC */
2111 /* scalar has trailing garbage, eg "42a" */
2113 DEBUG_c(PerlIO_printf(Perl_debug_log,
2114 "0x%"UVxf" iv(%"NVgf" => %"IVdf") (precise)\n",
2120 /* IV not precise. No need to convert from PV, as NV
2121 conversion would already have cached IV if it detected
2122 that PV->IV would be better than PV->NV->IV
2123 flags already correct - don't set public IOK. */
2124 DEBUG_c(PerlIO_printf(Perl_debug_log,
2125 "0x%"UVxf" iv(%"NVgf" => %"IVdf") (imprecise)\n",
2130 /* Can the above go wrong if SvIVX == IV_MIN and SvNVX < IV_MIN,
2131 but the cast (NV)IV_MIN rounds to a the value less (more
2132 negative) than IV_MIN which happens to be equal to SvNVX ??
2133 Analogous to 0xFFFFFFFFFFFFFFFF rounding up to NV (2**64) and
2134 NV rounding back to 0xFFFFFFFFFFFFFFFF, so UVX == UV(NVX) and
2135 (NV)UVX == NVX are both true, but the values differ. :-(
2136 Hopefully for 2s complement IV_MIN is something like
2137 0x8000000000000000 which will be exact. NWC */
2140 SvUV_set(sv, U_V(SvNVX(sv)));
2142 (SvNVX(sv) == (NV) SvUVX(sv))
2143 #ifndef NV_PRESERVES_UV
2144 /* Make sure it's not 0xFFFFFFFFFFFFFFFF */
2145 /*&& (SvUVX(sv) != UV_MAX) irrelevant with code below */
2146 && (((UV)1 << NV_PRESERVES_UV_BITS) > SvUVX(sv))
2147 /* Don't flag it as "accurately an integer" if the number
2148 came from a (by definition imprecise) NV operation, and
2149 we're outside the range of NV integer precision */
2155 DEBUG_c(PerlIO_printf(Perl_debug_log,
2156 "0x%"UVxf" 2iv(%"UVuf" => %"IVdf") (as unsigned)\n",
2162 else if (SvPOKp(sv)) {
2164 const int numtype = grok_number(SvPVX_const(sv), SvCUR(sv), &value);
2165 /* We want to avoid a possible problem when we cache an IV/ a UV which
2166 may be later translated to an NV, and the resulting NV is not
2167 the same as the direct translation of the initial string
2168 (eg 123.456 can shortcut to the IV 123 with atol(), but we must
2169 be careful to ensure that the value with the .456 is around if the
2170 NV value is requested in the future).
2172 This means that if we cache such an IV/a UV, we need to cache the
2173 NV as well. Moreover, we trade speed for space, and do not
2174 cache the NV if we are sure it's not needed.
2177 /* SVt_PVNV is one higher than SVt_PVIV, hence this order */
2178 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2179 == IS_NUMBER_IN_UV) {
2180 /* It's definitely an integer, only upgrade to PVIV */
2181 if (SvTYPE(sv) < SVt_PVIV)
2182 sv_upgrade(sv, SVt_PVIV);
2184 } else if (SvTYPE(sv) < SVt_PVNV)
2185 sv_upgrade(sv, SVt_PVNV);
2187 /* If NVs preserve UVs then we only use the UV value if we know that
2188 we aren't going to call atof() below. If NVs don't preserve UVs
2189 then the value returned may have more precision than atof() will
2190 return, even though value isn't perfectly accurate. */
2191 if ((numtype & (IS_NUMBER_IN_UV
2192 #ifdef NV_PRESERVES_UV
2195 )) == IS_NUMBER_IN_UV) {
2196 /* This won't turn off the public IOK flag if it was set above */
2197 (void)SvIOKp_on(sv);
2199 if (!(numtype & IS_NUMBER_NEG)) {
2201 if (value <= (UV)IV_MAX) {
2202 SvIV_set(sv, (IV)value);
2204 /* it didn't overflow, and it was positive. */
2205 SvUV_set(sv, value);
2209 /* 2s complement assumption */
2210 if (value <= (UV)IV_MIN) {
2211 SvIV_set(sv, -(IV)value);
2213 /* Too negative for an IV. This is a double upgrade, but
2214 I'm assuming it will be rare. */
2215 if (SvTYPE(sv) < SVt_PVNV)
2216 sv_upgrade(sv, SVt_PVNV);
2220 SvNV_set(sv, -(NV)value);
2221 SvIV_set(sv, IV_MIN);
2225 /* For !NV_PRESERVES_UV and IS_NUMBER_IN_UV and IS_NUMBER_NOT_INT we
2226 will be in the previous block to set the IV slot, and the next
2227 block to set the NV slot. So no else here. */
2229 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2230 != IS_NUMBER_IN_UV) {
2231 /* It wasn't an (integer that doesn't overflow the UV). */
2232 SvNV_set(sv, Atof(SvPVX_const(sv)));
2234 if (! numtype && ckWARN(WARN_NUMERIC))
2237 #if defined(USE_LONG_DOUBLE)
2238 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2iv(%" PERL_PRIgldbl ")\n",
2239 PTR2UV(sv), SvNVX(sv)));
2241 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2iv(%"NVgf")\n",
2242 PTR2UV(sv), SvNVX(sv)));
2245 #ifdef NV_PRESERVES_UV
2246 (void)SvIOKp_on(sv);
2248 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2249 SvIV_set(sv, I_V(SvNVX(sv)));
2250 if ((NV)(SvIVX(sv)) == SvNVX(sv)) {
2253 NOOP; /* Integer is imprecise. NOK, IOKp */
2255 /* UV will not work better than IV */
2257 if (SvNVX(sv) > (NV)UV_MAX) {
2259 /* Integer is inaccurate. NOK, IOKp, is UV */
2260 SvUV_set(sv, UV_MAX);
2262 SvUV_set(sv, U_V(SvNVX(sv)));
2263 /* 0xFFFFFFFFFFFFFFFF not an issue in here, NVs
2264 NV preservse UV so can do correct comparison. */
2265 if ((NV)(SvUVX(sv)) == SvNVX(sv)) {
2268 NOOP; /* Integer is imprecise. NOK, IOKp, is UV */
2273 #else /* NV_PRESERVES_UV */
2274 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2275 == (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT)) {
2276 /* The IV/UV slot will have been set from value returned by
2277 grok_number above. The NV slot has just been set using
2280 assert (SvIOKp(sv));
2282 if (((UV)1 << NV_PRESERVES_UV_BITS) >
2283 U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))) {
2284 /* Small enough to preserve all bits. */
2285 (void)SvIOKp_on(sv);
2287 SvIV_set(sv, I_V(SvNVX(sv)));
2288 if ((NV)(SvIVX(sv)) == SvNVX(sv))
2290 /* Assumption: first non-preserved integer is < IV_MAX,
2291 this NV is in the preserved range, therefore: */
2292 if (!(U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))
2294 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);
2298 0 0 already failed to read UV.
2299 0 1 already failed to read UV.
2300 1 0 you won't get here in this case. IV/UV
2301 slot set, public IOK, Atof() unneeded.
2302 1 1 already read UV.
2303 so there's no point in sv_2iuv_non_preserve() attempting
2304 to use atol, strtol, strtoul etc. */
2306 sv_2iuv_non_preserve (sv, numtype);
2308 sv_2iuv_non_preserve (sv);
2312 #endif /* NV_PRESERVES_UV */
2313 /* It might be more code efficient to go through the entire logic above
2314 and conditionally set with SvIOKp_on() rather than SvIOK(), but it
2315 gets complex and potentially buggy, so more programmer efficient
2316 to do it this way, by turning off the public flags: */
2318 SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK);
2322 if (isGV_with_GP(sv))
2323 return glob_2number(MUTABLE_GV(sv));
2325 if (!PL_localizing && ckWARN(WARN_UNINITIALIZED))
2327 if (SvTYPE(sv) < SVt_IV)
2328 /* Typically the caller expects that sv_any is not NULL now. */
2329 sv_upgrade(sv, SVt_IV);
2330 /* Return 0 from the caller. */
2337 =for apidoc sv_2iv_flags
2339 Return the integer value of an SV, doing any necessary string
2340 conversion. If flags includes SV_GMAGIC, does an mg_get() first.
2341 Normally used via the C<SvIV(sv)> and C<SvIVx(sv)> macros.
2347 Perl_sv_2iv_flags(pTHX_ SV *const sv, const I32 flags)
2349 PERL_ARGS_ASSERT_SV_2IV_FLAGS;
2351 assert (SvTYPE(sv) != SVt_PVAV && SvTYPE(sv) != SVt_PVHV
2352 && SvTYPE(sv) != SVt_PVFM);
2354 if (SvGMAGICAL(sv) && (flags & SV_GMAGIC))
2360 if (flags & SV_SKIP_OVERLOAD)
2362 tmpstr = AMG_CALLunary(sv, numer_amg);
2363 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2364 return SvIV(tmpstr);
2367 return PTR2IV(SvRV(sv));
2370 if (SvVALID(sv) || isREGEXP(sv)) {
2371 /* FBMs use the space for SvIVX and SvNVX for other purposes, and use
2372 the same flag bit as SVf_IVisUV, so must not let them cache IVs.
2373 In practice they are extremely unlikely to actually get anywhere
2374 accessible by user Perl code - the only way that I'm aware of is when
2375 a constant subroutine which is used as the second argument to index.
2377 Regexps have no SvIVX and SvNVX fields.
2379 assert(isREGEXP(sv) || SvPOKp(sv));
2382 const char * const ptr =
2383 isREGEXP(sv) ? RX_WRAPPED((REGEXP*)sv) : SvPVX_const(sv);
2385 = grok_number(ptr, SvCUR(sv), &value);
2387 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2388 == IS_NUMBER_IN_UV) {
2389 /* It's definitely an integer */
2390 if (numtype & IS_NUMBER_NEG) {
2391 if (value < (UV)IV_MIN)
2394 if (value < (UV)IV_MAX)
2399 if (ckWARN(WARN_NUMERIC))
2402 return I_V(Atof(ptr));
2406 if (SvTHINKFIRST(sv)) {
2407 #ifdef PERL_OLD_COPY_ON_WRITE
2409 sv_force_normal_flags(sv, 0);
2412 if (SvREADONLY(sv) && !SvOK(sv)) {
2413 if (ckWARN(WARN_UNINITIALIZED))
2420 if (S_sv_2iuv_common(aTHX_ sv))
2424 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2iv(%"IVdf")\n",
2425 PTR2UV(sv),SvIVX(sv)));
2426 return SvIsUV(sv) ? (IV)SvUVX(sv) : SvIVX(sv);
2430 =for apidoc sv_2uv_flags
2432 Return the unsigned integer value of an SV, doing any necessary string
2433 conversion. If flags includes SV_GMAGIC, does an mg_get() first.
2434 Normally used via the C<SvUV(sv)> and C<SvUVx(sv)> macros.
2440 Perl_sv_2uv_flags(pTHX_ SV *const sv, const I32 flags)
2442 PERL_ARGS_ASSERT_SV_2UV_FLAGS;
2444 if (SvGMAGICAL(sv) && (flags & SV_GMAGIC))
2450 if (flags & SV_SKIP_OVERLOAD)
2452 tmpstr = AMG_CALLunary(sv, numer_amg);
2453 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2454 return SvUV(tmpstr);
2457 return PTR2UV(SvRV(sv));
2460 if (SvVALID(sv) || isREGEXP(sv)) {
2461 /* FBMs use the space for SvIVX and SvNVX for other purposes, and use
2462 the same flag bit as SVf_IVisUV, so must not let them cache IVs.
2463 Regexps have no SvIVX and SvNVX fields. */
2464 assert(isREGEXP(sv) || SvPOKp(sv));
2467 const char * const ptr =
2468 isREGEXP(sv) ? RX_WRAPPED((REGEXP*)sv) : SvPVX_const(sv);
2470 = grok_number(ptr, SvCUR(sv), &value);
2472 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2473 == IS_NUMBER_IN_UV) {
2474 /* It's definitely an integer */
2475 if (!(numtype & IS_NUMBER_NEG))
2479 if (ckWARN(WARN_NUMERIC))
2482 return U_V(Atof(ptr));
2486 if (SvTHINKFIRST(sv)) {
2487 #ifdef PERL_OLD_COPY_ON_WRITE
2489 sv_force_normal_flags(sv, 0);
2492 if (SvREADONLY(sv) && !SvOK(sv)) {
2493 if (ckWARN(WARN_UNINITIALIZED))
2500 if (S_sv_2iuv_common(aTHX_ sv))
2504 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2uv(%"UVuf")\n",
2505 PTR2UV(sv),SvUVX(sv)));
2506 return SvIsUV(sv) ? SvUVX(sv) : (UV)SvIVX(sv);
2510 =for apidoc sv_2nv_flags
2512 Return the num value of an SV, doing any necessary string or integer
2513 conversion. If flags includes SV_GMAGIC, does an mg_get() first.
2514 Normally used via the C<SvNV(sv)> and C<SvNVx(sv)> macros.
2520 Perl_sv_2nv_flags(pTHX_ SV *const sv, const I32 flags)
2522 PERL_ARGS_ASSERT_SV_2NV_FLAGS;
2524 assert (SvTYPE(sv) != SVt_PVAV && SvTYPE(sv) != SVt_PVHV
2525 && SvTYPE(sv) != SVt_PVFM);
2526 if (SvGMAGICAL(sv) || SvVALID(sv) || isREGEXP(sv)) {
2527 /* FBMs use the space for SvIVX and SvNVX for other purposes, and use
2528 the same flag bit as SVf_IVisUV, so must not let them cache NVs.
2529 Regexps have no SvIVX and SvNVX fields. */
2531 if (flags & SV_GMAGIC)
2535 if (SvPOKp(sv) && !SvIOKp(sv)) {
2536 ptr = SvPVX_const(sv);
2538 if (!SvIOKp(sv) && ckWARN(WARN_NUMERIC) &&
2539 !grok_number(ptr, SvCUR(sv), NULL))
2545 return (NV)SvUVX(sv);
2547 return (NV)SvIVX(sv);
2553 ptr = RX_WRAPPED((REGEXP *)sv);
2556 assert(SvTYPE(sv) >= SVt_PVMG);
2557 /* This falls through to the report_uninit near the end of the
2559 } else if (SvTHINKFIRST(sv)) {
2564 if (flags & SV_SKIP_OVERLOAD)
2566 tmpstr = AMG_CALLunary(sv, numer_amg);
2567 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2568 return SvNV(tmpstr);
2571 return PTR2NV(SvRV(sv));
2573 #ifdef PERL_OLD_COPY_ON_WRITE
2575 sv_force_normal_flags(sv, 0);
2578 if (SvREADONLY(sv) && !SvOK(sv)) {
2579 if (ckWARN(WARN_UNINITIALIZED))
2584 if (SvTYPE(sv) < SVt_NV) {
2585 /* The logic to use SVt_PVNV if necessary is in sv_upgrade. */
2586 sv_upgrade(sv, SVt_NV);
2587 #ifdef USE_LONG_DOUBLE
2589 STORE_NUMERIC_LOCAL_SET_STANDARD();
2590 PerlIO_printf(Perl_debug_log,
2591 "0x%"UVxf" num(%" PERL_PRIgldbl ")\n",
2592 PTR2UV(sv), SvNVX(sv));
2593 RESTORE_NUMERIC_LOCAL();
2597 STORE_NUMERIC_LOCAL_SET_STANDARD();
2598 PerlIO_printf(Perl_debug_log, "0x%"UVxf" num(%"NVgf")\n",
2599 PTR2UV(sv), SvNVX(sv));
2600 RESTORE_NUMERIC_LOCAL();
2604 else if (SvTYPE(sv) < SVt_PVNV)
2605 sv_upgrade(sv, SVt_PVNV);
2610 SvNV_set(sv, SvIsUV(sv) ? (NV)SvUVX(sv) : (NV)SvIVX(sv));
2611 #ifdef NV_PRESERVES_UV
2617 /* Only set the public NV OK flag if this NV preserves the IV */
2618 /* Check it's not 0xFFFFFFFFFFFFFFFF */
2620 SvIsUV(sv) ? ((SvUVX(sv) != UV_MAX)&&(SvUVX(sv) == U_V(SvNVX(sv))))
2621 : (SvIVX(sv) == I_V(SvNVX(sv))))
2627 else if (SvPOKp(sv)) {
2629 const int numtype = grok_number(SvPVX_const(sv), SvCUR(sv), &value);
2630 if (!SvIOKp(sv) && !numtype && ckWARN(WARN_NUMERIC))
2632 #ifdef NV_PRESERVES_UV
2633 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2634 == IS_NUMBER_IN_UV) {
2635 /* It's definitely an integer */
2636 SvNV_set(sv, (numtype & IS_NUMBER_NEG) ? -(NV)value : (NV)value);
2638 SvNV_set(sv, Atof(SvPVX_const(sv)));
2644 SvNV_set(sv, Atof(SvPVX_const(sv)));
2645 /* Only set the public NV OK flag if this NV preserves the value in
2646 the PV at least as well as an IV/UV would.
2647 Not sure how to do this 100% reliably. */
2648 /* if that shift count is out of range then Configure's test is
2649 wonky. We shouldn't be in here with NV_PRESERVES_UV_BITS ==
2651 if (((UV)1 << NV_PRESERVES_UV_BITS) >
2652 U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))) {
2653 SvNOK_on(sv); /* Definitely small enough to preserve all bits */
2654 } else if (!(numtype & IS_NUMBER_IN_UV)) {
2655 /* Can't use strtol etc to convert this string, so don't try.
2656 sv_2iv and sv_2uv will use the NV to convert, not the PV. */
2659 /* value has been set. It may not be precise. */
2660 if ((numtype & IS_NUMBER_NEG) && (value > (UV)IV_MIN)) {
2661 /* 2s complement assumption for (UV)IV_MIN */
2662 SvNOK_on(sv); /* Integer is too negative. */
2667 if (numtype & IS_NUMBER_NEG) {
2668 SvIV_set(sv, -(IV)value);
2669 } else if (value <= (UV)IV_MAX) {
2670 SvIV_set(sv, (IV)value);
2672 SvUV_set(sv, value);
2676 if (numtype & IS_NUMBER_NOT_INT) {
2677 /* I believe that even if the original PV had decimals,
2678 they are lost beyond the limit of the FP precision.
2679 However, neither is canonical, so both only get p
2680 flags. NWC, 2000/11/25 */
2681 /* Both already have p flags, so do nothing */
2683 const NV nv = SvNVX(sv);
2684 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2685 if (SvIVX(sv) == I_V(nv)) {
2688 /* It had no "." so it must be integer. */
2692 /* between IV_MAX and NV(UV_MAX).
2693 Could be slightly > UV_MAX */
2695 if (numtype & IS_NUMBER_NOT_INT) {
2696 /* UV and NV both imprecise. */
2698 const UV nv_as_uv = U_V(nv);
2700 if (value == nv_as_uv && SvUVX(sv) != UV_MAX) {
2709 /* It might be more code efficient to go through the entire logic above
2710 and conditionally set with SvNOKp_on() rather than SvNOK(), but it
2711 gets complex and potentially buggy, so more programmer efficient
2712 to do it this way, by turning off the public flags: */
2714 SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK);
2715 #endif /* NV_PRESERVES_UV */
2718 if (isGV_with_GP(sv)) {
2719 glob_2number(MUTABLE_GV(sv));
2723 if (!PL_localizing && ckWARN(WARN_UNINITIALIZED))
2725 assert (SvTYPE(sv) >= SVt_NV);
2726 /* Typically the caller expects that sv_any is not NULL now. */
2727 /* XXX Ilya implies that this is a bug in callers that assume this
2728 and ideally should be fixed. */
2731 #if defined(USE_LONG_DOUBLE)
2733 STORE_NUMERIC_LOCAL_SET_STANDARD();
2734 PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2nv(%" PERL_PRIgldbl ")\n",
2735 PTR2UV(sv), SvNVX(sv));
2736 RESTORE_NUMERIC_LOCAL();
2740 STORE_NUMERIC_LOCAL_SET_STANDARD();
2741 PerlIO_printf(Perl_debug_log, "0x%"UVxf" 1nv(%"NVgf")\n",
2742 PTR2UV(sv), SvNVX(sv));
2743 RESTORE_NUMERIC_LOCAL();
2752 Return an SV with the numeric value of the source SV, doing any necessary
2753 reference or overload conversion. You must use the C<SvNUM(sv)> macro to
2754 access this function.
2760 Perl_sv_2num(pTHX_ SV *const sv)
2762 PERL_ARGS_ASSERT_SV_2NUM;
2767 SV * const tmpsv = AMG_CALLunary(sv, numer_amg);
2768 TAINT_IF(tmpsv && SvTAINTED(tmpsv));
2769 if (tmpsv && (!SvROK(tmpsv) || (SvRV(tmpsv) != SvRV(sv))))
2770 return sv_2num(tmpsv);
2772 return sv_2mortal(newSVuv(PTR2UV(SvRV(sv))));
2775 /* uiv_2buf(): private routine for use by sv_2pv_flags(): print an IV or
2776 * UV as a string towards the end of buf, and return pointers to start and
2779 * We assume that buf is at least TYPE_CHARS(UV) long.
2783 S_uiv_2buf(char *const buf, const IV iv, UV uv, const int is_uv, char **const peob)
2785 char *ptr = buf + TYPE_CHARS(UV);
2786 char * const ebuf = ptr;
2789 PERL_ARGS_ASSERT_UIV_2BUF;
2801 *--ptr = '0' + (char)(uv % 10);
2810 =for apidoc sv_2pv_flags
2812 Returns a pointer to the string value of an SV, and sets *lp to its length.
2813 If flags includes SV_GMAGIC, does an mg_get() first. Coerces sv to a
2814 string if necessary. Normally invoked via the C<SvPV_flags> macro.
2815 C<sv_2pv()> and C<sv_2pv_nomg> usually end up here too.
2821 Perl_sv_2pv_flags(pTHX_ SV *const sv, STRLEN *const lp, const I32 flags)
2825 PERL_ARGS_ASSERT_SV_2PV_FLAGS;
2827 assert (SvTYPE(sv) != SVt_PVAV && SvTYPE(sv) != SVt_PVHV
2828 && SvTYPE(sv) != SVt_PVFM);
2829 if (SvGMAGICAL(sv) && (flags & SV_GMAGIC))
2834 if (flags & SV_SKIP_OVERLOAD)
2836 tmpstr = AMG_CALLunary(sv, string_amg);
2837 TAINT_IF(tmpstr && SvTAINTED(tmpstr));
2838 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2840 /* char *pv = lp ? SvPV(tmpstr, *lp) : SvPV_nolen(tmpstr);
2844 if ((SvFLAGS(tmpstr) & (SVf_POK)) == SVf_POK) {
2845 if (flags & SV_CONST_RETURN) {
2846 pv = (char *) SvPVX_const(tmpstr);
2848 pv = (flags & SV_MUTABLE_RETURN)
2849 ? SvPVX_mutable(tmpstr) : SvPVX(tmpstr);
2852 *lp = SvCUR(tmpstr);
2854 pv = sv_2pv_flags(tmpstr, lp, flags);
2867 SV *const referent = SvRV(sv);
2871 retval = buffer = savepvn("NULLREF", len);
2872 } else if (SvTYPE(referent) == SVt_REGEXP &&
2873 (!(PL_curcop->cop_hints & HINT_NO_AMAGIC) ||
2874 amagic_is_enabled(string_amg))) {
2875 REGEXP * const re = (REGEXP *)MUTABLE_PTR(referent);
2879 /* If the regex is UTF-8 we want the containing scalar to
2880 have an UTF-8 flag too */
2887 *lp = RX_WRAPLEN(re);
2889 return RX_WRAPPED(re);
2891 const char *const typestr = sv_reftype(referent, 0);
2892 const STRLEN typelen = strlen(typestr);
2893 UV addr = PTR2UV(referent);
2894 const char *stashname = NULL;
2895 STRLEN stashnamelen = 0; /* hush, gcc */
2896 const char *buffer_end;
2898 if (SvOBJECT(referent)) {
2899 const HEK *const name = HvNAME_HEK(SvSTASH(referent));
2902 stashname = HEK_KEY(name);
2903 stashnamelen = HEK_LEN(name);
2905 if (HEK_UTF8(name)) {
2911 stashname = "__ANON__";
2914 len = stashnamelen + 1 /* = */ + typelen + 3 /* (0x */
2915 + 2 * sizeof(UV) + 2 /* )\0 */;
2917 len = typelen + 3 /* (0x */
2918 + 2 * sizeof(UV) + 2 /* )\0 */;
2921 Newx(buffer, len, char);
2922 buffer_end = retval = buffer + len;
2924 /* Working backwards */
2928 *--retval = PL_hexdigit[addr & 15];
2929 } while (addr >>= 4);
2935 memcpy(retval, typestr, typelen);
2939 retval -= stashnamelen;
2940 memcpy(retval, stashname, stashnamelen);
2942 /* retval may not necessarily have reached the start of the
2944 assert (retval >= buffer);
2946 len = buffer_end - retval - 1; /* -1 for that \0 */
2958 if (flags & SV_MUTABLE_RETURN)
2959 return SvPVX_mutable(sv);
2960 if (flags & SV_CONST_RETURN)
2961 return (char *)SvPVX_const(sv);
2966 /* I'm assuming that if both IV and NV are equally valid then
2967 converting the IV is going to be more efficient */
2968 const U32 isUIOK = SvIsUV(sv);
2969 char buf[TYPE_CHARS(UV)];
2973 if (SvTYPE(sv) < SVt_PVIV)
2974 sv_upgrade(sv, SVt_PVIV);
2975 ptr = uiv_2buf(buf, SvIVX(sv), SvUVX(sv), isUIOK, &ebuf);
2977 /* inlined from sv_setpvn */
2978 s = SvGROW_mutable(sv, len + 1);
2979 Move(ptr, s, len, char);
2984 else if (SvNOK(sv)) {
2985 if (SvTYPE(sv) < SVt_PVNV)
2986 sv_upgrade(sv, SVt_PVNV);
2987 if (SvNVX(sv) == 0.0) {
2988 s = SvGROW_mutable(sv, 2);
2993 /* The +20 is pure guesswork. Configure test needed. --jhi */
2994 s = SvGROW_mutable(sv, NV_DIG + 20);
2995 /* some Xenix systems wipe out errno here */
2997 #ifndef USE_LOCALE_NUMERIC
2998 PERL_UNUSED_RESULT(Gconvert(SvNVX(sv), NV_DIG, 0, s));
3002 DECLARE_STORE_LC_NUMERIC_SET_TO_NEEDED();
3003 PERL_UNUSED_RESULT(Gconvert(SvNVX(sv), NV_DIG, 0, s));
3005 /* If the radix character is UTF-8, and actually is in the
3006 * output, turn on the UTF-8 flag for the scalar */
3007 if (PL_numeric_local
3008 && PL_numeric_radix_sv && SvUTF8(PL_numeric_radix_sv)
3009 && instr(s, SvPVX_const(PL_numeric_radix_sv)))
3013 RESTORE_LC_NUMERIC();
3016 /* We don't call SvPOK_on(), because it may come to pass that the
3017 * locale changes so that the stringification we just did is no
3018 * longer correct. We will have to re-stringify every time it is
3025 else if (isGV_with_GP(sv)) {
3026 GV *const gv = MUTABLE_GV(sv);
3027 SV *const buffer = sv_newmortal();
3029 gv_efullname3(buffer, gv, "*");
3031 assert(SvPOK(buffer));
3035 *lp = SvCUR(buffer);
3036 return SvPVX(buffer);
3038 else if (isREGEXP(sv)) {
3039 if (lp) *lp = RX_WRAPLEN((REGEXP *)sv);
3040 return RX_WRAPPED((REGEXP *)sv);
3045 if (flags & SV_UNDEF_RETURNS_NULL)
3047 if (!PL_localizing && ckWARN(WARN_UNINITIALIZED))
3049 /* Typically the caller expects that sv_any is not NULL now. */
3050 if (!SvREADONLY(sv) && SvTYPE(sv) < SVt_PV)
3051 sv_upgrade(sv, SVt_PV);
3056 const STRLEN len = s - SvPVX_const(sv);
3061 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2pv(%s)\n",
3062 PTR2UV(sv),SvPVX_const(sv)));
3063 if (flags & SV_CONST_RETURN)
3064 return (char *)SvPVX_const(sv);
3065 if (flags & SV_MUTABLE_RETURN)
3066 return SvPVX_mutable(sv);
3071 =for apidoc sv_copypv
3073 Copies a stringified representation of the source SV into the
3074 destination SV. Automatically performs any necessary mg_get and
3075 coercion of numeric values into strings. Guaranteed to preserve
3076 UTF8 flag even from overloaded objects. Similar in nature to
3077 sv_2pv[_flags] but operates directly on an SV instead of just the
3078 string. Mostly uses sv_2pv_flags to do its work, except when that
3079 would lose the UTF-8'ness of the PV.
3081 =for apidoc sv_copypv_nomg
3083 Like sv_copypv, but doesn't invoke get magic first.
3085 =for apidoc sv_copypv_flags
3087 Implementation of sv_copypv and sv_copypv_nomg. Calls get magic iff flags
3094 Perl_sv_copypv(pTHX_ SV *const dsv, SV *const ssv)
3096 PERL_ARGS_ASSERT_SV_COPYPV;
3098 sv_copypv_flags(dsv, ssv, 0);
3102 Perl_sv_copypv_flags(pTHX_ SV *const dsv, SV *const ssv, const I32 flags)
3107 PERL_ARGS_ASSERT_SV_COPYPV_FLAGS;
3109 if ((flags & SV_GMAGIC) && SvGMAGICAL(ssv))
3111 s = SvPV_nomg_const(ssv,len);
3112 sv_setpvn(dsv,s,len);
3120 =for apidoc sv_2pvbyte
3122 Return a pointer to the byte-encoded representation of the SV, and set *lp
3123 to its length. May cause the SV to be downgraded from UTF-8 as a
3126 Usually accessed via the C<SvPVbyte> macro.
3132 Perl_sv_2pvbyte(pTHX_ SV *sv, STRLEN *const lp)
3134 PERL_ARGS_ASSERT_SV_2PVBYTE;
3137 if (((SvREADONLY(sv) || SvFAKE(sv)) && !SvIsCOW(sv))
3138 || isGV_with_GP(sv) || SvROK(sv)) {
3139 SV *sv2 = sv_newmortal();
3140 sv_copypv_nomg(sv2,sv);
3143 sv_utf8_downgrade(sv,0);
3144 return lp ? SvPV_nomg(sv,*lp) : SvPV_nomg_nolen(sv);
3148 =for apidoc sv_2pvutf8
3150 Return a pointer to the UTF-8-encoded representation of the SV, and set *lp
3151 to its length. May cause the SV to be upgraded to UTF-8 as a side-effect.
3153 Usually accessed via the C<SvPVutf8> macro.
3159 Perl_sv_2pvutf8(pTHX_ SV *sv, STRLEN *const lp)
3161 PERL_ARGS_ASSERT_SV_2PVUTF8;
3163 if (((SvREADONLY(sv) || SvFAKE(sv)) && !SvIsCOW(sv))
3164 || isGV_with_GP(sv) || SvROK(sv))
3165 sv = sv_mortalcopy(sv);
3168 sv_utf8_upgrade_nomg(sv);
3169 return lp ? SvPV_nomg(sv,*lp) : SvPV_nomg_nolen(sv);
3174 =for apidoc sv_2bool
3176 This macro is only used by sv_true() or its macro equivalent, and only if
3177 the latter's argument is neither SvPOK, SvIOK nor SvNOK.
3178 It calls sv_2bool_flags with the SV_GMAGIC flag.
3180 =for apidoc sv_2bool_flags
3182 This function is only used by sv_true() and friends, and only if
3183 the latter's argument is neither SvPOK, SvIOK nor SvNOK. If the flags
3184 contain SV_GMAGIC, then it does an mg_get() first.
3191 Perl_sv_2bool_flags(pTHX_ SV *sv, I32 flags)
3193 PERL_ARGS_ASSERT_SV_2BOOL_FLAGS;
3196 if(flags & SV_GMAGIC) SvGETMAGIC(sv);
3202 SV * const tmpsv = AMG_CALLunary(sv, bool__amg);
3203 if (tmpsv && (!SvROK(tmpsv) || (SvRV(tmpsv) != SvRV(sv)))) {
3206 if(SvGMAGICAL(sv)) {
3208 goto restart; /* call sv_2bool */
3210 /* expanded SvTRUE_common(sv, (flags = 0, goto restart)) */
3211 else if(!SvOK(sv)) {
3214 else if(SvPOK(sv)) {
3215 svb = SvPVXtrue(sv);
3217 else if((SvFLAGS(sv) & (SVf_IOK|SVf_NOK))) {
3218 svb = (SvIOK(sv) && SvIVX(sv) != 0)
3219 || (SvNOK(sv) && SvNVX(sv) != 0.0);
3223 goto restart; /* call sv_2bool_nomg */
3228 return SvRV(sv) != 0;
3232 RX_WRAPLEN(sv) > 1 || (RX_WRAPLEN(sv) && *RX_WRAPPED(sv) != '0');
3233 return SvTRUE_common(sv, isGV_with_GP(sv) ? 1 : 0);
3237 =for apidoc sv_utf8_upgrade
3239 Converts the PV of an SV to its UTF-8-encoded form.
3240 Forces the SV to string form if it is not already.
3241 Will C<mg_get> on C<sv> if appropriate.
3242 Always sets the SvUTF8 flag to avoid future validity checks even
3243 if the whole string is the same in UTF-8 as not.
3244 Returns the number of bytes in the converted string
3246 This is not a general purpose byte encoding to Unicode interface:
3247 use the Encode extension for that.
3249 =for apidoc sv_utf8_upgrade_nomg
3251 Like sv_utf8_upgrade, but doesn't do magic on C<sv>.
3253 =for apidoc sv_utf8_upgrade_flags
3255 Converts the PV of an SV to its UTF-8-encoded form.
3256 Forces the SV to string form if it is not already.
3257 Always sets the SvUTF8 flag to avoid future validity checks even
3258 if all the bytes are invariant in UTF-8.
3259 If C<flags> has C<SV_GMAGIC> bit set,
3260 will C<mg_get> on C<sv> if appropriate, else not.
3262 If C<flags> has SV_FORCE_UTF8_UPGRADE set, this function assumes that the PV
3263 will expand when converted to UTF-8, and skips the extra work of checking for
3264 that. Typically this flag is used by a routine that has already parsed the
3265 string and found such characters, and passes this information on so that the
3266 work doesn't have to be repeated.
3268 Returns the number of bytes in the converted string.
3270 This is not a general purpose byte encoding to Unicode interface:
3271 use the Encode extension for that.
3273 =for apidoc sv_utf8_upgrade_flags_grow
3275 Like sv_utf8_upgrade_flags, but has an additional parameter C<extra>, which is
3276 the number of unused bytes the string of 'sv' is guaranteed to have free after
3277 it upon return. This allows the caller to reserve extra space that it intends
3278 to fill, to avoid extra grows.
3280 C<sv_utf8_upgrade>, C<sv_utf8_upgrade_nomg>, and C<sv_utf8_upgrade_flags>
3281 are implemented in terms of this function.
3283 Returns the number of bytes in the converted string (not including the spares).
3287 (One might think that the calling routine could pass in the position of the
3288 first variant character when it has set SV_FORCE_UTF8_UPGRADE, so it wouldn't
3289 have to be found again. But that is not the case, because typically when the
3290 caller is likely to use this flag, it won't be calling this routine unless it
3291 finds something that won't fit into a byte. Otherwise it tries to not upgrade
3292 and just use bytes. But some things that do fit into a byte are variants in
3293 utf8, and the caller may not have been keeping track of these.)
3295 If the routine itself changes the string, it adds a trailing C<NUL>. Such a
3296 C<NUL> isn't guaranteed due to having other routines do the work in some input
3297 cases, or if the input is already flagged as being in utf8.
3299 The speed of this could perhaps be improved for many cases if someone wanted to
3300 write a fast function that counts the number of variant characters in a string,
3301 especially if it could return the position of the first one.
3306 Perl_sv_utf8_upgrade_flags_grow(pTHX_ SV *const sv, const I32 flags, STRLEN extra)
3308 PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS_GROW;
3310 if (sv == &PL_sv_undef)
3312 if (!SvPOK_nog(sv)) {
3314 if (SvREADONLY(sv) && (SvPOKp(sv) || SvIOKp(sv) || SvNOKp(sv))) {
3315 (void) sv_2pv_flags(sv,&len, flags);
3317 if (extra) SvGROW(sv, SvCUR(sv) + extra);
3321 (void) SvPV_force_flags(sv,len,flags & SV_GMAGIC);
3326 if (extra) SvGROW(sv, SvCUR(sv) + extra);
3331 S_sv_uncow(aTHX_ sv, 0);
3334 if (PL_encoding && !(flags & SV_UTF8_NO_ENCODING)) {
3335 sv_recode_to_utf8(sv, PL_encoding);
3336 if (extra) SvGROW(sv, SvCUR(sv) + extra);
3340 if (SvCUR(sv) == 0) {
3341 if (extra) SvGROW(sv, extra);
3342 } else { /* Assume Latin-1/EBCDIC */
3343 /* This function could be much more efficient if we
3344 * had a FLAG in SVs to signal if there are any variant
3345 * chars in the PV. Given that there isn't such a flag
3346 * make the loop as fast as possible (although there are certainly ways
3347 * to speed this up, eg. through vectorization) */
3348 U8 * s = (U8 *) SvPVX_const(sv);
3349 U8 * e = (U8 *) SvEND(sv);
3351 STRLEN two_byte_count = 0;
3353 if (flags & SV_FORCE_UTF8_UPGRADE) goto must_be_utf8;
3355 /* See if really will need to convert to utf8. We mustn't rely on our
3356 * incoming SV being well formed and having a trailing '\0', as certain
3357 * code in pp_formline can send us partially built SVs. */
3361 if (NATIVE_BYTE_IS_INVARIANT(ch)) continue;
3363 t--; /* t already incremented; re-point to first variant */
3368 /* utf8 conversion not needed because all are invariants. Mark as
3369 * UTF-8 even if no variant - saves scanning loop */
3371 if (extra) SvGROW(sv, SvCUR(sv) + extra);
3376 /* Here, the string should be converted to utf8, either because of an
3377 * input flag (two_byte_count = 0), or because a character that
3378 * requires 2 bytes was found (two_byte_count = 1). t points either to
3379 * the beginning of the string (if we didn't examine anything), or to
3380 * the first variant. In either case, everything from s to t - 1 will
3381 * occupy only 1 byte each on output.
3383 * There are two main ways to convert. One is to create a new string
3384 * and go through the input starting from the beginning, appending each
3385 * converted value onto the new string as we go along. It's probably
3386 * best to allocate enough space in the string for the worst possible
3387 * case rather than possibly running out of space and having to
3388 * reallocate and then copy what we've done so far. Since everything
3389 * from s to t - 1 is invariant, the destination can be initialized
3390 * with these using a fast memory copy
3392 * The other way is to figure out exactly how big the string should be
3393 * by parsing the entire input. Then you don't have to make it big
3394 * enough to handle the worst possible case, and more importantly, if
3395 * the string you already have is large enough, you don't have to
3396 * allocate a new string, you can copy the last character in the input
3397 * string to the final position(s) that will be occupied by the
3398 * converted string and go backwards, stopping at t, since everything
3399 * before that is invariant.
3401 * There are advantages and disadvantages to each method.
3403 * In the first method, we can allocate a new string, do the memory
3404 * copy from the s to t - 1, and then proceed through the rest of the
3405 * string byte-by-byte.
3407 * In the second method, we proceed through the rest of the input
3408 * string just calculating how big the converted string will be. Then
3409 * there are two cases:
3410 * 1) if the string has enough extra space to handle the converted
3411 * value. We go backwards through the string, converting until we
3412 * get to the position we are at now, and then stop. If this
3413 * position is far enough along in the string, this method is
3414 * faster than the other method. If the memory copy were the same
3415 * speed as the byte-by-byte loop, that position would be about
3416 * half-way, as at the half-way mark, parsing to the end and back
3417 * is one complete string's parse, the same amount as starting
3418 * over and going all the way through. Actually, it would be
3419 * somewhat less than half-way, as it's faster to just count bytes
3420 * than to also copy, and we don't have the overhead of allocating
3421 * a new string, changing the scalar to use it, and freeing the
3422 * existing one. But if the memory copy is fast, the break-even
3423 * point is somewhere after half way. The counting loop could be
3424 * sped up by vectorization, etc, to move the break-even point
3425 * further towards the beginning.
3426 * 2) if the string doesn't have enough space to handle the converted
3427 * value. A new string will have to be allocated, and one might
3428 * as well, given that, start from the beginning doing the first
3429 * method. We've spent extra time parsing the string and in
3430 * exchange all we've gotten is that we know precisely how big to
3431 * make the new one. Perl is more optimized for time than space,
3432 * so this case is a loser.
3433 * So what I've decided to do is not use the 2nd method unless it is
3434 * guaranteed that a new string won't have to be allocated, assuming
3435 * the worst case. I also decided not to put any more conditions on it
3436 * than this, for now. It seems likely that, since the worst case is
3437 * twice as big as the unknown portion of the string (plus 1), we won't
3438 * be guaranteed enough space, causing us to go to the first method,
3439 * unless the string is short, or the first variant character is near
3440 * the end of it. In either of these cases, it seems best to use the
3441 * 2nd method. The only circumstance I can think of where this would
3442 * be really slower is if the string had once had much more data in it
3443 * than it does now, but there is still a substantial amount in it */
3446 STRLEN invariant_head = t - s;
3447 STRLEN size = invariant_head + (e - t) * 2 + 1 + extra;
3448 if (SvLEN(sv) < size) {
3450 /* Here, have decided to allocate a new string */
3455 Newx(dst, size, U8);
3457 /* If no known invariants at the beginning of the input string,
3458 * set so starts from there. Otherwise, can use memory copy to
3459 * get up to where we are now, and then start from here */
3461 if (invariant_head <= 0) {
3464 Copy(s, dst, invariant_head, char);
3465 d = dst + invariant_head;
3469 append_utf8_from_native_byte(*t, &d);
3473 SvPV_free(sv); /* No longer using pre-existing string */
3474 SvPV_set(sv, (char*)dst);
3475 SvCUR_set(sv, d - dst);
3476 SvLEN_set(sv, size);
3479 /* Here, have decided to get the exact size of the string.
3480 * Currently this happens only when we know that there is
3481 * guaranteed enough space to fit the converted string, so
3482 * don't have to worry about growing. If two_byte_count is 0,
3483 * then t points to the first byte of the string which hasn't
3484 * been examined yet. Otherwise two_byte_count is 1, and t
3485 * points to the first byte in the string that will expand to
3486 * two. Depending on this, start examining at t or 1 after t.
3489 U8 *d = t + two_byte_count;
3492 /* Count up the remaining bytes that expand to two */
3495 const U8 chr = *d++;
3496 if (! NATIVE_BYTE_IS_INVARIANT(chr)) two_byte_count++;
3499 /* The string will expand by just the number of bytes that
3500 * occupy two positions. But we are one afterwards because of
3501 * the increment just above. This is the place to put the
3502 * trailing NUL, and to set the length before we decrement */
3504 d += two_byte_count;
3505 SvCUR_set(sv, d - s);
3509 /* Having decremented d, it points to the position to put the
3510 * very last byte of the expanded string. Go backwards through
3511 * the string, copying and expanding as we go, stopping when we
3512 * get to the part that is invariant the rest of the way down */
3516 if (NATIVE_BYTE_IS_INVARIANT(*e)) {
3519 *d-- = UTF8_EIGHT_BIT_LO(*e);
3520 *d-- = UTF8_EIGHT_BIT_HI(*e);
3526 if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv)) {
3527 /* Update pos. We do it at the end rather than during
3528 * the upgrade, to avoid slowing down the common case
3529 * (upgrade without pos).
3530 * pos can be stored as either bytes or characters. Since
3531 * this was previously a byte string we can just turn off
3532 * the bytes flag. */
3533 MAGIC * mg = mg_find(sv, PERL_MAGIC_regex_global);
3535 mg->mg_flags &= ~MGf_BYTES;
3537 if ((mg = mg_find(sv, PERL_MAGIC_utf8)))
3538 magic_setutf8(sv,mg); /* clear UTF8 cache */
3543 /* Mark as UTF-8 even if no variant - saves scanning loop */
3549 =for apidoc sv_utf8_downgrade
3551 Attempts to convert the PV of an SV from characters to bytes.
3552 If the PV contains a character that cannot fit
3553 in a byte, this conversion will fail;
3554 in this case, either returns false or, if C<fail_ok> is not
3557 This is not a general purpose Unicode to byte encoding interface:
3558 use the Encode extension for that.
3564 Perl_sv_utf8_downgrade(pTHX_ SV *const sv, const bool fail_ok)
3566 PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE;
3568 if (SvPOKp(sv) && SvUTF8(sv)) {
3572 int mg_flags = SV_GMAGIC;
3575 S_sv_uncow(aTHX_ sv, 0);
3577 if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv)) {
3579 MAGIC * mg = mg_find(sv, PERL_MAGIC_regex_global);
3580 if (mg && mg->mg_len > 0 && mg->mg_flags & MGf_BYTES) {
3581 mg->mg_len = sv_pos_b2u_flags(sv, mg->mg_len,
3582 SV_GMAGIC|SV_CONST_RETURN);
3583 mg_flags = 0; /* sv_pos_b2u does get magic */
3585 if ((mg = mg_find(sv, PERL_MAGIC_utf8)))
3586 magic_setutf8(sv,mg); /* clear UTF8 cache */
3589 s = (U8 *) SvPV_flags(sv, len, mg_flags);
3591 if (!utf8_to_bytes(s, &len)) {
3596 Perl_croak(aTHX_ "Wide character in %s",
3599 Perl_croak(aTHX_ "Wide character");
3610 =for apidoc sv_utf8_encode
3612 Converts the PV of an SV to UTF-8, but then turns the C<SvUTF8>
3613 flag off so that it looks like octets again.
3619 Perl_sv_utf8_encode(pTHX_ SV *const sv)
3621 PERL_ARGS_ASSERT_SV_UTF8_ENCODE;
3623 if (SvREADONLY(sv)) {
3624 sv_force_normal_flags(sv, 0);
3626 (void) sv_utf8_upgrade(sv);
3631 =for apidoc sv_utf8_decode
3633 If the PV of the SV is an octet sequence in UTF-8
3634 and contains a multiple-byte character, the C<SvUTF8> flag is turned on
3635 so that it looks like a character. If the PV contains only single-byte
3636 characters, the C<SvUTF8> flag stays off.
3637 Scans PV for validity and returns false if the PV is invalid UTF-8.
3643 Perl_sv_utf8_decode(pTHX_ SV *const sv)
3645 PERL_ARGS_ASSERT_SV_UTF8_DECODE;
3648 const U8 *start, *c;
3651 /* The octets may have got themselves encoded - get them back as
3654 if (!sv_utf8_downgrade(sv, TRUE))
3657 /* it is actually just a matter of turning the utf8 flag on, but
3658 * we want to make sure everything inside is valid utf8 first.
3660 c = start = (const U8 *) SvPVX_const(sv);
3661 if (!is_utf8_string(c, SvCUR(sv)))
3663 e = (const U8 *) SvEND(sv);
3666 if (!UTF8_IS_INVARIANT(ch)) {
3671 if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv)) {
3672 /* XXX Is this dead code? XS_utf8_decode calls SvSETMAGIC
3673 after this, clearing pos. Does anything on CPAN
3675 /* adjust pos to the start of a UTF8 char sequence */
3676 MAGIC * mg = mg_find(sv, PERL_MAGIC_regex_global);
3678 I32 pos = mg->mg_len;
3680 for (c = start + pos; c > start; c--) {
3681 if (UTF8_IS_START(*c))
3684 mg->mg_len = c - start;
3687 if ((mg = mg_find(sv, PERL_MAGIC_utf8)))
3688 magic_setutf8(sv,mg); /* clear UTF8 cache */
3695 =for apidoc sv_setsv
3697 Copies the contents of the source SV C<ssv> into the destination SV
3698 C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
3699 function if the source SV needs to be reused. Does not handle 'set' magic on
3700 destination SV. Calls 'get' magic on source SV. Loosely speaking, it
3701 performs a copy-by-value, obliterating any previous content of the
3704 You probably want to use one of the assortment of wrappers, such as
3705 C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
3706 C<SvSetMagicSV_nosteal>.
3708 =for apidoc sv_setsv_flags
3710 Copies the contents of the source SV C<ssv> into the destination SV
3711 C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
3712 function if the source SV needs to be reused. Does not handle 'set' magic.
3713 Loosely speaking, it performs a copy-by-value, obliterating any previous
3714 content of the destination.
3715 If the C<flags> parameter has the C<SV_GMAGIC> bit set, will C<mg_get> on
3716 C<ssv> if appropriate, else not. If the C<flags>
3717 parameter has the C<SV_NOSTEAL> bit set then the
3718 buffers of temps will not be stolen. <sv_setsv>
3719 and C<sv_setsv_nomg> are implemented in terms of this function.
3721 You probably want to use one of the assortment of wrappers, such as
3722 C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
3723 C<SvSetMagicSV_nosteal>.
3725 This is the primary function for copying scalars, and most other
3726 copy-ish functions and macros use this underneath.
3732 S_glob_assign_glob(pTHX_ SV *const dstr, SV *const sstr, const int dtype)
3734 I32 mro_changes = 0; /* 1 = method, 2 = isa, 3 = recursive isa */
3735 HV *old_stash = NULL;
3737 PERL_ARGS_ASSERT_GLOB_ASSIGN_GLOB;
3739 if (dtype != SVt_PVGV && !isGV_with_GP(dstr)) {
3740 const char * const name = GvNAME(sstr);
3741 const STRLEN len = GvNAMELEN(sstr);
3743 if (dtype >= SVt_PV) {
3749 SvUPGRADE(dstr, SVt_PVGV);
3750 (void)SvOK_off(dstr);
3751 isGV_with_GP_on(dstr);
3753 GvSTASH(dstr) = GvSTASH(sstr);
3755 Perl_sv_add_backref(aTHX_ MUTABLE_SV(GvSTASH(dstr)), dstr);
3756 gv_name_set(MUTABLE_GV(dstr), name, len,
3757 GV_ADD | (GvNAMEUTF8(sstr) ? SVf_UTF8 : 0 ));
3758 SvFAKE_on(dstr); /* can coerce to non-glob */
3761 if(GvGP(MUTABLE_GV(sstr))) {
3762 /* If source has method cache entry, clear it */
3764 SvREFCNT_dec(GvCV(sstr));
3765 GvCV_set(sstr, NULL);
3768 /* If source has a real method, then a method is
3771 GvCV((const GV *)sstr) && GvSTASH(dstr) && HvENAME(GvSTASH(dstr))
3777 /* If dest already had a real method, that's a change as well */
3779 !mro_changes && GvGP(MUTABLE_GV(dstr)) && GvCVu((const GV *)dstr)
3780 && GvSTASH(dstr) && HvENAME(GvSTASH(dstr))
3785 /* We don't need to check the name of the destination if it was not a
3786 glob to begin with. */
3787 if(dtype == SVt_PVGV) {
3788 const char * const name = GvNAME((const GV *)dstr);
3791 /* The stash may have been detached from the symbol table, so
3793 && GvSTASH(dstr) && HvENAME(GvSTASH(dstr))
3797 const STRLEN len = GvNAMELEN(dstr);
3798 if ((len > 1 && name[len-2] == ':' && name[len-1] == ':')
3799 || (len == 1 && name[0] == ':')) {
3802 /* Set aside the old stash, so we can reset isa caches on
3804 if((old_stash = GvHV(dstr)))
3805 /* Make sure we do not lose it early. */
3806 SvREFCNT_inc_simple_void_NN(
3807 sv_2mortal((SV *)old_stash)
3812 SvREFCNT_inc_simple_void_NN(sv_2mortal(dstr));
3815 gp_free(MUTABLE_GV(dstr));
3816 GvINTRO_off(dstr); /* one-shot flag */
3817 GvGP_set(dstr, gp_ref(GvGP(sstr)));
3818 if (SvTAINTED(sstr))
3820 if (GvIMPORTED(dstr) != GVf_IMPORTED
3821 && CopSTASH_ne(PL_curcop, GvSTASH(dstr)))
3823 GvIMPORTED_on(dstr);
3826 if(mro_changes == 2) {
3827 if (GvAV((const GV *)sstr)) {
3829 SV * const sref = (SV *)GvAV((const GV *)dstr);
3830 if (SvSMAGICAL(sref) && (mg = mg_find(sref, PERL_MAGIC_isa))) {
3831 if (SvTYPE(mg->mg_obj) != SVt_PVAV) {
3832 AV * const ary = newAV();
3833 av_push(ary, mg->mg_obj); /* takes the refcount */
3834 mg->mg_obj = (SV *)ary;
3836 av_push((AV *)mg->mg_obj, SvREFCNT_inc_simple_NN(dstr));
3838 else sv_magic(sref, dstr, PERL_MAGIC_isa, NULL, 0);
3840 mro_isa_changed_in(GvSTASH(dstr));
3842 else if(mro_changes == 3) {
3843 HV * const stash = GvHV(dstr);
3844 if(old_stash ? (HV *)HvENAME_get(old_stash) : stash)
3850 else if(mro_changes) mro_method_changed_in(GvSTASH(dstr));
3851 if (GvIO(dstr) && dtype == SVt_PVGV) {
3852 DEBUG_o(Perl_deb(aTHX_
3853 "glob_assign_glob clearing PL_stashcache\n"));
3854 /* It's a cache. It will rebuild itself quite happily.
3855 It's a lot of effort to work out exactly which key (or keys)
3856 might be invalidated by the creation of the this file handle.
3858 hv_clear(PL_stashcache);
3864 S_glob_assign_ref(pTHX_ SV *const dstr, SV *const sstr)
3866 SV * const sref = SvRV(sstr);
3868 const int intro = GvINTRO(dstr);
3871 const U32 stype = SvTYPE(sref);
3873 PERL_ARGS_ASSERT_GLOB_ASSIGN_REF;
3876 GvINTRO_off(dstr); /* one-shot flag */
3877 GvLINE(dstr) = CopLINE(PL_curcop);
3878 GvEGV(dstr) = MUTABLE_GV(dstr);
3883 location = (SV **) &(GvGP(dstr)->gp_cv); /* XXX bypassing GvCV_set */
3884 import_flag = GVf_IMPORTED_CV;
3887 location = (SV **) &GvHV(dstr);
3888 import_flag = GVf_IMPORTED_HV;
3891 location = (SV **) &GvAV(dstr);
3892 import_flag = GVf_IMPORTED_AV;
3895 location = (SV **) &GvIOp(dstr);
3898 location = (SV **) &GvFORM(dstr);
3901 location = &GvSV(dstr);
3902 import_flag = GVf_IMPORTED_SV;
3905 if (stype == SVt_PVCV) {
3906 /*if (GvCVGEN(dstr) && (GvCV(dstr) != (const CV *)sref || GvCVGEN(dstr))) {*/
3907 if (GvCVGEN(dstr)) {
3908 SvREFCNT_dec(GvCV(dstr));
3909 GvCV_set(dstr, NULL);
3910 GvCVGEN(dstr) = 0; /* Switch off cacheness. */
3913 /* SAVEt_GVSLOT takes more room on the savestack and has more
3914 overhead in leave_scope than SAVEt_GENERIC_SV. But for CVs
3915 leave_scope needs access to the GV so it can reset method
3916 caches. We must use SAVEt_GVSLOT whenever the type is
3917 SVt_PVCV, even if the stash is anonymous, as the stash may
3918 gain a name somehow before leave_scope. */
3919 if (stype == SVt_PVCV) {
3920 /* There is no save_pushptrptrptr. Creating it for this
3921 one call site would be overkill. So inline the ss add
3925 SS_ADD_PTR(location);
3926 SS_ADD_PTR(SvREFCNT_inc(*location));
3927 SS_ADD_UV(SAVEt_GVSLOT);
3930 else SAVEGENERICSV(*location);
3933 if (stype == SVt_PVCV && (*location != sref || GvCVGEN(dstr))) {
3934 CV* const cv = MUTABLE_CV(*location);
3936 if (!GvCVGEN((const GV *)dstr) &&
3937 (CvROOT(cv) || CvXSUB(cv)) &&
3938 /* redundant check that avoids creating the extra SV
3939 most of the time: */
3940 (CvCONST(cv) || ckWARN(WARN_REDEFINE)))
3942 SV * const new_const_sv =
3943 CvCONST((const CV *)sref)
3944 ? cv_const_sv((const CV *)sref)
3946 report_redefined_cv(
3947 sv_2mortal(Perl_newSVpvf(aTHX_
3950 HvNAME_HEK(GvSTASH((const GV *)dstr))
3952 HEKfARG(GvENAME_HEK(MUTABLE_GV(dstr)))
3955 CvCONST((const CV *)sref) ? &new_const_sv : NULL
3959 cv_ckproto_len_flags(cv, (const GV *)dstr,
3960 SvPOK(sref) ? CvPROTO(sref) : NULL,
3961 SvPOK(sref) ? CvPROTOLEN(sref) : 0,
3962 SvPOK(sref) ? SvUTF8(sref) : 0);
3964 GvCVGEN(dstr) = 0; /* Switch off cacheness. */
3965 GvASSUMECV_on(dstr);
3966 if(GvSTASH(dstr)) gv_method_changed(dstr); /* sub foo { 1 } sub bar { 2 } *bar = \&foo */
3968 *location = SvREFCNT_inc_simple_NN(sref);
3969 if (import_flag && !(GvFLAGS(dstr) & import_flag)
3970 && CopSTASH_ne(PL_curcop, GvSTASH(dstr))) {
3971 GvFLAGS(dstr) |= import_flag;
3973 if (stype == SVt_PVHV) {
3974 const char * const name = GvNAME((GV*)dstr);
3975 const STRLEN len = GvNAMELEN(dstr);
3978 (len > 1 && name[len-2] == ':' && name[len-1] == ':')
3979 || (len == 1 && name[0] == ':')
3981 && (!dref || HvENAME_get(dref))
3984 (HV *)sref, (HV *)dref,
3990 stype == SVt_PVAV && sref != dref
3991 && strEQ(GvNAME((GV*)dstr), "ISA")
3992 /* The stash may have been detached from the symbol table, so
3993 check its name before doing anything. */
3994 && GvSTASH(dstr) && HvENAME(GvSTASH(dstr))
3997 MAGIC * const omg = dref && SvSMAGICAL(dref)
3998 ? mg_find(dref, PERL_MAGIC_isa)
4000 if (SvSMAGICAL(sref) && (mg = mg_find(sref, PERL_MAGIC_isa))) {
4001 if (SvTYPE(mg->mg_obj) != SVt_PVAV) {
4002 AV * const ary = newAV();
4003 av_push(ary, mg->mg_obj); /* takes the refcount */
4004 mg->mg_obj = (SV *)ary;
4007 if (SvTYPE(omg->mg_obj) == SVt_PVAV) {
4008 SV **svp = AvARRAY((AV *)omg->mg_obj);
4009 I32 items = AvFILLp((AV *)omg->mg_obj) + 1;
4013 SvREFCNT_inc_simple_NN(*svp++)
4019 SvREFCNT_inc_simple_NN(omg->mg_obj)
4023 av_push((AV *)mg->mg_obj,SvREFCNT_inc_simple_NN(dstr));
4028 sref, omg ? omg->mg_obj : dstr, PERL_MAGIC_isa, NULL, 0
4030 mg = mg_find(sref, PERL_MAGIC_isa);
4032 /* Since the *ISA assignment could have affected more than
4033 one stash, don't call mro_isa_changed_in directly, but let
4034 magic_clearisa do it for us, as it already has the logic for
4035 dealing with globs vs arrays of globs. */
4037 Perl_magic_clearisa(aTHX_ NULL, mg);
4039 else if (stype == SVt_PVIO) {
4040 DEBUG_o(Perl_deb(aTHX_ "glob_assign_ref clearing PL_stashcache\n"));
4041 /* It's a cache. It will rebuild itself quite happily.
4042 It's a lot of effort to work out exactly which key (or keys)
4043 might be invalidated by the creation of the this file handle.
4045 hv_clear(PL_stashcache);
4049 if (!intro) SvREFCNT_dec(dref);
4050 if (SvTAINTED(sstr))
4058 #ifdef PERL_DEBUG_READONLY_COW
4059 # include <sys/mman.h>
4061 # ifndef PERL_MEMORY_DEBUG_HEADER_SIZE
4062 # define PERL_MEMORY_DEBUG_HEADER_SIZE 0
4066 Perl_sv_buf_to_ro(pTHX_ SV *sv)
4068 struct perl_memory_debug_header * const header =
4069 (struct perl_memory_debug_header *)(SvPVX(sv)-PERL_MEMORY_DEBUG_HEADER_SIZE);
4070 const MEM_SIZE len = header->size;
4071 PERL_ARGS_ASSERT_SV_BUF_TO_RO;
4072 # ifdef PERL_TRACK_MEMPOOL
4073 if (!header->readonly) header->readonly = 1;
4075 if (mprotect(header, len, PROT_READ))
4076 Perl_warn(aTHX_ "mprotect RW for COW string %p %lu failed with %d",
4077 header, len, errno);
4081 S_sv_buf_to_rw(pTHX_ SV *sv)
4083 struct perl_memory_debug_header * const header =
4084 (struct perl_memory_debug_header *)(SvPVX(sv)-PERL_MEMORY_DEBUG_HEADER_SIZE);
4085 const MEM_SIZE len = header->size;
4086 PERL_ARGS_ASSERT_SV_BUF_TO_RW;
4087 if (mprotect(header, len, PROT_READ|PROT_WRITE))
4088 Perl_warn(aTHX_ "mprotect for COW string %p %lu failed with %d",
4089 header, len, errno);
4090 # ifdef PERL_TRACK_MEMPOOL
4091 header->readonly = 0;
4096 # define sv_buf_to_ro(sv) NOOP
4097 # define sv_buf_to_rw(sv) NOOP
4101 Perl_sv_setsv_flags(pTHX_ SV *dstr, SV* sstr, const I32 flags)
4107 PERL_ARGS_ASSERT_SV_SETSV_FLAGS;
4112 if (SvIS_FREED(dstr)) {
4113 Perl_croak(aTHX_ "panic: attempt to copy value %" SVf
4114 " to a freed scalar %p", SVfARG(sstr), (void *)dstr);
4116 SV_CHECK_THINKFIRST_COW_DROP(dstr);
4118 sstr = &PL_sv_undef;
4119 if (SvIS_FREED(sstr)) {
4120 Perl_croak(aTHX_ "panic: attempt to copy freed scalar %p to %p",
4121 (void*)sstr, (void*)dstr);
4123 stype = SvTYPE(sstr);
4124 dtype = SvTYPE(dstr);
4126 /* There's a lot of redundancy below but we're going for speed here */
4131 if (dtype != SVt_PVGV && dtype != SVt_PVLV) {
4132 (void)SvOK_off(dstr);
4140 sv_upgrade(dstr, SVt_IV);
4144 sv_upgrade(dstr, SVt_PVIV);
4148 goto end_of_first_switch;
4150 (void)SvIOK_only(dstr);
4151 SvIV_set(dstr, SvIVX(sstr));
4154 /* SvTAINTED can only be true if the SV has taint magic, which in
4155 turn means that the SV type is PVMG (or greater). This is the
4156 case statement for SVt_IV, so this cannot be true (whatever gcov
4158 assert(!SvTAINTED(sstr));
4163 if (dtype < SVt_PV && dtype != SVt_IV)
4164 sv_upgrade(dstr, SVt_IV);
4172 sv_upgrade(dstr, SVt_NV);
4176 sv_upgrade(dstr, SVt_PVNV);
4180 goto end_of_first_switch;
4182 SvNV_set(dstr, SvNVX(sstr));
4183 (void)SvNOK_only(dstr);
4184 /* SvTAINTED can only be true if the SV has taint magic, which in
4185 turn means that the SV type is PVMG (or greater). This is the
4186 case statement for SVt_NV, so this cannot be true (whatever gcov
4188 assert(!SvTAINTED(sstr));
4195 sv_upgrade(dstr, SVt_PV);
4198 if (dtype < SVt_PVIV)
4199 sv_upgrade(dstr, SVt_PVIV);
4202 if (dtype < SVt_PVNV)
4203 sv_upgrade(dstr, SVt_PVNV);
4207 const char * const type = sv_reftype(sstr,0);
4209 /* diag_listed_as: Bizarre copy of %s */
4210 Perl_croak(aTHX_ "Bizarre copy of %s in %s", type, OP_DESC(PL_op));
4212 Perl_croak(aTHX_ "Bizarre copy of %s", type);
4214 NOT_REACHED; /* NOTREACHED */
4218 if (dtype < SVt_REGEXP)
4220 if (dtype >= SVt_PV) {
4226 sv_upgrade(dstr, SVt_REGEXP);
4234 if (SvGMAGICAL(sstr) && (flags & SV_GMAGIC)) {
4236 if (SvTYPE(sstr) != stype)
4237 stype = SvTYPE(sstr);
4239 if (isGV_with_GP(sstr) && dtype <= SVt_PVLV) {
4240 glob_assign_glob(dstr, sstr, dtype);
4243 if (stype == SVt_PVLV)
4245 if (isREGEXP(sstr)) goto upgregexp;
4246 SvUPGRADE(dstr, SVt_PVNV);
4249 SvUPGRADE(dstr, (svtype)stype);
4251 end_of_first_switch:
4253 /* dstr may have been upgraded. */
4254 dtype = SvTYPE(dstr);
4255 sflags = SvFLAGS(sstr);
4257 if (dtype == SVt_PVCV) {
4258 /* Assigning to a subroutine sets the prototype. */
4261 const char *const ptr = SvPV_const(sstr, len);
4263 SvGROW(dstr, len + 1);
4264 Copy(ptr, SvPVX(dstr), len + 1, char);
4265 SvCUR_set(dstr, len);
4267 SvFLAGS(dstr) |= sflags & SVf_UTF8;
4268 CvAUTOLOAD_off(dstr);
4273 else if (dtype == SVt_PVAV || dtype == SVt_PVHV || dtype == SVt_PVFM) {
4274 const char * const type = sv_reftype(dstr,0);
4276 /* diag_listed_as: Cannot copy to %s */
4277 Perl_croak(aTHX_ "Cannot copy to %s in %s", type, OP_DESC(PL_op));
4279 Perl_croak(aTHX_ "Cannot copy to %s", type);
4280 } else if (sflags & SVf_ROK) {
4281 if (isGV_with_GP(dstr)
4282 && SvTYPE(SvRV(sstr)) == SVt_PVGV && isGV_with_GP(SvRV(sstr))) {
4285 if (GvIMPORTED(dstr) != GVf_IMPORTED
4286 && CopSTASH_ne(PL_curcop, GvSTASH(dstr)))
4288 GvIMPORTED_on(dstr);
4293 glob_assign_glob(dstr, sstr, dtype);
4297 if (dtype >= SVt_PV) {
4298 if (isGV_with_GP(dstr)) {
4299 glob_assign_ref(dstr, sstr);
4302 if (SvPVX_const(dstr)) {
4308 (void)SvOK_off(dstr);
4309 SvRV_set(dstr, SvREFCNT_inc(SvRV(sstr)));
4310 SvFLAGS(dstr) |= sflags & SVf_ROK;
4311 assert(!(sflags & SVp_NOK));
4312 assert(!(sflags & SVp_IOK));
4313 assert(!(sflags & SVf_NOK));
4314 assert(!(sflags & SVf_IOK));
4316 else if (isGV_with_GP(dstr)) {
4317 if (!(sflags & SVf_OK)) {
4318 Perl_ck_warner(aTHX_ packWARN(WARN_MISC),
4319 "Undefined value assigned to typeglob");
4322 GV *gv = gv_fetchsv_nomg(sstr, GV_ADD, SVt_PVGV);
4323 if (dstr != (const SV *)gv) {
4324 const char * const name = GvNAME((const GV *)dstr);
4325 const STRLEN len = GvNAMELEN(dstr);
4326 HV *old_stash = NULL;
4327 bool reset_isa = FALSE;
4328 if ((len > 1 && name[len-2] == ':' && name[len-1] == ':')
4329 || (len == 1 && name[0] == ':')) {
4330 /* Set aside the old stash, so we can reset isa caches
4331 on its subclasses. */
4332 if((old_stash = GvHV(dstr))) {
4333 /* Make sure we do not lose it early. */
4334 SvREFCNT_inc_simple_void_NN(
4335 sv_2mortal((SV *)old_stash)
4342 SvREFCNT_inc_simple_void_NN(sv_2mortal(dstr));
4343 gp_free(MUTABLE_GV(dstr));
4345 GvGP_set(dstr, gp_ref(GvGP(gv)));
4348 HV * const stash = GvHV(dstr);
4350 old_stash ? (HV *)HvENAME_get(old_stash) : stash
4360 else if ((dtype == SVt_REGEXP || dtype == SVt_PVLV)
4361 && (stype == SVt_REGEXP || isREGEXP(sstr))) {
4362 reg_temp_copy((REGEXP*)dstr, (REGEXP*)sstr);
4364 else if (sflags & SVp_POK) {
4365 const STRLEN cur = SvCUR(sstr);
4366 const STRLEN len = SvLEN(sstr);
4369 * We have three basic ways to copy the string:
4375 * Which we choose is based on various factors. The following
4376 * things are listed in order of speed, fastest to slowest:
4378 * - Copying a short string
4379 * - Copy-on-write bookkeeping
4381 * - Copying a long string
4383 * We swipe the string (steal the string buffer) if the SV on the
4384 * rhs is about to be freed anyway (TEMP and refcnt==1). This is a
4385 * big win on long strings. It should be a win on short strings if
4386 * SvPVX_const(dstr) has to be allocated. If not, it should not
4387 * slow things down, as SvPVX_const(sstr) would have been freed
4390 * We also steal the buffer from a PADTMP (operator target) if it
4391 * is ‘long enough’. For short strings, a swipe does not help
4392 * here, as it causes more malloc calls the next time the target
4393 * is used. Benchmarks show that even if SvPVX_const(dstr) has to
4394 * be allocated it is still not worth swiping PADTMPs for short
4395 * strings, as the savings here are small.
4397 * If the rhs is already flagged as a copy-on-write string and COW
4398 * is possible here, we use copy-on-write and make both SVs share
4399 * the string buffer.
4401 * If the rhs is not flagged as copy-on-write, then we see whether
4402 * it is worth upgrading it to such. If the lhs already has a buf-
4403 * fer big enough and the string is short, we skip it and fall back
4404 * to method 3, since memcpy is faster for short strings than the
4405 * later bookkeeping overhead that copy-on-write entails.
4407 * If there is no buffer on the left, or the buffer is too small,
4408 * then we use copy-on-write.
4411 /* Whichever path we take through the next code, we want this true,
4412 and doing it now facilitates the COW check. */
4413 (void)SvPOK_only(dstr);
4417 /* slated for free anyway (and not COW)? */
4418 (sflags & (SVs_TEMP|SVf_IsCOW)) == SVs_TEMP
4419 /* or a swipable TARG */
4420 || ((sflags & (SVs_PADTMP|SVf_READONLY|SVf_IsCOW))
4422 /* whose buffer is worth stealing */
4423 && CHECK_COWBUF_THRESHOLD(cur,len)
4426 !(sflags & SVf_OOK) && /* and not involved in OOK hack? */
4427 (!(flags & SV_NOSTEAL)) &&
4428 /* and we're allowed to steal temps */
4429 SvREFCNT(sstr) == 1 && /* and no other references to it? */
4430 len) /* and really is a string */
4431 { /* Passes the swipe test. */
4432 if (SvPVX_const(dstr)) /* we know that dtype >= SVt_PV */
4434 SvPV_set(dstr, SvPVX_mutable(sstr));
4435 SvLEN_set(dstr, SvLEN(sstr));
4436 SvCUR_set(dstr, SvCUR(sstr));
4439 (void)SvOK_off(sstr); /* NOTE: nukes most SvFLAGS on sstr */
4440 SvPV_set(sstr, NULL);
4445 else if (flags & SV_COW_SHARED_HASH_KEYS
4447 #ifdef PERL_OLD_COPY_ON_WRITE
4448 ( sflags & SVf_IsCOW
4449 || ( (sflags & CAN_COW_MASK) == CAN_COW_FLAGS
4450 && (SvFLAGS(dstr) & CAN_COW_MASK) == CAN_COW_FLAGS
4451 && SvTYPE(sstr) >= SVt_PVIV && len
4454 #elif defined(PERL_NEW_COPY_ON_WRITE)
4457 ( (CHECK_COWBUF_THRESHOLD(cur,len) || SvLEN(dstr) < cur+1)
4458 /* If this is a regular (non-hek) COW, only so
4459 many COW "copies" are possible. */
4460 && CowREFCNT(sstr) != SV_COW_REFCNT_MAX ))
4461 : ( (sflags & CAN_COW_MASK) == CAN_COW_FLAGS
4462 && !(SvFLAGS(dstr) & SVf_BREAK)
4463 && CHECK_COW_THRESHOLD(cur,len) && cur+1 < len
4464 && (CHECK_COWBUF_THRESHOLD(cur,len) || SvLEN(dstr) < cur+1)
4468 && !(SvFLAGS(dstr) & SVf_BREAK)
4471 /* Either it's a shared hash key, or it's suitable for
4474 PerlIO_printf(Perl_debug_log, "Copy on write: sstr --> dstr\n");
4479 if (!(sflags & SVf_IsCOW)) {
4481 # ifdef PERL_OLD_COPY_ON_WRITE
4482 /* Make the source SV into a loop of 1.
4483 (about to become 2) */
4484 SV_COW_NEXT_SV_SET(sstr, sstr);
4486 CowREFCNT(sstr) = 0;
4490 if (SvPVX_const(dstr)) { /* we know that dtype >= SVt_PV */
4496 # ifdef PERL_OLD_COPY_ON_WRITE
4497 assert (SvTYPE(dstr) >= SVt_PVIV);
4498 /* SvIsCOW_normal */
4499 /* splice us in between source and next-after-source. */
4500 SV_COW_NEXT_SV_SET(dstr, SV_COW_NEXT_SV(sstr));
4501 SV_COW_NEXT_SV_SET(sstr, dstr);
4503 if (sflags & SVf_IsCOW) {
4508 SvPV_set(dstr, SvPVX_mutable(sstr));
4513 /* SvIsCOW_shared_hash */
4514 DEBUG_C(PerlIO_printf(Perl_debug_log,
4515 "Copy on write: Sharing hash\n"));
4517 assert (SvTYPE(dstr) >= SVt_PV);
4519 HEK_KEY(share_hek_hek(SvSHARED_HEK_FROM_PV(SvPVX_const(sstr)))));
4521 SvLEN_set(dstr, len);
4522 SvCUR_set(dstr, cur);
4525 /* Failed the swipe test, and we cannot do copy-on-write either.
4526 Have to copy the string. */
4527 SvGROW(dstr, cur + 1); /* inlined from sv_setpvn */
4528 Move(SvPVX_const(sstr),SvPVX(dstr),cur,char);
4529 SvCUR_set(dstr, cur);
4530 *SvEND(dstr) = '\0';
4532 if (sflags & SVp_NOK) {
4533 SvNV_set(dstr, SvNVX(sstr));
4535 if (sflags & SVp_IOK) {
4536 SvIV_set(dstr, SvIVX(sstr));
4537 /* Must do this otherwise some other overloaded use of 0x80000000
4538 gets confused. I guess SVpbm_VALID */
4539 if (sflags & SVf_IVisUV)
4542 SvFLAGS(dstr) |= sflags & (SVf_IOK|SVp_IOK|SVf_NOK|SVp_NOK|SVf_UTF8);
4544 const MAGIC * const smg = SvVSTRING_mg(sstr);
4546 sv_magic(dstr, NULL, PERL_MAGIC_vstring,
4547 smg->mg_ptr, smg->mg_len);
4548 SvRMAGICAL_on(dstr);
4552 else if (sflags & (SVp_IOK|SVp_NOK)) {
4553 (void)SvOK_off(dstr);
4554 SvFLAGS(dstr) |= sflags & (SVf_IOK|SVp_IOK|SVf_IVisUV|SVf_NOK|SVp_NOK);
4555 if (sflags & SVp_IOK) {
4556 /* XXXX Do we want to set IsUV for IV(ROK)? Be extra safe... */
4557 SvIV_set(dstr, SvIVX(sstr));
4559 if (sflags & SVp_NOK) {
4560 SvNV_set(dstr, SvNVX(sstr));
4564 if (isGV_with_GP(sstr)) {
4565 gv_efullname3(dstr, MUTABLE_GV(sstr), "*");
4568 (void)SvOK_off(dstr);
4570 if (SvTAINTED(sstr))
4575 =for apidoc sv_setsv_mg
4577 Like C<sv_setsv>, but also handles 'set' magic.
4583 Perl_sv_setsv_mg(pTHX_ SV *const dstr, SV *const sstr)
4585 PERL_ARGS_ASSERT_SV_SETSV_MG;
4587 sv_setsv(dstr,sstr);
4592 # ifdef PERL_OLD_COPY_ON_WRITE
4593 # define SVt_COW SVt_PVIV
4595 # define SVt_COW SVt_PV
4598 Perl_sv_setsv_cow(pTHX_ SV *dstr, SV *sstr)
4600 STRLEN cur = SvCUR(sstr);
4601 STRLEN len = SvLEN(sstr);
4603 #if defined(PERL_DEBUG_READONLY_COW) && defined(PERL_NEW_COPY_ON_WRITE)
4604 const bool already = cBOOL(SvIsCOW(sstr));
4607 PERL_ARGS_ASSERT_SV_SETSV_COW;
4610 PerlIO_printf(Perl_debug_log, "Fast copy on write: %p -> %p\n",
4611 (void*)sstr, (void*)dstr);
4618 if (SvTHINKFIRST(dstr))
4619 sv_force_normal_flags(dstr, SV_COW_DROP_PV);
4620 else if (SvPVX_const(dstr))
4621 Safefree(SvPVX_mutable(dstr));
4625 SvUPGRADE(dstr, SVt_COW);
4627 assert (SvPOK(sstr));
4628 assert (SvPOKp(sstr));
4629 # ifdef PERL_OLD_COPY_ON_WRITE
4630 assert (!SvIOK(sstr));
4631 assert (!SvIOKp(sstr));
4632 assert (!SvNOK(sstr));
4633 assert (!SvNOKp(sstr));