3 * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
4 * 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 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;
176 #ifdef DEBUG_LEAKING_SCALARS
177 # define FREE_SV_DEBUG_FILE(sv) Safefree((sv)->sv_debug_file)
179 # define FREE_SV_DEBUG_FILE(sv)
183 # define SvARENA_CHAIN(sv) ((sv)->sv_u.svu_rv)
184 /* Whilst I'd love to do this, it seems that things like to check on
186 # define POSION_SV_HEAD(sv) PoisonNew(sv, 1, struct STRUCT_SV)
188 # define POSION_SV_HEAD(sv) PoisonNew(&SvANY(sv), 1, void *), \
189 PoisonNew(&SvREFCNT(sv), 1, U32)
191 # define SvARENA_CHAIN(sv) SvANY(sv)
192 # define POSION_SV_HEAD(sv)
195 #define plant_SV(p) \
197 FREE_SV_DEBUG_FILE(p); \
199 SvARENA_CHAIN(p) = (void *)PL_sv_root; \
200 SvFLAGS(p) = SVTYPEMASK; \
205 #define uproot_SV(p) \
208 PL_sv_root = (SV*)SvARENA_CHAIN(p); \
213 /* make some more SVs by adding another arena */
222 sv_add_arena(PL_nice_chunk, PL_nice_chunk_size, 0);
223 PL_nice_chunk = NULL;
224 PL_nice_chunk_size = 0;
227 char *chunk; /* must use New here to match call to */
228 Newx(chunk,PERL_ARENA_SIZE,char); /* Safefree() in sv_free_arenas() */
229 sv_add_arena(chunk, PERL_ARENA_SIZE, 0);
235 /* new_SV(): return a new, empty SV head */
237 #ifdef DEBUG_LEAKING_SCALARS
238 /* provide a real function for a debugger to play with */
247 sv = S_more_sv(aTHX);
251 sv->sv_debug_optype = PL_op ? PL_op->op_type : 0;
252 sv->sv_debug_line = (U16) (PL_parser
253 ? PL_parser->copline == NOLINE
259 sv->sv_debug_inpad = 0;
260 sv->sv_debug_cloned = 0;
261 sv->sv_debug_file = PL_curcop ? savepv(CopFILE(PL_curcop)): NULL;
265 # define new_SV(p) (p)=S_new_SV(aTHX)
273 (p) = S_more_sv(aTHX); \
281 /* del_SV(): return an empty SV head to the free list */
294 S_del_sv(pTHX_ SV *p)
298 PERL_ARGS_ASSERT_DEL_SV;
303 for (sva = PL_sv_arenaroot; sva; sva = (SV *) SvANY(sva)) {
304 const SV * const sv = sva + 1;
305 const SV * const svend = &sva[SvREFCNT(sva)];
306 if (p >= sv && p < svend) {
312 if (ckWARN_d(WARN_INTERNAL))
313 Perl_warner(aTHX_ packWARN(WARN_INTERNAL),
314 "Attempt to free non-arena SV: 0x%"UVxf
315 pTHX__FORMAT, PTR2UV(p) pTHX__VALUE);
322 #else /* ! DEBUGGING */
324 #define del_SV(p) plant_SV(p)
326 #endif /* DEBUGGING */
330 =head1 SV Manipulation Functions
332 =for apidoc sv_add_arena
334 Given a chunk of memory, link it to the head of the list of arenas,
335 and split it into a list of free SVs.
341 Perl_sv_add_arena(pTHX_ char *const ptr, const U32 size, const U32 flags)
344 SV* const sva = (SV*)ptr;
348 PERL_ARGS_ASSERT_SV_ADD_ARENA;
350 /* The first SV in an arena isn't an SV. */
351 SvANY(sva) = (void *) PL_sv_arenaroot; /* ptr to next arena */
352 SvREFCNT(sva) = size / sizeof(SV); /* number of SV slots */
353 SvFLAGS(sva) = flags; /* FAKE if not to be freed */
355 PL_sv_arenaroot = sva;
356 PL_sv_root = sva + 1;
358 svend = &sva[SvREFCNT(sva) - 1];
361 SvARENA_CHAIN(sv) = (void *)(SV*)(sv + 1);
365 /* Must always set typemask because it's always checked in on cleanup
366 when the arenas are walked looking for objects. */
367 SvFLAGS(sv) = SVTYPEMASK;
370 SvARENA_CHAIN(sv) = 0;
374 SvFLAGS(sv) = SVTYPEMASK;
377 /* visit(): call the named function for each non-free SV in the arenas
378 * whose flags field matches the flags/mask args. */
381 S_visit(pTHX_ SVFUNC_t f, const U32 flags, const U32 mask)
387 PERL_ARGS_ASSERT_VISIT;
389 for (sva = PL_sv_arenaroot; sva; sva = (SV*)SvANY(sva)) {
390 register const SV * const svend = &sva[SvREFCNT(sva)];
392 for (sv = sva + 1; sv < svend; ++sv) {
393 if (SvTYPE(sv) != SVTYPEMASK
394 && (sv->sv_flags & mask) == flags
407 /* called by sv_report_used() for each live SV */
410 do_report_used(pTHX_ SV *sv)
412 if (SvTYPE(sv) != SVTYPEMASK) {
413 PerlIO_printf(Perl_debug_log, "****\n");
420 =for apidoc sv_report_used
422 Dump the contents of all SVs not yet freed. (Debugging aid).
428 Perl_sv_report_used(pTHX)
431 visit(do_report_used, 0, 0);
437 /* called by sv_clean_objs() for each live SV */
440 do_clean_objs(pTHX_ SV *const ref)
445 SV * const target = SvRV(ref);
446 if (SvOBJECT(target)) {
447 DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning object ref:\n "), sv_dump(ref)));
448 if (SvWEAKREF(ref)) {
449 sv_del_backref(target, ref);
455 SvREFCNT_dec(target);
460 /* XXX Might want to check arrays, etc. */
463 /* called by sv_clean_objs() for each live SV */
465 #ifndef DISABLE_DESTRUCTOR_KLUDGE
467 do_clean_named_objs(pTHX_ SV *const sv)
470 assert(SvTYPE(sv) == SVt_PVGV);
471 assert(isGV_with_GP(sv));
474 #ifdef PERL_DONT_CREATE_GVSV
477 SvOBJECT(GvSV(sv))) ||
478 (GvAV(sv) && SvOBJECT(GvAV(sv))) ||
479 (GvHV(sv) && SvOBJECT(GvHV(sv))) ||
480 /* In certain rare cases GvIOp(sv) can be NULL, which would make SvOBJECT(GvIO(sv)) dereference NULL. */
481 (GvIO(sv) ? (SvFLAGS(GvIOp(sv)) & SVs_OBJECT) : 0) ||
482 (GvCV(sv) && SvOBJECT(GvCV(sv))) )
484 DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning named glob object:\n "), sv_dump(sv)));
485 SvFLAGS(sv) |= SVf_BREAK;
493 =for apidoc sv_clean_objs
495 Attempt to destroy all objects not yet freed
501 Perl_sv_clean_objs(pTHX)
504 PL_in_clean_objs = TRUE;
505 visit(do_clean_objs, SVf_ROK, SVf_ROK);
506 #ifndef DISABLE_DESTRUCTOR_KLUDGE
507 /* some barnacles may yet remain, clinging to typeglobs */
508 visit(do_clean_named_objs, SVt_PVGV|SVpgv_GP, SVTYPEMASK|SVp_POK|SVpgv_GP);
510 PL_in_clean_objs = FALSE;
513 /* called by sv_clean_all() for each live SV */
516 do_clean_all(pTHX_ SV *const sv)
519 DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning loops: SV at 0x%"UVxf"\n", PTR2UV(sv)) ));
520 SvFLAGS(sv) |= SVf_BREAK;
525 =for apidoc sv_clean_all
527 Decrement the refcnt of each remaining SV, possibly triggering a
528 cleanup. This function may have to be called multiple times to free
529 SVs which are in complex self-referential hierarchies.
535 Perl_sv_clean_all(pTHX)
539 PL_in_clean_all = TRUE;
540 cleaned = visit(do_clean_all, 0,0);
541 PL_in_clean_all = FALSE;
546 ARENASETS: a meta-arena implementation which separates arena-info
547 into struct arena_set, which contains an array of struct
548 arena_descs, each holding info for a single arena. By separating
549 the meta-info from the arena, we recover the 1st slot, formerly
550 borrowed for list management. The arena_set is about the size of an
551 arena, avoiding the needless malloc overhead of a naive linked-list.
553 The cost is 1 arena-set malloc per ~320 arena-mallocs, + the unused
554 memory in the last arena-set (1/2 on average). In trade, we get
555 back the 1st slot in each arena (ie 1.7% of a CV-arena, less for
556 smaller types). The recovery of the wasted space allows use of
557 small arenas for large, rare body types, by changing array* fields
558 in body_details_by_type[] below.
561 char *arena; /* the raw storage, allocated aligned */
562 size_t size; /* its size ~4k typ */
563 U32 misc; /* type, and in future other things. */
568 /* Get the maximum number of elements in set[] such that struct arena_set
569 will fit within PERL_ARENA_SIZE, which is probably just under 4K, and
570 therefore likely to be 1 aligned memory page. */
572 #define ARENAS_PER_SET ((PERL_ARENA_SIZE - sizeof(struct arena_set*) \
573 - 2 * sizeof(int)) / sizeof (struct arena_desc))
576 struct arena_set* next;
577 unsigned int set_size; /* ie ARENAS_PER_SET */
578 unsigned int curr; /* index of next available arena-desc */
579 struct arena_desc set[ARENAS_PER_SET];
583 =for apidoc sv_free_arenas
585 Deallocate the memory used by all arenas. Note that all the individual SV
586 heads and bodies within the arenas must already have been freed.
591 Perl_sv_free_arenas(pTHX)
598 /* Free arenas here, but be careful about fake ones. (We assume
599 contiguity of the fake ones with the corresponding real ones.) */
601 for (sva = PL_sv_arenaroot; sva; sva = svanext) {
602 svanext = (SV*) SvANY(sva);
603 while (svanext && SvFAKE(svanext))
604 svanext = (SV*) SvANY(svanext);
611 struct arena_set *aroot = (struct arena_set*) PL_body_arenas;
614 struct arena_set *current = aroot;
617 assert(aroot->set[i].arena);
618 Safefree(aroot->set[i].arena);
626 i = PERL_ARENA_ROOTS_SIZE;
628 PL_body_roots[i] = 0;
630 Safefree(PL_nice_chunk);
631 PL_nice_chunk = NULL;
632 PL_nice_chunk_size = 0;
638 Here are mid-level routines that manage the allocation of bodies out
639 of the various arenas. There are 5 kinds of arenas:
641 1. SV-head arenas, which are discussed and handled above
642 2. regular body arenas
643 3. arenas for reduced-size bodies
645 5. pte arenas (thread related)
647 Arena types 2 & 3 are chained by body-type off an array of
648 arena-root pointers, which is indexed by svtype. Some of the
649 larger/less used body types are malloced singly, since a large
650 unused block of them is wasteful. Also, several svtypes dont have
651 bodies; the data fits into the sv-head itself. The arena-root
652 pointer thus has a few unused root-pointers (which may be hijacked
653 later for arena types 4,5)
655 3 differs from 2 as an optimization; some body types have several
656 unused fields in the front of the structure (which are kept in-place
657 for consistency). These bodies can be allocated in smaller chunks,
658 because the leading fields arent accessed. Pointers to such bodies
659 are decremented to point at the unused 'ghost' memory, knowing that
660 the pointers are used with offsets to the real memory.
662 HE, HEK arenas are managed separately, with separate code, but may
663 be merge-able later..
665 PTE arenas are not sv-bodies, but they share these mid-level
666 mechanics, so are considered here. The new mid-level mechanics rely
667 on the sv_type of the body being allocated, so we just reserve one
668 of the unused body-slots for PTEs, then use it in those (2) PTE
669 contexts below (line ~10k)
672 /* get_arena(size): this creates custom-sized arenas
673 TBD: export properly for hv.c: S_more_he().
676 Perl_get_arena(pTHX_ const size_t arena_size, const U32 misc)
679 struct arena_desc* adesc;
680 struct arena_set *aroot = (struct arena_set*) PL_body_arenas;
683 /* shouldnt need this
684 if (!arena_size) arena_size = PERL_ARENA_SIZE;
687 /* may need new arena-set to hold new arena */
688 if (!aroot || aroot->curr >= aroot->set_size) {
689 struct arena_set *newroot;
690 Newxz(newroot, 1, struct arena_set);
691 newroot->set_size = ARENAS_PER_SET;
692 newroot->next = aroot;
694 PL_body_arenas = (void *) newroot;
695 DEBUG_m(PerlIO_printf(Perl_debug_log, "new arenaset %p\n", (void*)aroot));
698 /* ok, now have arena-set with at least 1 empty/available arena-desc */
699 curr = aroot->curr++;
700 adesc = &(aroot->set[curr]);
701 assert(!adesc->arena);
703 Newx(adesc->arena, arena_size, char);
704 adesc->size = arena_size;
706 DEBUG_m(PerlIO_printf(Perl_debug_log, "arena %d added: %p size %"UVuf"\n",
707 curr, (void*)adesc->arena, (UV)arena_size));
713 /* return a thing to the free list */
715 #define del_body(thing, root) \
717 void ** const thing_copy = (void **)thing;\
718 *thing_copy = *root; \
719 *root = (void*)thing_copy; \
724 =head1 SV-Body Allocation
726 Allocation of SV-bodies is similar to SV-heads, differing as follows;
727 the allocation mechanism is used for many body types, so is somewhat
728 more complicated, it uses arena-sets, and has no need for still-live
731 At the outermost level, (new|del)_X*V macros return bodies of the
732 appropriate type. These macros call either (new|del)_body_type or
733 (new|del)_body_allocated macro pairs, depending on specifics of the
734 type. Most body types use the former pair, the latter pair is used to
735 allocate body types with "ghost fields".
737 "ghost fields" are fields that are unused in certain types, and
738 consequently dont need to actually exist. They are declared because
739 they're part of a "base type", which allows use of functions as
740 methods. The simplest examples are AVs and HVs, 2 aggregate types
741 which don't use the fields which support SCALAR semantics.
743 For these types, the arenas are carved up into *_allocated size
744 chunks, we thus avoid wasted memory for those unaccessed members.
745 When bodies are allocated, we adjust the pointer back in memory by the
746 size of the bit not allocated, so it's as if we allocated the full
747 structure. (But things will all go boom if you write to the part that
748 is "not there", because you'll be overwriting the last members of the
749 preceding structure in memory.)
751 We calculate the correction using the STRUCT_OFFSET macro. For
752 example, if xpv_allocated is the same structure as XPV then the two
753 OFFSETs sum to zero, and the pointer is unchanged. If the allocated
754 structure is smaller (no initial NV actually allocated) then the net
755 effect is to subtract the size of the NV from the pointer, to return a
756 new pointer as if an initial NV were actually allocated.
758 This is the same trick as was used for NV and IV bodies. Ironically it
759 doesn't need to be used for NV bodies any more, because NV is now at
760 the start of the structure. IV bodies don't need it either, because
761 they are no longer allocated.
763 In turn, the new_body_* allocators call S_new_body(), which invokes
764 new_body_inline macro, which takes a lock, and takes a body off the
765 linked list at PL_body_roots[sv_type], calling S_more_bodies() if
766 necessary to refresh an empty list. Then the lock is released, and
767 the body is returned.
769 S_more_bodies calls get_arena(), and carves it up into an array of N
770 bodies, which it strings into a linked list. It looks up arena-size
771 and body-size from the body_details table described below, thus
772 supporting the multiple body-types.
774 If PURIFY is defined, or PERL_ARENA_SIZE=0, arenas are not used, and
775 the (new|del)_X*V macros are mapped directly to malloc/free.
781 For each sv-type, struct body_details bodies_by_type[] carries
782 parameters which control these aspects of SV handling:
784 Arena_size determines whether arenas are used for this body type, and if
785 so, how big they are. PURIFY or PERL_ARENA_SIZE=0 set this field to
786 zero, forcing individual mallocs and frees.
788 Body_size determines how big a body is, and therefore how many fit into
789 each arena. Offset carries the body-pointer adjustment needed for
790 *_allocated body types, and is used in *_allocated macros.
792 But its main purpose is to parameterize info needed in
793 Perl_sv_upgrade(). The info here dramatically simplifies the function
794 vs the implementation in 5.8.7, making it table-driven. All fields
795 are used for this, except for arena_size.
797 For the sv-types that have no bodies, arenas are not used, so those
798 PL_body_roots[sv_type] are unused, and can be overloaded. In
799 something of a special case, SVt_NULL is borrowed for HE arenas;
800 PL_body_roots[HE_SVSLOT=SVt_NULL] is filled by S_more_he, but the
801 bodies_by_type[SVt_NULL] slot is not used, as the table is not
804 PTEs also use arenas, but are never seen in Perl_sv_upgrade. Nonetheless,
805 they get their own slot in bodies_by_type[PTE_SVSLOT =SVt_IV], so they can
806 just use the same allocation semantics. At first, PTEs were also
807 overloaded to a non-body sv-type, but this yielded hard-to-find malloc
808 bugs, so was simplified by claiming a new slot. This choice has no
809 consequence at this time.
813 struct body_details {
814 U8 body_size; /* Size to allocate */
815 U8 copy; /* Size of structure to copy (may be shorter) */
817 unsigned int type : 4; /* We have space for a sanity check. */
818 unsigned int cant_upgrade : 1; /* Cannot upgrade this type */
819 unsigned int zero_nv : 1; /* zero the NV when upgrading from this */
820 unsigned int arena : 1; /* Allocated from an arena */
821 size_t arena_size; /* Size of arena to allocate */
829 /* With -DPURFIY we allocate everything directly, and don't use arenas.
830 This seems a rather elegant way to simplify some of the code below. */
831 #define HASARENA FALSE
833 #define HASARENA TRUE
835 #define NOARENA FALSE
837 /* Size the arenas to exactly fit a given number of bodies. A count
838 of 0 fits the max number bodies into a PERL_ARENA_SIZE.block,
839 simplifying the default. If count > 0, the arena is sized to fit
840 only that many bodies, allowing arenas to be used for large, rare
841 bodies (XPVFM, XPVIO) without undue waste. The arena size is
842 limited by PERL_ARENA_SIZE, so we can safely oversize the
845 #define FIT_ARENA0(body_size) \
846 ((size_t)(PERL_ARENA_SIZE / body_size) * body_size)
847 #define FIT_ARENAn(count,body_size) \
848 ( count * body_size <= PERL_ARENA_SIZE) \
849 ? count * body_size \
850 : FIT_ARENA0 (body_size)
851 #define FIT_ARENA(count,body_size) \
853 ? FIT_ARENAn (count, body_size) \
854 : FIT_ARENA0 (body_size)
856 /* A macro to work out the offset needed to subtract from a pointer to (say)
863 to make its members accessible via a pointer to (say)
873 #define relative_STRUCT_OFFSET(longer, shorter, member) \
874 (STRUCT_OFFSET(shorter, member) - STRUCT_OFFSET(longer, member))
876 /* Calculate the length to copy. Specifically work out the length less any
877 final padding the compiler needed to add. See the comment in sv_upgrade
878 for why copying the padding proved to be a bug. */
880 #define copy_length(type, last_member) \
881 STRUCT_OFFSET(type, last_member) \
882 + sizeof (((type*)SvANY((SV*)0))->last_member)
884 static const struct body_details bodies_by_type[] = {
885 { sizeof(HE), 0, 0, SVt_NULL,
886 FALSE, NONV, NOARENA, FIT_ARENA(0, sizeof(HE)) },
888 /* The bind placeholder pretends to be an RV for now.
889 Also it's marked as "can't upgrade" to stop anyone using it before it's
891 { 0, 0, 0, SVt_BIND, TRUE, NONV, NOARENA, 0 },
893 /* IVs are in the head, so the allocation size is 0.
894 However, the slot is overloaded for PTEs. */
895 { sizeof(struct ptr_tbl_ent), /* This is used for PTEs. */
896 sizeof(IV), /* This is used to copy out the IV body. */
897 STRUCT_OFFSET(XPVIV, xiv_iv), SVt_IV, FALSE, NONV,
898 NOARENA /* IVS don't need an arena */,
899 /* But PTEs need to know the size of their arena */
900 FIT_ARENA(0, sizeof(struct ptr_tbl_ent))
903 /* 8 bytes on most ILP32 with IEEE doubles */
904 { sizeof(NV), sizeof(NV), 0, SVt_NV, FALSE, HADNV, HASARENA,
905 FIT_ARENA(0, sizeof(NV)) },
907 /* 8 bytes on most ILP32 with IEEE doubles */
908 { sizeof(xpv_allocated),
909 copy_length(XPV, xpv_len)
910 - relative_STRUCT_OFFSET(xpv_allocated, XPV, xpv_cur),
911 + relative_STRUCT_OFFSET(xpv_allocated, XPV, xpv_cur),
912 SVt_PV, FALSE, NONV, HASARENA, FIT_ARENA(0, sizeof(xpv_allocated)) },
915 { sizeof(xpviv_allocated),
916 copy_length(XPVIV, xiv_u)
917 - relative_STRUCT_OFFSET(xpviv_allocated, XPVIV, xpv_cur),
918 + relative_STRUCT_OFFSET(xpviv_allocated, XPVIV, xpv_cur),
919 SVt_PVIV, FALSE, NONV, HASARENA, FIT_ARENA(0, sizeof(xpviv_allocated)) },
922 { sizeof(XPVNV), copy_length(XPVNV, xiv_u), 0, SVt_PVNV, FALSE, HADNV,
923 HASARENA, FIT_ARENA(0, sizeof(XPVNV)) },
926 { sizeof(XPVMG), copy_length(XPVMG, xmg_stash), 0, SVt_PVMG, FALSE, HADNV,
927 HASARENA, FIT_ARENA(0, sizeof(XPVMG)) },
930 { sizeof(struct regexp_allocated), sizeof(struct regexp_allocated),
931 + relative_STRUCT_OFFSET(struct regexp_allocated, regexp, xpv_cur),
932 SVt_REGEXP, FALSE, NONV, HASARENA,
933 FIT_ARENA(0, sizeof(struct regexp_allocated))
937 { sizeof(XPVGV), sizeof(XPVGV), 0, SVt_PVGV, TRUE, HADNV,
938 HASARENA, FIT_ARENA(0, sizeof(XPVGV)) },
941 { sizeof(XPVLV), sizeof(XPVLV), 0, SVt_PVLV, TRUE, HADNV,
942 HASARENA, FIT_ARENA(0, sizeof(XPVLV)) },
944 { sizeof(xpvav_allocated),
945 copy_length(XPVAV, xmg_stash)
946 - relative_STRUCT_OFFSET(xpvav_allocated, XPVAV, xav_fill),
947 + relative_STRUCT_OFFSET(xpvav_allocated, XPVAV, xav_fill),
948 SVt_PVAV, TRUE, NONV, HASARENA, FIT_ARENA(0, sizeof(xpvav_allocated)) },
950 { sizeof(xpvhv_allocated),
951 copy_length(XPVHV, xmg_stash)
952 - relative_STRUCT_OFFSET(xpvhv_allocated, XPVHV, xhv_fill),
953 + relative_STRUCT_OFFSET(xpvhv_allocated, XPVHV, xhv_fill),
954 SVt_PVHV, TRUE, NONV, HASARENA, FIT_ARENA(0, sizeof(xpvhv_allocated)) },
957 { sizeof(xpvcv_allocated), sizeof(xpvcv_allocated),
958 + relative_STRUCT_OFFSET(xpvcv_allocated, XPVCV, xpv_cur),
959 SVt_PVCV, TRUE, NONV, HASARENA, FIT_ARENA(0, sizeof(xpvcv_allocated)) },
961 { sizeof(xpvfm_allocated), sizeof(xpvfm_allocated),
962 + relative_STRUCT_OFFSET(xpvfm_allocated, XPVFM, xpv_cur),
963 SVt_PVFM, TRUE, NONV, NOARENA, FIT_ARENA(20, sizeof(xpvfm_allocated)) },
965 /* XPVIO is 84 bytes, fits 48x */
966 { sizeof(xpvio_allocated), sizeof(xpvio_allocated),
967 + relative_STRUCT_OFFSET(xpvio_allocated, XPVIO, xpv_cur),
968 SVt_PVIO, TRUE, NONV, HASARENA, FIT_ARENA(24, sizeof(xpvio_allocated)) },
971 #define new_body_type(sv_type) \
972 (void *)((char *)S_new_body(aTHX_ sv_type))
974 #define del_body_type(p, sv_type) \
975 del_body(p, &PL_body_roots[sv_type])
978 #define new_body_allocated(sv_type) \
979 (void *)((char *)S_new_body(aTHX_ sv_type) \
980 - bodies_by_type[sv_type].offset)
982 #define del_body_allocated(p, sv_type) \
983 del_body(p + bodies_by_type[sv_type].offset, &PL_body_roots[sv_type])
986 #define my_safemalloc(s) (void*)safemalloc(s)
987 #define my_safecalloc(s) (void*)safecalloc(s, 1)
988 #define my_safefree(p) safefree((char*)p)
992 #define new_XNV() my_safemalloc(sizeof(XPVNV))
993 #define del_XNV(p) my_safefree(p)
995 #define new_XPVNV() my_safemalloc(sizeof(XPVNV))
996 #define del_XPVNV(p) my_safefree(p)
998 #define new_XPVAV() my_safemalloc(sizeof(XPVAV))
999 #define del_XPVAV(p) my_safefree(p)
1001 #define new_XPVHV() my_safemalloc(sizeof(XPVHV))
1002 #define del_XPVHV(p) my_safefree(p)
1004 #define new_XPVMG() my_safemalloc(sizeof(XPVMG))
1005 #define del_XPVMG(p) my_safefree(p)
1007 #define new_XPVGV() my_safemalloc(sizeof(XPVGV))
1008 #define del_XPVGV(p) my_safefree(p)
1012 #define new_XNV() new_body_type(SVt_NV)
1013 #define del_XNV(p) del_body_type(p, SVt_NV)
1015 #define new_XPVNV() new_body_type(SVt_PVNV)
1016 #define del_XPVNV(p) del_body_type(p, SVt_PVNV)
1018 #define new_XPVAV() new_body_allocated(SVt_PVAV)
1019 #define del_XPVAV(p) del_body_allocated(p, SVt_PVAV)
1021 #define new_XPVHV() new_body_allocated(SVt_PVHV)
1022 #define del_XPVHV(p) del_body_allocated(p, SVt_PVHV)
1024 #define new_XPVMG() new_body_type(SVt_PVMG)
1025 #define del_XPVMG(p) del_body_type(p, SVt_PVMG)
1027 #define new_XPVGV() new_body_type(SVt_PVGV)
1028 #define del_XPVGV(p) del_body_type(p, SVt_PVGV)
1032 /* no arena for you! */
1034 #define new_NOARENA(details) \
1035 my_safemalloc((details)->body_size + (details)->offset)
1036 #define new_NOARENAZ(details) \
1037 my_safecalloc((details)->body_size + (details)->offset)
1040 S_more_bodies (pTHX_ const svtype sv_type)
1043 void ** const root = &PL_body_roots[sv_type];
1044 const struct body_details * const bdp = &bodies_by_type[sv_type];
1045 const size_t body_size = bdp->body_size;
1048 #if defined(DEBUGGING) && !defined(PERL_GLOBAL_STRUCT_PRIVATE)
1049 static bool done_sanity_check;
1051 /* PERL_GLOBAL_STRUCT_PRIVATE cannot coexist with global
1052 * variables like done_sanity_check. */
1053 if (!done_sanity_check) {
1054 unsigned int i = SVt_LAST;
1056 done_sanity_check = TRUE;
1059 assert (bodies_by_type[i].type == i);
1063 assert(bdp->arena_size);
1065 start = (char*) Perl_get_arena(aTHX_ bdp->arena_size, sv_type);
1067 end = start + bdp->arena_size - body_size;
1069 /* computed count doesnt reflect the 1st slot reservation */
1070 DEBUG_m(PerlIO_printf(Perl_debug_log,
1071 "arena %p end %p arena-size %d type %d size %d ct %d\n",
1072 (void*)start, (void*)end,
1073 (int)bdp->arena_size, sv_type, (int)body_size,
1074 (int)bdp->arena_size / (int)body_size));
1076 *root = (void *)start;
1078 while (start < end) {
1079 char * const next = start + body_size;
1080 *(void**) start = (void *)next;
1083 *(void **)start = 0;
1088 /* grab a new thing from the free list, allocating more if necessary.
1089 The inline version is used for speed in hot routines, and the
1090 function using it serves the rest (unless PURIFY).
1092 #define new_body_inline(xpv, sv_type) \
1094 void ** const r3wt = &PL_body_roots[sv_type]; \
1095 xpv = (PTR_TBL_ENT_t*) (*((void **)(r3wt)) \
1096 ? *((void **)(r3wt)) : more_bodies(sv_type)); \
1097 *(r3wt) = *(void**)(xpv); \
1103 S_new_body(pTHX_ const svtype sv_type)
1107 new_body_inline(xpv, sv_type);
1113 static const struct body_details fake_rv =
1114 { 0, 0, 0, SVt_IV, FALSE, NONV, NOARENA, 0 };
1117 =for apidoc sv_upgrade
1119 Upgrade an SV to a more complex form. Generally adds a new body type to the
1120 SV, then copies across as much information as possible from the old body.
1121 You generally want to use the C<SvUPGRADE> macro wrapper. See also C<svtype>.
1127 Perl_sv_upgrade(pTHX_ register SV *const sv, svtype new_type)
1132 const svtype old_type = SvTYPE(sv);
1133 const struct body_details *new_type_details;
1134 const struct body_details *old_type_details
1135 = bodies_by_type + old_type;
1136 SV *referant = NULL;
1138 PERL_ARGS_ASSERT_SV_UPGRADE;
1140 if (new_type != SVt_PV && SvIsCOW(sv)) {
1141 sv_force_normal_flags(sv, 0);
1144 if (old_type == new_type)
1147 old_body = SvANY(sv);
1149 /* Copying structures onto other structures that have been neatly zeroed
1150 has a subtle gotcha. Consider XPVMG
1152 +------+------+------+------+------+-------+-------+
1153 | NV | CUR | LEN | IV | MAGIC | STASH |
1154 +------+------+------+------+------+-------+-------+
1155 0 4 8 12 16 20 24 28
1157 where NVs are aligned to 8 bytes, so that sizeof that structure is
1158 actually 32 bytes long, with 4 bytes of padding at the end:
1160 +------+------+------+------+------+-------+-------+------+
1161 | NV | CUR | LEN | IV | MAGIC | STASH | ??? |
1162 +------+------+------+------+------+-------+-------+------+
1163 0 4 8 12 16 20 24 28 32
1165 so what happens if you allocate memory for this structure:
1167 +------+------+------+------+------+-------+-------+------+------+...
1168 | NV | CUR | LEN | IV | MAGIC | STASH | GP | NAME |
1169 +------+------+------+------+------+-------+-------+------+------+...
1170 0 4 8 12 16 20 24 28 32 36
1172 zero it, then copy sizeof(XPVMG) bytes on top of it? Not quite what you
1173 expect, because you copy the area marked ??? onto GP. Now, ??? may have
1174 started out as zero once, but it's quite possible that it isn't. So now,
1175 rather than a nicely zeroed GP, you have it pointing somewhere random.
1178 (In fact, GP ends up pointing at a previous GP structure, because the
1179 principle cause of the padding in XPVMG getting garbage is a copy of
1180 sizeof(XPVMG) bytes from a XPVGV structure in sv_unglob. Right now
1181 this happens to be moot because XPVGV has been re-ordered, with GP
1182 no longer after STASH)
1184 So we are careful and work out the size of used parts of all the
1192 referant = SvRV(sv);
1193 old_type_details = &fake_rv;
1194 if (new_type == SVt_NV)
1195 new_type = SVt_PVNV;
1197 if (new_type < SVt_PVIV) {
1198 new_type = (new_type == SVt_NV)
1199 ? SVt_PVNV : SVt_PVIV;
1204 if (new_type < SVt_PVNV) {
1205 new_type = SVt_PVNV;
1209 assert(new_type > SVt_PV);
1210 assert(SVt_IV < SVt_PV);
1211 assert(SVt_NV < SVt_PV);
1218 /* Because the XPVMG of PL_mess_sv isn't allocated from the arena,
1219 there's no way that it can be safely upgraded, because perl.c
1220 expects to Safefree(SvANY(PL_mess_sv)) */
1221 assert(sv != PL_mess_sv);
1222 /* This flag bit is used to mean other things in other scalar types.
1223 Given that it only has meaning inside the pad, it shouldn't be set
1224 on anything that can get upgraded. */
1225 assert(!SvPAD_TYPED(sv));
1228 if (old_type_details->cant_upgrade)
1229 Perl_croak(aTHX_ "Can't upgrade %s (%" UVuf ") to %" UVuf,
1230 sv_reftype(sv, 0), (UV) old_type, (UV) new_type);
1233 if (old_type > new_type)
1234 Perl_croak(aTHX_ "sv_upgrade from type %d down to type %d",
1235 (int)old_type, (int)new_type);
1237 new_type_details = bodies_by_type + new_type;
1239 SvFLAGS(sv) &= ~SVTYPEMASK;
1240 SvFLAGS(sv) |= new_type;
1242 /* This can't happen, as SVt_NULL is <= all values of new_type, so one of
1243 the return statements above will have triggered. */
1244 assert (new_type != SVt_NULL);
1247 assert(old_type == SVt_NULL);
1248 SvANY(sv) = (XPVIV*)((char*)&(sv->sv_u.svu_iv) - STRUCT_OFFSET(XPVIV, xiv_iv));
1252 assert(old_type == SVt_NULL);
1253 SvANY(sv) = new_XNV();
1258 assert(new_type_details->body_size);
1261 assert(new_type_details->arena);
1262 assert(new_type_details->arena_size);
1263 /* This points to the start of the allocated area. */
1264 new_body_inline(new_body, new_type);
1265 Zero(new_body, new_type_details->body_size, char);
1266 new_body = ((char *)new_body) - new_type_details->offset;
1268 /* We always allocated the full length item with PURIFY. To do this
1269 we fake things so that arena is false for all 16 types.. */
1270 new_body = new_NOARENAZ(new_type_details);
1272 SvANY(sv) = new_body;
1273 if (new_type == SVt_PVAV) {
1277 if (old_type_details->body_size) {
1280 /* It will have been zeroed when the new body was allocated.
1281 Lets not write to it, in case it confuses a write-back
1287 #ifndef NODEFAULT_SHAREKEYS
1288 HvSHAREKEYS_on(sv); /* key-sharing on by default */
1290 HvMAX(sv) = 7; /* (start with 8 buckets) */
1291 if (old_type_details->body_size) {
1294 /* It will have been zeroed when the new body was allocated.
1295 Lets not write to it, in case it confuses a write-back
1300 /* SVt_NULL isn't the only thing upgraded to AV or HV.
1301 The target created by newSVrv also is, and it can have magic.
1302 However, it never has SvPVX set.
1304 if (old_type == SVt_IV) {
1306 } else if (old_type >= SVt_PV) {
1307 assert(SvPVX_const(sv) == 0);
1310 if (old_type >= SVt_PVMG) {
1311 SvMAGIC_set(sv, ((XPVMG*)old_body)->xmg_u.xmg_magic);
1312 SvSTASH_set(sv, ((XPVMG*)old_body)->xmg_stash);
1314 sv->sv_u.svu_array = NULL; /* or svu_hash */
1320 /* XXX Is this still needed? Was it ever needed? Surely as there is
1321 no route from NV to PVIV, NOK can never be true */
1322 assert(!SvNOKp(sv));
1334 assert(new_type_details->body_size);
1335 /* We always allocated the full length item with PURIFY. To do this
1336 we fake things so that arena is false for all 16 types.. */
1337 if(new_type_details->arena) {
1338 /* This points to the start of the allocated area. */
1339 new_body_inline(new_body, new_type);
1340 Zero(new_body, new_type_details->body_size, char);
1341 new_body = ((char *)new_body) - new_type_details->offset;
1343 new_body = new_NOARENAZ(new_type_details);
1345 SvANY(sv) = new_body;
1347 if (old_type_details->copy) {
1348 /* There is now the potential for an upgrade from something without
1349 an offset (PVNV or PVMG) to something with one (PVCV, PVFM) */
1350 int offset = old_type_details->offset;
1351 int length = old_type_details->copy;
1353 if (new_type_details->offset > old_type_details->offset) {
1354 const int difference
1355 = new_type_details->offset - old_type_details->offset;
1356 offset += difference;
1357 length -= difference;
1359 assert (length >= 0);
1361 Copy((char *)old_body + offset, (char *)new_body + offset, length,
1365 #ifndef NV_ZERO_IS_ALLBITS_ZERO
1366 /* If NV 0.0 is stores as all bits 0 then Zero() already creates a
1367 * correct 0.0 for us. Otherwise, if the old body didn't have an
1368 * NV slot, but the new one does, then we need to initialise the
1369 * freshly created NV slot with whatever the correct bit pattern is
1371 if (old_type_details->zero_nv && !new_type_details->zero_nv
1372 && !isGV_with_GP(sv))
1376 if (new_type == SVt_PVIO)
1377 IoPAGE_LEN(sv) = 60;
1378 if (old_type < SVt_PV) {
1379 /* referant will be NULL unless the old type was SVt_IV emulating
1381 sv->sv_u.svu_rv = referant;
1385 Perl_croak(aTHX_ "panic: sv_upgrade to unknown type %lu",
1386 (unsigned long)new_type);
1389 if (old_type_details->arena) {
1390 /* If there was an old body, then we need to free it.
1391 Note that there is an assumption that all bodies of types that
1392 can be upgraded came from arenas. Only the more complex non-
1393 upgradable types are allowed to be directly malloc()ed. */
1395 my_safefree(old_body);
1397 del_body((void*)((char*)old_body + old_type_details->offset),
1398 &PL_body_roots[old_type]);
1404 =for apidoc sv_backoff
1406 Remove any string offset. You should normally use the C<SvOOK_off> macro
1413 Perl_sv_backoff(pTHX_ register SV *const sv)
1416 const char * const s = SvPVX_const(sv);
1418 PERL_ARGS_ASSERT_SV_BACKOFF;
1419 PERL_UNUSED_CONTEXT;
1422 assert(SvTYPE(sv) != SVt_PVHV);
1423 assert(SvTYPE(sv) != SVt_PVAV);
1425 SvOOK_offset(sv, delta);
1427 SvLEN_set(sv, SvLEN(sv) + delta);
1428 SvPV_set(sv, SvPVX(sv) - delta);
1429 Move(s, SvPVX(sv), SvCUR(sv)+1, char);
1430 SvFLAGS(sv) &= ~SVf_OOK;
1437 Expands the character buffer in the SV. If necessary, uses C<sv_unref> and
1438 upgrades the SV to C<SVt_PV>. Returns a pointer to the character buffer.
1439 Use the C<SvGROW> wrapper instead.
1445 Perl_sv_grow(pTHX_ register SV *const sv, register STRLEN newlen)
1449 PERL_ARGS_ASSERT_SV_GROW;
1451 if (PL_madskills && newlen >= 0x100000) {
1452 PerlIO_printf(Perl_debug_log,
1453 "Allocation too large: %"UVxf"\n", (UV)newlen);
1455 #ifdef HAS_64K_LIMIT
1456 if (newlen >= 0x10000) {
1457 PerlIO_printf(Perl_debug_log,
1458 "Allocation too large: %"UVxf"\n", (UV)newlen);
1461 #endif /* HAS_64K_LIMIT */
1464 if (SvTYPE(sv) < SVt_PV) {
1465 sv_upgrade(sv, SVt_PV);
1466 s = SvPVX_mutable(sv);
1468 else if (SvOOK(sv)) { /* pv is offset? */
1470 s = SvPVX_mutable(sv);
1471 if (newlen > SvLEN(sv))
1472 newlen += 10 * (newlen - SvCUR(sv)); /* avoid copy each time */
1473 #ifdef HAS_64K_LIMIT
1474 if (newlen >= 0x10000)
1479 s = SvPVX_mutable(sv);
1481 if (newlen > SvLEN(sv)) { /* need more room? */
1483 newlen = PERL_STRLEN_ROUNDUP(newlen);
1485 if (SvLEN(sv) && s) {
1486 s = (char*)saferealloc(s, newlen);
1489 s = (char*)safemalloc(newlen);
1490 if (SvPVX_const(sv) && SvCUR(sv)) {
1491 Move(SvPVX_const(sv), s, (newlen < SvCUR(sv)) ? newlen : SvCUR(sv), char);
1496 /* Do this here, do it once, do it right, and then we will never get
1497 called back into sv_grow() unless there really is some growing
1499 SvLEN_set(sv, malloced_size(s));
1501 SvLEN_set(sv, newlen);
1508 =for apidoc sv_setiv
1510 Copies an integer into the given SV, upgrading first if necessary.
1511 Does not handle 'set' magic. See also C<sv_setiv_mg>.
1517 Perl_sv_setiv(pTHX_ register SV *const sv, const IV i)
1521 PERL_ARGS_ASSERT_SV_SETIV;
1523 SV_CHECK_THINKFIRST_COW_DROP(sv);
1524 switch (SvTYPE(sv)) {
1527 sv_upgrade(sv, SVt_IV);
1530 sv_upgrade(sv, SVt_PVIV);
1539 Perl_croak(aTHX_ "Can't coerce %s to integer in %s", sv_reftype(sv,0),
1543 (void)SvIOK_only(sv); /* validate number */
1549 =for apidoc sv_setiv_mg
1551 Like C<sv_setiv>, but also handles 'set' magic.
1557 Perl_sv_setiv_mg(pTHX_ register SV *const sv, const IV i)
1559 PERL_ARGS_ASSERT_SV_SETIV_MG;
1566 =for apidoc sv_setuv
1568 Copies an unsigned integer into the given SV, upgrading first if necessary.
1569 Does not handle 'set' magic. See also C<sv_setuv_mg>.
1575 Perl_sv_setuv(pTHX_ register SV *const sv, const UV u)
1577 PERL_ARGS_ASSERT_SV_SETUV;
1579 /* With these two if statements:
1580 u=1.49 s=0.52 cu=72.49 cs=10.64 scripts=270 tests=20865
1583 u=1.35 s=0.47 cu=73.45 cs=11.43 scripts=270 tests=20865
1585 If you wish to remove them, please benchmark to see what the effect is
1587 if (u <= (UV)IV_MAX) {
1588 sv_setiv(sv, (IV)u);
1597 =for apidoc sv_setuv_mg
1599 Like C<sv_setuv>, but also handles 'set' magic.
1605 Perl_sv_setuv_mg(pTHX_ register SV *const sv, const UV u)
1607 PERL_ARGS_ASSERT_SV_SETUV_MG;
1614 =for apidoc sv_setnv
1616 Copies a double into the given SV, upgrading first if necessary.
1617 Does not handle 'set' magic. See also C<sv_setnv_mg>.
1623 Perl_sv_setnv(pTHX_ register SV *const sv, const NV num)
1627 PERL_ARGS_ASSERT_SV_SETNV;
1629 SV_CHECK_THINKFIRST_COW_DROP(sv);
1630 switch (SvTYPE(sv)) {
1633 sv_upgrade(sv, SVt_NV);
1637 sv_upgrade(sv, SVt_PVNV);
1646 Perl_croak(aTHX_ "Can't coerce %s to number in %s", sv_reftype(sv,0),
1651 (void)SvNOK_only(sv); /* validate number */
1656 =for apidoc sv_setnv_mg
1658 Like C<sv_setnv>, but also handles 'set' magic.
1664 Perl_sv_setnv_mg(pTHX_ register SV *const sv, const NV num)
1666 PERL_ARGS_ASSERT_SV_SETNV_MG;
1672 /* Print an "isn't numeric" warning, using a cleaned-up,
1673 * printable version of the offending string
1677 S_not_a_number(pTHX_ SV *const sv)
1684 PERL_ARGS_ASSERT_NOT_A_NUMBER;
1687 dsv = newSVpvs_flags("", SVs_TEMP);
1688 pv = sv_uni_display(dsv, sv, 10, 0);
1691 const char * const limit = tmpbuf + sizeof(tmpbuf) - 8;
1692 /* each *s can expand to 4 chars + "...\0",
1693 i.e. need room for 8 chars */
1695 const char *s = SvPVX_const(sv);
1696 const char * const end = s + SvCUR(sv);
1697 for ( ; s < end && d < limit; s++ ) {
1699 if (ch & 128 && !isPRINT_LC(ch)) {
1708 else if (ch == '\r') {
1712 else if (ch == '\f') {
1716 else if (ch == '\\') {
1720 else if (ch == '\0') {
1724 else if (isPRINT_LC(ch))
1741 Perl_warner(aTHX_ packWARN(WARN_NUMERIC),
1742 "Argument \"%s\" isn't numeric in %s", pv,
1745 Perl_warner(aTHX_ packWARN(WARN_NUMERIC),
1746 "Argument \"%s\" isn't numeric", pv);
1750 =for apidoc looks_like_number
1752 Test if the content of an SV looks like a number (or is a number).
1753 C<Inf> and C<Infinity> are treated as numbers (so will not issue a
1754 non-numeric warning), even if your atof() doesn't grok them.
1760 Perl_looks_like_number(pTHX_ SV *const sv)
1762 register const char *sbegin;
1765 PERL_ARGS_ASSERT_LOOKS_LIKE_NUMBER;
1768 sbegin = SvPVX_const(sv);
1771 else if (SvPOKp(sv))
1772 sbegin = SvPV_const(sv, len);
1774 return SvFLAGS(sv) & (SVf_NOK|SVp_NOK|SVf_IOK|SVp_IOK);
1775 return grok_number(sbegin, len, NULL);
1779 S_glob_2number(pTHX_ GV * const gv)
1781 const U32 wasfake = SvFLAGS(gv) & SVf_FAKE;
1782 SV *const buffer = sv_newmortal();
1784 PERL_ARGS_ASSERT_GLOB_2NUMBER;
1786 /* FAKE globs can get coerced, so need to turn this off temporarily if it
1789 gv_efullname3(buffer, gv, "*");
1790 SvFLAGS(gv) |= wasfake;
1792 /* We know that all GVs stringify to something that is not-a-number,
1793 so no need to test that. */
1794 if (ckWARN(WARN_NUMERIC))
1795 not_a_number(buffer);
1796 /* We just want something true to return, so that S_sv_2iuv_common
1797 can tail call us and return true. */
1802 S_glob_2pv(pTHX_ GV * const gv, STRLEN * const len)
1804 const U32 wasfake = SvFLAGS(gv) & SVf_FAKE;
1805 SV *const buffer = sv_newmortal();
1807 PERL_ARGS_ASSERT_GLOB_2PV;
1809 /* FAKE globs can get coerced, so need to turn this off temporarily if it
1812 gv_efullname3(buffer, gv, "*");
1813 SvFLAGS(gv) |= wasfake;
1815 assert(SvPOK(buffer));
1817 *len = SvCUR(buffer);
1819 return SvPVX(buffer);
1822 /* Actually, ISO C leaves conversion of UV to IV undefined, but
1823 until proven guilty, assume that things are not that bad... */
1828 As 64 bit platforms often have an NV that doesn't preserve all bits of
1829 an IV (an assumption perl has been based on to date) it becomes necessary
1830 to remove the assumption that the NV always carries enough precision to
1831 recreate the IV whenever needed, and that the NV is the canonical form.
1832 Instead, IV/UV and NV need to be given equal rights. So as to not lose
1833 precision as a side effect of conversion (which would lead to insanity
1834 and the dragon(s) in t/op/numconvert.t getting very angry) the intent is
1835 1) to distinguish between IV/UV/NV slots that have cached a valid
1836 conversion where precision was lost and IV/UV/NV slots that have a
1837 valid conversion which has lost no precision
1838 2) to ensure that if a numeric conversion to one form is requested that
1839 would lose precision, the precise conversion (or differently
1840 imprecise conversion) is also performed and cached, to prevent
1841 requests for different numeric formats on the same SV causing
1842 lossy conversion chains. (lossless conversion chains are perfectly
1847 SvIOKp is true if the IV slot contains a valid value
1848 SvIOK is true only if the IV value is accurate (UV if SvIOK_UV true)
1849 SvNOKp is true if the NV slot contains a valid value
1850 SvNOK is true only if the NV value is accurate
1853 while converting from PV to NV, check to see if converting that NV to an
1854 IV(or UV) would lose accuracy over a direct conversion from PV to
1855 IV(or UV). If it would, cache both conversions, return NV, but mark
1856 SV as IOK NOKp (ie not NOK).
1858 While converting from PV to IV, check to see if converting that IV to an
1859 NV would lose accuracy over a direct conversion from PV to NV. If it
1860 would, cache both conversions, flag similarly.
1862 Before, the SV value "3.2" could become NV=3.2 IV=3 NOK, IOK quite
1863 correctly because if IV & NV were set NV *always* overruled.
1864 Now, "3.2" will become NV=3.2 IV=3 NOK, IOKp, because the flag's meaning
1865 changes - now IV and NV together means that the two are interchangeable:
1866 SvIVX == (IV) SvNVX && SvNVX == (NV) SvIVX;
1868 The benefit of this is that operations such as pp_add know that if
1869 SvIOK is true for both left and right operands, then integer addition
1870 can be used instead of floating point (for cases where the result won't
1871 overflow). Before, floating point was always used, which could lead to
1872 loss of precision compared with integer addition.
1874 * making IV and NV equal status should make maths accurate on 64 bit
1876 * may speed up maths somewhat if pp_add and friends start to use
1877 integers when possible instead of fp. (Hopefully the overhead in
1878 looking for SvIOK and checking for overflow will not outweigh the
1879 fp to integer speedup)
1880 * will slow down integer operations (callers of SvIV) on "inaccurate"
1881 values, as the change from SvIOK to SvIOKp will cause a call into
1882 sv_2iv each time rather than a macro access direct to the IV slot
1883 * should speed up number->string conversion on integers as IV is
1884 favoured when IV and NV are equally accurate
1886 ####################################################################
1887 You had better be using SvIOK_notUV if you want an IV for arithmetic:
1888 SvIOK is true if (IV or UV), so you might be getting (IV)SvUV.
1889 On the other hand, SvUOK is true iff UV.
1890 ####################################################################
1892 Your mileage will vary depending your CPU's relative fp to integer
1896 #ifndef NV_PRESERVES_UV
1897 # define IS_NUMBER_UNDERFLOW_IV 1
1898 # define IS_NUMBER_UNDERFLOW_UV 2
1899 # define IS_NUMBER_IV_AND_UV 2
1900 # define IS_NUMBER_OVERFLOW_IV 4
1901 # define IS_NUMBER_OVERFLOW_UV 5
1903 /* sv_2iuv_non_preserve(): private routine for use by sv_2iv() and sv_2uv() */
1905 /* For sv_2nv these three cases are "SvNOK and don't bother casting" */
1907 S_sv_2iuv_non_preserve(pTHX_ register SV *const sv
1915 PERL_ARGS_ASSERT_SV_2IUV_NON_PRESERVE;
1917 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));
1918 if (SvNVX(sv) < (NV)IV_MIN) {
1919 (void)SvIOKp_on(sv);
1921 SvIV_set(sv, IV_MIN);
1922 return IS_NUMBER_UNDERFLOW_IV;
1924 if (SvNVX(sv) > (NV)UV_MAX) {
1925 (void)SvIOKp_on(sv);
1928 SvUV_set(sv, UV_MAX);
1929 return IS_NUMBER_OVERFLOW_UV;
1931 (void)SvIOKp_on(sv);
1933 /* Can't use strtol etc to convert this string. (See truth table in
1935 if (SvNVX(sv) <= (UV)IV_MAX) {
1936 SvIV_set(sv, I_V(SvNVX(sv)));
1937 if ((NV)(SvIVX(sv)) == SvNVX(sv)) {
1938 SvIOK_on(sv); /* Integer is precise. NOK, IOK */
1940 /* Integer is imprecise. NOK, IOKp */
1942 return SvNVX(sv) < 0 ? IS_NUMBER_UNDERFLOW_UV : IS_NUMBER_IV_AND_UV;
1945 SvUV_set(sv, U_V(SvNVX(sv)));
1946 if ((NV)(SvUVX(sv)) == SvNVX(sv)) {
1947 if (SvUVX(sv) == UV_MAX) {
1948 /* As we know that NVs don't preserve UVs, UV_MAX cannot
1949 possibly be preserved by NV. Hence, it must be overflow.
1951 return IS_NUMBER_OVERFLOW_UV;
1953 SvIOK_on(sv); /* Integer is precise. NOK, UOK */
1955 /* Integer is imprecise. NOK, IOKp */
1957 return IS_NUMBER_OVERFLOW_IV;
1959 #endif /* !NV_PRESERVES_UV*/
1962 S_sv_2iuv_common(pTHX_ SV *const sv)
1966 PERL_ARGS_ASSERT_SV_2IUV_COMMON;
1969 /* erm. not sure. *should* never get NOKp (without NOK) from sv_2nv
1970 * without also getting a cached IV/UV from it at the same time
1971 * (ie PV->NV conversion should detect loss of accuracy and cache
1972 * IV or UV at same time to avoid this. */
1973 /* IV-over-UV optimisation - choose to cache IV if possible */
1975 if (SvTYPE(sv) == SVt_NV)
1976 sv_upgrade(sv, SVt_PVNV);
1978 (void)SvIOKp_on(sv); /* Must do this first, to clear any SvOOK */
1979 /* < not <= as for NV doesn't preserve UV, ((NV)IV_MAX+1) will almost
1980 certainly cast into the IV range at IV_MAX, whereas the correct
1981 answer is the UV IV_MAX +1. Hence < ensures that dodgy boundary
1983 #if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan)
1984 if (Perl_isnan(SvNVX(sv))) {
1990 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
1991 SvIV_set(sv, I_V(SvNVX(sv)));
1992 if (SvNVX(sv) == (NV) SvIVX(sv)
1993 #ifndef NV_PRESERVES_UV
1994 && (((UV)1 << NV_PRESERVES_UV_BITS) >
1995 (UV)(SvIVX(sv) > 0 ? SvIVX(sv) : -SvIVX(sv)))
1996 /* Don't flag it as "accurately an integer" if the number
1997 came from a (by definition imprecise) NV operation, and
1998 we're outside the range of NV integer precision */
2002 SvIOK_on(sv); /* Can this go wrong with rounding? NWC */
2004 /* scalar has trailing garbage, eg "42a" */
2006 DEBUG_c(PerlIO_printf(Perl_debug_log,
2007 "0x%"UVxf" iv(%"NVgf" => %"IVdf") (precise)\n",
2013 /* IV not precise. No need to convert from PV, as NV
2014 conversion would already have cached IV if it detected
2015 that PV->IV would be better than PV->NV->IV
2016 flags already correct - don't set public IOK. */
2017 DEBUG_c(PerlIO_printf(Perl_debug_log,
2018 "0x%"UVxf" iv(%"NVgf" => %"IVdf") (imprecise)\n",
2023 /* Can the above go wrong if SvIVX == IV_MIN and SvNVX < IV_MIN,
2024 but the cast (NV)IV_MIN rounds to a the value less (more
2025 negative) than IV_MIN which happens to be equal to SvNVX ??
2026 Analogous to 0xFFFFFFFFFFFFFFFF rounding up to NV (2**64) and
2027 NV rounding back to 0xFFFFFFFFFFFFFFFF, so UVX == UV(NVX) and
2028 (NV)UVX == NVX are both true, but the values differ. :-(
2029 Hopefully for 2s complement IV_MIN is something like
2030 0x8000000000000000 which will be exact. NWC */
2033 SvUV_set(sv, U_V(SvNVX(sv)));
2035 (SvNVX(sv) == (NV) SvUVX(sv))
2036 #ifndef NV_PRESERVES_UV
2037 /* Make sure it's not 0xFFFFFFFFFFFFFFFF */
2038 /*&& (SvUVX(sv) != UV_MAX) irrelevant with code below */
2039 && (((UV)1 << NV_PRESERVES_UV_BITS) > SvUVX(sv))
2040 /* Don't flag it as "accurately an integer" if the number
2041 came from a (by definition imprecise) NV operation, and
2042 we're outside the range of NV integer precision */
2048 DEBUG_c(PerlIO_printf(Perl_debug_log,
2049 "0x%"UVxf" 2iv(%"UVuf" => %"IVdf") (as unsigned)\n",
2055 else if (SvPOKp(sv) && SvLEN(sv)) {
2057 const int numtype = grok_number(SvPVX_const(sv), SvCUR(sv), &value);
2058 /* We want to avoid a possible problem when we cache an IV/ a UV which
2059 may be later translated to an NV, and the resulting NV is not
2060 the same as the direct translation of the initial string
2061 (eg 123.456 can shortcut to the IV 123 with atol(), but we must
2062 be careful to ensure that the value with the .456 is around if the
2063 NV value is requested in the future).
2065 This means that if we cache such an IV/a UV, we need to cache the
2066 NV as well. Moreover, we trade speed for space, and do not
2067 cache the NV if we are sure it's not needed.
2070 /* SVt_PVNV is one higher than SVt_PVIV, hence this order */
2071 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2072 == IS_NUMBER_IN_UV) {
2073 /* It's definitely an integer, only upgrade to PVIV */
2074 if (SvTYPE(sv) < SVt_PVIV)
2075 sv_upgrade(sv, SVt_PVIV);
2077 } else if (SvTYPE(sv) < SVt_PVNV)
2078 sv_upgrade(sv, SVt_PVNV);
2080 /* If NVs preserve UVs then we only use the UV value if we know that
2081 we aren't going to call atof() below. If NVs don't preserve UVs
2082 then the value returned may have more precision than atof() will
2083 return, even though value isn't perfectly accurate. */
2084 if ((numtype & (IS_NUMBER_IN_UV
2085 #ifdef NV_PRESERVES_UV
2088 )) == IS_NUMBER_IN_UV) {
2089 /* This won't turn off the public IOK flag if it was set above */
2090 (void)SvIOKp_on(sv);
2092 if (!(numtype & IS_NUMBER_NEG)) {
2094 if (value <= (UV)IV_MAX) {
2095 SvIV_set(sv, (IV)value);
2097 /* it didn't overflow, and it was positive. */
2098 SvUV_set(sv, value);
2102 /* 2s complement assumption */
2103 if (value <= (UV)IV_MIN) {
2104 SvIV_set(sv, -(IV)value);
2106 /* Too negative for an IV. This is a double upgrade, but
2107 I'm assuming it will be rare. */
2108 if (SvTYPE(sv) < SVt_PVNV)
2109 sv_upgrade(sv, SVt_PVNV);
2113 SvNV_set(sv, -(NV)value);
2114 SvIV_set(sv, IV_MIN);
2118 /* For !NV_PRESERVES_UV and IS_NUMBER_IN_UV and IS_NUMBER_NOT_INT we
2119 will be in the previous block to set the IV slot, and the next
2120 block to set the NV slot. So no else here. */
2122 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2123 != IS_NUMBER_IN_UV) {
2124 /* It wasn't an (integer that doesn't overflow the UV). */
2125 SvNV_set(sv, Atof(SvPVX_const(sv)));
2127 if (! numtype && ckWARN(WARN_NUMERIC))
2130 #if defined(USE_LONG_DOUBLE)
2131 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2iv(%" PERL_PRIgldbl ")\n",
2132 PTR2UV(sv), SvNVX(sv)));
2134 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2iv(%"NVgf")\n",
2135 PTR2UV(sv), SvNVX(sv)));
2138 #ifdef NV_PRESERVES_UV
2139 (void)SvIOKp_on(sv);
2141 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2142 SvIV_set(sv, I_V(SvNVX(sv)));
2143 if ((NV)(SvIVX(sv)) == SvNVX(sv)) {
2146 NOOP; /* Integer is imprecise. NOK, IOKp */
2148 /* UV will not work better than IV */
2150 if (SvNVX(sv) > (NV)UV_MAX) {
2152 /* Integer is inaccurate. NOK, IOKp, is UV */
2153 SvUV_set(sv, UV_MAX);
2155 SvUV_set(sv, U_V(SvNVX(sv)));
2156 /* 0xFFFFFFFFFFFFFFFF not an issue in here, NVs
2157 NV preservse UV so can do correct comparison. */
2158 if ((NV)(SvUVX(sv)) == SvNVX(sv)) {
2161 NOOP; /* Integer is imprecise. NOK, IOKp, is UV */
2166 #else /* NV_PRESERVES_UV */
2167 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2168 == (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT)) {
2169 /* The IV/UV slot will have been set from value returned by
2170 grok_number above. The NV slot has just been set using
2173 assert (SvIOKp(sv));
2175 if (((UV)1 << NV_PRESERVES_UV_BITS) >
2176 U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))) {
2177 /* Small enough to preserve all bits. */
2178 (void)SvIOKp_on(sv);
2180 SvIV_set(sv, I_V(SvNVX(sv)));
2181 if ((NV)(SvIVX(sv)) == SvNVX(sv))
2183 /* Assumption: first non-preserved integer is < IV_MAX,
2184 this NV is in the preserved range, therefore: */
2185 if (!(U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))
2187 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);
2191 0 0 already failed to read UV.
2192 0 1 already failed to read UV.
2193 1 0 you won't get here in this case. IV/UV
2194 slot set, public IOK, Atof() unneeded.
2195 1 1 already read UV.
2196 so there's no point in sv_2iuv_non_preserve() attempting
2197 to use atol, strtol, strtoul etc. */
2199 sv_2iuv_non_preserve (sv, numtype);
2201 sv_2iuv_non_preserve (sv);
2205 #endif /* NV_PRESERVES_UV */
2206 /* It might be more code efficient to go through the entire logic above
2207 and conditionally set with SvIOKp_on() rather than SvIOK(), but it
2208 gets complex and potentially buggy, so more programmer efficient
2209 to do it this way, by turning off the public flags: */
2211 SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK);
2215 if (isGV_with_GP(sv))
2216 return glob_2number((GV *)sv);
2218 if (!(SvFLAGS(sv) & SVs_PADTMP)) {
2219 if (!PL_localizing && ckWARN(WARN_UNINITIALIZED))
2222 if (SvTYPE(sv) < SVt_IV)
2223 /* Typically the caller expects that sv_any is not NULL now. */
2224 sv_upgrade(sv, SVt_IV);
2225 /* Return 0 from the caller. */
2232 =for apidoc sv_2iv_flags
2234 Return the integer value of an SV, doing any necessary string
2235 conversion. If flags includes SV_GMAGIC, does an mg_get() first.
2236 Normally used via the C<SvIV(sv)> and C<SvIVx(sv)> macros.
2242 Perl_sv_2iv_flags(pTHX_ register SV *const sv, const I32 flags)
2247 if (SvGMAGICAL(sv) || (SvTYPE(sv) == SVt_PVGV && SvVALID(sv))) {
2248 /* FBMs use the same flag bit as SVf_IVisUV, so must let them
2249 cache IVs just in case. In practice it seems that they never
2250 actually anywhere accessible by user Perl code, let alone get used
2251 in anything other than a string context. */
2252 if (flags & SV_GMAGIC)
2257 return I_V(SvNVX(sv));
2259 if (SvPOKp(sv) && SvLEN(sv)) {
2262 = grok_number(SvPVX_const(sv), SvCUR(sv), &value);
2264 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2265 == IS_NUMBER_IN_UV) {
2266 /* It's definitely an integer */
2267 if (numtype & IS_NUMBER_NEG) {
2268 if (value < (UV)IV_MIN)
2271 if (value < (UV)IV_MAX)
2276 if (ckWARN(WARN_NUMERIC))
2279 return I_V(Atof(SvPVX_const(sv)));
2284 assert(SvTYPE(sv) >= SVt_PVMG);
2285 /* This falls through to the report_uninit inside S_sv_2iuv_common. */
2286 } else if (SvTHINKFIRST(sv)) {
2290 SV * const tmpstr=AMG_CALLun(sv,numer);
2291 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2292 return SvIV(tmpstr);
2295 return PTR2IV(SvRV(sv));
2298 sv_force_normal_flags(sv, 0);
2300 if (SvREADONLY(sv) && !SvOK(sv)) {
2301 if (ckWARN(WARN_UNINITIALIZED))
2307 if (S_sv_2iuv_common(aTHX_ sv))
2310 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2iv(%"IVdf")\n",
2311 PTR2UV(sv),SvIVX(sv)));
2312 return SvIsUV(sv) ? (IV)SvUVX(sv) : SvIVX(sv);
2316 =for apidoc sv_2uv_flags
2318 Return the unsigned integer value of an SV, doing any necessary string
2319 conversion. If flags includes SV_GMAGIC, does an mg_get() first.
2320 Normally used via the C<SvUV(sv)> and C<SvUVx(sv)> macros.
2326 Perl_sv_2uv_flags(pTHX_ register SV *const sv, const I32 flags)
2331 if (SvGMAGICAL(sv) || (SvTYPE(sv) == SVt_PVGV && SvVALID(sv))) {
2332 /* FBMs use the same flag bit as SVf_IVisUV, so must let them
2333 cache IVs just in case. */
2334 if (flags & SV_GMAGIC)
2339 return U_V(SvNVX(sv));
2340 if (SvPOKp(sv) && SvLEN(sv)) {
2343 = grok_number(SvPVX_const(sv), SvCUR(sv), &value);
2345 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2346 == IS_NUMBER_IN_UV) {
2347 /* It's definitely an integer */
2348 if (!(numtype & IS_NUMBER_NEG))
2352 if (ckWARN(WARN_NUMERIC))
2355 return U_V(Atof(SvPVX_const(sv)));
2360 assert(SvTYPE(sv) >= SVt_PVMG);
2361 /* This falls through to the report_uninit inside S_sv_2iuv_common. */
2362 } else if (SvTHINKFIRST(sv)) {
2366 SV *const tmpstr = AMG_CALLun(sv,numer);
2367 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2368 return SvUV(tmpstr);
2371 return PTR2UV(SvRV(sv));
2374 sv_force_normal_flags(sv, 0);
2376 if (SvREADONLY(sv) && !SvOK(sv)) {
2377 if (ckWARN(WARN_UNINITIALIZED))
2383 if (S_sv_2iuv_common(aTHX_ sv))
2387 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2uv(%"UVuf")\n",
2388 PTR2UV(sv),SvUVX(sv)));
2389 return SvIsUV(sv) ? SvUVX(sv) : (UV)SvIVX(sv);
2395 Return the num value of an SV, doing any necessary string or integer
2396 conversion, magic etc. Normally used via the C<SvNV(sv)> and C<SvNVx(sv)>
2403 Perl_sv_2nv(pTHX_ register SV *const sv)
2408 if (SvGMAGICAL(sv) || (SvTYPE(sv) == SVt_PVGV && SvVALID(sv))) {
2409 /* FBMs use the same flag bit as SVf_IVisUV, so must let them
2410 cache IVs just in case. */
2414 if ((SvPOKp(sv) && SvLEN(sv)) && !SvIOKp(sv)) {
2415 if (!SvIOKp(sv) && ckWARN(WARN_NUMERIC) &&
2416 !grok_number(SvPVX_const(sv), SvCUR(sv), NULL))
2418 return Atof(SvPVX_const(sv));
2422 return (NV)SvUVX(sv);
2424 return (NV)SvIVX(sv);
2429 assert(SvTYPE(sv) >= SVt_PVMG);
2430 /* This falls through to the report_uninit near the end of the
2432 } else if (SvTHINKFIRST(sv)) {
2436 SV *const tmpstr = AMG_CALLun(sv,numer);
2437 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2438 return SvNV(tmpstr);
2441 return PTR2NV(SvRV(sv));
2444 sv_force_normal_flags(sv, 0);
2446 if (SvREADONLY(sv) && !SvOK(sv)) {
2447 if (ckWARN(WARN_UNINITIALIZED))
2452 if (SvTYPE(sv) < SVt_NV) {
2453 /* The logic to use SVt_PVNV if necessary is in sv_upgrade. */
2454 sv_upgrade(sv, SVt_NV);
2455 #ifdef USE_LONG_DOUBLE
2457 STORE_NUMERIC_LOCAL_SET_STANDARD();
2458 PerlIO_printf(Perl_debug_log,
2459 "0x%"UVxf" num(%" PERL_PRIgldbl ")\n",
2460 PTR2UV(sv), SvNVX(sv));
2461 RESTORE_NUMERIC_LOCAL();
2465 STORE_NUMERIC_LOCAL_SET_STANDARD();
2466 PerlIO_printf(Perl_debug_log, "0x%"UVxf" num(%"NVgf")\n",
2467 PTR2UV(sv), SvNVX(sv));
2468 RESTORE_NUMERIC_LOCAL();
2472 else if (SvTYPE(sv) < SVt_PVNV)
2473 sv_upgrade(sv, SVt_PVNV);
2478 SvNV_set(sv, SvIsUV(sv) ? (NV)SvUVX(sv) : (NV)SvIVX(sv));
2479 #ifdef NV_PRESERVES_UV
2485 /* Only set the public NV OK flag if this NV preserves the IV */
2486 /* Check it's not 0xFFFFFFFFFFFFFFFF */
2488 SvIsUV(sv) ? ((SvUVX(sv) != UV_MAX)&&(SvUVX(sv) == U_V(SvNVX(sv))))
2489 : (SvIVX(sv) == I_V(SvNVX(sv))))
2495 else if (SvPOKp(sv) && SvLEN(sv)) {
2497 const int numtype = grok_number(SvPVX_const(sv), SvCUR(sv), &value);
2498 if (!SvIOKp(sv) && !numtype && ckWARN(WARN_NUMERIC))
2500 #ifdef NV_PRESERVES_UV
2501 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2502 == IS_NUMBER_IN_UV) {
2503 /* It's definitely an integer */
2504 SvNV_set(sv, (numtype & IS_NUMBER_NEG) ? -(NV)value : (NV)value);
2506 SvNV_set(sv, Atof(SvPVX_const(sv)));
2512 SvNV_set(sv, Atof(SvPVX_const(sv)));
2513 /* Only set the public NV OK flag if this NV preserves the value in
2514 the PV at least as well as an IV/UV would.
2515 Not sure how to do this 100% reliably. */
2516 /* if that shift count is out of range then Configure's test is
2517 wonky. We shouldn't be in here with NV_PRESERVES_UV_BITS ==
2519 if (((UV)1 << NV_PRESERVES_UV_BITS) >
2520 U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))) {
2521 SvNOK_on(sv); /* Definitely small enough to preserve all bits */
2522 } else if (!(numtype & IS_NUMBER_IN_UV)) {
2523 /* Can't use strtol etc to convert this string, so don't try.
2524 sv_2iv and sv_2uv will use the NV to convert, not the PV. */
2527 /* value has been set. It may not be precise. */
2528 if ((numtype & IS_NUMBER_NEG) && (value > (UV)IV_MIN)) {
2529 /* 2s complement assumption for (UV)IV_MIN */
2530 SvNOK_on(sv); /* Integer is too negative. */
2535 if (numtype & IS_NUMBER_NEG) {
2536 SvIV_set(sv, -(IV)value);
2537 } else if (value <= (UV)IV_MAX) {
2538 SvIV_set(sv, (IV)value);
2540 SvUV_set(sv, value);
2544 if (numtype & IS_NUMBER_NOT_INT) {
2545 /* I believe that even if the original PV had decimals,
2546 they are lost beyond the limit of the FP precision.
2547 However, neither is canonical, so both only get p
2548 flags. NWC, 2000/11/25 */
2549 /* Both already have p flags, so do nothing */
2551 const NV nv = SvNVX(sv);
2552 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2553 if (SvIVX(sv) == I_V(nv)) {
2556 /* It had no "." so it must be integer. */
2560 /* between IV_MAX and NV(UV_MAX).
2561 Could be slightly > UV_MAX */
2563 if (numtype & IS_NUMBER_NOT_INT) {
2564 /* UV and NV both imprecise. */
2566 const UV nv_as_uv = U_V(nv);
2568 if (value == nv_as_uv && SvUVX(sv) != UV_MAX) {
2577 /* It might be more code efficient to go through the entire logic above
2578 and conditionally set with SvNOKp_on() rather than SvNOK(), but it
2579 gets complex and potentially buggy, so more programmer efficient
2580 to do it this way, by turning off the public flags: */
2582 SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK);
2583 #endif /* NV_PRESERVES_UV */
2586 if (isGV_with_GP(sv)) {
2587 glob_2number((GV *)sv);
2591 if (!PL_localizing && !(SvFLAGS(sv) & SVs_PADTMP) && ckWARN(WARN_UNINITIALIZED))
2593 assert (SvTYPE(sv) >= SVt_NV);
2594 /* Typically the caller expects that sv_any is not NULL now. */
2595 /* XXX Ilya implies that this is a bug in callers that assume this
2596 and ideally should be fixed. */
2599 #if defined(USE_LONG_DOUBLE)
2601 STORE_NUMERIC_LOCAL_SET_STANDARD();
2602 PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2nv(%" PERL_PRIgldbl ")\n",
2603 PTR2UV(sv), SvNVX(sv));
2604 RESTORE_NUMERIC_LOCAL();
2608 STORE_NUMERIC_LOCAL_SET_STANDARD();
2609 PerlIO_printf(Perl_debug_log, "0x%"UVxf" 1nv(%"NVgf")\n",
2610 PTR2UV(sv), SvNVX(sv));
2611 RESTORE_NUMERIC_LOCAL();
2620 Return an SV with the numeric value of the source SV, doing any necessary
2621 reference or overload conversion. You must use the C<SvNUM(sv)> macro to
2622 access this function.
2628 Perl_sv_2num(pTHX_ register SV *const sv)
2630 PERL_ARGS_ASSERT_SV_2NUM;
2635 SV * const tmpsv = AMG_CALLun(sv,numer);
2636 if (tmpsv && (!SvROK(tmpsv) || (SvRV(tmpsv) != SvRV(sv))))
2637 return sv_2num(tmpsv);
2639 return sv_2mortal(newSVuv(PTR2UV(SvRV(sv))));
2642 /* uiv_2buf(): private routine for use by sv_2pv_flags(): print an IV or
2643 * UV as a string towards the end of buf, and return pointers to start and
2646 * We assume that buf is at least TYPE_CHARS(UV) long.
2650 S_uiv_2buf(char *const buf, const IV iv, UV uv, const int is_uv, char **const peob)
2652 char *ptr = buf + TYPE_CHARS(UV);
2653 char * const ebuf = ptr;
2656 PERL_ARGS_ASSERT_UIV_2BUF;
2668 *--ptr = '0' + (char)(uv % 10);
2677 =for apidoc sv_2pv_flags
2679 Returns a pointer to the string value of an SV, and sets *lp to its length.
2680 If flags includes SV_GMAGIC, does an mg_get() first. Coerces sv to a string
2682 Normally invoked via the C<SvPV_flags> macro. C<sv_2pv()> and C<sv_2pv_nomg>
2683 usually end up here too.
2689 Perl_sv_2pv_flags(pTHX_ register SV *const sv, STRLEN *const lp, const I32 flags)
2699 if (SvGMAGICAL(sv)) {
2700 if (flags & SV_GMAGIC)
2705 if (flags & SV_MUTABLE_RETURN)
2706 return SvPVX_mutable(sv);
2707 if (flags & SV_CONST_RETURN)
2708 return (char *)SvPVX_const(sv);
2711 if (SvIOKp(sv) || SvNOKp(sv)) {
2712 char tbuf[64]; /* Must fit sprintf/Gconvert of longest IV/NV */
2717 ? my_snprintf(tbuf, sizeof(tbuf), "%"UVuf, (UV)SvUVX(sv))
2718 : my_snprintf(tbuf, sizeof(tbuf), "%"IVdf, (IV)SvIVX(sv));
2720 Gconvert(SvNVX(sv), NV_DIG, 0, tbuf);
2727 #ifdef FIXNEGATIVEZERO
2728 if (len == 2 && tbuf[0] == '-' && tbuf[1] == '0') {
2734 SvUPGRADE(sv, SVt_PV);
2737 s = SvGROW_mutable(sv, len + 1);
2740 return (char*)memcpy(s, tbuf, len + 1);
2746 assert(SvTYPE(sv) >= SVt_PVMG);
2747 /* This falls through to the report_uninit near the end of the
2749 } else if (SvTHINKFIRST(sv)) {
2753 SV *const tmpstr = AMG_CALLun(sv,string);
2754 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2756 /* char *pv = lp ? SvPV(tmpstr, *lp) : SvPV_nolen(tmpstr);
2760 if ((SvFLAGS(tmpstr) & (SVf_POK)) == SVf_POK) {
2761 if (flags & SV_CONST_RETURN) {
2762 pv = (char *) SvPVX_const(tmpstr);
2764 pv = (flags & SV_MUTABLE_RETURN)
2765 ? SvPVX_mutable(tmpstr) : SvPVX(tmpstr);
2768 *lp = SvCUR(tmpstr);
2770 pv = sv_2pv_flags(tmpstr, lp, flags);
2783 const SV *const referent = (SV*)SvRV(sv);
2787 retval = buffer = savepvn("NULLREF", len);
2788 } else if (SvTYPE(referent) == SVt_REGEXP) {
2789 const REGEXP * const re = (REGEXP *)referent;
2794 /* If the regex is UTF-8 we want the containing scalar to
2795 have an UTF-8 flag too */
2801 if ((seen_evals = RX_SEEN_EVALS(re)))
2802 PL_reginterp_cnt += seen_evals;
2805 *lp = RX_WRAPLEN(re);
2807 return RX_WRAPPED(re);
2809 const char *const typestr = sv_reftype(referent, 0);
2810 const STRLEN typelen = strlen(typestr);
2811 UV addr = PTR2UV(referent);
2812 const char *stashname = NULL;
2813 STRLEN stashnamelen = 0; /* hush, gcc */
2814 const char *buffer_end;
2816 if (SvOBJECT(referent)) {
2817 const HEK *const name = HvNAME_HEK(SvSTASH(referent));
2820 stashname = HEK_KEY(name);
2821 stashnamelen = HEK_LEN(name);
2823 if (HEK_UTF8(name)) {
2829 stashname = "__ANON__";
2832 len = stashnamelen + 1 /* = */ + typelen + 3 /* (0x */
2833 + 2 * sizeof(UV) + 2 /* )\0 */;
2835 len = typelen + 3 /* (0x */
2836 + 2 * sizeof(UV) + 2 /* )\0 */;
2839 Newx(buffer, len, char);
2840 buffer_end = retval = buffer + len;
2842 /* Working backwards */
2846 *--retval = PL_hexdigit[addr & 15];
2847 } while (addr >>= 4);
2853 memcpy(retval, typestr, typelen);
2857 retval -= stashnamelen;
2858 memcpy(retval, stashname, stashnamelen);
2860 /* retval may not neccesarily have reached the start of the
2862 assert (retval >= buffer);
2864 len = buffer_end - retval - 1; /* -1 for that \0 */
2872 if (SvREADONLY(sv) && !SvOK(sv)) {
2875 if (flags & SV_UNDEF_RETURNS_NULL)
2877 if (ckWARN(WARN_UNINITIALIZED))
2882 if (SvIOK(sv) || ((SvIOKp(sv) && !SvNOKp(sv)))) {
2883 /* I'm assuming that if both IV and NV are equally valid then
2884 converting the IV is going to be more efficient */
2885 const U32 isUIOK = SvIsUV(sv);
2886 char buf[TYPE_CHARS(UV)];
2890 if (SvTYPE(sv) < SVt_PVIV)
2891 sv_upgrade(sv, SVt_PVIV);
2892 ptr = uiv_2buf(buf, SvIVX(sv), SvUVX(sv), isUIOK, &ebuf);
2894 /* inlined from sv_setpvn */
2895 s = SvGROW_mutable(sv, len + 1);
2896 Move(ptr, s, len, char);
2900 else if (SvNOKp(sv)) {
2901 const int olderrno = errno;
2902 if (SvTYPE(sv) < SVt_PVNV)
2903 sv_upgrade(sv, SVt_PVNV);
2904 /* The +20 is pure guesswork. Configure test needed. --jhi */
2905 s = SvGROW_mutable(sv, NV_DIG + 20);
2906 /* some Xenix systems wipe out errno here */
2908 if (SvNVX(sv) == 0.0)
2909 my_strlcpy(s, "0", SvLEN(sv));
2913 Gconvert(SvNVX(sv), NV_DIG, 0, s);
2916 #ifdef FIXNEGATIVEZERO
2917 if (*s == '-' && s[1] == '0' && !s[2]) {
2929 if (isGV_with_GP(sv))
2930 return glob_2pv((GV *)sv, lp);
2934 if (flags & SV_UNDEF_RETURNS_NULL)
2936 if (!PL_localizing && !(SvFLAGS(sv) & SVs_PADTMP) && ckWARN(WARN_UNINITIALIZED))
2938 if (SvTYPE(sv) < SVt_PV)
2939 /* Typically the caller expects that sv_any is not NULL now. */
2940 sv_upgrade(sv, SVt_PV);
2944 const STRLEN len = s - SvPVX_const(sv);
2950 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2pv(%s)\n",
2951 PTR2UV(sv),SvPVX_const(sv)));
2952 if (flags & SV_CONST_RETURN)
2953 return (char *)SvPVX_const(sv);
2954 if (flags & SV_MUTABLE_RETURN)
2955 return SvPVX_mutable(sv);
2960 =for apidoc sv_copypv
2962 Copies a stringified representation of the source SV into the
2963 destination SV. Automatically performs any necessary mg_get and
2964 coercion of numeric values into strings. Guaranteed to preserve
2965 UTF8 flag even from overloaded objects. Similar in nature to
2966 sv_2pv[_flags] but operates directly on an SV instead of just the
2967 string. Mostly uses sv_2pv_flags to do its work, except when that
2968 would lose the UTF-8'ness of the PV.
2974 Perl_sv_copypv(pTHX_ SV *const dsv, register SV *const ssv)
2977 const char * const s = SvPV_const(ssv,len);
2979 PERL_ARGS_ASSERT_SV_COPYPV;
2981 sv_setpvn(dsv,s,len);
2989 =for apidoc sv_2pvbyte
2991 Return a pointer to the byte-encoded representation of the SV, and set *lp
2992 to its length. May cause the SV to be downgraded from UTF-8 as a
2995 Usually accessed via the C<SvPVbyte> macro.
3001 Perl_sv_2pvbyte(pTHX_ register SV *const sv, STRLEN *const lp)
3003 PERL_ARGS_ASSERT_SV_2PVBYTE;
3005 sv_utf8_downgrade(sv,0);
3006 return lp ? SvPV(sv,*lp) : SvPV_nolen(sv);
3010 =for apidoc sv_2pvutf8
3012 Return a pointer to the UTF-8-encoded representation of the SV, and set *lp
3013 to its length. May cause the SV to be upgraded to UTF-8 as a side-effect.
3015 Usually accessed via the C<SvPVutf8> macro.
3021 Perl_sv_2pvutf8(pTHX_ register SV *sv, STRLEN *lp)
3023 PERL_ARGS_ASSERT_SV_2PVUTF8;
3025 sv_utf8_upgrade(sv);
3026 return lp ? SvPV(sv,*lp) : SvPV_nolen(sv);
3031 =for apidoc sv_2bool
3033 This function is only called on magical items, and is only used by
3034 sv_true() or its macro equivalent.
3040 Perl_sv_2bool(pTHX_ register SV *sv)
3044 PERL_ARGS_ASSERT_SV_2BOOL;
3052 SV * const tmpsv = AMG_CALLun(sv,bool_);
3053 if (tmpsv && (!SvROK(tmpsv) || (SvRV(tmpsv) != SvRV(sv))))
3054 return (bool)SvTRUE(tmpsv);
3056 return SvRV(sv) != 0;
3059 register XPV* const Xpvtmp = (XPV*)SvANY(sv);
3061 (*sv->sv_u.svu_pv > '0' ||
3062 Xpvtmp->xpv_cur > 1 ||
3063 (Xpvtmp->xpv_cur && *sv->sv_u.svu_pv != '0')))
3070 return SvIVX(sv) != 0;
3073 return SvNVX(sv) != 0.0;
3075 if (isGV_with_GP(sv))
3085 =for apidoc sv_utf8_upgrade
3087 Converts the PV of an SV to its UTF-8-encoded form.
3088 Forces the SV to string form if it is not already.
3089 Always sets the SvUTF8 flag to avoid future validity checks even
3090 if all the bytes have hibit clear.
3092 This is not as a general purpose byte encoding to Unicode interface:
3093 use the Encode extension for that.
3095 =for apidoc sv_utf8_upgrade_flags
3097 Converts the PV of an SV to its UTF-8-encoded form.
3098 Forces the SV to string form if it is not already.
3099 Always sets the SvUTF8 flag to avoid future validity checks even
3100 if all the bytes have hibit clear. If C<flags> has C<SV_GMAGIC> bit set,
3101 will C<mg_get> on C<sv> if appropriate, else not. C<sv_utf8_upgrade> and
3102 C<sv_utf8_upgrade_nomg> are implemented in terms of this function.
3104 This is not as a general purpose byte encoding to Unicode interface:
3105 use the Encode extension for that.
3111 Perl_sv_utf8_upgrade_flags(pTHX_ register SV *sv, I32 flags)
3115 PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS;
3117 if (sv == &PL_sv_undef)
3121 if (SvREADONLY(sv) && (SvPOKp(sv) || SvIOKp(sv) || SvNOKp(sv))) {
3122 (void) sv_2pv_flags(sv,&len, flags);
3126 (void) SvPV_force(sv,len);
3135 sv_force_normal_flags(sv, 0);
3138 if (PL_encoding && !(flags & SV_UTF8_NO_ENCODING))
3139 sv_recode_to_utf8(sv, PL_encoding);
3140 else { /* Assume Latin-1/EBCDIC */
3141 /* This function could be much more efficient if we
3142 * had a FLAG in SVs to signal if there are any hibit
3143 * chars in the PV. Given that there isn't such a flag
3144 * make the loop as fast as possible. */
3145 const U8 * const s = (U8 *) SvPVX_const(sv);
3146 const U8 * const e = (U8 *) SvEND(sv);
3151 /* Check for hi bit */
3152 if (!NATIVE_IS_INVARIANT(ch)) {
3153 STRLEN len = SvCUR(sv) + 1; /* Plus the \0 */
3154 U8 * const recoded = bytes_to_utf8((U8*)s, &len);
3156 SvPV_free(sv); /* No longer using what was there before. */
3157 SvPV_set(sv, (char*)recoded);
3158 SvCUR_set(sv, len - 1);
3159 SvLEN_set(sv, len); /* No longer know the real size. */
3163 /* Mark as UTF-8 even if no hibit - saves scanning loop */
3170 =for apidoc sv_utf8_downgrade
3172 Attempts to convert the PV of an SV from characters to bytes.
3173 If the PV contains a character beyond byte, this conversion will fail;
3174 in this case, either returns false or, if C<fail_ok> is not
3177 This is not as a general purpose Unicode to byte encoding interface:
3178 use the Encode extension for that.
3184 Perl_sv_utf8_downgrade(pTHX_ register SV* sv, bool fail_ok)
3188 PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE;
3190 if (SvPOKp(sv) && SvUTF8(sv)) {
3196 sv_force_normal_flags(sv, 0);
3198 s = (U8 *) SvPV(sv, len);
3199 if (!utf8_to_bytes(s, &len)) {
3204 Perl_croak(aTHX_ "Wide character in %s",
3207 Perl_croak(aTHX_ "Wide character");
3218 =for apidoc sv_utf8_encode
3220 Converts the PV of an SV to UTF-8, but then turns the C<SvUTF8>
3221 flag off so that it looks like octets again.
3227 Perl_sv_utf8_encode(pTHX_ register SV *sv)
3229 PERL_ARGS_ASSERT_SV_UTF8_ENCODE;
3232 sv_force_normal_flags(sv, 0);
3234 if (SvREADONLY(sv)) {
3235 Perl_croak(aTHX_ PL_no_modify);
3237 (void) sv_utf8_upgrade(sv);
3242 =for apidoc sv_utf8_decode
3244 If the PV of the SV is an octet sequence in UTF-8
3245 and contains a multiple-byte character, the C<SvUTF8> flag is turned on
3246 so that it looks like a character. If the PV contains only single-byte
3247 characters, the C<SvUTF8> flag stays being off.
3248 Scans PV for validity and returns false if the PV is invalid UTF-8.
3254 Perl_sv_utf8_decode(pTHX_ register SV *sv)
3256 PERL_ARGS_ASSERT_SV_UTF8_DECODE;
3262 /* The octets may have got themselves encoded - get them back as
3265 if (!sv_utf8_downgrade(sv, TRUE))
3268 /* it is actually just a matter of turning the utf8 flag on, but
3269 * we want to make sure everything inside is valid utf8 first.
3271 c = (const U8 *) SvPVX_const(sv);
3272 if (!is_utf8_string(c, SvCUR(sv)+1))
3274 e = (const U8 *) SvEND(sv);
3277 if (!UTF8_IS_INVARIANT(ch)) {
3287 =for apidoc sv_setsv
3289 Copies the contents of the source SV C<ssv> into the destination SV
3290 C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
3291 function if the source SV needs to be reused. Does not handle 'set' magic.
3292 Loosely speaking, it performs a copy-by-value, obliterating any previous
3293 content of the destination.
3295 You probably want to use one of the assortment of wrappers, such as
3296 C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
3297 C<SvSetMagicSV_nosteal>.
3299 =for apidoc sv_setsv_flags
3301 Copies the contents of the source SV C<ssv> into the destination SV
3302 C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
3303 function if the source SV needs to be reused. Does not handle 'set' magic.
3304 Loosely speaking, it performs a copy-by-value, obliterating any previous
3305 content of the destination.
3306 If the C<flags> parameter has the C<SV_GMAGIC> bit set, will C<mg_get> on
3307 C<ssv> if appropriate, else not. If the C<flags> parameter has the
3308 C<NOSTEAL> bit set then the buffers of temps will not be stolen. <sv_setsv>
3309 and C<sv_setsv_nomg> are implemented in terms of this function.
3311 You probably want to use one of the assortment of wrappers, such as
3312 C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
3313 C<SvSetMagicSV_nosteal>.
3315 This is the primary function for copying scalars, and most other
3316 copy-ish functions and macros use this underneath.
3322 S_glob_assign_glob(pTHX_ SV *dstr, SV *sstr, const int dtype)
3324 I32 mro_changes = 0; /* 1 = method, 2 = isa */
3326 PERL_ARGS_ASSERT_GLOB_ASSIGN_GLOB;
3328 if (dtype != SVt_PVGV) {
3329 const char * const name = GvNAME(sstr);
3330 const STRLEN len = GvNAMELEN(sstr);
3332 if (dtype >= SVt_PV) {
3338 SvUPGRADE(dstr, SVt_PVGV);
3339 (void)SvOK_off(dstr);
3340 /* FIXME - why are we doing this, then turning it off and on again
3342 isGV_with_GP_on(dstr);
3344 GvSTASH(dstr) = GvSTASH(sstr);
3346 Perl_sv_add_backref(aTHX_ (SV*)GvSTASH(dstr), dstr);
3347 gv_name_set((GV *)dstr, name, len, GV_ADD);
3348 SvFAKE_on(dstr); /* can coerce to non-glob */
3351 #ifdef GV_UNIQUE_CHECK
3352 if (GvUNIQUE((GV*)dstr)) {
3353 Perl_croak(aTHX_ PL_no_modify);
3357 if(GvGP((GV*)sstr)) {
3358 /* If source has method cache entry, clear it */
3360 SvREFCNT_dec(GvCV(sstr));
3364 /* If source has a real method, then a method is
3366 else if(GvCV((GV*)sstr)) {
3371 /* If dest already had a real method, that's a change as well */
3372 if(!mro_changes && GvGP((GV*)dstr) && GvCVu((GV*)dstr)) {
3376 if(strEQ(GvNAME((GV*)dstr),"ISA"))
3380 isGV_with_GP_off(dstr);
3381 (void)SvOK_off(dstr);
3382 isGV_with_GP_on(dstr);
3383 GvINTRO_off(dstr); /* one-shot flag */
3384 GvGP(dstr) = gp_ref(GvGP(sstr));
3385 if (SvTAINTED(sstr))
3387 if (GvIMPORTED(dstr) != GVf_IMPORTED
3388 && CopSTASH_ne(PL_curcop, GvSTASH(dstr)))
3390 GvIMPORTED_on(dstr);
3393 if(mro_changes == 2) mro_isa_changed_in(GvSTASH(dstr));
3394 else if(mro_changes) mro_method_changed_in(GvSTASH(dstr));
3399 S_glob_assign_ref(pTHX_ SV *dstr, SV *sstr)
3401 SV * const sref = SvREFCNT_inc(SvRV(sstr));
3403 const int intro = GvINTRO(dstr);
3406 const U32 stype = SvTYPE(sref);
3408 PERL_ARGS_ASSERT_GLOB_ASSIGN_REF;
3410 #ifdef GV_UNIQUE_CHECK
3411 if (GvUNIQUE((GV*)dstr)) {
3412 Perl_croak(aTHX_ PL_no_modify);
3417 GvINTRO_off(dstr); /* one-shot flag */
3418 GvLINE(dstr) = CopLINE(PL_curcop);
3419 GvEGV(dstr) = (GV*)dstr;
3424 location = (SV **) &GvCV(dstr);
3425 import_flag = GVf_IMPORTED_CV;
3428 location = (SV **) &GvHV(dstr);
3429 import_flag = GVf_IMPORTED_HV;
3432 location = (SV **) &GvAV(dstr);
3433 import_flag = GVf_IMPORTED_AV;
3436 location = (SV **) &GvIOp(dstr);
3439 location = (SV **) &GvFORM(dstr);
3441 location = &GvSV(dstr);
3442 import_flag = GVf_IMPORTED_SV;
3445 if (stype == SVt_PVCV) {
3446 /*if (GvCVGEN(dstr) && (GvCV(dstr) != (CV*)sref || GvCVGEN(dstr))) {*/
3447 if (GvCVGEN(dstr)) {
3448 SvREFCNT_dec(GvCV(dstr));
3450 GvCVGEN(dstr) = 0; /* Switch off cacheness. */
3453 SAVEGENERICSV(*location);
3457 if (stype == SVt_PVCV && (*location != sref || GvCVGEN(dstr))) {
3458 CV* const cv = (CV*)*location;
3460 if (!GvCVGEN((GV*)dstr) &&
3461 (CvROOT(cv) || CvXSUB(cv)))
3463 /* Redefining a sub - warning is mandatory if
3464 it was a const and its value changed. */
3465 if (CvCONST(cv) && CvCONST((CV*)sref)
3466 && cv_const_sv(cv) == cv_const_sv((CV*)sref)) {
3468 /* They are 2 constant subroutines generated from
3469 the same constant. This probably means that
3470 they are really the "same" proxy subroutine
3471 instantiated in 2 places. Most likely this is
3472 when a constant is exported twice. Don't warn.
3475 else if (ckWARN(WARN_REDEFINE)
3477 && (!CvCONST((CV*)sref)
3478 || sv_cmp(cv_const_sv(cv),
3479 cv_const_sv((CV*)sref))))) {
3480 Perl_warner(aTHX_ packWARN(WARN_REDEFINE),
3483 ? "Constant subroutine %s::%s redefined"
3484 : "Subroutine %s::%s redefined"),
3485 HvNAME_get(GvSTASH((GV*)dstr)),
3486 GvENAME((GV*)dstr));
3490 cv_ckproto_len(cv, (GV*)dstr,
3491 SvPOK(sref) ? SvPVX_const(sref) : NULL,
3492 SvPOK(sref) ? SvCUR(sref) : 0);
3494 GvCVGEN(dstr) = 0; /* Switch off cacheness. */
3495 GvASSUMECV_on(dstr);
3496 if(GvSTASH(dstr)) mro_method_changed_in(GvSTASH(dstr)); /* sub foo { 1 } sub bar { 2 } *bar = \&foo */
3499 if (import_flag && !(GvFLAGS(dstr) & import_flag)
3500 && CopSTASH_ne(PL_curcop, GvSTASH(dstr))) {
3501 GvFLAGS(dstr) |= import_flag;
3506 if (SvTAINTED(sstr))
3512 Perl_sv_setsv_flags(pTHX_ SV *dstr, register SV *sstr, I32 flags)
3515 register U32 sflags;
3517 register svtype stype;
3519 PERL_ARGS_ASSERT_SV_SETSV_FLAGS;
3524 if (SvIS_FREED(dstr)) {
3525 Perl_croak(aTHX_ "panic: attempt to copy value %" SVf
3526 " to a freed scalar %p", SVfARG(sstr), (void *)dstr);
3528 SV_CHECK_THINKFIRST_COW_DROP(dstr);
3530 sstr = &PL_sv_undef;
3531 if (SvIS_FREED(sstr)) {
3532 Perl_croak(aTHX_ "panic: attempt to copy freed scalar %p to %p",
3533 (void*)sstr, (void*)dstr);
3535 stype = SvTYPE(sstr);
3536 dtype = SvTYPE(dstr);
3538 (void)SvAMAGIC_off(dstr);
3541 /* need to nuke the magic */
3543 SvRMAGICAL_off(dstr);
3546 /* There's a lot of redundancy below but we're going for speed here */
3551 if (dtype != SVt_PVGV) {
3552 (void)SvOK_off(dstr);
3560 sv_upgrade(dstr, SVt_IV);
3564 sv_upgrade(dstr, SVt_PVIV);
3567 goto end_of_first_switch;
3569 (void)SvIOK_only(dstr);
3570 SvIV_set(dstr, SvIVX(sstr));
3573 /* SvTAINTED can only be true if the SV has taint magic, which in
3574 turn means that the SV type is PVMG (or greater). This is the
3575 case statement for SVt_IV, so this cannot be true (whatever gcov
3577 assert(!SvTAINTED(sstr));
3582 if (dtype < SVt_PV && dtype != SVt_IV)
3583 sv_upgrade(dstr, SVt_IV);
3591 sv_upgrade(dstr, SVt_NV);
3595 sv_upgrade(dstr, SVt_PVNV);
3598 goto end_of_first_switch;
3600 SvNV_set(dstr, SvNVX(sstr));
3601 (void)SvNOK_only(dstr);
3602 /* SvTAINTED can only be true if the SV has taint magic, which in
3603 turn means that the SV type is PVMG (or greater). This is the
3604 case statement for SVt_NV, so this cannot be true (whatever gcov
3606 assert(!SvTAINTED(sstr));
3612 #ifdef PERL_OLD_COPY_ON_WRITE
3613 if ((SvFLAGS(sstr) & CAN_COW_MASK) == CAN_COW_FLAGS) {
3614 if (dtype < SVt_PVIV)
3615 sv_upgrade(dstr, SVt_PVIV);
3623 sv_upgrade(dstr, SVt_PV);
3626 if (dtype < SVt_PVIV)
3627 sv_upgrade(dstr, SVt_PVIV);
3630 if (dtype < SVt_PVNV)
3631 sv_upgrade(dstr, SVt_PVNV);
3635 const char * const type = sv_reftype(sstr,0);
3637 Perl_croak(aTHX_ "Bizarre copy of %s in %s", type, OP_NAME(PL_op));
3639 Perl_croak(aTHX_ "Bizarre copy of %s", type);
3643 /* case SVt_BIND: */
3646 if (isGV_with_GP(sstr) && dtype <= SVt_PVGV) {
3647 glob_assign_glob(dstr, sstr, dtype);
3650 /* SvVALID means that this PVGV is playing at being an FBM. */
3654 if (SvGMAGICAL(sstr) && (flags & SV_GMAGIC)) {
3656 if (SvTYPE(sstr) != stype) {
3657 stype = SvTYPE(sstr);
3658 if (isGV_with_GP(sstr) && stype == SVt_PVGV && dtype <= SVt_PVGV) {
3659 glob_assign_glob(dstr, sstr, dtype);
3664 if (stype == SVt_PVLV)
3665 SvUPGRADE(dstr, SVt_PVNV);
3667 SvUPGRADE(dstr, (svtype)stype);
3669 end_of_first_switch:
3671 /* dstr may have been upgraded. */
3672 dtype = SvTYPE(dstr);
3673 sflags = SvFLAGS(sstr);
3675 if (dtype == SVt_PVCV || dtype == SVt_PVFM) {
3676 /* Assigning to a subroutine sets the prototype. */
3679 const char *const ptr = SvPV_const(sstr, len);
3681 SvGROW(dstr, len + 1);
3682 Copy(ptr, SvPVX(dstr), len + 1, char);
3683 SvCUR_set(dstr, len);
3685 SvFLAGS(dstr) |= sflags & SVf_UTF8;
3689 } else if (dtype == SVt_PVAV || dtype == SVt_PVHV) {
3690 const char * const type = sv_reftype(dstr,0);
3692 Perl_croak(aTHX_ "Cannot copy to %s in %s", type, OP_NAME(PL_op));
3694 Perl_croak(aTHX_ "Cannot copy to %s", type);
3695 } else if (sflags & SVf_ROK) {
3696 if (isGV_with_GP(dstr) && dtype == SVt_PVGV
3697 && SvTYPE(SvRV(sstr)) == SVt_PVGV) {
3700 if (GvIMPORTED(dstr) != GVf_IMPORTED
3701 && CopSTASH_ne(PL_curcop, GvSTASH(dstr)))
3703 GvIMPORTED_on(dstr);
3708 glob_assign_glob(dstr, sstr, dtype);
3712 if (dtype >= SVt_PV) {
3713 if (dtype == SVt_PVGV && isGV_with_GP(dstr)) {
3714 glob_assign_ref(dstr, sstr);
3717 if (SvPVX_const(dstr)) {
3723 (void)SvOK_off(dstr);
3724 SvRV_set(dstr, SvREFCNT_inc(SvRV(sstr)));
3725 SvFLAGS(dstr) |= sflags & SVf_ROK;
3726 assert(!(sflags & SVp_NOK));
3727 assert(!(sflags & SVp_IOK));
3728 assert(!(sflags & SVf_NOK));
3729 assert(!(sflags & SVf_IOK));
3731 else if (dtype == SVt_PVGV && isGV_with_GP(dstr)) {
3732 if (!(sflags & SVf_OK)) {
3733 if (ckWARN(WARN_MISC))
3734 Perl_warner(aTHX_ packWARN(WARN_MISC),
3735 "Undefined value assigned to typeglob");
3738 GV *gv = gv_fetchsv(sstr, GV_ADD, SVt_PVGV);
3739 if (dstr != (SV*)gv) {
3742 GvGP(dstr) = gp_ref(GvGP(gv));
3746 else if (sflags & SVp_POK) {
3750 * Check to see if we can just swipe the string. If so, it's a
3751 * possible small lose on short strings, but a big win on long ones.
3752 * It might even be a win on short strings if SvPVX_const(dstr)
3753 * has to be allocated and SvPVX_const(sstr) has to be freed.
3754 * Likewise if we can set up COW rather than doing an actual copy, we
3755 * drop to the else clause, as the swipe code and the COW setup code
3756 * have much in common.
3759 /* Whichever path we take through the next code, we want this true,
3760 and doing it now facilitates the COW check. */
3761 (void)SvPOK_only(dstr);
3764 /* If we're already COW then this clause is not true, and if COW
3765 is allowed then we drop down to the else and make dest COW
3766 with us. If caller hasn't said that we're allowed to COW
3767 shared hash keys then we don't do the COW setup, even if the
3768 source scalar is a shared hash key scalar. */
3769 (((flags & SV_COW_SHARED_HASH_KEYS)
3770 ? (sflags & (SVf_FAKE|SVf_READONLY)) != (SVf_FAKE|SVf_READONLY)
3771 : 1 /* If making a COW copy is forbidden then the behaviour we
3772 desire is as if the source SV isn't actually already
3773 COW, even if it is. So we act as if the source flags
3774 are not COW, rather than actually testing them. */
3776 #ifndef PERL_OLD_COPY_ON_WRITE
3777 /* The change that added SV_COW_SHARED_HASH_KEYS makes the logic
3778 when PERL_OLD_COPY_ON_WRITE is defined a little wrong.
3779 Conceptually PERL_OLD_COPY_ON_WRITE being defined should
3780 override SV_COW_SHARED_HASH_KEYS, because it means "always COW"
3781 but in turn, it's somewhat dead code, never expected to go
3782 live, but more kept as a placeholder on how to do it better
3783 in a newer implementation. */
3784 /* If we are COW and dstr is a suitable target then we drop down
3785 into the else and make dest a COW of us. */
3786 || (SvFLAGS(dstr) & CAN_COW_MASK) != CAN_COW_FLAGS
3791 (sflags & SVs_TEMP) && /* slated for free anyway? */
3792 !(sflags & SVf_OOK) && /* and not involved in OOK hack? */
3793 (!(flags & SV_NOSTEAL)) &&
3794 /* and we're allowed to steal temps */
3795 SvREFCNT(sstr) == 1 && /* and no other references to it? */
3796 SvLEN(sstr) && /* and really is a string */
3797 /* and won't be needed again, potentially */
3798 !(PL_op && PL_op->op_type == OP_AASSIGN))
3799 #ifdef PERL_OLD_COPY_ON_WRITE
3800 && ((flags & SV_COW_SHARED_HASH_KEYS)
3801 ? (!((sflags & CAN_COW_MASK) == CAN_COW_FLAGS
3802 && (SvFLAGS(dstr) & CAN_COW_MASK) == CAN_COW_FLAGS
3803 && SvTYPE(sstr) >= SVt_PVIV))
3807 /* Failed the swipe test, and it's not a shared hash key either.
3808 Have to copy the string. */
3809 STRLEN len = SvCUR(sstr);
3810 SvGROW(dstr, len + 1); /* inlined from sv_setpvn */
3811 Move(SvPVX_const(sstr),SvPVX(dstr),len,char);
3812 SvCUR_set(dstr, len);
3813 *SvEND(dstr) = '\0';
3815 /* If PERL_OLD_COPY_ON_WRITE is not defined, then isSwipe will always
3817 /* Either it's a shared hash key, or it's suitable for
3818 copy-on-write or we can swipe the string. */
3820 PerlIO_printf(Perl_debug_log, "Copy on write: sstr --> dstr\n");
3824 #ifdef PERL_OLD_COPY_ON_WRITE
3826 /* I believe I should acquire a global SV mutex if
3827 it's a COW sv (not a shared hash key) to stop
3828 it going un copy-on-write.
3829 If the source SV has gone un copy on write between up there
3830 and down here, then (assert() that) it is of the correct
3831 form to make it copy on write again */
3832 if ((sflags & (SVf_FAKE | SVf_READONLY))
3833 != (SVf_FAKE | SVf_READONLY)) {
3834 SvREADONLY_on(sstr);
3836 /* Make the source SV into a loop of 1.
3837 (about to become 2) */
3838 SV_COW_NEXT_SV_SET(sstr, sstr);
3842 /* Initial code is common. */
3843 if (SvPVX_const(dstr)) { /* we know that dtype >= SVt_PV */
3848 /* making another shared SV. */
3849 STRLEN cur = SvCUR(sstr);
3850 STRLEN len = SvLEN(sstr);
3851 #ifdef PERL_OLD_COPY_ON_WRITE
3853 assert (SvTYPE(dstr) >= SVt_PVIV);
3854 /* SvIsCOW_normal */
3855 /* splice us in between source and next-after-source. */
3856 SV_COW_NEXT_SV_SET(dstr, SV_COW_NEXT_SV(sstr));
3857 SV_COW_NEXT_SV_SET(sstr, dstr);
3858 SvPV_set(dstr, SvPVX_mutable(sstr));
3862 /* SvIsCOW_shared_hash */
3863 DEBUG_C(PerlIO_printf(Perl_debug_log,
3864 "Copy on write: Sharing hash\n"));
3866 assert (SvTYPE(dstr) >= SVt_PV);
3868 HEK_KEY(share_hek_hek(SvSHARED_HEK_FROM_PV(SvPVX_const(sstr)))));
3870 SvLEN_set(dstr, len);
3871 SvCUR_set(dstr, cur);
3872 SvREADONLY_on(dstr);
3874 /* Relesase a global SV mutex. */
3877 { /* Passes the swipe test. */
3878 SvPV_set(dstr, SvPVX_mutable(sstr));
3879 SvLEN_set(dstr, SvLEN(sstr));
3880 SvCUR_set(dstr, SvCUR(sstr));
3883 (void)SvOK_off(sstr); /* NOTE: nukes most SvFLAGS on sstr */
3884 SvPV_set(sstr, NULL);
3890 if (sflags & SVp_NOK) {
3891 SvNV_set(dstr, SvNVX(sstr));
3893 if (sflags & SVp_IOK) {
3894 SvIV_set(dstr, SvIVX(sstr));
3895 /* Must do this otherwise some other overloaded use of 0x80000000
3896 gets confused. I guess SVpbm_VALID */
3897 if (sflags & SVf_IVisUV)
3900 SvFLAGS(dstr) |= sflags & (SVf_IOK|SVp_IOK|SVf_NOK|SVp_NOK|SVf_UTF8);
3902 const MAGIC * const smg = SvVSTRING_mg(sstr);
3904 sv_magic(dstr, NULL, PERL_MAGIC_vstring,
3905 smg->mg_ptr, smg->mg_len);
3906 SvRMAGICAL_on(dstr);
3910 else if (sflags & (SVp_IOK|SVp_NOK)) {
3911 (void)SvOK_off(dstr);
3912 SvFLAGS(dstr) |= sflags & (SVf_IOK|SVp_IOK|SVf_IVisUV|SVf_NOK|SVp_NOK);
3913 if (sflags & SVp_IOK) {
3914 /* XXXX Do we want to set IsUV for IV(ROK)? Be extra safe... */
3915 SvIV_set(dstr, SvIVX(sstr));
3917 if (sflags & SVp_NOK) {
3918 SvNV_set(dstr, SvNVX(sstr));
3922 if (isGV_with_GP(sstr)) {
3923 /* This stringification rule for globs is spread in 3 places.
3924 This feels bad. FIXME. */
3925 const U32 wasfake = sflags & SVf_FAKE;
3927 /* FAKE globs can get coerced, so need to turn this off
3928 temporarily if it is on. */
3930 gv_efullname3(dstr, (GV *)sstr, "*");
3931 SvFLAGS(sstr) |= wasfake;
3934 (void)SvOK_off(dstr);
3936 if (SvTAINTED(sstr))
3941 =for apidoc sv_setsv_mg
3943 Like C<sv_setsv>, but also handles 'set' magic.
3949 Perl_sv_setsv_mg(pTHX_ SV *dstr, register SV *sstr)
3951 PERL_ARGS_ASSERT_SV_SETSV_MG;
3953 sv_setsv(dstr,sstr);
3957 #ifdef PERL_OLD_COPY_ON_WRITE
3959 Perl_sv_setsv_cow(pTHX_ SV *dstr, SV *sstr)
3961 STRLEN cur = SvCUR(sstr);
3962 STRLEN len = SvLEN(sstr);
3963 register char *new_pv;
3965 PERL_ARGS_ASSERT_SV_SETSV_COW;
3968 PerlIO_printf(Perl_debug_log, "Fast copy on write: %p -> %p\n",
3969 (void*)sstr, (void*)dstr);
3976 if (SvTHINKFIRST(dstr))
3977 sv_force_normal_flags(dstr, SV_COW_DROP_PV);
3978 else if (SvPVX_const(dstr))
3979 Safefree(SvPVX_const(dstr));
3983 SvUPGRADE(dstr, SVt_PVIV);
3985 assert (SvPOK(sstr));
3986 assert (SvPOKp(sstr));
3987 assert (!SvIOK(sstr));
3988 assert (!SvIOKp(sstr));
3989 assert (!SvNOK(sstr));
3990 assert (!SvNOKp(sstr));
3992 if (SvIsCOW(sstr)) {
3994 if (SvLEN(sstr) == 0) {
3995 /* source is a COW shared hash key. */
3996 DEBUG_C(PerlIO_printf(Perl_debug_log,
3997 "Fast copy on write: Sharing hash\n"));
3998 new_pv = HEK_KEY(share_hek_hek(SvSHARED_HEK_FROM_PV(SvPVX_const(sstr))));
4001 SV_COW_NEXT_SV_SET(dstr, SV_COW_NEXT_SV(sstr));
4003 assert ((SvFLAGS(sstr) & CAN_COW_MASK) == CAN_COW_FLAGS);
4004 SvUPGRADE(sstr, SVt_PVIV);
4005 SvREADONLY_on(sstr);
4007 DEBUG_C(PerlIO_printf(Perl_debug_log,
4008 "Fast copy on write: Converting sstr to COW\n"));
4009 SV_COW_NEXT_SV_SET(dstr, sstr);
4011 SV_COW_NEXT_SV_SET(sstr, dstr);
4012 new_pv = SvPVX_mutable(sstr);
4015 SvPV_set(dstr, new_pv);
4016 SvFLAGS(dstr) = (SVt_PVIV|SVf_POK|SVp_POK|SVf_FAKE|SVf_READONLY);
4019 SvLEN_set(dstr, len);
4020 SvCUR_set(dstr, cur);
4029 =for apidoc sv_setpvn
4031 Copies a string into an SV. The C<len> parameter indicates the number of
4032 bytes to be copied. If the C<ptr> argument is NULL the SV will become
4033 undefined. Does not handle 'set' magic. See C<sv_setpvn_mg>.
4039 Perl_sv_setpvn(pTHX_ register SV *sv, register const char *ptr, register STRLEN len)
4042 register char *dptr;
4044 PERL_ARGS_ASSERT_SV_SETPVN;
4046 SV_CHECK_THINKFIRST_COW_DROP(sv);
4052 /* len is STRLEN which is unsigned, need to copy to signed */
4055 Perl_croak(aTHX_ "panic: sv_setpvn called with negative strlen");
4057 SvUPGRADE(sv, SVt_PV);
4059 dptr = SvGROW(sv, len + 1);
4060 Move(ptr,dptr,len,char);
4063 (void)SvPOK_only_UTF8(sv); /* validate pointer */
4068 =for apidoc sv_setpvn_mg
4070 Like C<sv_setpvn>, but also handles 'set' magic.
4076 Perl_sv_setpvn_mg(pTHX_ register SV *sv, register const char *ptr, register STRLEN len)
4078 PERL_ARGS_ASSERT_SV_SETPVN_MG;
4080 sv_setpvn(sv,ptr,len);
4085 =for apidoc sv_setpv
4087 Copies a string into an SV. The string must be null-terminated. Does not
4088 handle 'set' magic. See C<sv_setpv_mg>.
4094 Perl_sv_setpv(pTHX_ register SV *sv, register const char *ptr)
4097 register STRLEN len;
4099 PERL_ARGS_ASSERT_SV_SETPV;
4101 SV_CHECK_THINKFIRST_COW_DROP(sv);
4107 SvUPGRADE(sv, SVt_PV);
4109 SvGROW(sv, len + 1);
4110 Move(ptr,SvPVX(sv),len+1,char);
4112 (void)SvPOK_only_UTF8(sv); /* validate pointer */
4117 =for apidoc sv_setpv_mg
4119 Like C<sv_setpv>, but also handles 'set' magic.
4125 Perl_sv_setpv_mg(pTHX_ register SV *sv, register const char *ptr)
4127 PERL_ARGS_ASSERT_SV_SETPV_MG;
4134 =for apidoc sv_usepvn_flags
4136 Tells an SV to use C<ptr> to find its string value. Normally the
4137 string is stored inside the SV but sv_usepvn allows the SV to use an
4138 outside string. The C<ptr> should point to memory that was allocated
4139 by C<malloc>. The string length, C<len>, must be supplied. By default
4140 this function will realloc (i.e. move) the memory pointed to by C<ptr>,
4141 so that pointer should not be freed or used by the programmer after
4142 giving it to sv_usepvn, and neither should any pointers from "behind"
4143 that pointer (e.g. ptr + 1) be used.
4145 If C<flags> & SV_SMAGIC is true, will call SvSETMAGIC. If C<flags> &
4146 SV_HAS_TRAILING_NUL is true, then C<ptr[len]> must be NUL, and the realloc
4147 will be skipped. (i.e. the buffer is actually at least 1 byte longer than
4148 C<len>, and already meets the requirements for storing in C<SvPVX>)
4154 Perl_sv_usepvn_flags(pTHX_ SV *sv, char *ptr, STRLEN len, U32 flags)
4159 PERL_ARGS_ASSERT_SV_USEPVN_FLAGS;
4161 SV_CHECK_THINKFIRST_COW_DROP(sv);
4162 SvUPGRADE(sv, SVt_PV);
4165 if (flags & SV_SMAGIC)
4169 if (SvPVX_const(sv))
4173 if (flags & SV_HAS_TRAILING_NUL)
4174 assert(ptr[len] == '\0');
4177 allocate = (flags & SV_HAS_TRAILING_NUL)
4182 PERL_STRLEN_ROUNDUP(len + 1);
4184 if (flags & SV_HAS_TRAILING_NUL) {
4185 /* It's long enough - do nothing.
4186 Specfically Perl_newCONSTSUB is relying on this. */
4189 /* Force a move to shake out bugs in callers. */
4190 char *new_ptr = (char*)safemalloc(allocate);
4191 Copy(ptr, new_ptr, len, char);
4192 PoisonFree(ptr,len,char);
4196 ptr = (char*) saferealloc (ptr, allocate);
4200 SvLEN_set(sv, malloced_size(ptr));
4202 SvLEN_set(sv, allocate);
4206 if (!(flags & SV_HAS_TRAILING_NUL)) {
4209 (void)SvPOK_only_UTF8(sv); /* validate pointer */
4211 if (flags & SV_SMAGIC)
4215 #ifdef PERL_OLD_COPY_ON_WRITE
4216 /* Need to do this *after* making the SV normal, as we need the buffer
4217 pointer to remain valid until after we've copied it. If we let go too early,
4218 another thread could invalidate it by unsharing last of the same hash key
4219 (which it can do by means other than releasing copy-on-write Svs)
4220 or by changing the other copy-on-write SVs in the loop. */
4222 S_sv_release_COW(pTHX_ register SV *sv, const char *pvx, SV *after)
4224 PERL_ARGS_ASSERT_SV_RELEASE_COW;
4226 { /* this SV was SvIsCOW_normal(sv) */
4227 /* we need to find the SV pointing to us. */
4228 SV *current = SV_COW_NEXT_SV(after);
4230 if (current == sv) {
4231 /* The SV we point to points back to us (there were only two of us
4233 Hence other SV is no longer copy on write either. */
4235 SvREADONLY_off(after);
4237 /* We need to follow the pointers around the loop. */
4239 while ((next = SV_COW_NEXT_SV(current)) != sv) {
4242 /* don't loop forever if the structure is bust, and we have
4243 a pointer into a closed loop. */
4244 assert (current != after);
4245 assert (SvPVX_const(current) == pvx);
4247 /* Make the SV before us point to the SV after us. */
4248 SV_COW_NEXT_SV_SET(current, after);
4254 =for apidoc sv_force_normal_flags
4256 Undo various types of fakery on an SV: if the PV is a shared string, make
4257 a private copy; if we're a ref, stop refing; if we're a glob, downgrade to
4258 an xpvmg; if we're a copy-on-write scalar, this is the on-write time when
4259 we do the copy, and is also used locally. If C<SV_COW_DROP_PV> is set
4260 then a copy-on-write scalar drops its PV buffer (if any) and becomes
4261 SvPOK_off rather than making a copy. (Used where this scalar is about to be
4262 set to some other value.) In addition, the C<flags> parameter gets passed to
4263 C<sv_unref_flags()> when unrefing. C<sv_force_normal> calls this function
4264 with flags set to 0.
4270 Perl_sv_force_normal_flags(pTHX_ register SV *sv, U32 flags)
4274 PERL_ARGS_ASSERT_SV_FORCE_NORMAL_FLAGS;
4276 #ifdef PERL_OLD_COPY_ON_WRITE
4277 if (SvREADONLY(sv)) {
4278 /* At this point I believe I should acquire a global SV mutex. */
4280 const char * const pvx = SvPVX_const(sv);
4281 const STRLEN len = SvLEN(sv);
4282 const STRLEN cur = SvCUR(sv);
4283 /* next COW sv in the loop. If len is 0 then this is a shared-hash
4284 key scalar, so we mustn't attempt to call SV_COW_NEXT_SV(), as
4285 we'll fail an assertion. */
4286 SV * const next = len ? SV_COW_NEXT_SV(sv) : 0;
4289 PerlIO_printf(Perl_debug_log,
4290 "Copy on write: Force normal %ld\n",
4296 /* This SV doesn't own the buffer, so need to Newx() a new one: */
4299 if (flags & SV_COW_DROP_PV) {
4300 /* OK, so we don't need to copy our buffer. */
4303 SvGROW(sv, cur + 1);
4304 Move(pvx,SvPVX(sv),cur,char);
4309 sv_release_COW(sv, pvx, next);
4311 unshare_hek(SvSHARED_HEK_FROM_PV(pvx));
4317 else if (IN_PERL_RUNTIME)
4318 Perl_croak(aTHX_ PL_no_modify);
4319 /* At this point I believe that I can drop the global SV mutex. */
4322 if (SvREADONLY(sv)) {
4324 const char * const pvx = SvPVX_const(sv);
4325 const STRLEN len = SvCUR(sv);
4330 SvGROW(sv, len + 1);
4331 Move(pvx,SvPVX(sv),len,char);
4333 unshare_hek(SvSHARED_HEK_FROM_PV(pvx));
4335 else if (IN_PERL_RUNTIME)
4336 Perl_croak(aTHX_ PL_no_modify);
4340 sv_unref_flags(sv, flags);
4341 else if (SvFAKE(sv) && SvTYPE(sv) == SVt_PVGV)
4348 Efficient removal of characters from the beginning of the string buffer.
4349 SvPOK(sv) must be true and the C<ptr> must be a pointer to somewhere inside
4350 the string buffer. The C<ptr> becomes the first character of the adjusted
4351 string. Uses the "OOK hack".
4352 Beware: after this function returns, C<ptr> and SvPVX_const(sv) may no longer
4353 refer to the same chunk of data.
4359 Perl_sv_chop(pTHX_ register SV *sv, register const char *ptr)
4365 const U8 *real_start;
4368 PERL_ARGS_ASSERT_SV_CHOP;
4370 if (!ptr || !SvPOKp(sv))
4372 delta = ptr - SvPVX_const(sv);
4374 /* Nothing to do. */
4377 assert(ptr > SvPVX_const(sv));
4378 SV_CHECK_THINKFIRST(sv);
4381 if (!SvLEN(sv)) { /* make copy of shared string */
4382 const char *pvx = SvPVX_const(sv);
4383 const STRLEN len = SvCUR(sv);
4384 SvGROW(sv, len + 1);
4385 Move(pvx,SvPVX(sv),len,char);
4388 SvFLAGS(sv) |= SVf_OOK;
4391 SvOOK_offset(sv, old_delta);
4393 SvLEN_set(sv, SvLEN(sv) - delta);
4394 SvCUR_set(sv, SvCUR(sv) - delta);
4395 SvPV_set(sv, SvPVX(sv) + delta);
4397 p = (U8 *)SvPVX_const(sv);
4402 real_start = p - delta;
4406 if (delta < 0x100) {
4410 p -= sizeof(STRLEN);
4411 Copy((U8*)&delta, p, sizeof(STRLEN), U8);
4415 /* Fill the preceding buffer with sentinals to verify that no-one is
4417 while (p > real_start) {
4425 =for apidoc sv_catpvn
4427 Concatenates the string onto the end of the string which is in the SV. The
4428 C<len> indicates number of bytes to copy. If the SV has the UTF-8
4429 status set, then the bytes appended should be valid UTF-8.
4430 Handles 'get' magic, but not 'set' magic. See C<sv_catpvn_mg>.
4432 =for apidoc sv_catpvn_flags
4434 Concatenates the string onto the end of the string which is in the SV. The
4435 C<len> indicates number of bytes to copy. If the SV has the UTF-8
4436 status set, then the bytes appended should be valid UTF-8.
4437 If C<flags> has C<SV_GMAGIC> bit set, will C<mg_get> on C<dsv> if
4438 appropriate, else not. C<sv_catpvn> and C<sv_catpvn_nomg> are implemented
4439 in terms of this function.
4445 Perl_sv_catpvn_flags(pTHX_ register SV *dsv, register const char *sstr, register STRLEN slen, I32 flags)
4449 const char * const dstr = SvPV_force_flags(dsv, dlen, flags);
4451 PERL_ARGS_ASSERT_SV_CATPVN_FLAGS;
4453 SvGROW(dsv, dlen + slen + 1);
4455 sstr = SvPVX_const(dsv);
4456 Move(sstr, SvPVX(dsv) + dlen, slen, char);
4457 SvCUR_set(dsv, SvCUR(dsv) + slen);
4459 (void)SvPOK_only_UTF8(dsv); /* validate pointer */
4461 if (flags & SV_SMAGIC)
4466 =for apidoc sv_catsv
4468 Concatenates the string from SV C<ssv> onto the end of the string in
4469 SV C<dsv>. Modifies C<dsv> but not C<ssv>. Handles 'get' magic, but
4470 not 'set' magic. See C<sv_catsv_mg>.
4472 =for apidoc sv_catsv_flags
4474 Concatenates the string from SV C<ssv> onto the end of the string in
4475 SV C<dsv>. Modifies C<dsv> but not C<ssv>. If C<flags> has C<SV_GMAGIC>
4476 bit set, will C<mg_get> on the SVs if appropriate, else not. C<sv_catsv>
4477 and C<sv_catsv_nomg> are implemented in terms of this function.
4482 Perl_sv_catsv_flags(pTHX_ SV *dsv, register SV *ssv, I32 flags)
4486 PERL_ARGS_ASSERT_SV_CATSV_FLAGS;
4490 const char *spv = SvPV_const(ssv, slen);
4492 /* sutf8 and dutf8 were type bool, but under USE_ITHREADS,
4493 gcc version 2.95.2 20000220 (Debian GNU/Linux) for
4494 Linux xxx 2.2.17 on sparc64 with gcc -O2, we erroneously
4495 get dutf8 = 0x20000000, (i.e. SVf_UTF8) even though
4496 dsv->sv_flags doesn't have that bit set.
4497 Andy Dougherty 12 Oct 2001
4499 const I32 sutf8 = DO_UTF8(ssv);
4502 if (SvGMAGICAL(dsv) && (flags & SV_GMAGIC))
4504 dutf8 = DO_UTF8(dsv);
4506 if (dutf8 != sutf8) {
4508 /* Not modifying source SV, so taking a temporary copy. */
4509 SV* const csv = newSVpvn_flags(spv, slen, SVs_TEMP);
4511 sv_utf8_upgrade(csv);
4512 spv = SvPV_const(csv, slen);
4515 sv_utf8_upgrade_nomg(dsv);
4517 sv_catpvn_nomg(dsv, spv, slen);
4520 if (flags & SV_SMAGIC)
4525 =for apidoc sv_catpv
4527 Concatenates the string onto the end of the string which is in the SV.
4528 If the SV has the UTF-8 status set, then the bytes appended should be
4529 valid UTF-8. Handles 'get' magic, but not 'set' magic. See C<sv_catpv_mg>.
4534 Perl_sv_catpv(pTHX_ register SV *sv, register const char *ptr)
4537 register STRLEN len;
4541 PERL_ARGS_ASSERT_SV_CATPV;
4545 junk = SvPV_force(sv, tlen);
4547 SvGROW(sv, tlen + len + 1);
4549 ptr = SvPVX_const(sv);
4550 Move(ptr,SvPVX(sv)+tlen,len+1,char);
4551 SvCUR_set(sv, SvCUR(sv) + len);
4552 (void)SvPOK_only_UTF8(sv); /* validate pointer */
4557 =for apidoc sv_catpv_mg
4559 Like C<sv_catpv>, but also handles 'set' magic.
4565 Perl_sv_catpv_mg(pTHX_ register SV *sv, register const char *ptr)
4567 PERL_ARGS_ASSERT_SV_CATPV_MG;
4576 Creates a new SV. A non-zero C<len> parameter indicates the number of
4577 bytes of preallocated string space the SV should have. An extra byte for a
4578 trailing NUL is also reserved. (SvPOK is not set for the SV even if string
4579 space is allocated.) The reference count for the new SV is set to 1.
4581 In 5.9.3, newSV() replaces the older NEWSV() API, and drops the first
4582 parameter, I<x>, a debug aid which allowed callers to identify themselves.
4583 This aid has been superseded by a new build option, PERL_MEM_LOG (see
4584 L<perlhack/PERL_MEM_LOG>). The older API is still there for use in XS
4585 modules supporting older perls.
4591 Perl_newSV(pTHX_ STRLEN len)
4598 sv_upgrade(sv, SVt_PV);
4599 SvGROW(sv, len + 1);
4604 =for apidoc sv_magicext
4606 Adds magic to an SV, upgrading it if necessary. Applies the
4607 supplied vtable and returns a pointer to the magic added.
4609 Note that C<sv_magicext> will allow things that C<sv_magic> will not.
4610 In particular, you can add magic to SvREADONLY SVs, and add more than
4611 one instance of the same 'how'.
4613 If C<namlen> is greater than zero then a C<savepvn> I<copy> of C<name> is
4614 stored, if C<namlen> is zero then C<name> is stored as-is and - as another
4615 special case - if C<(name && namlen == HEf_SVKEY)> then C<name> is assumed
4616 to contain an C<SV*> and is stored as-is with its REFCNT incremented.
4618 (This is now used as a subroutine by C<sv_magic>.)
4623 Perl_sv_magicext(pTHX_ SV* sv, SV* obj, int how, const MGVTBL *vtable,
4624 const char* name, I32 namlen)
4629 PERL_ARGS_ASSERT_SV_MAGICEXT;
4631 SvUPGRADE(sv, SVt_PVMG);
4632 Newxz(mg, 1, MAGIC);
4633 mg->mg_moremagic = SvMAGIC(sv);
4634 SvMAGIC_set(sv, mg);
4636 /* Sometimes a magic contains a reference loop, where the sv and
4637 object refer to each other. To prevent a reference loop that
4638 would prevent such objects being freed, we look for such loops
4639 and if we find one we avoid incrementing the object refcount.
4641 Note we cannot do this to avoid self-tie loops as intervening RV must
4642 have its REFCNT incremented to keep it in existence.
4645 if (!obj || obj == sv ||
4646 how == PERL_MAGIC_arylen ||
4647 how == PERL_MAGIC_symtab ||
4648 (SvTYPE(obj) == SVt_PVGV &&
4649 (GvSV(obj) == sv || GvHV(obj) == (HV*)sv || GvAV(obj) == (AV*)sv ||
4650 GvCV(obj) == (CV*)sv || GvIOp(obj) == (IO*)sv ||
4651 GvFORM(obj) == (CV*)sv)))
4656 mg->mg_obj = SvREFCNT_inc_simple(obj);
4657 mg->mg_flags |= MGf_REFCOUNTED;
4660 /* Normal self-ties simply pass a null object, and instead of
4661 using mg_obj directly, use the SvTIED_obj macro to produce a
4662 new RV as needed. For glob "self-ties", we are tieing the PVIO
4663 with an RV obj pointing to the glob containing the PVIO. In
4664 this case, to avoid a reference loop, we need to weaken the
4668 if (how == PERL_MAGIC_tiedscalar && SvTYPE(sv) == SVt_PVIO &&
4669 obj && SvROK(obj) && GvIO(SvRV(obj)) == (IO*)sv)
4675 mg->mg_len = namlen;
4678 mg->mg_ptr = savepvn(name, namlen);
4679 else if (namlen == HEf_SVKEY)
4680 mg->mg_ptr = (char*)SvREFCNT_inc_simple_NN((SV*)name);
4682 mg->mg_ptr = (char *) name;
4684 mg->mg_virtual = (MGVTBL *) vtable;
4688 SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK|SVf_POK);
4693 =for apidoc sv_magic
4695 Adds magic to an SV. First upgrades C<sv> to type C<SVt_PVMG> if necessary,
4696 then adds a new magic item of type C<how> to the head of the magic list.
4698 See C<sv_magicext> (which C<sv_magic> now calls) for a description of the
4699 handling of the C<name> and C<namlen> arguments.
4701 You need to use C<sv_magicext> to add magic to SvREADONLY SVs and also
4702 to add more than one instance of the same 'how'.
4708 Perl_sv_magic(pTHX_ register SV *sv, SV *obj, int how, const char *name, I32 namlen)
4711 const MGVTBL *vtable;
4714 PERL_ARGS_ASSERT_SV_MAGIC;
4716 #ifdef PERL_OLD_COPY_ON_WRITE
4718 sv_force_normal_flags(sv, 0);
4720 if (SvREADONLY(sv)) {
4722 /* its okay to attach magic to shared strings; the subsequent
4723 * upgrade to PVMG will unshare the string */
4724 !(SvFAKE(sv) && SvTYPE(sv) < SVt_PVMG)
4727 && how != PERL_MAGIC_regex_global
4728 && how != PERL_MAGIC_bm
4729 && how != PERL_MAGIC_fm
4730 && how != PERL_MAGIC_sv
4731 && how != PERL_MAGIC_backref
4734 Perl_croak(aTHX_ PL_no_modify);
4737 if (SvMAGICAL(sv) || (how == PERL_MAGIC_taint && SvTYPE(sv) >= SVt_PVMG)) {
4738 if (SvMAGIC(sv) && (mg = mg_find(sv, how))) {
4739 /* sv_magic() refuses to add a magic of the same 'how' as an
4742 if (how == PERL_MAGIC_taint) {
4744 /* Any scalar which already had taint magic on which someone
4745 (erroneously?) did SvIOK_on() or similar will now be
4746 incorrectly sporting public "OK" flags. */
4747 SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK|SVf_POK);
4755 vtable = &PL_vtbl_sv;
4757 case PERL_MAGIC_overload:
4758 vtable = &PL_vtbl_amagic;
4760 case PERL_MAGIC_overload_elem:
4761 vtable = &PL_vtbl_amagicelem;
4763 case PERL_MAGIC_overload_table:
4764 vtable = &PL_vtbl_ovrld;
4767 vtable = &PL_vtbl_bm;
4769 case PERL_MAGIC_regdata:
4770 vtable = &PL_vtbl_regdata;
4772 case PERL_MAGIC_regdatum:
4773 vtable = &PL_vtbl_regdatum;
4775 case PERL_MAGIC_env:
4776 vtable = &PL_vtbl_env;
4779 vtable = &PL_vtbl_fm;
4781 case PERL_MAGIC_envelem:
4782 vtable = &PL_vtbl_envelem;
4784 case PERL_MAGIC_regex_global: