3 * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
4 * 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by Larry Wall and others
6 * You may distribute under the terms of either the GNU General Public
7 * License or the Artistic License, as specified in the README file.
9 * "I wonder what the Entish is for 'yes' and 'no'," he thought.
12 * This file contains the code that creates, manipulates and destroys
13 * scalar values (SVs). The other types (AV, HV, GV, etc.) reuse the
14 * structure of an SV, so their creation and destruction is handled
15 * here; higher-level functions are in av.c, hv.c, and so on. Opcode
16 * level functions (eg. substr, split, join) for each of the types are
28 /* Missing proto on LynxOS */
29 char *gconvert(double, int, int, char *);
32 #ifdef PERL_UTF8_CACHE_ASSERT
33 /* if adding more checks watch out for the following tests:
34 * t/op/index.t t/op/length.t t/op/pat.t t/op/substr.t
35 * lib/utf8.t lib/Unicode/Collate/t/index.t
38 # define ASSERT_UTF8_CACHE(cache) \
39 STMT_START { if (cache) { assert((cache)[0] <= (cache)[1]); \
40 assert((cache)[2] <= (cache)[3]); \
41 assert((cache)[3] <= (cache)[1]);} \
44 # define ASSERT_UTF8_CACHE(cache) NOOP
47 #ifdef PERL_OLD_COPY_ON_WRITE
48 #define SV_COW_NEXT_SV(sv) INT2PTR(SV *,SvUVX(sv))
49 #define SV_COW_NEXT_SV_SET(current,next) SvUV_set(current, PTR2UV(next))
50 /* This is a pessimistic view. Scalar must be purely a read-write PV to copy-
54 /* ============================================================================
56 =head1 Allocation and deallocation of SVs.
58 An SV (or AV, HV, etc.) is allocated in two parts: the head (struct
59 sv, av, hv...) contains type and reference count information, and for
60 many types, a pointer to the body (struct xrv, xpv, xpviv...), which
61 contains fields specific to each type. Some types store all they need
62 in the head, so don't have a body.
64 In all but the most memory-paranoid configuations (ex: PURIFY), heads
65 and bodies are allocated out of arenas, which by default are
66 approximately 4K chunks of memory parcelled up into N heads or bodies.
67 Sv-bodies are allocated by their sv-type, guaranteeing size
68 consistency needed to allocate safely from arrays.
70 For SV-heads, the first slot in each arena is reserved, and holds a
71 link to the next arena, some flags, and a note of the number of slots.
72 Snaked through each arena chain is a linked list of free items; when
73 this becomes empty, an extra arena is allocated and divided up into N
74 items which are threaded into the free list.
76 SV-bodies are similar, but they use arena-sets by default, which
77 separate the link and info from the arena itself, and reclaim the 1st
78 slot in the arena. SV-bodies are further described later.
80 The following global variables are associated with arenas:
82 PL_sv_arenaroot pointer to list of SV arenas
83 PL_sv_root pointer to list of free SV structures
85 PL_body_arenas head of linked-list of body arenas
86 PL_body_roots[] array of pointers to list of free bodies of svtype
87 arrays are indexed by the svtype needed
89 A few special SV heads are not allocated from an arena, but are
90 instead directly created in the interpreter structure, eg PL_sv_undef.
91 The size of arenas can be changed from the default by setting
92 PERL_ARENA_SIZE appropriately at compile time.
94 The SV arena serves the secondary purpose of allowing still-live SVs
95 to be located and destroyed during final cleanup.
97 At the lowest level, the macros new_SV() and del_SV() grab and free
98 an SV head. (If debugging with -DD, del_SV() calls the function S_del_sv()
99 to return the SV to the free list with error checking.) new_SV() calls
100 more_sv() / sv_add_arena() to add an extra arena if the free list is empty.
101 SVs in the free list have their SvTYPE field set to all ones.
103 At the time of very final cleanup, sv_free_arenas() is called from
104 perl_destruct() to physically free all the arenas allocated since the
105 start of the interpreter.
107 The function visit() scans the SV arenas list, and calls a specified
108 function for each SV it finds which is still live - ie which has an SvTYPE
109 other than all 1's, and a non-zero SvREFCNT. visit() is used by the
110 following functions (specified as [function that calls visit()] / [function
111 called by visit() for each SV]):
113 sv_report_used() / do_report_used()
114 dump all remaining SVs (debugging aid)
116 sv_clean_objs() / do_clean_objs(),do_clean_named_objs()
117 Attempt to free all objects pointed to by RVs,
118 and, unless DISABLE_DESTRUCTOR_KLUDGE is defined,
119 try to do the same for all objects indirectly
120 referenced by typeglobs too. Called once from
121 perl_destruct(), prior to calling sv_clean_all()
124 sv_clean_all() / do_clean_all()
125 SvREFCNT_dec(sv) each remaining SV, possibly
126 triggering an sv_free(). It also sets the
127 SVf_BREAK flag on the SV to indicate that the
128 refcnt has been artificially lowered, and thus
129 stopping sv_free() from giving spurious warnings
130 about SVs which unexpectedly have a refcnt
131 of zero. called repeatedly from perl_destruct()
132 until there are no SVs left.
134 =head2 Arena allocator API Summary
136 Private API to rest of sv.c
140 new_XIV(), del_XIV(),
141 new_XNV(), del_XNV(),
146 sv_report_used(), sv_clean_objs(), sv_clean_all(), sv_free_arenas()
150 ============================================================================ */
153 * "A time to plant, and a time to uproot what was planted..."
157 Perl_offer_nice_chunk(pTHX_ void *const chunk, const U32 chunk_size)
163 PERL_ARGS_ASSERT_OFFER_NICE_CHUNK;
165 new_chunk = (void *)(chunk);
166 new_chunk_size = (chunk_size);
167 if (new_chunk_size > PL_nice_chunk_size) {
168 Safefree(PL_nice_chunk);
169 PL_nice_chunk = (char *) new_chunk;
170 PL_nice_chunk_size = new_chunk_size;
177 # define MEM_LOG_NEW_SV(sv, file, line, func) \
178 Perl_mem_log_new_sv(sv, file, line, func)
179 # define MEM_LOG_DEL_SV(sv, file, line, func) \
180 Perl_mem_log_del_sv(sv, file, line, func)
182 # define MEM_LOG_NEW_SV(sv, file, line, func) NOOP
183 # define MEM_LOG_DEL_SV(sv, file, line, func) NOOP
186 #ifdef DEBUG_LEAKING_SCALARS
187 # define FREE_SV_DEBUG_FILE(sv) Safefree((sv)->sv_debug_file)
188 # define DEBUG_SV_SERIAL(sv) \
189 DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) del_SV\n", \
190 PTR2UV(sv), (long)(sv)->sv_debug_serial))
192 # define FREE_SV_DEBUG_FILE(sv)
193 # define DEBUG_SV_SERIAL(sv) NOOP
197 # define SvARENA_CHAIN(sv) ((sv)->sv_u.svu_rv)
198 # define SvARENA_CHAIN_SET(sv,val) (sv)->sv_u.svu_rv = (SV *)(val)
199 /* Whilst I'd love to do this, it seems that things like to check on
201 # define POSION_SV_HEAD(sv) PoisonNew(sv, 1, struct STRUCT_SV)
203 # define POSION_SV_HEAD(sv) PoisonNew(&SvANY(sv), 1, void *), \
204 PoisonNew(&SvREFCNT(sv), 1, U32)
206 # define SvARENA_CHAIN(sv) SvANY(sv)
207 # define SvARENA_CHAIN_SET(sv,val) SvANY(sv) = (void *)(val)
208 # define POSION_SV_HEAD(sv)
211 /* Mark an SV head as unused, and add to free list.
213 * If SVf_BREAK is set, skip adding it to the free list, as this SV had
214 * its refcount artificially decremented during global destruction, so
215 * there may be dangling pointers to it. The last thing we want in that
216 * case is for it to be reused. */
218 #define plant_SV(p) \
220 const U32 old_flags = SvFLAGS(p); \
221 MEM_LOG_DEL_SV(p, __FILE__, __LINE__, FUNCTION__); \
222 DEBUG_SV_SERIAL(p); \
223 FREE_SV_DEBUG_FILE(p); \
225 SvFLAGS(p) = SVTYPEMASK; \
226 if (!(old_flags & SVf_BREAK)) { \
227 SvARENA_CHAIN_SET(p, PL_sv_root); \
233 #define uproot_SV(p) \
236 PL_sv_root = (SV*)SvARENA_CHAIN(p); \
241 /* make some more SVs by adding another arena */
250 sv_add_arena(PL_nice_chunk, PL_nice_chunk_size, 0);
251 PL_nice_chunk = NULL;
252 PL_nice_chunk_size = 0;
255 char *chunk; /* must use New here to match call to */
256 Newx(chunk,PERL_ARENA_SIZE,char); /* Safefree() in sv_free_arenas() */
257 sv_add_arena(chunk, PERL_ARENA_SIZE, 0);
263 /* new_SV(): return a new, empty SV head */
265 #ifdef DEBUG_LEAKING_SCALARS
266 /* provide a real function for a debugger to play with */
268 S_new_SV(pTHX_ const char *file, int line, const char *func)
275 sv = S_more_sv(aTHX);
279 sv->sv_debug_optype = PL_op ? PL_op->op_type : 0;
280 sv->sv_debug_line = (U16) (PL_parser && PL_parser->copline != NOLINE
286 sv->sv_debug_inpad = 0;
287 sv->sv_debug_cloned = 0;
288 sv->sv_debug_file = PL_curcop ? savepv(CopFILE(PL_curcop)): NULL;
290 sv->sv_debug_serial = PL_sv_serial++;
292 MEM_LOG_NEW_SV(sv, file, line, func);
293 DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) new_SV (from %s:%d [%s])\n",
294 PTR2UV(sv), (long)sv->sv_debug_serial, file, line, func));
298 # define new_SV(p) (p)=S_new_SV(aTHX_ __FILE__, __LINE__, FUNCTION__)
306 (p) = S_more_sv(aTHX); \
310 MEM_LOG_NEW_SV(p, __FILE__, __LINE__, FUNCTION__); \
315 /* del_SV(): return an empty SV head to the free list */
328 S_del_sv(pTHX_ SV *p)
332 PERL_ARGS_ASSERT_DEL_SV;
337 for (sva = PL_sv_arenaroot; sva; sva = (SV *) SvANY(sva)) {
338 const SV * const sv = sva + 1;
339 const SV * const svend = &sva[SvREFCNT(sva)];
340 if (p >= sv && p < svend) {
346 if (ckWARN_d(WARN_INTERNAL))
347 Perl_warner(aTHX_ packWARN(WARN_INTERNAL),
348 "Attempt to free non-arena SV: 0x%"UVxf
349 pTHX__FORMAT, PTR2UV(p) pTHX__VALUE);
356 #else /* ! DEBUGGING */
358 #define del_SV(p) plant_SV(p)
360 #endif /* DEBUGGING */
364 =head1 SV Manipulation Functions
366 =for apidoc sv_add_arena
368 Given a chunk of memory, link it to the head of the list of arenas,
369 and split it into a list of free SVs.
375 Perl_sv_add_arena(pTHX_ char *const ptr, const U32 size, const U32 flags)
378 SV* const sva = (SV*)ptr;
382 PERL_ARGS_ASSERT_SV_ADD_ARENA;
384 /* The first SV in an arena isn't an SV. */
385 SvANY(sva) = (void *) PL_sv_arenaroot; /* ptr to next arena */
386 SvREFCNT(sva) = size / sizeof(SV); /* number of SV slots */
387 SvFLAGS(sva) = flags; /* FAKE if not to be freed */
389 PL_sv_arenaroot = sva;
390 PL_sv_root = sva + 1;
392 svend = &sva[SvREFCNT(sva) - 1];
395 SvARENA_CHAIN_SET(sv, (sv + 1));
399 /* Must always set typemask because it's always checked in on cleanup
400 when the arenas are walked looking for objects. */
401 SvFLAGS(sv) = SVTYPEMASK;
404 SvARENA_CHAIN_SET(sv, 0);
408 SvFLAGS(sv) = SVTYPEMASK;
411 /* visit(): call the named function for each non-free SV in the arenas
412 * whose flags field matches the flags/mask args. */
415 S_visit(pTHX_ SVFUNC_t f, const U32 flags, const U32 mask)
421 PERL_ARGS_ASSERT_VISIT;
423 for (sva = PL_sv_arenaroot; sva; sva = (SV*)SvANY(sva)) {
424 register const SV * const svend = &sva[SvREFCNT(sva)];
426 for (sv = sva + 1; sv < svend; ++sv) {
427 if (SvTYPE(sv) != SVTYPEMASK
428 && (sv->sv_flags & mask) == flags
441 /* called by sv_report_used() for each live SV */
444 do_report_used(pTHX_ SV *const sv)
446 if (SvTYPE(sv) != SVTYPEMASK) {
447 PerlIO_printf(Perl_debug_log, "****\n");
454 =for apidoc sv_report_used
456 Dump the contents of all SVs not yet freed. (Debugging aid).
462 Perl_sv_report_used(pTHX)
465 visit(do_report_used, 0, 0);
471 /* called by sv_clean_objs() for each live SV */
474 do_clean_objs(pTHX_ SV *const ref)
479 SV * const target = SvRV(ref);
480 if (SvOBJECT(target)) {
481 DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning object ref:\n "), sv_dump(ref)));
482 if (SvWEAKREF(ref)) {
483 sv_del_backref(target, ref);
489 SvREFCNT_dec(target);
494 /* XXX Might want to check arrays, etc. */
497 /* called by sv_clean_objs() for each live SV */
499 #ifndef DISABLE_DESTRUCTOR_KLUDGE
501 do_clean_named_objs(pTHX_ SV *const sv)
504 assert(SvTYPE(sv) == SVt_PVGV);
505 assert(isGV_with_GP(sv));
508 #ifdef PERL_DONT_CREATE_GVSV
511 SvOBJECT(GvSV(sv))) ||
512 (GvAV(sv) && SvOBJECT(GvAV(sv))) ||
513 (GvHV(sv) && SvOBJECT(GvHV(sv))) ||
514 /* In certain rare cases GvIOp(sv) can be NULL, which would make SvOBJECT(GvIO(sv)) dereference NULL. */
515 (GvIO(sv) ? (SvFLAGS(GvIOp(sv)) & SVs_OBJECT) : 0) ||
516 (GvCV(sv) && SvOBJECT(GvCV(sv))) )
518 DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning named glob object:\n "), sv_dump(sv)));
519 SvFLAGS(sv) |= SVf_BREAK;
527 =for apidoc sv_clean_objs
529 Attempt to destroy all objects not yet freed
535 Perl_sv_clean_objs(pTHX)
538 PL_in_clean_objs = TRUE;
539 visit(do_clean_objs, SVf_ROK, SVf_ROK);
540 #ifndef DISABLE_DESTRUCTOR_KLUDGE
541 /* some barnacles may yet remain, clinging to typeglobs */
542 visit(do_clean_named_objs, SVt_PVGV|SVpgv_GP, SVTYPEMASK|SVp_POK|SVpgv_GP);
544 PL_in_clean_objs = FALSE;
547 /* called by sv_clean_all() for each live SV */
550 do_clean_all(pTHX_ SV *const sv)
553 if (sv == (SV*) PL_fdpid || sv == (SV *)PL_strtab) {
554 /* don't clean pid table and strtab */
557 DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning loops: SV at 0x%"UVxf"\n", PTR2UV(sv)) ));
558 SvFLAGS(sv) |= SVf_BREAK;
563 =for apidoc sv_clean_all
565 Decrement the refcnt of each remaining SV, possibly triggering a
566 cleanup. This function may have to be called multiple times to free
567 SVs which are in complex self-referential hierarchies.
573 Perl_sv_clean_all(pTHX)
577 PL_in_clean_all = TRUE;
578 cleaned = visit(do_clean_all, 0,0);
579 PL_in_clean_all = FALSE;
584 ARENASETS: a meta-arena implementation which separates arena-info
585 into struct arena_set, which contains an array of struct
586 arena_descs, each holding info for a single arena. By separating
587 the meta-info from the arena, we recover the 1st slot, formerly
588 borrowed for list management. The arena_set is about the size of an
589 arena, avoiding the needless malloc overhead of a naive linked-list.
591 The cost is 1 arena-set malloc per ~320 arena-mallocs, + the unused
592 memory in the last arena-set (1/2 on average). In trade, we get
593 back the 1st slot in each arena (ie 1.7% of a CV-arena, less for
594 smaller types). The recovery of the wasted space allows use of
595 small arenas for large, rare body types, by changing array* fields
596 in body_details_by_type[] below.
599 char *arena; /* the raw storage, allocated aligned */
600 size_t size; /* its size ~4k typ */
601 U32 misc; /* type, and in future other things. */
606 /* Get the maximum number of elements in set[] such that struct arena_set
607 will fit within PERL_ARENA_SIZE, which is probably just under 4K, and
608 therefore likely to be 1 aligned memory page. */
610 #define ARENAS_PER_SET ((PERL_ARENA_SIZE - sizeof(struct arena_set*) \
611 - 2 * sizeof(int)) / sizeof (struct arena_desc))
614 struct arena_set* next;
615 unsigned int set_size; /* ie ARENAS_PER_SET */
616 unsigned int curr; /* index of next available arena-desc */
617 struct arena_desc set[ARENAS_PER_SET];
621 =for apidoc sv_free_arenas
623 Deallocate the memory used by all arenas. Note that all the individual SV
624 heads and bodies within the arenas must already have been freed.
629 Perl_sv_free_arenas(pTHX)
636 /* Free arenas here, but be careful about fake ones. (We assume
637 contiguity of the fake ones with the corresponding real ones.) */
639 for (sva = PL_sv_arenaroot; sva; sva = svanext) {
640 svanext = (SV*) SvANY(sva);
641 while (svanext && SvFAKE(svanext))
642 svanext = (SV*) SvANY(svanext);
649 struct arena_set *aroot = (struct arena_set*) PL_body_arenas;
652 struct arena_set *current = aroot;
655 assert(aroot->set[i].arena);
656 Safefree(aroot->set[i].arena);
664 i = PERL_ARENA_ROOTS_SIZE;
666 PL_body_roots[i] = 0;
668 Safefree(PL_nice_chunk);
669 PL_nice_chunk = NULL;
670 PL_nice_chunk_size = 0;
676 Here are mid-level routines that manage the allocation of bodies out
677 of the various arenas. There are 5 kinds of arenas:
679 1. SV-head arenas, which are discussed and handled above
680 2. regular body arenas
681 3. arenas for reduced-size bodies
683 5. pte arenas (thread related)
685 Arena types 2 & 3 are chained by body-type off an array of
686 arena-root pointers, which is indexed by svtype. Some of the
687 larger/less used body types are malloced singly, since a large
688 unused block of them is wasteful. Also, several svtypes dont have
689 bodies; the data fits into the sv-head itself. The arena-root
690 pointer thus has a few unused root-pointers (which may be hijacked
691 later for arena types 4,5)
693 3 differs from 2 as an optimization; some body types have several
694 unused fields in the front of the structure (which are kept in-place
695 for consistency). These bodies can be allocated in smaller chunks,
696 because the leading fields arent accessed. Pointers to such bodies
697 are decremented to point at the unused 'ghost' memory, knowing that
698 the pointers are used with offsets to the real memory.
700 HE, HEK arenas are managed separately, with separate code, but may
701 be merge-able later..
703 PTE arenas are not sv-bodies, but they share these mid-level
704 mechanics, so are considered here. The new mid-level mechanics rely
705 on the sv_type of the body being allocated, so we just reserve one
706 of the unused body-slots for PTEs, then use it in those (2) PTE
707 contexts below (line ~10k)
710 /* get_arena(size): this creates custom-sized arenas
711 TBD: export properly for hv.c: S_more_he().
714 Perl_get_arena(pTHX_ const size_t arena_size, const U32 misc)
717 struct arena_desc* adesc;
718 struct arena_set *aroot = (struct arena_set*) PL_body_arenas;
721 /* shouldnt need this
722 if (!arena_size) arena_size = PERL_ARENA_SIZE;
725 /* may need new arena-set to hold new arena */
726 if (!aroot || aroot->curr >= aroot->set_size) {
727 struct arena_set *newroot;
728 Newxz(newroot, 1, struct arena_set);
729 newroot->set_size = ARENAS_PER_SET;
730 newroot->next = aroot;
732 PL_body_arenas = (void *) newroot;
733 DEBUG_m(PerlIO_printf(Perl_debug_log, "new arenaset %p\n", (void*)aroot));
736 /* ok, now have arena-set with at least 1 empty/available arena-desc */
737 curr = aroot->curr++;
738 adesc = &(aroot->set[curr]);
739 assert(!adesc->arena);
741 Newx(adesc->arena, arena_size, char);
742 adesc->size = arena_size;
744 DEBUG_m(PerlIO_printf(Perl_debug_log, "arena %d added: %p size %"UVuf"\n",
745 curr, (void*)adesc->arena, (UV)arena_size));
751 /* return a thing to the free list */
753 #define del_body(thing, root) \
755 void ** const thing_copy = (void **)thing;\
756 *thing_copy = *root; \
757 *root = (void*)thing_copy; \
762 =head1 SV-Body Allocation
764 Allocation of SV-bodies is similar to SV-heads, differing as follows;
765 the allocation mechanism is used for many body types, so is somewhat
766 more complicated, it uses arena-sets, and has no need for still-live
769 At the outermost level, (new|del)_X*V macros return bodies of the
770 appropriate type. These macros call either (new|del)_body_type or
771 (new|del)_body_allocated macro pairs, depending on specifics of the
772 type. Most body types use the former pair, the latter pair is used to
773 allocate body types with "ghost fields".
775 "ghost fields" are fields that are unused in certain types, and
776 consequently dont need to actually exist. They are declared because
777 they're part of a "base type", which allows use of functions as
778 methods. The simplest examples are AVs and HVs, 2 aggregate types
779 which don't use the fields which support SCALAR semantics.
781 For these types, the arenas are carved up into *_allocated size
782 chunks, we thus avoid wasted memory for those unaccessed members.
783 When bodies are allocated, we adjust the pointer back in memory by the
784 size of the bit not allocated, so it's as if we allocated the full
785 structure. (But things will all go boom if you write to the part that
786 is "not there", because you'll be overwriting the last members of the
787 preceding structure in memory.)
789 We calculate the correction using the STRUCT_OFFSET macro. For
790 example, if xpv_allocated is the same structure as XPV then the two
791 OFFSETs sum to zero, and the pointer is unchanged. If the allocated
792 structure is smaller (no initial NV actually allocated) then the net
793 effect is to subtract the size of the NV from the pointer, to return a
794 new pointer as if an initial NV were actually allocated.
796 This is the same trick as was used for NV and IV bodies. Ironically it
797 doesn't need to be used for NV bodies any more, because NV is now at
798 the start of the structure. IV bodies don't need it either, because
799 they are no longer allocated.
801 In turn, the new_body_* allocators call S_new_body(), which invokes
802 new_body_inline macro, which takes a lock, and takes a body off the
803 linked list at PL_body_roots[sv_type], calling S_more_bodies() if
804 necessary to refresh an empty list. Then the lock is released, and
805 the body is returned.
807 S_more_bodies calls get_arena(), and carves it up into an array of N
808 bodies, which it strings into a linked list. It looks up arena-size
809 and body-size from the body_details table described below, thus
810 supporting the multiple body-types.
812 If PURIFY is defined, or PERL_ARENA_SIZE=0, arenas are not used, and
813 the (new|del)_X*V macros are mapped directly to malloc/free.
819 For each sv-type, struct body_details bodies_by_type[] carries
820 parameters which control these aspects of SV handling:
822 Arena_size determines whether arenas are used for this body type, and if
823 so, how big they are. PURIFY or PERL_ARENA_SIZE=0 set this field to
824 zero, forcing individual mallocs and frees.
826 Body_size determines how big a body is, and therefore how many fit into
827 each arena. Offset carries the body-pointer adjustment needed for
828 *_allocated body types, and is used in *_allocated macros.
830 But its main purpose is to parameterize info needed in
831 Perl_sv_upgrade(). The info here dramatically simplifies the function
832 vs the implementation in 5.8.7, making it table-driven. All fields
833 are used for this, except for arena_size.
835 For the sv-types that have no bodies, arenas are not used, so those
836 PL_body_roots[sv_type] are unused, and can be overloaded. In
837 something of a special case, SVt_NULL is borrowed for HE arenas;
838 PL_body_roots[HE_SVSLOT=SVt_NULL] is filled by S_more_he, but the
839 bodies_by_type[SVt_NULL] slot is not used, as the table is not
842 PTEs also use arenas, but are never seen in Perl_sv_upgrade. Nonetheless,
843 they get their own slot in bodies_by_type[PTE_SVSLOT =SVt_IV], so they can
844 just use the same allocation semantics. At first, PTEs were also
845 overloaded to a non-body sv-type, but this yielded hard-to-find malloc
846 bugs, so was simplified by claiming a new slot. This choice has no
847 consequence at this time.
851 struct body_details {
852 U8 body_size; /* Size to allocate */
853 U8 copy; /* Size of structure to copy (may be shorter) */
855 unsigned int type : 4; /* We have space for a sanity check. */
856 unsigned int cant_upgrade : 1; /* Cannot upgrade this type */
857 unsigned int zero_nv : 1; /* zero the NV when upgrading from this */
858 unsigned int arena : 1; /* Allocated from an arena */
859 size_t arena_size; /* Size of arena to allocate */
867 /* With -DPURFIY we allocate everything directly, and don't use arenas.
868 This seems a rather elegant way to simplify some of the code below. */
869 #define HASARENA FALSE
871 #define HASARENA TRUE
873 #define NOARENA FALSE
875 /* Size the arenas to exactly fit a given number of bodies. A count
876 of 0 fits the max number bodies into a PERL_ARENA_SIZE.block,
877 simplifying the default. If count > 0, the arena is sized to fit
878 only that many bodies, allowing arenas to be used for large, rare
879 bodies (XPVFM, XPVIO) without undue waste. The arena size is
880 limited by PERL_ARENA_SIZE, so we can safely oversize the
883 #define FIT_ARENA0(body_size) \
884 ((size_t)(PERL_ARENA_SIZE / body_size) * body_size)
885 #define FIT_ARENAn(count,body_size) \
886 ( count * body_size <= PERL_ARENA_SIZE) \
887 ? count * body_size \
888 : FIT_ARENA0 (body_size)
889 #define FIT_ARENA(count,body_size) \
891 ? FIT_ARENAn (count, body_size) \
892 : FIT_ARENA0 (body_size)
894 /* A macro to work out the offset needed to subtract from a pointer to (say)
901 to make its members accessible via a pointer to (say)
911 #define relative_STRUCT_OFFSET(longer, shorter, member) \
912 (STRUCT_OFFSET(shorter, member) - STRUCT_OFFSET(longer, member))
914 /* Calculate the length to copy. Specifically work out the length less any
915 final padding the compiler needed to add. See the comment in sv_upgrade
916 for why copying the padding proved to be a bug. */
918 #define copy_length(type, last_member) \
919 STRUCT_OFFSET(type, last_member) \
920 + sizeof (((type*)SvANY((SV*)0))->last_member)
922 static const struct body_details bodies_by_type[] = {
923 { sizeof(HE), 0, 0, SVt_NULL,
924 FALSE, NONV, NOARENA, FIT_ARENA(0, sizeof(HE)) },
926 /* The bind placeholder pretends to be an RV for now.
927 Also it's marked as "can't upgrade" to stop anyone using it before it's
929 { 0, 0, 0, SVt_BIND, TRUE, NONV, NOARENA, 0 },
931 /* IVs are in the head, so the allocation size is 0.
932 However, the slot is overloaded for PTEs. */
933 { sizeof(struct ptr_tbl_ent), /* This is used for PTEs. */
934 sizeof(IV), /* This is used to copy out the IV body. */
935 STRUCT_OFFSET(XPVIV, xiv_iv), SVt_IV, FALSE, NONV,
936 NOARENA /* IVS don't need an arena */,
937 /* But PTEs need to know the size of their arena */
938 FIT_ARENA(0, sizeof(struct ptr_tbl_ent))
941 /* 8 bytes on most ILP32 with IEEE doubles */
942 { sizeof(NV), sizeof(NV), 0, SVt_NV, FALSE, HADNV, HASARENA,
943 FIT_ARENA(0, sizeof(NV)) },
945 /* 8 bytes on most ILP32 with IEEE doubles */
946 { sizeof(xpv_allocated),
947 copy_length(XPV, xpv_len)
948 - relative_STRUCT_OFFSET(xpv_allocated, XPV, xpv_cur),
949 + relative_STRUCT_OFFSET(xpv_allocated, XPV, xpv_cur),
950 SVt_PV, FALSE, NONV, HASARENA, FIT_ARENA(0, sizeof(xpv_allocated)) },
953 { sizeof(xpviv_allocated),
954 copy_length(XPVIV, xiv_u)
955 - relative_STRUCT_OFFSET(xpviv_allocated, XPVIV, xpv_cur),
956 + relative_STRUCT_OFFSET(xpviv_allocated, XPVIV, xpv_cur),
957 SVt_PVIV, FALSE, NONV, HASARENA, FIT_ARENA(0, sizeof(xpviv_allocated)) },
960 { sizeof(XPVNV), copy_length(XPVNV, xiv_u), 0, SVt_PVNV, FALSE, HADNV,
961 HASARENA, FIT_ARENA(0, sizeof(XPVNV)) },
964 { sizeof(XPVMG), copy_length(XPVMG, xmg_stash), 0, SVt_PVMG, FALSE, HADNV,
965 HASARENA, FIT_ARENA(0, sizeof(XPVMG)) },
968 { sizeof(struct regexp_allocated), sizeof(struct regexp_allocated),
969 + relative_STRUCT_OFFSET(struct regexp_allocated, regexp, xpv_cur),
970 SVt_REGEXP, FALSE, NONV, HASARENA,
971 FIT_ARENA(0, sizeof(struct regexp_allocated))
975 { sizeof(XPVGV), sizeof(XPVGV), 0, SVt_PVGV, TRUE, HADNV,
976 HASARENA, FIT_ARENA(0, sizeof(XPVGV)) },
979 { sizeof(XPVLV), sizeof(XPVLV), 0, SVt_PVLV, TRUE, HADNV,
980 HASARENA, FIT_ARENA(0, sizeof(XPVLV)) },
982 { sizeof(xpvav_allocated),
983 copy_length(XPVAV, xmg_stash)
984 - relative_STRUCT_OFFSET(xpvav_allocated, XPVAV, xav_fill),
985 + relative_STRUCT_OFFSET(xpvav_allocated, XPVAV, xav_fill),
986 SVt_PVAV, TRUE, NONV, HASARENA, FIT_ARENA(0, sizeof(xpvav_allocated)) },
988 { sizeof(xpvhv_allocated),
989 copy_length(XPVHV, xmg_stash)
990 - relative_STRUCT_OFFSET(xpvhv_allocated, XPVHV, xhv_fill),
991 + relative_STRUCT_OFFSET(xpvhv_allocated, XPVHV, xhv_fill),
992 SVt_PVHV, TRUE, NONV, HASARENA, FIT_ARENA(0, sizeof(xpvhv_allocated)) },
995 { sizeof(xpvcv_allocated), sizeof(xpvcv_allocated),
996 + relative_STRUCT_OFFSET(xpvcv_allocated, XPVCV, xpv_cur),
997 SVt_PVCV, TRUE, NONV, HASARENA, FIT_ARENA(0, sizeof(xpvcv_allocated)) },
999 { sizeof(xpvfm_allocated), sizeof(xpvfm_allocated),
1000 + relative_STRUCT_OFFSET(xpvfm_allocated, XPVFM, xpv_cur),
1001 SVt_PVFM, TRUE, NONV, NOARENA, FIT_ARENA(20, sizeof(xpvfm_allocated)) },
1003 /* XPVIO is 84 bytes, fits 48x */
1004 { sizeof(xpvio_allocated), sizeof(xpvio_allocated),
1005 + relative_STRUCT_OFFSET(xpvio_allocated, XPVIO, xpv_cur),
1006 SVt_PVIO, TRUE, NONV, HASARENA, FIT_ARENA(24, sizeof(xpvio_allocated)) },
1009 #define new_body_type(sv_type) \
1010 (void *)((char *)S_new_body(aTHX_ sv_type))
1012 #define del_body_type(p, sv_type) \
1013 del_body(p, &PL_body_roots[sv_type])
1016 #define new_body_allocated(sv_type) \
1017 (void *)((char *)S_new_body(aTHX_ sv_type) \
1018 - bodies_by_type[sv_type].offset)
1020 #define del_body_allocated(p, sv_type) \
1021 del_body(p + bodies_by_type[sv_type].offset, &PL_body_roots[sv_type])
1024 #define my_safemalloc(s) (void*)safemalloc(s)
1025 #define my_safecalloc(s) (void*)safecalloc(s, 1)
1026 #define my_safefree(p) safefree((char*)p)
1030 #define new_XNV() my_safemalloc(sizeof(XPVNV))
1031 #define del_XNV(p) my_safefree(p)
1033 #define new_XPVNV() my_safemalloc(sizeof(XPVNV))
1034 #define del_XPVNV(p) my_safefree(p)
1036 #define new_XPVAV() my_safemalloc(sizeof(XPVAV))
1037 #define del_XPVAV(p) my_safefree(p)
1039 #define new_XPVHV() my_safemalloc(sizeof(XPVHV))
1040 #define del_XPVHV(p) my_safefree(p)
1042 #define new_XPVMG() my_safemalloc(sizeof(XPVMG))
1043 #define del_XPVMG(p) my_safefree(p)
1045 #define new_XPVGV() my_safemalloc(sizeof(XPVGV))
1046 #define del_XPVGV(p) my_safefree(p)
1050 #define new_XNV() new_body_type(SVt_NV)
1051 #define del_XNV(p) del_body_type(p, SVt_NV)
1053 #define new_XPVNV() new_body_type(SVt_PVNV)
1054 #define del_XPVNV(p) del_body_type(p, SVt_PVNV)
1056 #define new_XPVAV() new_body_allocated(SVt_PVAV)
1057 #define del_XPVAV(p) del_body_allocated(p, SVt_PVAV)
1059 #define new_XPVHV() new_body_allocated(SVt_PVHV)
1060 #define del_XPVHV(p) del_body_allocated(p, SVt_PVHV)
1062 #define new_XPVMG() new_body_type(SVt_PVMG)
1063 #define del_XPVMG(p) del_body_type(p, SVt_PVMG)
1065 #define new_XPVGV() new_body_type(SVt_PVGV)
1066 #define del_XPVGV(p) del_body_type(p, SVt_PVGV)
1070 /* no arena for you! */
1072 #define new_NOARENA(details) \
1073 my_safemalloc((details)->body_size + (details)->offset)
1074 #define new_NOARENAZ(details) \
1075 my_safecalloc((details)->body_size + (details)->offset)
1078 S_more_bodies (pTHX_ const svtype sv_type)
1081 void ** const root = &PL_body_roots[sv_type];
1082 const struct body_details * const bdp = &bodies_by_type[sv_type];
1083 const size_t body_size = bdp->body_size;
1086 const size_t arena_size = Perl_malloc_good_size(bdp->arena_size);
1087 #if defined(DEBUGGING) && !defined(PERL_GLOBAL_STRUCT_PRIVATE)
1088 static bool done_sanity_check;
1090 /* PERL_GLOBAL_STRUCT_PRIVATE cannot coexist with global
1091 * variables like done_sanity_check. */
1092 if (!done_sanity_check) {
1093 unsigned int i = SVt_LAST;
1095 done_sanity_check = TRUE;
1098 assert (bodies_by_type[i].type == i);
1102 assert(bdp->arena_size);
1104 start = (char*) Perl_get_arena(aTHX_ arena_size, sv_type);
1106 end = start + arena_size - 2 * body_size;
1108 /* computed count doesnt reflect the 1st slot reservation */
1109 #if defined(MYMALLOC) || defined(HAS_MALLOC_GOOD_SIZE)
1110 DEBUG_m(PerlIO_printf(Perl_debug_log,
1111 "arena %p end %p arena-size %d (from %d) type %d "
1113 (void*)start, (void*)end, (int)arena_size,
1114 (int)bdp->arena_size, sv_type, (int)body_size,
1115 (int)arena_size / (int)body_size));
1117 DEBUG_m(PerlIO_printf(Perl_debug_log,
1118 "arena %p end %p arena-size %d type %d size %d ct %d\n",
1119 (void*)start, (void*)end,
1120 (int)bdp->arena_size, sv_type, (int)body_size,
1121 (int)bdp->arena_size / (int)body_size));
1123 *root = (void *)start;
1125 while (start <= end) {
1126 char * const next = start + body_size;
1127 *(void**) start = (void *)next;
1130 *(void **)start = 0;
1135 /* grab a new thing from the free list, allocating more if necessary.
1136 The inline version is used for speed in hot routines, and the
1137 function using it serves the rest (unless PURIFY).
1139 #define new_body_inline(xpv, sv_type) \
1141 void ** const r3wt = &PL_body_roots[sv_type]; \
1142 xpv = (PTR_TBL_ENT_t*) (*((void **)(r3wt)) \
1143 ? *((void **)(r3wt)) : more_bodies(sv_type)); \
1144 *(r3wt) = *(void**)(xpv); \
1150 S_new_body(pTHX_ const svtype sv_type)
1154 new_body_inline(xpv, sv_type);
1160 static const struct body_details fake_rv =
1161 { 0, 0, 0, SVt_IV, FALSE, NONV, NOARENA, 0 };
1164 =for apidoc sv_upgrade
1166 Upgrade an SV to a more complex form. Generally adds a new body type to the
1167 SV, then copies across as much information as possible from the old body.
1168 You generally want to use the C<SvUPGRADE> macro wrapper. See also C<svtype>.
1174 Perl_sv_upgrade(pTHX_ register SV *const sv, svtype new_type)
1179 const svtype old_type = SvTYPE(sv);
1180 const struct body_details *new_type_details;
1181 const struct body_details *old_type_details
1182 = bodies_by_type + old_type;
1183 SV *referant = NULL;
1185 PERL_ARGS_ASSERT_SV_UPGRADE;
1187 if (new_type != SVt_PV && SvIsCOW(sv)) {
1188 sv_force_normal_flags(sv, 0);
1191 if (old_type == new_type)
1194 old_body = SvANY(sv);
1196 /* Copying structures onto other structures that have been neatly zeroed
1197 has a subtle gotcha. Consider XPVMG
1199 +------+------+------+------+------+-------+-------+
1200 | NV | CUR | LEN | IV | MAGIC | STASH |
1201 +------+------+------+------+------+-------+-------+
1202 0 4 8 12 16 20 24 28
1204 where NVs are aligned to 8 bytes, so that sizeof that structure is
1205 actually 32 bytes long, with 4 bytes of padding at the end:
1207 +------+------+------+------+------+-------+-------+------+
1208 | NV | CUR | LEN | IV | MAGIC | STASH | ??? |
1209 +------+------+------+------+------+-------+-------+------+
1210 0 4 8 12 16 20 24 28 32
1212 so what happens if you allocate memory for this structure:
1214 +------+------+------+------+------+-------+-------+------+------+...
1215 | NV | CUR | LEN | IV | MAGIC | STASH | GP | NAME |
1216 +------+------+------+------+------+-------+-------+------+------+...
1217 0 4 8 12 16 20 24 28 32 36
1219 zero it, then copy sizeof(XPVMG) bytes on top of it? Not quite what you
1220 expect, because you copy the area marked ??? onto GP. Now, ??? may have
1221 started out as zero once, but it's quite possible that it isn't. So now,
1222 rather than a nicely zeroed GP, you have it pointing somewhere random.
1225 (In fact, GP ends up pointing at a previous GP structure, because the
1226 principle cause of the padding in XPVMG getting garbage is a copy of
1227 sizeof(XPVMG) bytes from a XPVGV structure in sv_unglob. Right now
1228 this happens to be moot because XPVGV has been re-ordered, with GP
1229 no longer after STASH)
1231 So we are careful and work out the size of used parts of all the
1239 referant = SvRV(sv);
1240 old_type_details = &fake_rv;
1241 if (new_type == SVt_NV)
1242 new_type = SVt_PVNV;
1244 if (new_type < SVt_PVIV) {
1245 new_type = (new_type == SVt_NV)
1246 ? SVt_PVNV : SVt_PVIV;
1251 if (new_type < SVt_PVNV) {
1252 new_type = SVt_PVNV;
1256 assert(new_type > SVt_PV);
1257 assert(SVt_IV < SVt_PV);
1258 assert(SVt_NV < SVt_PV);
1265 /* Because the XPVMG of PL_mess_sv isn't allocated from the arena,
1266 there's no way that it can be safely upgraded, because perl.c
1267 expects to Safefree(SvANY(PL_mess_sv)) */
1268 assert(sv != PL_mess_sv);
1269 /* This flag bit is used to mean other things in other scalar types.
1270 Given that it only has meaning inside the pad, it shouldn't be set
1271 on anything that can get upgraded. */
1272 assert(!SvPAD_TYPED(sv));
1275 if (old_type_details->cant_upgrade)
1276 Perl_croak(aTHX_ "Can't upgrade %s (%" UVuf ") to %" UVuf,
1277 sv_reftype(sv, 0), (UV) old_type, (UV) new_type);
1280 if (old_type > new_type)
1281 Perl_croak(aTHX_ "sv_upgrade from type %d down to type %d",
1282 (int)old_type, (int)new_type);
1284 new_type_details = bodies_by_type + new_type;
1286 SvFLAGS(sv) &= ~SVTYPEMASK;
1287 SvFLAGS(sv) |= new_type;
1289 /* This can't happen, as SVt_NULL is <= all values of new_type, so one of
1290 the return statements above will have triggered. */
1291 assert (new_type != SVt_NULL);
1294 assert(old_type == SVt_NULL);
1295 SvANY(sv) = (XPVIV*)((char*)&(sv->sv_u.svu_iv) - STRUCT_OFFSET(XPVIV, xiv_iv));
1299 assert(old_type == SVt_NULL);
1300 SvANY(sv) = new_XNV();
1305 assert(new_type_details->body_size);
1308 assert(new_type_details->arena);
1309 assert(new_type_details->arena_size);
1310 /* This points to the start of the allocated area. */
1311 new_body_inline(new_body, new_type);
1312 Zero(new_body, new_type_details->body_size, char);
1313 new_body = ((char *)new_body) - new_type_details->offset;
1315 /* We always allocated the full length item with PURIFY. To do this
1316 we fake things so that arena is false for all 16 types.. */
1317 new_body = new_NOARENAZ(new_type_details);
1319 SvANY(sv) = new_body;
1320 if (new_type == SVt_PVAV) {
1324 if (old_type_details->body_size) {
1327 /* It will have been zeroed when the new body was allocated.
1328 Lets not write to it, in case it confuses a write-back
1334 #ifndef NODEFAULT_SHAREKEYS
1335 HvSHAREKEYS_on(sv); /* key-sharing on by default */
1337 HvMAX(sv) = 7; /* (start with 8 buckets) */
1338 if (old_type_details->body_size) {
1341 /* It will have been zeroed when the new body was allocated.
1342 Lets not write to it, in case it confuses a write-back
1347 /* SVt_NULL isn't the only thing upgraded to AV or HV.
1348 The target created by newSVrv also is, and it can have magic.
1349 However, it never has SvPVX set.
1351 if (old_type == SVt_IV) {
1353 } else if (old_type >= SVt_PV) {
1354 assert(SvPVX_const(sv) == 0);
1357 if (old_type >= SVt_PVMG) {
1358 SvMAGIC_set(sv, ((XPVMG*)old_body)->xmg_u.xmg_magic);
1359 SvSTASH_set(sv, ((XPVMG*)old_body)->xmg_stash);
1361 sv->sv_u.svu_array = NULL; /* or svu_hash */
1367 /* XXX Is this still needed? Was it ever needed? Surely as there is
1368 no route from NV to PVIV, NOK can never be true */
1369 assert(!SvNOKp(sv));
1381 assert(new_type_details->body_size);
1382 /* We always allocated the full length item with PURIFY. To do this
1383 we fake things so that arena is false for all 16 types.. */
1384 if(new_type_details->arena) {
1385 /* This points to the start of the allocated area. */
1386 new_body_inline(new_body, new_type);
1387 Zero(new_body, new_type_details->body_size, char);
1388 new_body = ((char *)new_body) - new_type_details->offset;
1390 new_body = new_NOARENAZ(new_type_details);
1392 SvANY(sv) = new_body;
1394 if (old_type_details->copy) {
1395 /* There is now the potential for an upgrade from something without
1396 an offset (PVNV or PVMG) to something with one (PVCV, PVFM) */
1397 int offset = old_type_details->offset;
1398 int length = old_type_details->copy;
1400 if (new_type_details->offset > old_type_details->offset) {
1401 const int difference
1402 = new_type_details->offset - old_type_details->offset;
1403 offset += difference;
1404 length -= difference;
1406 assert (length >= 0);
1408 Copy((char *)old_body + offset, (char *)new_body + offset, length,
1412 #ifndef NV_ZERO_IS_ALLBITS_ZERO
1413 /* If NV 0.0 is stores as all bits 0 then Zero() already creates a
1414 * correct 0.0 for us. Otherwise, if the old body didn't have an
1415 * NV slot, but the new one does, then we need to initialise the
1416 * freshly created NV slot with whatever the correct bit pattern is
1418 if (old_type_details->zero_nv && !new_type_details->zero_nv
1419 && !isGV_with_GP(sv))
1423 if (new_type == SVt_PVIO)
1424 IoPAGE_LEN(sv) = 60;
1425 if (old_type < SVt_PV) {
1426 /* referant will be NULL unless the old type was SVt_IV emulating
1428 sv->sv_u.svu_rv = referant;
1432 Perl_croak(aTHX_ "panic: sv_upgrade to unknown type %lu",
1433 (unsigned long)new_type);
1436 if (old_type_details->arena) {
1437 /* If there was an old body, then we need to free it.
1438 Note that there is an assumption that all bodies of types that
1439 can be upgraded came from arenas. Only the more complex non-
1440 upgradable types are allowed to be directly malloc()ed. */
1442 my_safefree(old_body);
1444 del_body((void*)((char*)old_body + old_type_details->offset),
1445 &PL_body_roots[old_type]);
1451 =for apidoc sv_backoff
1453 Remove any string offset. You should normally use the C<SvOOK_off> macro
1460 Perl_sv_backoff(pTHX_ register SV *const sv)
1463 const char * const s = SvPVX_const(sv);
1465 PERL_ARGS_ASSERT_SV_BACKOFF;
1466 PERL_UNUSED_CONTEXT;
1469 assert(SvTYPE(sv) != SVt_PVHV);
1470 assert(SvTYPE(sv) != SVt_PVAV);
1472 SvOOK_offset(sv, delta);
1474 SvLEN_set(sv, SvLEN(sv) + delta);
1475 SvPV_set(sv, SvPVX(sv) - delta);
1476 Move(s, SvPVX(sv), SvCUR(sv)+1, char);
1477 SvFLAGS(sv) &= ~SVf_OOK;
1484 Expands the character buffer in the SV. If necessary, uses C<sv_unref> and
1485 upgrades the SV to C<SVt_PV>. Returns a pointer to the character buffer.
1486 Use the C<SvGROW> wrapper instead.
1492 Perl_sv_grow(pTHX_ register SV *const sv, register STRLEN newlen)
1496 PERL_ARGS_ASSERT_SV_GROW;
1498 if (PL_madskills && newlen >= 0x100000) {
1499 PerlIO_printf(Perl_debug_log,
1500 "Allocation too large: %"UVxf"\n", (UV)newlen);
1502 #ifdef HAS_64K_LIMIT
1503 if (newlen >= 0x10000) {
1504 PerlIO_printf(Perl_debug_log,
1505 "Allocation too large: %"UVxf"\n", (UV)newlen);
1508 #endif /* HAS_64K_LIMIT */
1511 if (SvTYPE(sv) < SVt_PV) {
1512 sv_upgrade(sv, SVt_PV);
1513 s = SvPVX_mutable(sv);
1515 else if (SvOOK(sv)) { /* pv is offset? */
1517 s = SvPVX_mutable(sv);
1518 if (newlen > SvLEN(sv))
1519 newlen += 10 * (newlen - SvCUR(sv)); /* avoid copy each time */
1520 #ifdef HAS_64K_LIMIT
1521 if (newlen >= 0x10000)
1526 s = SvPVX_mutable(sv);
1528 if (newlen > SvLEN(sv)) { /* need more room? */
1529 #ifndef Perl_safesysmalloc_size
1530 newlen = PERL_STRLEN_ROUNDUP(newlen);
1532 if (SvLEN(sv) && s) {
1533 s = (char*)saferealloc(s, newlen);
1536 s = (char*)safemalloc(newlen);
1537 if (SvPVX_const(sv) && SvCUR(sv)) {
1538 Move(SvPVX_const(sv), s, (newlen < SvCUR(sv)) ? newlen : SvCUR(sv), char);
1542 #ifdef Perl_safesysmalloc_size
1543 /* Do this here, do it once, do it right, and then we will never get
1544 called back into sv_grow() unless there really is some growing
1546 SvLEN_set(sv, Perl_safesysmalloc_size(s));
1548 SvLEN_set(sv, newlen);
1555 =for apidoc sv_setiv
1557 Copies an integer into the given SV, upgrading first if necessary.
1558 Does not handle 'set' magic. See also C<sv_setiv_mg>.
1564 Perl_sv_setiv(pTHX_ register SV *const sv, const IV i)
1568 PERL_ARGS_ASSERT_SV_SETIV;
1570 SV_CHECK_THINKFIRST_COW_DROP(sv);
1571 switch (SvTYPE(sv)) {
1574 sv_upgrade(sv, SVt_IV);
1577 sv_upgrade(sv, SVt_PVIV);
1581 if (!isGV_with_GP(sv))
1588 Perl_croak(aTHX_ "Can't coerce %s to integer in %s", sv_reftype(sv,0),
1592 (void)SvIOK_only(sv); /* validate number */
1598 =for apidoc sv_setiv_mg
1600 Like C<sv_setiv>, but also handles 'set' magic.
1606 Perl_sv_setiv_mg(pTHX_ register SV *const sv, const IV i)
1608 PERL_ARGS_ASSERT_SV_SETIV_MG;
1615 =for apidoc sv_setuv
1617 Copies an unsigned integer into the given SV, upgrading first if necessary.
1618 Does not handle 'set' magic. See also C<sv_setuv_mg>.
1624 Perl_sv_setuv(pTHX_ register SV *const sv, const UV u)
1626 PERL_ARGS_ASSERT_SV_SETUV;
1628 /* With these two if statements:
1629 u=1.49 s=0.52 cu=72.49 cs=10.64 scripts=270 tests=20865
1632 u=1.35 s=0.47 cu=73.45 cs=11.43 scripts=270 tests=20865
1634 If you wish to remove them, please benchmark to see what the effect is
1636 if (u <= (UV)IV_MAX) {
1637 sv_setiv(sv, (IV)u);
1646 =for apidoc sv_setuv_mg
1648 Like C<sv_setuv>, but also handles 'set' magic.
1654 Perl_sv_setuv_mg(pTHX_ register SV *const sv, const UV u)
1656 PERL_ARGS_ASSERT_SV_SETUV_MG;
1663 =for apidoc sv_setnv
1665 Copies a double into the given SV, upgrading first if necessary.
1666 Does not handle 'set' magic. See also C<sv_setnv_mg>.
1672 Perl_sv_setnv(pTHX_ register SV *const sv, const NV num)
1676 PERL_ARGS_ASSERT_SV_SETNV;
1678 SV_CHECK_THINKFIRST_COW_DROP(sv);
1679 switch (SvTYPE(sv)) {
1682 sv_upgrade(sv, SVt_NV);
1686 sv_upgrade(sv, SVt_PVNV);
1690 if (!isGV_with_GP(sv))
1697 Perl_croak(aTHX_ "Can't coerce %s to number in %s", sv_reftype(sv,0),
1702 (void)SvNOK_only(sv); /* validate number */
1707 =for apidoc sv_setnv_mg
1709 Like C<sv_setnv>, but also handles 'set' magic.
1715 Perl_sv_setnv_mg(pTHX_ register SV *const sv, const NV num)
1717 PERL_ARGS_ASSERT_SV_SETNV_MG;
1723 /* Print an "isn't numeric" warning, using a cleaned-up,
1724 * printable version of the offending string
1728 S_not_a_number(pTHX_ SV *const sv)
1735 PERL_ARGS_ASSERT_NOT_A_NUMBER;
1738 dsv = newSVpvs_flags("", SVs_TEMP);
1739 pv = sv_uni_display(dsv, sv, 10, 0);
1742 const char * const limit = tmpbuf + sizeof(tmpbuf) - 8;
1743 /* each *s can expand to 4 chars + "...\0",
1744 i.e. need room for 8 chars */
1746 const char *s = SvPVX_const(sv);
1747 const char * const end = s + SvCUR(sv);
1748 for ( ; s < end && d < limit; s++ ) {
1750 if (ch & 128 && !isPRINT_LC(ch)) {
1759 else if (ch == '\r') {
1763 else if (ch == '\f') {
1767 else if (ch == '\\') {
1771 else if (ch == '\0') {
1775 else if (isPRINT_LC(ch))
1792 Perl_warner(aTHX_ packWARN(WARN_NUMERIC),
1793 "Argument \"%s\" isn't numeric in %s", pv,
1796 Perl_warner(aTHX_ packWARN(WARN_NUMERIC),
1797 "Argument \"%s\" isn't numeric", pv);
1801 =for apidoc looks_like_number
1803 Test if the content of an SV looks like a number (or is a number).
1804 C<Inf> and C<Infinity> are treated as numbers (so will not issue a
1805 non-numeric warning), even if your atof() doesn't grok them.
1811 Perl_looks_like_number(pTHX_ SV *const sv)
1813 register const char *sbegin;
1816 PERL_ARGS_ASSERT_LOOKS_LIKE_NUMBER;
1819 sbegin = SvPVX_const(sv);
1822 else if (SvPOKp(sv))
1823 sbegin = SvPV_const(sv, len);
1825 return SvFLAGS(sv) & (SVf_NOK|SVp_NOK|SVf_IOK|SVp_IOK);
1826 return grok_number(sbegin, len, NULL);
1830 S_glob_2number(pTHX_ GV * const gv)
1832 const U32 wasfake = SvFLAGS(gv) & SVf_FAKE;
1833 SV *const buffer = sv_newmortal();
1835 PERL_ARGS_ASSERT_GLOB_2NUMBER;
1837 /* FAKE globs can get coerced, so need to turn this off temporarily if it
1840 gv_efullname3(buffer, gv, "*");
1841 SvFLAGS(gv) |= wasfake;
1843 /* We know that all GVs stringify to something that is not-a-number,
1844 so no need to test that. */
1845 if (ckWARN(WARN_NUMERIC))
1846 not_a_number(buffer);
1847 /* We just want something true to return, so that S_sv_2iuv_common
1848 can tail call us and return true. */
1853 S_glob_2pv(pTHX_ GV * const gv, STRLEN * const len)
1855 const U32 wasfake = SvFLAGS(gv) & SVf_FAKE;
1856 SV *const buffer = sv_newmortal();
1858 PERL_ARGS_ASSERT_GLOB_2PV;
1860 /* FAKE globs can get coerced, so need to turn this off temporarily if it
1863 gv_efullname3(buffer, gv, "*");
1864 SvFLAGS(gv) |= wasfake;
1866 assert(SvPOK(buffer));
1868 *len = SvCUR(buffer);
1870 return SvPVX(buffer);
1873 /* Actually, ISO C leaves conversion of UV to IV undefined, but
1874 until proven guilty, assume that things are not that bad... */
1879 As 64 bit platforms often have an NV that doesn't preserve all bits of
1880 an IV (an assumption perl has been based on to date) it becomes necessary
1881 to remove the assumption that the NV always carries enough precision to
1882 recreate the IV whenever needed, and that the NV is the canonical form.
1883 Instead, IV/UV and NV need to be given equal rights. So as to not lose
1884 precision as a side effect of conversion (which would lead to insanity
1885 and the dragon(s) in t/op/numconvert.t getting very angry) the intent is
1886 1) to distinguish between IV/UV/NV slots that have cached a valid
1887 conversion where precision was lost and IV/UV/NV slots that have a
1888 valid conversion which has lost no precision
1889 2) to ensure that if a numeric conversion to one form is requested that
1890 would lose precision, the precise conversion (or differently
1891 imprecise conversion) is also performed and cached, to prevent
1892 requests for different numeric formats on the same SV causing
1893 lossy conversion chains. (lossless conversion chains are perfectly
1898 SvIOKp is true if the IV slot contains a valid value
1899 SvIOK is true only if the IV value is accurate (UV if SvIOK_UV true)
1900 SvNOKp is true if the NV slot contains a valid value
1901 SvNOK is true only if the NV value is accurate
1904 while converting from PV to NV, check to see if converting that NV to an
1905 IV(or UV) would lose accuracy over a direct conversion from PV to
1906 IV(or UV). If it would, cache both conversions, return NV, but mark
1907 SV as IOK NOKp (ie not NOK).
1909 While converting from PV to IV, check to see if converting that IV to an
1910 NV would lose accuracy over a direct conversion from PV to NV. If it
1911 would, cache both conversions, flag similarly.
1913 Before, the SV value "3.2" could become NV=3.2 IV=3 NOK, IOK quite
1914 correctly because if IV & NV were set NV *always* overruled.
1915 Now, "3.2" will become NV=3.2 IV=3 NOK, IOKp, because the flag's meaning
1916 changes - now IV and NV together means that the two are interchangeable:
1917 SvIVX == (IV) SvNVX && SvNVX == (NV) SvIVX;
1919 The benefit of this is that operations such as pp_add know that if
1920 SvIOK is true for both left and right operands, then integer addition
1921 can be used instead of floating point (for cases where the result won't
1922 overflow). Before, floating point was always used, which could lead to
1923 loss of precision compared with integer addition.
1925 * making IV and NV equal status should make maths accurate on 64 bit
1927 * may speed up maths somewhat if pp_add and friends start to use
1928 integers when possible instead of fp. (Hopefully the overhead in
1929 looking for SvIOK and checking for overflow will not outweigh the
1930 fp to integer speedup)
1931 * will slow down integer operations (callers of SvIV) on "inaccurate"
1932 values, as the change from SvIOK to SvIOKp will cause a call into
1933 sv_2iv each time rather than a macro access direct to the IV slot
1934 * should speed up number->string conversion on integers as IV is
1935 favoured when IV and NV are equally accurate
1937 ####################################################################
1938 You had better be using SvIOK_notUV if you want an IV for arithmetic:
1939 SvIOK is true if (IV or UV), so you might be getting (IV)SvUV.
1940 On the other hand, SvUOK is true iff UV.
1941 ####################################################################
1943 Your mileage will vary depending your CPU's relative fp to integer
1947 #ifndef NV_PRESERVES_UV
1948 # define IS_NUMBER_UNDERFLOW_IV 1
1949 # define IS_NUMBER_UNDERFLOW_UV 2
1950 # define IS_NUMBER_IV_AND_UV 2
1951 # define IS_NUMBER_OVERFLOW_IV 4
1952 # define IS_NUMBER_OVERFLOW_UV 5
1954 /* sv_2iuv_non_preserve(): private routine for use by sv_2iv() and sv_2uv() */
1956 /* For sv_2nv these three cases are "SvNOK and don't bother casting" */
1958 S_sv_2iuv_non_preserve(pTHX_ register SV *const sv
1966 PERL_ARGS_ASSERT_SV_2IUV_NON_PRESERVE;
1968 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));
1969 if (SvNVX(sv) < (NV)IV_MIN) {
1970 (void)SvIOKp_on(sv);
1972 SvIV_set(sv, IV_MIN);
1973 return IS_NUMBER_UNDERFLOW_IV;
1975 if (SvNVX(sv) > (NV)UV_MAX) {
1976 (void)SvIOKp_on(sv);
1979 SvUV_set(sv, UV_MAX);
1980 return IS_NUMBER_OVERFLOW_UV;
1982 (void)SvIOKp_on(sv);
1984 /* Can't use strtol etc to convert this string. (See truth table in
1986 if (SvNVX(sv) <= (UV)IV_MAX) {
1987 SvIV_set(sv, I_V(SvNVX(sv)));
1988 if ((NV)(SvIVX(sv)) == SvNVX(sv)) {
1989 SvIOK_on(sv); /* Integer is precise. NOK, IOK */
1991 /* Integer is imprecise. NOK, IOKp */
1993 return SvNVX(sv) < 0 ? IS_NUMBER_UNDERFLOW_UV : IS_NUMBER_IV_AND_UV;
1996 SvUV_set(sv, U_V(SvNVX(sv)));
1997 if ((NV)(SvUVX(sv)) == SvNVX(sv)) {
1998 if (SvUVX(sv) == UV_MAX) {
1999 /* As we know that NVs don't preserve UVs, UV_MAX cannot
2000 possibly be preserved by NV. Hence, it must be overflow.
2002 return IS_NUMBER_OVERFLOW_UV;
2004 SvIOK_on(sv); /* Integer is precise. NOK, UOK */
2006 /* Integer is imprecise. NOK, IOKp */
2008 return IS_NUMBER_OVERFLOW_IV;
2010 #endif /* !NV_PRESERVES_UV*/
2013 S_sv_2iuv_common(pTHX_ SV *const sv)
2017 PERL_ARGS_ASSERT_SV_2IUV_COMMON;
2020 /* erm. not sure. *should* never get NOKp (without NOK) from sv_2nv
2021 * without also getting a cached IV/UV from it at the same time
2022 * (ie PV->NV conversion should detect loss of accuracy and cache
2023 * IV or UV at same time to avoid this. */
2024 /* IV-over-UV optimisation - choose to cache IV if possible */
2026 if (SvTYPE(sv) == SVt_NV)
2027 sv_upgrade(sv, SVt_PVNV);
2029 (void)SvIOKp_on(sv); /* Must do this first, to clear any SvOOK */
2030 /* < not <= as for NV doesn't preserve UV, ((NV)IV_MAX+1) will almost
2031 certainly cast into the IV range at IV_MAX, whereas the correct
2032 answer is the UV IV_MAX +1. Hence < ensures that dodgy boundary
2034 #if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan)
2035 if (Perl_isnan(SvNVX(sv))) {
2041 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2042 SvIV_set(sv, I_V(SvNVX(sv)));
2043 if (SvNVX(sv) == (NV) SvIVX(sv)
2044 #ifndef NV_PRESERVES_UV
2045 && (((UV)1 << NV_PRESERVES_UV_BITS) >
2046 (UV)(SvIVX(sv) > 0 ? SvIVX(sv) : -SvIVX(sv)))
2047 /* Don't flag it as "accurately an integer" if the number
2048 came from a (by definition imprecise) NV operation, and
2049 we're outside the range of NV integer precision */
2053 SvIOK_on(sv); /* Can this go wrong with rounding? NWC */
2055 /* scalar has trailing garbage, eg "42a" */
2057 DEBUG_c(PerlIO_printf(Perl_debug_log,
2058 "0x%"UVxf" iv(%"NVgf" => %"IVdf") (precise)\n",
2064 /* IV not precise. No need to convert from PV, as NV
2065 conversion would already have cached IV if it detected
2066 that PV->IV would be better than PV->NV->IV
2067 flags already correct - don't set public IOK. */
2068 DEBUG_c(PerlIO_printf(Perl_debug_log,
2069 "0x%"UVxf" iv(%"NVgf" => %"IVdf") (imprecise)\n",
2074 /* Can the above go wrong if SvIVX == IV_MIN and SvNVX < IV_MIN,
2075 but the cast (NV)IV_MIN rounds to a the value less (more
2076 negative) than IV_MIN which happens to be equal to SvNVX ??
2077 Analogous to 0xFFFFFFFFFFFFFFFF rounding up to NV (2**64) and
2078 NV rounding back to 0xFFFFFFFFFFFFFFFF, so UVX == UV(NVX) and
2079 (NV)UVX == NVX are both true, but the values differ. :-(
2080 Hopefully for 2s complement IV_MIN is something like
2081 0x8000000000000000 which will be exact. NWC */
2084 SvUV_set(sv, U_V(SvNVX(sv)));
2086 (SvNVX(sv) == (NV) SvUVX(sv))
2087 #ifndef NV_PRESERVES_UV
2088 /* Make sure it's not 0xFFFFFFFFFFFFFFFF */
2089 /*&& (SvUVX(sv) != UV_MAX) irrelevant with code below */
2090 && (((UV)1 << NV_PRESERVES_UV_BITS) > SvUVX(sv))
2091 /* Don't flag it as "accurately an integer" if the number
2092 came from a (by definition imprecise) NV operation, and
2093 we're outside the range of NV integer precision */
2099 DEBUG_c(PerlIO_printf(Perl_debug_log,
2100 "0x%"UVxf" 2iv(%"UVuf" => %"IVdf") (as unsigned)\n",
2106 else if (SvPOKp(sv) && SvLEN(sv)) {
2108 const int numtype = grok_number(SvPVX_const(sv), SvCUR(sv), &value);
2109 /* We want to avoid a possible problem when we cache an IV/ a UV which
2110 may be later translated to an NV, and the resulting NV is not
2111 the same as the direct translation of the initial string
2112 (eg 123.456 can shortcut to the IV 123 with atol(), but we must
2113 be careful to ensure that the value with the .456 is around if the
2114 NV value is requested in the future).
2116 This means that if we cache such an IV/a UV, we need to cache the
2117 NV as well. Moreover, we trade speed for space, and do not
2118 cache the NV if we are sure it's not needed.
2121 /* SVt_PVNV is one higher than SVt_PVIV, hence this order */
2122 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2123 == IS_NUMBER_IN_UV) {
2124 /* It's definitely an integer, only upgrade to PVIV */
2125 if (SvTYPE(sv) < SVt_PVIV)
2126 sv_upgrade(sv, SVt_PVIV);
2128 } else if (SvTYPE(sv) < SVt_PVNV)
2129 sv_upgrade(sv, SVt_PVNV);
2131 /* If NVs preserve UVs then we only use the UV value if we know that
2132 we aren't going to call atof() below. If NVs don't preserve UVs
2133 then the value returned may have more precision than atof() will
2134 return, even though value isn't perfectly accurate. */
2135 if ((numtype & (IS_NUMBER_IN_UV
2136 #ifdef NV_PRESERVES_UV
2139 )) == IS_NUMBER_IN_UV) {
2140 /* This won't turn off the public IOK flag if it was set above */
2141 (void)SvIOKp_on(sv);
2143 if (!(numtype & IS_NUMBER_NEG)) {
2145 if (value <= (UV)IV_MAX) {
2146 SvIV_set(sv, (IV)value);
2148 /* it didn't overflow, and it was positive. */
2149 SvUV_set(sv, value);
2153 /* 2s complement assumption */
2154 if (value <= (UV)IV_MIN) {
2155 SvIV_set(sv, -(IV)value);
2157 /* Too negative for an IV. This is a double upgrade, but
2158 I'm assuming it will be rare. */
2159 if (SvTYPE(sv) < SVt_PVNV)
2160 sv_upgrade(sv, SVt_PVNV);
2164 SvNV_set(sv, -(NV)value);
2165 SvIV_set(sv, IV_MIN);
2169 /* For !NV_PRESERVES_UV and IS_NUMBER_IN_UV and IS_NUMBER_NOT_INT we
2170 will be in the previous block to set the IV slot, and the next
2171 block to set the NV slot. So no else here. */
2173 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2174 != IS_NUMBER_IN_UV) {
2175 /* It wasn't an (integer that doesn't overflow the UV). */
2176 SvNV_set(sv, Atof(SvPVX_const(sv)));
2178 if (! numtype && ckWARN(WARN_NUMERIC))
2181 #if defined(USE_LONG_DOUBLE)
2182 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2iv(%" PERL_PRIgldbl ")\n",
2183 PTR2UV(sv), SvNVX(sv)));
2185 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2iv(%"NVgf")\n",
2186 PTR2UV(sv), SvNVX(sv)));
2189 #ifdef NV_PRESERVES_UV
2190 (void)SvIOKp_on(sv);
2192 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2193 SvIV_set(sv, I_V(SvNVX(sv)));
2194 if ((NV)(SvIVX(sv)) == SvNVX(sv)) {
2197 NOOP; /* Integer is imprecise. NOK, IOKp */
2199 /* UV will not work better than IV */
2201 if (SvNVX(sv) > (NV)UV_MAX) {
2203 /* Integer is inaccurate. NOK, IOKp, is UV */
2204 SvUV_set(sv, UV_MAX);
2206 SvUV_set(sv, U_V(SvNVX(sv)));
2207 /* 0xFFFFFFFFFFFFFFFF not an issue in here, NVs
2208 NV preservse UV so can do correct comparison. */
2209 if ((NV)(SvUVX(sv)) == SvNVX(sv)) {
2212 NOOP; /* Integer is imprecise. NOK, IOKp, is UV */
2217 #else /* NV_PRESERVES_UV */
2218 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2219 == (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT)) {
2220 /* The IV/UV slot will have been set from value returned by
2221 grok_number above. The NV slot has just been set using
2224 assert (SvIOKp(sv));
2226 if (((UV)1 << NV_PRESERVES_UV_BITS) >
2227 U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))) {
2228 /* Small enough to preserve all bits. */
2229 (void)SvIOKp_on(sv);
2231 SvIV_set(sv, I_V(SvNVX(sv)));
2232 if ((NV)(SvIVX(sv)) == SvNVX(sv))
2234 /* Assumption: first non-preserved integer is < IV_MAX,
2235 this NV is in the preserved range, therefore: */
2236 if (!(U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))
2238 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);
2242 0 0 already failed to read UV.
2243 0 1 already failed to read UV.
2244 1 0 you won't get here in this case. IV/UV
2245 slot set, public IOK, Atof() unneeded.
2246 1 1 already read UV.
2247 so there's no point in sv_2iuv_non_preserve() attempting
2248 to use atol, strtol, strtoul etc. */
2250 sv_2iuv_non_preserve (sv, numtype);
2252 sv_2iuv_non_preserve (sv);
2256 #endif /* NV_PRESERVES_UV */
2257 /* It might be more code efficient to go through the entire logic above
2258 and conditionally set with SvIOKp_on() rather than SvIOK(), but it
2259 gets complex and potentially buggy, so more programmer efficient
2260 to do it this way, by turning off the public flags: */
2262 SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK);
2266 if (isGV_with_GP(sv))
2267 return glob_2number((GV *)sv);
2269 if (!(SvFLAGS(sv) & SVs_PADTMP)) {
2270 if (!PL_localizing && ckWARN(WARN_UNINITIALIZED))
2273 if (SvTYPE(sv) < SVt_IV)
2274 /* Typically the caller expects that sv_any is not NULL now. */
2275 sv_upgrade(sv, SVt_IV);
2276 /* Return 0 from the caller. */
2283 =for apidoc sv_2iv_flags
2285 Return the integer value of an SV, doing any necessary string
2286 conversion. If flags includes SV_GMAGIC, does an mg_get() first.
2287 Normally used via the C<SvIV(sv)> and C<SvIVx(sv)> macros.
2293 Perl_sv_2iv_flags(pTHX_ register SV *const sv, const I32 flags)
2298 if (SvGMAGICAL(sv) || (SvTYPE(sv) == SVt_PVGV && SvVALID(sv))) {
2299 /* FBMs use the same flag bit as SVf_IVisUV, so must let them
2300 cache IVs just in case. In practice it seems that they never
2301 actually anywhere accessible by user Perl code, let alone get used
2302 in anything other than a string context. */
2303 if (flags & SV_GMAGIC)
2308 return I_V(SvNVX(sv));
2310 if (SvPOKp(sv) && SvLEN(sv)) {
2313 = grok_number(SvPVX_const(sv), SvCUR(sv), &value);
2315 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2316 == IS_NUMBER_IN_UV) {
2317 /* It's definitely an integer */
2318 if (numtype & IS_NUMBER_NEG) {
2319 if (value < (UV)IV_MIN)
2322 if (value < (UV)IV_MAX)
2327 if (ckWARN(WARN_NUMERIC))
2330 return I_V(Atof(SvPVX_const(sv)));
2335 assert(SvTYPE(sv) >= SVt_PVMG);
2336 /* This falls through to the report_uninit inside S_sv_2iuv_common. */
2337 } else if (SvTHINKFIRST(sv)) {
2341 SV * const tmpstr=AMG_CALLun(sv,numer);
2342 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2343 return SvIV(tmpstr);
2346 return PTR2IV(SvRV(sv));
2349 sv_force_normal_flags(sv, 0);
2351 if (SvREADONLY(sv) && !SvOK(sv)) {
2352 if (ckWARN(WARN_UNINITIALIZED))
2358 if (S_sv_2iuv_common(aTHX_ sv))
2361 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2iv(%"IVdf")\n",
2362 PTR2UV(sv),SvIVX(sv)));
2363 return SvIsUV(sv) ? (IV)SvUVX(sv) : SvIVX(sv);
2367 =for apidoc sv_2uv_flags
2369 Return the unsigned integer value of an SV, doing any necessary string
2370 conversion. If flags includes SV_GMAGIC, does an mg_get() first.
2371 Normally used via the C<SvUV(sv)> and C<SvUVx(sv)> macros.
2377 Perl_sv_2uv_flags(pTHX_ register SV *const sv, const I32 flags)
2382 if (SvGMAGICAL(sv) || (SvTYPE(sv) == SVt_PVGV && SvVALID(sv))) {
2383 /* FBMs use the same flag bit as SVf_IVisUV, so must let them
2384 cache IVs just in case. */
2385 if (flags & SV_GMAGIC)
2390 return U_V(SvNVX(sv));
2391 if (SvPOKp(sv) && SvLEN(sv)) {
2394 = grok_number(SvPVX_const(sv), SvCUR(sv), &value);
2396 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2397 == IS_NUMBER_IN_UV) {
2398 /* It's definitely an integer */
2399 if (!(numtype & IS_NUMBER_NEG))
2403 if (ckWARN(WARN_NUMERIC))
2406 return U_V(Atof(SvPVX_const(sv)));
2411 assert(SvTYPE(sv) >= SVt_PVMG);
2412 /* This falls through to the report_uninit inside S_sv_2iuv_common. */
2413 } else if (SvTHINKFIRST(sv)) {
2417 SV *const tmpstr = AMG_CALLun(sv,numer);
2418 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2419 return SvUV(tmpstr);
2422 return PTR2UV(SvRV(sv));
2425 sv_force_normal_flags(sv, 0);
2427 if (SvREADONLY(sv) && !SvOK(sv)) {
2428 if (ckWARN(WARN_UNINITIALIZED))
2434 if (S_sv_2iuv_common(aTHX_ sv))
2438 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2uv(%"UVuf")\n",
2439 PTR2UV(sv),SvUVX(sv)));
2440 return SvIsUV(sv) ? SvUVX(sv) : (UV)SvIVX(sv);
2446 Return the num value of an SV, doing any necessary string or integer
2447 conversion, magic etc. Normally used via the C<SvNV(sv)> and C<SvNVx(sv)>
2454 Perl_sv_2nv(pTHX_ register SV *const sv)
2459 if (SvGMAGICAL(sv) || (SvTYPE(sv) == SVt_PVGV && SvVALID(sv))) {
2460 /* FBMs use the same flag bit as SVf_IVisUV, so must let them
2461 cache IVs just in case. */
2465 if ((SvPOKp(sv) && SvLEN(sv)) && !SvIOKp(sv)) {
2466 if (!SvIOKp(sv) && ckWARN(WARN_NUMERIC) &&
2467 !grok_number(SvPVX_const(sv), SvCUR(sv), NULL))
2469 return Atof(SvPVX_const(sv));
2473 return (NV)SvUVX(sv);
2475 return (NV)SvIVX(sv);
2480 assert(SvTYPE(sv) >= SVt_PVMG);
2481 /* This falls through to the report_uninit near the end of the
2483 } else if (SvTHINKFIRST(sv)) {
2487 SV *const tmpstr = AMG_CALLun(sv,numer);
2488 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2489 return SvNV(tmpstr);
2492 return PTR2NV(SvRV(sv));
2495 sv_force_normal_flags(sv, 0);
2497 if (SvREADONLY(sv) && !SvOK(sv)) {
2498 if (ckWARN(WARN_UNINITIALIZED))
2503 if (SvTYPE(sv) < SVt_NV) {
2504 /* The logic to use SVt_PVNV if necessary is in sv_upgrade. */
2505 sv_upgrade(sv, SVt_NV);
2506 #ifdef USE_LONG_DOUBLE
2508 STORE_NUMERIC_LOCAL_SET_STANDARD();
2509 PerlIO_printf(Perl_debug_log,
2510 "0x%"UVxf" num(%" PERL_PRIgldbl ")\n",
2511 PTR2UV(sv), SvNVX(sv));
2512 RESTORE_NUMERIC_LOCAL();
2516 STORE_NUMERIC_LOCAL_SET_STANDARD();
2517 PerlIO_printf(Perl_debug_log, "0x%"UVxf" num(%"NVgf")\n",
2518 PTR2UV(sv), SvNVX(sv));
2519 RESTORE_NUMERIC_LOCAL();
2523 else if (SvTYPE(sv) < SVt_PVNV)
2524 sv_upgrade(sv, SVt_PVNV);
2529 SvNV_set(sv, SvIsUV(sv) ? (NV)SvUVX(sv) : (NV)SvIVX(sv));
2530 #ifdef NV_PRESERVES_UV
2536 /* Only set the public NV OK flag if this NV preserves the IV */
2537 /* Check it's not 0xFFFFFFFFFFFFFFFF */
2539 SvIsUV(sv) ? ((SvUVX(sv) != UV_MAX)&&(SvUVX(sv) == U_V(SvNVX(sv))))
2540 : (SvIVX(sv) == I_V(SvNVX(sv))))
2546 else if (SvPOKp(sv) && SvLEN(sv)) {
2548 const int numtype = grok_number(SvPVX_const(sv), SvCUR(sv), &value);
2549 if (!SvIOKp(sv) && !numtype && ckWARN(WARN_NUMERIC))
2551 #ifdef NV_PRESERVES_UV
2552 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2553 == IS_NUMBER_IN_UV) {
2554 /* It's definitely an integer */
2555 SvNV_set(sv, (numtype & IS_NUMBER_NEG) ? -(NV)value : (NV)value);
2557 SvNV_set(sv, Atof(SvPVX_const(sv)));
2563 SvNV_set(sv, Atof(SvPVX_const(sv)));
2564 /* Only set the public NV OK flag if this NV preserves the value in
2565 the PV at least as well as an IV/UV would.
2566 Not sure how to do this 100% reliably. */
2567 /* if that shift count is out of range then Configure's test is
2568 wonky. We shouldn't be in here with NV_PRESERVES_UV_BITS ==
2570 if (((UV)1 << NV_PRESERVES_UV_BITS) >
2571 U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))) {
2572 SvNOK_on(sv); /* Definitely small enough to preserve all bits */
2573 } else if (!(numtype & IS_NUMBER_IN_UV)) {
2574 /* Can't use strtol etc to convert this string, so don't try.
2575 sv_2iv and sv_2uv will use the NV to convert, not the PV. */
2578 /* value has been set. It may not be precise. */
2579 if ((numtype & IS_NUMBER_NEG) && (value > (UV)IV_MIN)) {
2580 /* 2s complement assumption for (UV)IV_MIN */
2581 SvNOK_on(sv); /* Integer is too negative. */
2586 if (numtype & IS_NUMBER_NEG) {
2587 SvIV_set(sv, -(IV)value);
2588 } else if (value <= (UV)IV_MAX) {
2589 SvIV_set(sv, (IV)value);
2591 SvUV_set(sv, value);
2595 if (numtype & IS_NUMBER_NOT_INT) {
2596 /* I believe that even if the original PV had decimals,
2597 they are lost beyond the limit of the FP precision.
2598 However, neither is canonical, so both only get p
2599 flags. NWC, 2000/11/25 */
2600 /* Both already have p flags, so do nothing */
2602 const NV nv = SvNVX(sv);
2603 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2604 if (SvIVX(sv) == I_V(nv)) {
2607 /* It had no "." so it must be integer. */
2611 /* between IV_MAX and NV(UV_MAX).
2612 Could be slightly > UV_MAX */
2614 if (numtype & IS_NUMBER_NOT_INT) {
2615 /* UV and NV both imprecise. */
2617 const UV nv_as_uv = U_V(nv);
2619 if (value == nv_as_uv && SvUVX(sv) != UV_MAX) {
2628 /* It might be more code efficient to go through the entire logic above
2629 and conditionally set with SvNOKp_on() rather than SvNOK(), but it
2630 gets complex and potentially buggy, so more programmer efficient
2631 to do it this way, by turning off the public flags: */
2633 SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK);
2634 #endif /* NV_PRESERVES_UV */
2637 if (isGV_with_GP(sv)) {
2638 glob_2number((GV *)sv);
2642 if (!PL_localizing && !(SvFLAGS(sv) & SVs_PADTMP) && ckWARN(WARN_UNINITIALIZED))
2644 assert (SvTYPE(sv) >= SVt_NV);
2645 /* Typically the caller expects that sv_any is not NULL now. */
2646 /* XXX Ilya implies that this is a bug in callers that assume this
2647 and ideally should be fixed. */
2650 #if defined(USE_LONG_DOUBLE)
2652 STORE_NUMERIC_LOCAL_SET_STANDARD();
2653 PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2nv(%" PERL_PRIgldbl ")\n",
2654 PTR2UV(sv), SvNVX(sv));
2655 RESTORE_NUMERIC_LOCAL();
2659 STORE_NUMERIC_LOCAL_SET_STANDARD();
2660 PerlIO_printf(Perl_debug_log, "0x%"UVxf" 1nv(%"NVgf")\n",
2661 PTR2UV(sv), SvNVX(sv));
2662 RESTORE_NUMERIC_LOCAL();
2671 Return an SV with the numeric value of the source SV, doing any necessary
2672 reference or overload conversion. You must use the C<SvNUM(sv)> macro to
2673 access this function.
2679 Perl_sv_2num(pTHX_ register SV *const sv)
2681 PERL_ARGS_ASSERT_SV_2NUM;
2686 SV * const tmpsv = AMG_CALLun(sv,numer);
2687 if (tmpsv && (!SvROK(tmpsv) || (SvRV(tmpsv) != SvRV(sv))))
2688 return sv_2num(tmpsv);
2690 return sv_2mortal(newSVuv(PTR2UV(SvRV(sv))));
2693 /* uiv_2buf(): private routine for use by sv_2pv_flags(): print an IV or
2694 * UV as a string towards the end of buf, and return pointers to start and
2697 * We assume that buf is at least TYPE_CHARS(UV) long.
2701 S_uiv_2buf(char *const buf, const IV iv, UV uv, const int is_uv, char **const peob)
2703 char *ptr = buf + TYPE_CHARS(UV);
2704 char * const ebuf = ptr;
2707 PERL_ARGS_ASSERT_UIV_2BUF;
2719 *--ptr = '0' + (char)(uv % 10);
2728 =for apidoc sv_2pv_flags
2730 Returns a pointer to the string value of an SV, and sets *lp to its length.
2731 If flags includes SV_GMAGIC, does an mg_get() first. Coerces sv to a string
2733 Normally invoked via the C<SvPV_flags> macro. C<sv_2pv()> and C<sv_2pv_nomg>
2734 usually end up here too.
2740 Perl_sv_2pv_flags(pTHX_ register SV *const sv, STRLEN *const lp, const I32 flags)
2750 if (SvGMAGICAL(sv)) {
2751 if (flags & SV_GMAGIC)
2756 if (flags & SV_MUTABLE_RETURN)
2757 return SvPVX_mutable(sv);
2758 if (flags & SV_CONST_RETURN)
2759 return (char *)SvPVX_const(sv);
2762 if (SvIOKp(sv) || SvNOKp(sv)) {
2763 char tbuf[64]; /* Must fit sprintf/Gconvert of longest IV/NV */
2768 ? my_snprintf(tbuf, sizeof(tbuf), "%"UVuf, (UV)SvUVX(sv))
2769 : my_snprintf(tbuf, sizeof(tbuf), "%"IVdf, (IV)SvIVX(sv));
2771 Gconvert(SvNVX(sv), NV_DIG, 0, tbuf);
2778 #ifdef FIXNEGATIVEZERO
2779 if (len == 2 && tbuf[0] == '-' && tbuf[1] == '0') {
2785 SvUPGRADE(sv, SVt_PV);
2788 s = SvGROW_mutable(sv, len + 1);
2791 return (char*)memcpy(s, tbuf, len + 1);
2797 assert(SvTYPE(sv) >= SVt_PVMG);
2798 /* This falls through to the report_uninit near the end of the
2800 } else if (SvTHINKFIRST(sv)) {
2804 SV *const tmpstr = AMG_CALLun(sv,string);
2805 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2807 /* char *pv = lp ? SvPV(tmpstr, *lp) : SvPV_nolen(tmpstr);
2811 if ((SvFLAGS(tmpstr) & (SVf_POK)) == SVf_POK) {
2812 if (flags & SV_CONST_RETURN) {
2813 pv = (char *) SvPVX_const(tmpstr);
2815 pv = (flags & SV_MUTABLE_RETURN)
2816 ? SvPVX_mutable(tmpstr) : SvPVX(tmpstr);
2819 *lp = SvCUR(tmpstr);
2821 pv = sv_2pv_flags(tmpstr, lp, flags);
2834 const SV *const referent = (SV*)SvRV(sv);
2838 retval = buffer = savepvn("NULLREF", len);
2839 } else if (SvTYPE(referent) == SVt_REGEXP) {
2840 const REGEXP * const re = (REGEXP *)referent;
2845 /* If the regex is UTF-8 we want the containing scalar to
2846 have an UTF-8 flag too */
2852 if ((seen_evals = RX_SEEN_EVALS(re)))
2853 PL_reginterp_cnt += seen_evals;
2856 *lp = RX_WRAPLEN(re);
2858 return RX_WRAPPED(re);
2860 const char *const typestr = sv_reftype(referent, 0);
2861 const STRLEN typelen = strlen(typestr);
2862 UV addr = PTR2UV(referent);
2863 const char *stashname = NULL;
2864 STRLEN stashnamelen = 0; /* hush, gcc */
2865 const char *buffer_end;
2867 if (SvOBJECT(referent)) {
2868 const HEK *const name = HvNAME_HEK(SvSTASH(referent));
2871 stashname = HEK_KEY(name);
2872 stashnamelen = HEK_LEN(name);
2874 if (HEK_UTF8(name)) {
2880 stashname = "__ANON__";
2883 len = stashnamelen + 1 /* = */ + typelen + 3 /* (0x */
2884 + 2 * sizeof(UV) + 2 /* )\0 */;
2886 len = typelen + 3 /* (0x */
2887 + 2 * sizeof(UV) + 2 /* )\0 */;
2890 Newx(buffer, len, char);
2891 buffer_end = retval = buffer + len;
2893 /* Working backwards */
2897 *--retval = PL_hexdigit[addr & 15];
2898 } while (addr >>= 4);
2904 memcpy(retval, typestr, typelen);
2908 retval -= stashnamelen;
2909 memcpy(retval, stashname, stashnamelen);
2911 /* retval may not neccesarily have reached the start of the
2913 assert (retval >= buffer);
2915 len = buffer_end - retval - 1; /* -1 for that \0 */
2923 if (SvREADONLY(sv) && !SvOK(sv)) {
2926 if (flags & SV_UNDEF_RETURNS_NULL)
2928 if (ckWARN(WARN_UNINITIALIZED))
2933 if (SvIOK(sv) || ((SvIOKp(sv) && !SvNOKp(sv)))) {
2934 /* I'm assuming that if both IV and NV are equally valid then
2935 converting the IV is going to be more efficient */
2936 const U32 isUIOK = SvIsUV(sv);
2937 char buf[TYPE_CHARS(UV)];
2941 if (SvTYPE(sv) < SVt_PVIV)
2942 sv_upgrade(sv, SVt_PVIV);
2943 ptr = uiv_2buf(buf, SvIVX(sv), SvUVX(sv), isUIOK, &ebuf);
2945 /* inlined from sv_setpvn */
2946 s = SvGROW_mutable(sv, len + 1);
2947 Move(ptr, s, len, char);
2951 else if (SvNOKp(sv)) {
2952 const int olderrno = errno;
2953 if (SvTYPE(sv) < SVt_PVNV)
2954 sv_upgrade(sv, SVt_PVNV);
2955 /* The +20 is pure guesswork. Configure test needed. --jhi */
2956 s = SvGROW_mutable(sv, NV_DIG + 20);
2957 /* some Xenix systems wipe out errno here */
2959 if (SvNVX(sv) == 0.0)
2960 my_strlcpy(s, "0", SvLEN(sv));
2964 Gconvert(SvNVX(sv), NV_DIG, 0, s);
2967 #ifdef FIXNEGATIVEZERO
2968 if (*s == '-' && s[1] == '0' && !s[2]) {
2980 if (isGV_with_GP(sv))
2981 return glob_2pv((GV *)sv, lp);
2985 if (flags & SV_UNDEF_RETURNS_NULL)
2987 if (!PL_localizing && !(SvFLAGS(sv) & SVs_PADTMP) && ckWARN(WARN_UNINITIALIZED))
2989 if (SvTYPE(sv) < SVt_PV)
2990 /* Typically the caller expects that sv_any is not NULL now. */
2991 sv_upgrade(sv, SVt_PV);
2995 const STRLEN len = s - SvPVX_const(sv);
3001 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2pv(%s)\n",
3002 PTR2UV(sv),SvPVX_const(sv)));
3003 if (flags & SV_CONST_RETURN)
3004 return (char *)SvPVX_const(sv);
3005 if (flags & SV_MUTABLE_RETURN)
3006 return SvPVX_mutable(sv);
3011 =for apidoc sv_copypv
3013 Copies a stringified representation of the source SV into the
3014 destination SV. Automatically performs any necessary mg_get and
3015 coercion of numeric values into strings. Guaranteed to preserve
3016 UTF8 flag even from overloaded objects. Similar in nature to
3017 sv_2pv[_flags] but operates directly on an SV instead of just the
3018 string. Mostly uses sv_2pv_flags to do its work, except when that
3019 would lose the UTF-8'ness of the PV.
3025 Perl_sv_copypv(pTHX_ SV *const dsv, register SV *const ssv)
3028 const char * const s = SvPV_const(ssv,len);
3030 PERL_ARGS_ASSERT_SV_COPYPV;
3032 sv_setpvn(dsv,s,len);
3040 =for apidoc sv_2pvbyte
3042 Return a pointer to the byte-encoded representation of the SV, and set *lp
3043 to its length. May cause the SV to be downgraded from UTF-8 as a
3046 Usually accessed via the C<SvPVbyte> macro.
3052 Perl_sv_2pvbyte(pTHX_ register SV *const sv, STRLEN *const lp)
3054 PERL_ARGS_ASSERT_SV_2PVBYTE;
3056 sv_utf8_downgrade(sv,0);
3057 return lp ? SvPV(sv,*lp) : SvPV_nolen(sv);
3061 =for apidoc sv_2pvutf8
3063 Return a pointer to the UTF-8-encoded representation of the SV, and set *lp
3064 to its length. May cause the SV to be upgraded to UTF-8 as a side-effect.
3066 Usually accessed via the C<SvPVutf8> macro.
3072 Perl_sv_2pvutf8(pTHX_ register SV *const sv, STRLEN *const lp)
3074 PERL_ARGS_ASSERT_SV_2PVUTF8;
3076 sv_utf8_upgrade(sv);
3077 return lp ? SvPV(sv,*lp) : SvPV_nolen(sv);
3082 =for apidoc sv_2bool
3084 This function is only called on magical items, and is only used by
3085 sv_true() or its macro equivalent.
3091 Perl_sv_2bool(pTHX_ register SV *const sv)
3095 PERL_ARGS_ASSERT_SV_2BOOL;
3103 SV * const tmpsv = AMG_CALLun(sv,bool_);
3104 if (tmpsv && (!SvROK(tmpsv) || (SvRV(tmpsv) != SvRV(sv))))
3105 return (bool)SvTRUE(tmpsv);
3107 return SvRV(sv) != 0;
3110 register XPV* const Xpvtmp = (XPV*)SvANY(sv);
3112 (*sv->sv_u.svu_pv > '0' ||
3113 Xpvtmp->xpv_cur > 1 ||
3114 (Xpvtmp->xpv_cur && *sv->sv_u.svu_pv != '0')))
3121 return SvIVX(sv) != 0;
3124 return SvNVX(sv) != 0.0;
3126 if (isGV_with_GP(sv))
3136 =for apidoc sv_utf8_upgrade
3138 Converts the PV of an SV to its UTF-8-encoded form.
3139 Forces the SV to string form if it is not already.
3140 Always sets the SvUTF8 flag to avoid future validity checks even
3141 if all the bytes have hibit clear.
3143 This is not as a general purpose byte encoding to Unicode interface:
3144 use the Encode extension for that.
3146 =for apidoc sv_utf8_upgrade_flags
3148 Converts the PV of an SV to its UTF-8-encoded form.
3149 Forces the SV to string form if it is not already.
3150 Always sets the SvUTF8 flag to avoid future validity checks even
3151 if all the bytes have hibit clear. If C<flags> has C<SV_GMAGIC> bit set,
3152 will C<mg_get> on C<sv> if appropriate, else not. C<sv_utf8_upgrade> and
3153 C<sv_utf8_upgrade_nomg> are implemented in terms of this function.
3155 This is not as a general purpose byte encoding to Unicode interface:
3156 use the Encode extension for that.
3162 Perl_sv_utf8_upgrade_flags(pTHX_ register SV *const sv, const I32 flags)
3166 PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS;
3168 if (sv == &PL_sv_undef)
3172 if (SvREADONLY(sv) && (SvPOKp(sv) || SvIOKp(sv) || SvNOKp(sv))) {
3173 (void) sv_2pv_flags(sv,&len, flags);
3177 (void) SvPV_force(sv,len);
3186 sv_force_normal_flags(sv, 0);
3189 if (PL_encoding && !(flags & SV_UTF8_NO_ENCODING))
3190 sv_recode_to_utf8(sv, PL_encoding);
3191 else { /* Assume Latin-1/EBCDIC */
3192 /* This function could be much more efficient if we
3193 * had a FLAG in SVs to signal if there are any hibit
3194 * chars in the PV. Given that there isn't such a flag
3195 * make the loop as fast as possible. */
3196 const U8 * const s = (U8 *) SvPVX_const(sv);
3197 const U8 * const e = (U8 *) SvEND(sv);
3202 /* Check for hi bit */
3203 if (!NATIVE_IS_INVARIANT(ch)) {
3204 STRLEN len = SvCUR(sv);
3205 /* *Currently* bytes_to_utf8() adds a '\0' after every string
3206 it converts. This isn't documented. It's not clear if it's
3207 a bad thing to be doing, and should be changed to do exactly
3208 what the documentation says. If so, this code will have to
3210 As is, we mustn't rely on our incoming SV being well formed
3211 and having a trailing '\0', as certain code in pp_formline
3212 can send us partially built SVs. */
3213 U8 * const recoded = bytes_to_utf8((U8*)s, &len);
3215 SvPV_free(sv); /* No longer using what was there before. */
3216 SvPV_set(sv, (char*)recoded);
3218 SvLEN_set(sv, len + 1); /* No longer know the real size. */
3222 /* Mark as UTF-8 even if no hibit - saves scanning loop */
3229 =for apidoc sv_utf8_downgrade
3231 Attempts to convert the PV of an SV from characters to bytes.
3232 If the PV contains a character beyond byte, this conversion will fail;
3233 in this case, either returns false or, if C<fail_ok> is not
3236 This is not as a general purpose Unicode to byte encoding interface:
3237 use the Encode extension for that.
3243 Perl_sv_utf8_downgrade(pTHX_ register SV *const sv, const bool fail_ok)
3247 PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE;
3249 if (SvPOKp(sv) && SvUTF8(sv)) {
3255 sv_force_normal_flags(sv, 0);
3257 s = (U8 *) SvPV(sv, len);
3258 if (!utf8_to_bytes(s, &len)) {
3263 Perl_croak(aTHX_ "Wide character in %s",
3266 Perl_croak(aTHX_ "Wide character");
3277 =for apidoc sv_utf8_encode
3279 Converts the PV of an SV to UTF-8, but then turns the C<SvUTF8>
3280 flag off so that it looks like octets again.
3286 Perl_sv_utf8_encode(pTHX_ register SV *const sv)
3288 PERL_ARGS_ASSERT_SV_UTF8_ENCODE;
3291 sv_force_normal_flags(sv, 0);
3293 if (SvREADONLY(sv)) {
3294 Perl_croak(aTHX_ PL_no_modify);
3296 (void) sv_utf8_upgrade(sv);
3301 =for apidoc sv_utf8_decode
3303 If the PV of the SV is an octet sequence in UTF-8
3304 and contains a multiple-byte character, the C<SvUTF8> flag is turned on
3305 so that it looks like a character. If the PV contains only single-byte
3306 characters, the C<SvUTF8> flag stays being off.
3307 Scans PV for validity and returns false if the PV is invalid UTF-8.
3313 Perl_sv_utf8_decode(pTHX_ register SV *const sv)
3315 PERL_ARGS_ASSERT_SV_UTF8_DECODE;
3321 /* The octets may have got themselves encoded - get them back as
3324 if (!sv_utf8_downgrade(sv, TRUE))
3327 /* it is actually just a matter of turning the utf8 flag on, but
3328 * we want to make sure everything inside is valid utf8 first.
3330 c = (const U8 *) SvPVX_const(sv);
3331 if (!is_utf8_string(c, SvCUR(sv)+1))
3333 e = (const U8 *) SvEND(sv);
3336 if (!UTF8_IS_INVARIANT(ch)) {
3346 =for apidoc sv_setsv
3348 Copies the contents of the source SV C<ssv> into the destination SV
3349 C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
3350 function if the source SV needs to be reused. Does not handle 'set' magic.
3351 Loosely speaking, it performs a copy-by-value, obliterating any previous
3352 content of the destination.
3354 You probably want to use one of the assortment of wrappers, such as
3355 C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
3356 C<SvSetMagicSV_nosteal>.
3358 =for apidoc sv_setsv_flags
3360 Copies the contents of the source SV C<ssv> into the destination SV
3361 C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
3362 function if the source SV needs to be reused. Does not handle 'set' magic.
3363 Loosely speaking, it performs a copy-by-value, obliterating any previous
3364 content of the destination.
3365 If the C<flags> parameter has the C<SV_GMAGIC> bit set, will C<mg_get> on
3366 C<ssv> if appropriate, else not. If the C<flags> parameter has the
3367 C<NOSTEAL> bit set then the buffers of temps will not be stolen. <sv_setsv>
3368 and C<sv_setsv_nomg> are implemented in terms of this function.
3370 You probably want to use one of the assortment of wrappers, such as
3371 C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
3372 C<SvSetMagicSV_nosteal>.
3374 This is the primary function for copying scalars, and most other
3375 copy-ish functions and macros use this underneath.
3381 S_glob_assign_glob(pTHX_ SV *const dstr, SV *const sstr, const int dtype)
3383 I32 mro_changes = 0; /* 1 = method, 2 = isa */
3385 PERL_ARGS_ASSERT_GLOB_ASSIGN_GLOB;
3387 if (dtype != SVt_PVGV) {
3388 const char * const name = GvNAME(sstr);
3389 const STRLEN len = GvNAMELEN(sstr);
3391 if (dtype >= SVt_PV) {
3397 SvUPGRADE(dstr, SVt_PVGV);
3398 (void)SvOK_off(dstr);
3399 /* FIXME - why are we doing this, then turning it off and on again
3401 isGV_with_GP_on(dstr);
3403 GvSTASH(dstr) = GvSTASH(sstr);
3405 Perl_sv_add_backref(aTHX_ (SV*)GvSTASH(dstr), dstr);
3406 gv_name_set((GV *)dstr, name, len, GV_ADD);
3407 SvFAKE_on(dstr); /* can coerce to non-glob */
3410 #ifdef GV_UNIQUE_CHECK
3411 if (GvUNIQUE((GV*)dstr)) {
3412 Perl_croak(aTHX_ PL_no_modify);
3416 if(GvGP((GV*)sstr)) {
3417 /* If source has method cache entry, clear it */
3419 SvREFCNT_dec(GvCV(sstr));
3423 /* If source has a real method, then a method is
3425 else if(GvCV((GV*)sstr)) {
3430 /* If dest already had a real method, that's a change as well */
3431 if(!mro_changes && GvGP((GV*)dstr) && GvCVu((GV*)dstr)) {
3435 if(strEQ(GvNAME((GV*)dstr),"ISA"))
3439 isGV_with_GP_off(dstr);
3440 (void)SvOK_off(dstr);
3441 isGV_with_GP_on(dstr);
3442 GvINTRO_off(dstr); /* one-shot flag */
3443 GvGP(dstr) = gp_ref(GvGP(sstr));
3444 if (SvTAINTED(sstr))
3446 if (GvIMPORTED(dstr) != GVf_IMPORTED
3447 && CopSTASH_ne(PL_curcop, GvSTASH(dstr)))
3449 GvIMPORTED_on(dstr);
3452 if(mro_changes == 2) mro_isa_changed_in(GvSTASH(dstr));
3453 else if(mro_changes) mro_method_changed_in(GvSTASH(dstr));
3458 S_glob_assign_ref(pTHX_ SV *const dstr, SV *const sstr)
3460 SV * const sref = SvREFCNT_inc(SvRV(sstr));
3462 const int intro = GvINTRO(dstr);
3465 const U32 stype = SvTYPE(sref);
3467 PERL_ARGS_ASSERT_GLOB_ASSIGN_REF;
3469 #ifdef GV_UNIQUE_CHECK
3470 if (GvUNIQUE((GV*)dstr)) {
3471 Perl_croak(aTHX_ PL_no_modify);
3476 GvINTRO_off(dstr); /* one-shot flag */
3477 GvLINE(dstr) = CopLINE(PL_curcop);
3478 GvEGV(dstr) = (GV*)dstr;
3483 location = (SV **) &GvCV(dstr);
3484 import_flag = GVf_IMPORTED_CV;
3487 location = (SV **) &GvHV(dstr);
3488 import_flag = GVf_IMPORTED_HV;
3491 location = (SV **) &GvAV(dstr);
3492 import_flag = GVf_IMPORTED_AV;
3495 location = (SV **) &GvIOp(dstr);
3498 location = (SV **) &GvFORM(dstr);
3500 location = &GvSV(dstr);
3501 import_flag = GVf_IMPORTED_SV;
3504 if (stype == SVt_PVCV) {
3505 /*if (GvCVGEN(dstr) && (GvCV(dstr) != (const CV *)sref || GvCVGEN(dstr))) {*/
3506 if (GvCVGEN(dstr)) {
3507 SvREFCNT_dec(GvCV(dstr));
3509 GvCVGEN(dstr) = 0; /* Switch off cacheness. */
3512 SAVEGENERICSV(*location);
3516 if (stype == SVt_PVCV && (*location != sref || GvCVGEN(dstr))) {
3517 CV* const cv = MUTABLE_CV(*location);
3519 if (!GvCVGEN((GV*)dstr) &&
3520 (CvROOT(cv) || CvXSUB(cv)))
3522 /* Redefining a sub - warning is mandatory if
3523 it was a const and its value changed. */
3524 if (CvCONST(cv) && CvCONST((const CV *)sref)
3526 == cv_const_sv((const CV *)sref)) {
3528 /* They are 2 constant subroutines generated from
3529 the same constant. This probably means that
3530 they are really the "same" proxy subroutine
3531 instantiated in 2 places. Most likely this is
3532 when a constant is exported twice. Don't warn.
3535 else if (ckWARN(WARN_REDEFINE)
3537 && (!CvCONST((const CV *)sref)
3538 || sv_cmp(cv_const_sv(cv),
3539 cv_const_sv((const CV *)
3541 Perl_warner(aTHX_ packWARN(WARN_REDEFINE),
3544 ? "Constant subroutine %s::%s redefined"
3545 : "Subroutine %s::%s redefined"),
3546 HvNAME_get(GvSTASH((GV*)dstr)),
3547 GvENAME((GV*)dstr));
3551 cv_ckproto_len(cv, (GV*)dstr,
3552 SvPOK(sref) ? SvPVX_const(sref) : NULL,
3553 SvPOK(sref) ? SvCUR(sref) : 0);
3555 GvCVGEN(dstr) = 0; /* Switch off cacheness. */
3556 GvASSUMECV_on(dstr);
3557 if(GvSTASH(dstr)) mro_method_changed_in(GvSTASH(dstr)); /* sub foo { 1 } sub bar { 2 } *bar = \&foo */
3560 if (import_flag && !(GvFLAGS(dstr) & import_flag)
3561 && CopSTASH_ne(PL_curcop, GvSTASH(dstr))) {
3562 GvFLAGS(dstr) |= import_flag;
3567 if (SvTAINTED(sstr))
3573 Perl_sv_setsv_flags(pTHX_ SV *dstr, register SV* sstr, const I32 flags)
3576 register U32 sflags;
3578 register svtype stype;
3580 PERL_ARGS_ASSERT_SV_SETSV_FLAGS;
3585 if (SvIS_FREED(dstr)) {
3586 Perl_croak(aTHX_ "panic: attempt to copy value %" SVf
3587 " to a freed scalar %p", SVfARG(sstr), (void *)dstr);
3589 SV_CHECK_THINKFIRST_COW_DROP(dstr);
3591 sstr = &PL_sv_undef;
3592 if (SvIS_FREED(sstr)) {
3593 Perl_croak(aTHX_ "panic: attempt to copy freed scalar %p to %p",
3594 (void*)sstr, (void*)dstr);
3596 stype = SvTYPE(sstr);
3597 dtype = SvTYPE(dstr);
3599 (void)SvAMAGIC_off(dstr);
3602 /* need to nuke the magic */
3606 /* There's a lot of redundancy below but we're going for speed here */
3611 if (dtype != SVt_PVGV) {
3612 (void)SvOK_off(dstr);
3620 sv_upgrade(dstr, SVt_IV);
3624 sv_upgrade(dstr, SVt_PVIV);
3627 goto end_of_first_switch;
3629 (void)SvIOK_only(dstr);
3630 SvIV_set(dstr, SvIVX(sstr));
3633 /* SvTAINTED can only be true if the SV has taint magic, which in
3634 turn means that the SV type is PVMG (or greater). This is the
3635 case statement for SVt_IV, so this cannot be true (whatever gcov
3637 assert(!SvTAINTED(sstr));
3642 if (dtype < SVt_PV && dtype != SVt_IV)
3643 sv_upgrade(dstr, SVt_IV);
3651 sv_upgrade(dstr, SVt_NV);
3655 sv_upgrade(dstr, SVt_PVNV);
3658 goto end_of_first_switch;
3660 SvNV_set(dstr, SvNVX(sstr));
3661 (void)SvNOK_only(dstr);
3662 /* SvTAINTED can only be true if the SV has taint magic, which in
3663 turn means that the SV type is PVMG (or greater). This is the
3664 case statement for SVt_NV, so this cannot be true (whatever gcov
3666 assert(!SvTAINTED(sstr));
3672 #ifdef PERL_OLD_COPY_ON_WRITE
3673 if ((SvFLAGS(sstr) & CAN_COW_MASK) == CAN_COW_FLAGS) {
3674 if (dtype < SVt_PVIV)
3675 sv_upgrade(dstr, SVt_PVIV);
3683 sv_upgrade(dstr, SVt_PV);
3686 if (dtype < SVt_PVIV)
3687 sv_upgrade(dstr, SVt_PVIV);
3690 if (dtype < SVt_PVNV)
3691 sv_upgrade(dstr, SVt_PVNV);
3695 const char * const type = sv_reftype(sstr,0);
3697 Perl_croak(aTHX_ "Bizarre copy of %s in %s", type, OP_NAME(PL_op));
3699 Perl_croak(aTHX_ "Bizarre copy of %s", type);
3703 /* case SVt_BIND: */
3706 if (isGV_with_GP(sstr) && dtype <= SVt_PVGV) {
3707 glob_assign_glob(dstr, sstr, dtype);
3710 /* SvVALID means that this PVGV is playing at being an FBM. */
3714 if (SvGMAGICAL(sstr) && (flags & SV_GMAGIC)) {
3716 if (SvTYPE(sstr) != stype) {
3717 stype = SvTYPE(sstr);
3718 if (isGV_with_GP(sstr) && stype == SVt_PVGV && dtype <= SVt_PVGV) {
3719 glob_assign_glob(dstr, sstr, dtype);
3724 if (stype == SVt_PVLV)
3725 SvUPGRADE(dstr, SVt_PVNV);
3727 SvUPGRADE(dstr, (svtype)stype);
3729 end_of_first_switch:
3731 /* dstr may have been upgraded. */
3732 dtype = SvTYPE(dstr);
3733 sflags = SvFLAGS(sstr);
3735 if (dtype == SVt_PVCV || dtype == SVt_PVFM) {
3736 /* Assigning to a subroutine sets the prototype. */
3739 const char *const ptr = SvPV_const(sstr, len);
3741 SvGROW(dstr, len + 1);
3742 Copy(ptr, SvPVX(dstr), len + 1, char);
3743 SvCUR_set(dstr, len);
3745 SvFLAGS(dstr) |= sflags & SVf_UTF8;
3749 } else if (dtype == SVt_PVAV || dtype == SVt_PVHV) {
3750 const char * const type = sv_reftype(dstr,0);
3752 Perl_croak(aTHX_ "Cannot copy to %s in %s", type, OP_NAME(PL_op));
3754 Perl_croak(aTHX_ "Cannot copy to %s", type);
3755 } else if (sflags & SVf_ROK) {
3756 if (isGV_with_GP(dstr) && dtype == SVt_PVGV
3757 && SvTYPE(SvRV(sstr)) == SVt_PVGV && isGV_with_GP(SvRV(sstr))) {
3760 if (GvIMPORTED(dstr) != GVf_IMPORTED
3761 && CopSTASH_ne(PL_curcop, GvSTASH(dstr)))
3763 GvIMPORTED_on(dstr);
3768 glob_assign_glob(dstr, sstr, dtype);
3772 if (dtype >= SVt_PV) {
3773 if (dtype == SVt_PVGV && isGV_with_GP(dstr)) {
3774 glob_assign_ref(dstr, sstr);
3777 if (SvPVX_const(dstr)) {
3783 (void)SvOK_off(dstr);
3784 SvRV_set(dstr, SvREFCNT_inc(SvRV(sstr)));
3785 SvFLAGS(dstr) |= sflags & SVf_ROK;
3786 assert(!(sflags & SVp_NOK));
3787 assert(!(sflags & SVp_IOK));
3788 assert(!(sflags & SVf_NOK));
3789 assert(!(sflags & SVf_IOK));
3791 else if (dtype == SVt_PVGV && isGV_with_GP(dstr)) {
3792 if (!(sflags & SVf_OK)) {
3793 if (ckWARN(WARN_MISC))
3794 Perl_warner(aTHX_ packWARN(WARN_MISC),
3795 "Undefined value assigned to typeglob");
3798 GV *gv = gv_fetchsv(sstr, GV_ADD, SVt_PVGV);
3799 if (dstr != (SV*)gv) {
3802 GvGP(dstr) = gp_ref(GvGP(gv));
3806 else if (sflags & SVp_POK) {
3810 * Check to see if we can just swipe the string. If so, it's a
3811 * possible small lose on short strings, but a big win on long ones.
3812 * It might even be a win on short strings if SvPVX_const(dstr)
3813 * has to be allocated and SvPVX_const(sstr) has to be freed.
3814 * Likewise if we can set up COW rather than doing an actual copy, we
3815 * drop to the else clause, as the swipe code and the COW setup code
3816 * have much in common.
3819 /* Whichever path we take through the next code, we want this true,
3820 and doing it now facilitates the COW check. */
3821 (void)SvPOK_only(dstr);
3824 /* If we're already COW then this clause is not true, and if COW
3825 is allowed then we drop down to the else and make dest COW
3826 with us. If caller hasn't said that we're allowed to COW
3827 shared hash keys then we don't do the COW setup, even if the
3828 source scalar is a shared hash key scalar. */
3829 (((flags & SV_COW_SHARED_HASH_KEYS)
3830 ? (sflags & (SVf_FAKE|SVf_READONLY)) != (SVf_FAKE|SVf_READONLY)
3831 : 1 /* If making a COW copy is forbidden then the behaviour we
3832 desire is as if the source SV isn't actually already
3833 COW, even if it is. So we act as if the source flags
3834 are not COW, rather than actually testing them. */
3836 #ifndef PERL_OLD_COPY_ON_WRITE
3837 /* The change that added SV_COW_SHARED_HASH_KEYS makes the logic
3838 when PERL_OLD_COPY_ON_WRITE is defined a little wrong.
3839 Conceptually PERL_OLD_COPY_ON_WRITE being defined should
3840 override SV_COW_SHARED_HASH_KEYS, because it means "always COW"
3841 but in turn, it's somewhat dead code, never expected to go
3842 live, but more kept as a placeholder on how to do it better
3843 in a newer implementation. */
3844 /* If we are COW and dstr is a suitable target then we drop down
3845 into the else and make dest a COW of us. */
3846 || (SvFLAGS(dstr) & CAN_COW_MASK) != CAN_COW_FLAGS
3851 (sflags & SVs_TEMP) && /* slated for free anyway? */
3852 !(sflags & SVf_OOK) && /* and not involved in OOK hack? */
3853 (!(flags & SV_NOSTEAL)) &&
3854 /* and we're allowed to steal temps */
3855 SvREFCNT(sstr) == 1 && /* and no other references to it? */
3856 SvLEN(sstr) && /* and really is a string */
3857 /* and won't be needed again, potentially */
3858 !(PL_op && PL_op->op_type == OP_AASSIGN))
3859 #ifdef PERL_OLD_COPY_ON_WRITE
3860 && ((flags & SV_COW_SHARED_HASH_KEYS)
3861 ? (!((sflags & CAN_COW_MASK) == CAN_COW_FLAGS
3862 && (SvFLAGS(dstr) & CAN_COW_MASK) == CAN_COW_FLAGS
3863 && SvTYPE(sstr) >= SVt_PVIV))
3867 /* Failed the swipe test, and it's not a shared hash key either.
3868 Have to copy the string. */
3869 STRLEN len = SvCUR(sstr);
3870 SvGROW(dstr, len + 1); /* inlined from sv_setpvn */
3871 Move(SvPVX_const(sstr),SvPVX(dstr),len,char);
3872 SvCUR_set(dstr, len);
3873 *SvEND(dstr) = '\0';
3875 /* If PERL_OLD_COPY_ON_WRITE is not defined, then isSwipe will always
3877 /* Either it's a shared hash key, or it's suitable for
3878 copy-on-write or we can swipe the string. */
3880 PerlIO_printf(Perl_debug_log, "Copy on write: sstr --> dstr\n");
3884 #ifdef PERL_OLD_COPY_ON_WRITE
3886 /* I believe I should acquire a global SV mutex if
3887 it's a COW sv (not a shared hash key) to stop
3888 it going un copy-on-write.
3889 If the source SV has gone un copy on write between up there
3890 and down here, then (assert() that) it is of the correct
3891 form to make it copy on write again */
3892 if ((sflags & (SVf_FAKE | SVf_READONLY))
3893 != (SVf_FAKE | SVf_READONLY)) {
3894 SvREADONLY_on(sstr);
3896 /* Make the source SV into a loop of 1.
3897 (about to become 2) */
3898 SV_COW_NEXT_SV_SET(sstr, sstr);
3902 /* Initial code is common. */
3903 if (SvPVX_const(dstr)) { /* we know that dtype >= SVt_PV */
3908 /* making another shared SV. */
3909 STRLEN cur = SvCUR(sstr);
3910 STRLEN len = SvLEN(sstr);
3911 #ifdef PERL_OLD_COPY_ON_WRITE
3913 assert (SvTYPE(dstr) >= SVt_PVIV);
3914 /* SvIsCOW_normal */
3915 /* splice us in between source and next-after-source. */
3916 SV_COW_NEXT_SV_SET(dstr, SV_COW_NEXT_SV(sstr));
3917 SV_COW_NEXT_SV_SET(sstr, dstr);
3918 SvPV_set(dstr, SvPVX_mutable(sstr));
3922 /* SvIsCOW_shared_hash */
3923 DEBUG_C(PerlIO_printf(Perl_debug_log,
3924 "Copy on write: Sharing hash\n"));
3926 assert (SvTYPE(dstr) >= SVt_PV);
3928 HEK_KEY(share_hek_hek(SvSHARED_HEK_FROM_PV(SvPVX_const(sstr)))));
3930 SvLEN_set(dstr, len);
3931 SvCUR_set(dstr, cur);
3932 SvREADONLY_on(dstr);
3934 /* Relesase a global SV mutex. */
3937 { /* Passes the swipe test. */
3938 SvPV_set(dstr, SvPVX_mutable(sstr));
3939 SvLEN_set(dstr, SvLEN(sstr));
3940 SvCUR_set(dstr, SvCUR(sstr));
3943 (void)SvOK_off(sstr); /* NOTE: nukes most SvFLAGS on sstr */
3944 SvPV_set(sstr, NULL);
3950 if (sflags & SVp_NOK) {
3951 SvNV_set(dstr, SvNVX(sstr));
3953 if (sflags & SVp_IOK) {
3954 SvIV_set(dstr, SvIVX(sstr));
3955 /* Must do this otherwise some other overloaded use of 0x80000000
3956 gets confused. I guess SVpbm_VALID */
3957 if (sflags & SVf_IVisUV)
3960 SvFLAGS(dstr) |= sflags & (SVf_IOK|SVp_IOK|SVf_NOK|SVp_NOK|SVf_UTF8);
3962 const MAGIC * const smg = SvVSTRING_mg(sstr);
3964 sv_magic(dstr, NULL, PERL_MAGIC_vstring,
3965 smg->mg_ptr, smg->mg_len);
3966 SvRMAGICAL_on(dstr);
3970 else if (sflags & (SVp_IOK|SVp_NOK)) {
3971 (void)SvOK_off(dstr);
3972 SvFLAGS(dstr) |= sflags & (SVf_IOK|SVp_IOK|SVf_IVisUV|SVf_NOK|SVp_NOK);
3973 if (sflags & SVp_IOK) {
3974 /* XXXX Do we want to set IsUV for IV(ROK)? Be extra safe... */
3975 SvIV_set(dstr, SvIVX(sstr));
3977 if (sflags & SVp_NOK) {
3978 SvNV_set(dstr, SvNVX(sstr));
3982 if (isGV_with_GP(sstr)) {
3983 /* This stringification rule for globs is spread in 3 places.
3984 This feels bad. FIXME. */
3985 const U32 wasfake = sflags & SVf_FAKE;
3987 /* FAKE globs can get coerced, so need to turn this off
3988 temporarily if it is on. */
3990 gv_efullname3(dstr, (GV *)sstr, "*");
3991 SvFLAGS(sstr) |= wasfake;
3994 (void)SvOK_off(dstr);
3996 if (SvTAINTED(sstr))
4001 =for apidoc sv_setsv_mg
4003 Like C<sv_setsv>, but also handles 'set' magic.
4009 Perl_sv_setsv_mg(pTHX_ SV *const dstr, register SV *const sstr)
4011 PERL_ARGS_ASSERT_SV_SETSV_MG;
4013 sv_setsv(dstr,sstr);
4017 #ifdef PERL_OLD_COPY_ON_WRITE
4019 Perl_sv_setsv_cow(pTHX_ SV *dstr, SV *sstr)
4021 STRLEN cur = SvCUR(sstr);
4022 STRLEN len = SvLEN(sstr);
4023 register char *new_pv;
4025 PERL_ARGS_ASSERT_SV_SETSV_COW;
4028 PerlIO_printf(Perl_debug_log, "Fast copy on write: %p -> %p\n",
4029 (void*)sstr, (void*)dstr);
4036 if (SvTHINKFIRST(dstr))
4037 sv_force_normal_flags(dstr, SV_COW_DROP_PV);
4038 else if (SvPVX_const(dstr))
4039 Safefree(SvPVX_const(dstr));
4043 SvUPGRADE(dstr, SVt_PVIV);
4045 assert (SvPOK(sstr));
4046 assert (SvPOKp(sstr));
4047 assert (!SvIOK(sstr));
4048 assert (!SvIOKp(sstr));
4049 assert (!SvNOK(sstr));
4050 assert (!SvNOKp(sstr));
4052 if (SvIsCOW(sstr)) {
4054 if (SvLEN(sstr) == 0) {
4055 /* source is a COW shared hash key. */
4056 DEBUG_C(PerlIO_printf(Perl_debug_log,
4057 "Fast copy on write: Sharing hash\n"));
4058 new_pv = HEK_KEY(share_hek_hek(SvSHARED_HEK_FROM_PV(SvPVX_const(sstr))));
4061 SV_COW_NEXT_SV_SET(dstr, SV_COW_NEXT_SV(sstr));
4063 assert ((SvFLAGS(sstr) & CAN_COW_MASK) == CAN_COW_FLAGS);
4064 SvUPGRADE(sstr, SVt_PVIV);
4065 SvREADONLY_on(sstr);
4067 DEBUG_C(PerlIO_printf(Perl_debug_log,
4068 "Fast copy on write: Converting sstr to COW\n"));
4069 SV_COW_NEXT_SV_SET(dstr, sstr);
4071 SV_COW_NEXT_SV_SET(sstr, dstr);
4072 new_pv = SvPVX_mutable(sstr);
4075 SvPV_set(dstr, new_pv);
4076 SvFLAGS(dstr) = (SVt_PVIV|SVf_POK|SVp_POK|SVf_FAKE|SVf_READONLY);
4079 SvLEN_set(dstr, len);
4080 SvCUR_set(dstr, cur);
4089 =for apidoc sv_setpvn
4091 Copies a string into an SV. The C<len> parameter indicates the number of
4092 bytes to be copied. If the C<ptr> argument is NULL the SV will become
4093 undefined. Does not handle 'set' magic. See C<sv_setpvn_mg>.
4099 Perl_sv_setpvn(pTHX_ register SV *const sv, register const char *const ptr, register const STRLEN len)
4102 register char *dptr;
4104 PERL_ARGS_ASSERT_SV_SETPVN;
4106 SV_CHECK_THINKFIRST_COW_DROP(sv);
4112 /* len is STRLEN which is unsigned, need to copy to signed */
4115 Perl_croak(aTHX_ "panic: sv_setpvn called with negative strlen");
4117 SvUPGRADE(sv, SVt_PV);
4119 dptr = SvGROW(sv, len + 1);
4120 Move(ptr,dptr,len,char);
4123 (void)SvPOK_only_UTF8(sv); /* validate pointer */
4128 =for apidoc sv_setpvn_mg
4130 Like C<sv_setpvn>, but also handles 'set' magic.
4136 Perl_sv_setpvn_mg(pTHX_ register SV *const sv, register const char *const ptr, register const STRLEN len)
4138 PERL_ARGS_ASSERT_SV_SETPVN_MG;
4140 sv_setpvn(sv,ptr,len);
4145 =for apidoc sv_setpv
4147 Copies a string into an SV. The string must be null-terminated. Does not
4148 handle 'set' magic. See C<sv_setpv_mg>.
4154 Perl_sv_setpv(pTHX_ register SV *const sv, register const char *const ptr)
4157 register STRLEN len;
4159 PERL_ARGS_ASSERT_SV_SETPV;
4161 SV_CHECK_THINKFIRST_COW_DROP(sv);
4167 SvUPGRADE(sv, SVt_PV);
4169 SvGROW(sv, len + 1);
4170 Move(ptr,SvPVX(sv),len+1,char);
4172 (void)SvPOK_only_UTF8(sv); /* validate pointer */
4177 =for apidoc sv_setpv_mg
4179 Like C<sv_setpv>, but also handles 'set' magic.
4185 Perl_sv_setpv_mg(pTHX_ register SV *const sv, register const char *const ptr)
4187 PERL_ARGS_ASSERT_SV_SETPV_MG;
4194 =for apidoc sv_usepvn_flags
4196 Tells an SV to use C<ptr> to find its string value. Normally the
4197 string is stored inside the SV but sv_usepvn allows the SV to use an
4198 outside string. The C<ptr> should point to memory that was allocated
4199 by C<malloc>. The string length, C<len>, must be supplied. By default
4200 this function will realloc (i.e. move) the memory pointed to by C<ptr>,
4201 so that pointer should not be freed or used by the programmer after
4202 giving it to sv_usepvn, and neither should any pointers from "behind"
4203 that pointer (e.g. ptr + 1) be used.
4205 If C<flags> & SV_SMAGIC is true, will call SvSETMAGIC. If C<flags> &
4206 SV_HAS_TRAILING_NUL is true, then C<ptr[len]> must be NUL, and the realloc
4207 will be skipped. (i.e. the buffer is actually at least 1 byte longer than
4208 C<len>, and already meets the requirements for storing in C<SvPVX>)
4214 Perl_sv_usepvn_flags(pTHX_ SV *const sv, char *ptr, const STRLEN len, const U32 flags)
4219 PERL_ARGS_ASSERT_SV_USEPVN_FLAGS;
4221 SV_CHECK_THINKFIRST_COW_DROP(sv);
4222 SvUPGRADE(sv, SVt_PV);
4225 if (flags & SV_SMAGIC)
4229 if (SvPVX_const(sv))
4233 if (flags & SV_HAS_TRAILING_NUL)
4234 assert(ptr[len] == '\0');
4237 allocate = (flags & SV_HAS_TRAILING_NUL)
4239 #ifdef Perl_safesysmalloc_size
4242 PERL_STRLEN_ROUNDUP(len + 1);
4244 if (flags & SV_HAS_TRAILING_NUL) {
4245 /* It's long enough - do nothing.
4246 Specfically Perl_newCONSTSUB is relying on this. */
4249 /* Force a move to shake out bugs in callers. */
4250 char *new_ptr = (char*)safemalloc(allocate);
4251 Copy(ptr, new_ptr, len, char);
4252 PoisonFree(ptr,len,char);
4256 ptr = (char*) saferealloc (ptr, allocate);
4259 #ifdef Perl_safesysmalloc_size
4260 SvLEN_set(sv, Perl_safesysmalloc_size(ptr));
4262 SvLEN_set(sv, allocate);
4266 if (!(flags & SV_HAS_TRAILING_NUL)) {
4269 (void)SvPOK_only_UTF8(sv); /* validate pointer */
4271 if (flags & SV_SMAGIC)
4275 #ifdef PERL_OLD_COPY_ON_WRITE
4276 /* Need to do this *after* making the SV normal, as we need the buffer
4277 pointer to remain valid until after we've copied it. If we let go too early,
4278 another thread could invalidate it by unsharing last of the same hash key
4279 (which it can do by means other than releasing copy-on-write Svs)
4280 or by changing the other copy-on-write SVs in the loop. */
4282 S_sv_release_COW(pTHX_ register SV *sv, const char *pvx, SV *after)
4284 PERL_ARGS_ASSERT_SV_RELEASE_COW;
4286 { /* this SV was SvIsCOW_normal(sv) */
4287 /* we need to find the SV pointing to us. */
4288 SV *current = SV_COW_NEXT_SV(after);
4290 if (current == sv) {
4291 /* The SV we point to points back to us (there were only two of us
4293 Hence other SV is no longer copy on write either. */
4295 SvREADONLY_off(after);
4297 /* We need to follow the pointers around the loop. */
4299 while ((next = SV_COW_NEXT_SV(current)) != sv) {
4302 /* don't loop forever if the structure is bust, and we have
4303 a pointer into a closed loop. */
4304 assert (current != after);
4305 assert (SvPVX_const(current) == pvx);
4307 /* Make the SV before us point to the SV after us. */
4308 SV_COW_NEXT_SV_SET(current, after);
4314 =for apidoc sv_force_normal_flags
4316 Undo various types of fakery on an SV: if the PV is a shared string, make
4317 a private copy; if we're a ref, stop refing; if we're a glob, downgrade to
4318 an xpvmg; if we're a copy-on-write scalar, this is the on-write time when
4319 we do the copy, and is also used locally. If C<SV_COW_DROP_PV> is set
4320 then a copy-on-write scalar drops its PV buffer (if any) and becomes
4321 SvPOK_off rather than making a copy. (Used where this scalar is about to be
4322 set to some other value.) In addition, the C<flags> parameter gets passed to
4323 C<sv_unref_flags()> when unrefing. C<sv_force_normal> calls this function
4324 with flags set to 0.
4330 Perl_sv_force_normal_flags(pTHX_ register SV *const sv, const U32 flags)
4334 PERL_ARGS_ASSERT_SV_FORCE_NORMAL_FLAGS;
4336 #ifdef PERL_OLD_COPY_ON_WRITE
4337 if (SvREADONLY(sv)) {
4338 /* At this point I believe I should acquire a global SV mutex. */
4340 const char * const pvx = SvPVX_const(sv);
4341 const STRLEN len = SvLEN(sv);
4342 const STRLEN cur = SvCUR(sv);
4343 /* next COW sv in the loop. If len is 0 then this is a shared-hash
4344 key scalar, so we mustn't attempt to call SV_COW_NEXT_SV(), as
4345 we'll fail an assertion. */
4346 SV * const next = len ? SV_COW_NEXT_SV(sv) : 0;
4349 PerlIO_printf(Perl_debug_log,
4350 "Copy on write: Force normal %ld\n",
4356 /* This SV doesn't own the buffer, so need to Newx() a new one: */
4359 if (flags & SV_COW_DROP_PV) {
4360 /* OK, so we don't need to copy our buffer. */
4363 SvGROW(sv, cur + 1);
4364 Move(pvx,SvPVX(sv),cur,char);
4369 sv_release_COW(sv, pvx, next);
4371 unshare_hek(SvSHARED_HEK_FROM_PV(pvx));
4377 else if (IN_PERL_RUNTIME)
4378 Perl_croak(aTHX_ PL_no_modify);
4379 /* At this point I believe that I can drop the global SV mutex. */
4382 if (SvREADONLY(sv)) {
4384 const char * const pvx = SvPVX_const(sv);
4385 const STRLEN len = SvCUR(sv);
4390 SvGROW(sv, len + 1);
4391 Move(pvx,SvPVX(sv),len,char);
4393 unshare_hek(SvSHARED_HEK_FROM_PV(pvx));
4395 else if (IN_PERL_RUNTIME)
4396 Perl_croak(aTHX_ PL_no_modify);
4400 sv_unref_flags(sv, flags);
4401 else if (SvFAKE(sv) && SvTYPE(sv) == SVt_PVGV)
4408 Efficient removal of characters from the beginning of the string buffer.
4409 SvPOK(sv) must be true and the C<ptr> must be a pointer to somewhere inside
4410 the string buffer. The C<ptr> becomes the first character of the adjusted
4411 string. Uses the "OOK hack".
4412 Beware: after this function returns, C<ptr> and SvPVX_const(sv) may no longer
4413 refer to the same chunk of data.
4419 Perl_sv_chop(pTHX_ register SV *const sv, register const char *const ptr)
4425 const U8 *real_start;
4429 PERL_ARGS_ASSERT_SV_CHOP;
4431 if (!ptr || !SvPOKp(sv))
4433 delta = ptr - SvPVX_const(sv);
4435 /* Nothing to do. */
4438 /* SvPVX(sv) may move in SV_CHECK_THINKFIRST(sv), but after this line,
4439 nothing uses the value of ptr any more. */
4440 max_delta = SvLEN(sv) ? SvLEN(sv) : SvCUR(sv);
4441 if (ptr <= SvPVX_const(sv))
4442 Perl_croak(aTHX_ "panic: sv_chop ptr=%p, start=%p, end=%p",
4443 ptr, SvPVX_const(sv), SvPVX_const(sv) + max_delta);
4444 SV_CHECK_THINKFIRST(sv);
4445 if (delta > max_delta)
4446 Perl_croak(aTHX_ "panic: sv_chop ptr=%p (was %p), start=%p, end=%p",
4447 SvPVX_const(sv) + delta, ptr, SvPVX_const(sv),
4448 SvPVX_const(sv) + max_delta);
4451 if (!SvLEN(sv)) { /* make copy of shared string */
4452 const char *pvx = SvPVX_const(sv);
4453 const STRLEN len = SvCUR(sv);
4454 SvGROW(sv, len + 1);
4455 Move(pvx,SvPVX(sv),len,char);
4458 SvFLAGS(sv) |= SVf_OOK;
4461 SvOOK_offset(sv, old_delta);
4463 SvLEN_set(sv, SvLEN(sv) - delta);
4464 SvCUR_set(sv, SvCUR(sv) - delta);
4465 SvPV_set(sv, SvPVX(sv) + delta);
4467 p = (U8 *)SvPVX_const(sv);
4472 real_start = p - delta;
4476 if (delta < 0x100) {
4480 p -= sizeof(STRLEN);
4481 Copy((U8*)&delta, p, sizeof(STRLEN), U8);
4485 /* Fill the preceding buffer with sentinals to verify that no-one is
4487 while (p > real_start) {
4495 =for apidoc sv_catpvn
4497 Concatenates the string onto the end of the string which is in the SV. The
4498 C<len> indicates number of bytes to copy. If the SV has the UTF-8
4499 status set, then the bytes appended should be valid UTF-8.
4500 Handles 'get' magic, but not 'set' magic. See C<sv_catpvn_mg>.
4502 =for apidoc sv_catpvn_flags
4504 Concatenates the string onto the end of the string which is in the SV. The
4505 C<len> indicates number of bytes to copy. If the SV has the UTF-8
4506 status set, then the bytes appended should be valid UTF-8.
4507 If C<flags> has C<SV_GMAGIC> bit set, will C<mg_get> on C<dsv> if
4508 appropriate, else not. C<sv_catpvn> and C<sv_catpvn_nomg> are implemented
4509 in terms of this function.
4515 Perl_sv_catpvn_flags(pTHX_ register SV *const dsv, register const char *sstr, register const STRLEN slen, const I32 flags)
4519 const char * const dstr = SvPV_force_flags(dsv, dlen, flags);
4521 PERL_ARGS_ASSERT_SV_CATPVN_FLAGS;
4523 SvGROW(dsv, dlen + slen + 1);
4525 sstr = SvPVX_const(dsv);
4526 Move(sstr, SvPVX(dsv) + dlen, slen, char);
4527 SvCUR_set(dsv, SvCUR(dsv) + slen);
4529 (void)SvPOK_only_UTF8(dsv); /* validate pointer */
4531 if (flags & SV_SMAGIC)
4536 =for apidoc sv_catsv
4538 Concatenates the string from SV C<ssv> onto the end of the string in
4539 SV C<dsv>. Modifies C<dsv> but not C<ssv>. Handles 'get' magic, but
4540 not 'set' magic. See C<sv_catsv_mg>.
4542 =for apidoc sv_catsv_flags
4544 Concatenates the string from SV C<ssv> onto the end of the string in
4545 SV C<dsv>. Modifies C<dsv> but not C<ssv>. If C<flags> has C<SV_GMAGIC>
4546 bit set, will C<mg_get> on the SVs if appropriate, else not. C<sv_catsv>
4547 and C<sv_catsv_nomg> are implemented in terms of this function.
4552 Perl_sv_catsv_flags(pTHX_ SV *const dsv, register SV *const ssv, const I32 flags)
4556 PERL_ARGS_ASSERT_SV_CATSV_FLAGS;
4560 const char *spv = SvPV_const(ssv, slen);
4562 /* sutf8 and dutf8 were type bool, but under USE_ITHREADS,
4563 gcc version 2.95.2 20000220 (Debian GNU/Linux) for
4564 Linux xxx 2.2.17 on sparc64 with gcc -O2, we erroneously
4565 get dutf8 = 0x20000000, (i.e. SVf_UTF8) even though
4566 dsv->sv_flags doesn't have that bit set.
4567 Andy Dougherty 12 Oct 2001
4569 const I32 sutf8 = DO_UTF8(ssv);
4572 if (SvGMAGICAL(dsv) && (flags & SV_GMAGIC))
4574 dutf8 = DO_UTF8(dsv);
4576 if (dutf8 != sutf8) {
4578 /* Not modifying source SV, so taking a temporary copy. */
4579 SV* const csv = newSVpvn_flags(spv, slen, SVs_TEMP);
4581 sv_utf8_upgrade(csv);
4582 spv = SvPV_const(csv, slen);
4585 sv_utf8_upgrade_nomg(dsv);
4587 sv_catpvn_nomg(dsv, spv, slen);
4590 if (flags & SV_SMAGIC)
4595 =for apidoc sv_catpv
4597 Concatenates the string onto the end of the string which is in the SV.
4598 If the SV has the UTF-8 status set, then the bytes appended should be
4599 valid UTF-8. Handles 'get' magic, but not 'set' magic. See C<sv_catpv_mg>.
4604 Perl_sv_catpv(pTHX_ register SV *const sv, register const char *ptr)
4607 register STRLEN len;
4611 PERL_ARGS_ASSERT_SV_CATPV;
4615 junk = SvPV_force(sv, tlen);
4617 SvGROW(sv, tlen + len + 1);
4619 ptr = SvPVX_const(sv);
4620 Move(ptr,SvPVX(sv)+tlen,len+1,char);
4621 SvCUR_set(sv, SvCUR(sv) + len);
4622 (void)SvPOK_only_UTF8(sv); /* validate pointer */
4627 =for apidoc sv_catpv_mg
4629 Like C<sv_catpv>, but also handles 'set' magic.
4635 Perl_sv_catpv_mg(pTHX_ register SV *const sv, register const char *const ptr)
4637 PERL_ARGS_ASSERT_SV_CATPV_MG;
4646 Creates a new SV. A non-zero C<len> parameter indicates the number of
4647 bytes of preallocated string space the SV should have. An extra byte for a
4648 trailing NUL is also reserved. (SvPOK is not set for the SV even if string
4649 space is allocated.) The reference count for the new SV is set to 1.
4651 In 5.9.3, newSV() replaces the older NEWSV() API, and drops the first
4652 parameter, I<x>, a debug aid which allowed callers to identify themselves.
4653 This aid has been superseded by a new build option, PERL_MEM_LOG (see
4654 L<perlhack/PERL_MEM_LOG>). The older API is still there for use in XS
4655 modules supporting older perls.
4661 Perl_newSV(pTHX_ const STRLEN len)
4668 sv_upgrade(sv, SVt_PV);
4669 SvGROW(sv, len + 1);
4674 =for apidoc sv_magicext
4676 Adds magic to an SV, upgrading it if necessary. Applies the
4677 supplied vtable and returns a pointer to the magic added.
4679 Note that C<sv_magicext> will allow things that C<sv_magic> will not.
4680 In particular, you can add magic to SvREADONLY SVs, and add more than
4681 one instance of the same 'how'.
4683 If C<namlen> is greater than zero then a C<savepvn> I<copy> of C<name> is
4684 stored, if C<namlen> is zero then C<name> is stored as-is and - as another
4685 special case - if C<(name && namlen == HEf_SVKEY)> then C<name> is assumed
4686 to contain an C<SV*> and is stored as-is with its REFCNT incremented.
4688 (This is now used as a subroutine by C<sv_magic>.)
4693 Perl_sv_magicext(pTHX_ SV *const sv, SV *const obj, const int how,
4694 const MGVTBL *const vtable, const char *const name, const I32 namlen)
4699 PERL_ARGS_ASSERT_SV_MAGICEXT;
4701 SvUPGRADE(sv, SVt_PVMG);
4702 Newxz(mg, 1, MAGIC);
4703 mg->mg_moremagic = SvMAGIC(sv);
4704 SvMAGIC_set(sv, mg);
4706 /* Sometimes a magic contains a reference loop, where the sv and
4707 object refer to each other. To prevent a reference loop that
4708 would prevent such objects being freed, we look for such loops
4709 and if we find one we avoid incrementing the object refcount.
4711 Note we cannot do this to avoid self-tie loops as intervening RV must
4712 have its REFCNT incremented to keep it in existence.
4715 if (!obj || obj == sv ||
4716 how == PERL_MAGIC_arylen ||
4717 how == PERL_MAGIC_symtab ||
4718 (SvTYPE(obj) == SVt_PVGV &&
4719 (GvSV(obj) == sv || GvHV(obj) == (const HV *)sv
4720 || GvAV(obj) == (const AV *)sv || GvCV(obj) == (const CV *)sv
4721 || GvIOp(obj) == (const IO *)sv || GvFORM(obj) == (const CV *)sv)))
4726 mg->mg_obj = SvREFCNT_inc_simple(obj);
4727 mg->mg_flags |= MGf_REFCOUNTED;
4730 /* Normal self-ties simply pass a null object, and instead of
4731 using mg_obj directly, use the SvTIED_obj macro to produce a
4732 new RV as needed. For glob "self-ties", we are tieing the PVIO
4733 with an RV obj pointing to the glob containing the PVIO. In
4734 this case, to avoid a reference loop, we need to weaken the
4738 if (how == PERL_MAGIC_tiedscalar && SvTYPE(sv) == SVt_PVIO &&
4739 obj && SvROK(obj) && GvIO(SvRV(obj)) == (IO*)sv)