3 * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
4 * 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by Larry Wall
7 * You may distribute under the terms of either the GNU General Public
8 * License or the Artistic License, as specified in the README file.
13 * 'I wonder what the Entish is for "yes" and "no",' he thought.
16 * [p.480 of _The Lord of the Rings_, III/iv: "Treebeard"]
22 * This file contains the code that creates, manipulates and destroys
23 * scalar values (SVs). The other types (AV, HV, GV, etc.) reuse the
24 * structure of an SV, so their creation and destruction is handled
25 * here; higher-level functions are in av.c, hv.c, and so on. Opcode
26 * level functions (eg. substr, split, join) for each of the types are
38 /* Missing proto on LynxOS */
39 char *gconvert(double, int, int, char *);
42 #ifdef PERL_UTF8_CACHE_ASSERT
43 /* if adding more checks watch out for the following tests:
44 * t/op/index.t t/op/length.t t/op/pat.t t/op/substr.t
45 * lib/utf8.t lib/Unicode/Collate/t/index.t
48 # define ASSERT_UTF8_CACHE(cache) \
49 STMT_START { if (cache) { assert((cache)[0] <= (cache)[1]); \
50 assert((cache)[2] <= (cache)[3]); \
51 assert((cache)[3] <= (cache)[1]);} \
54 # define ASSERT_UTF8_CACHE(cache) NOOP
57 #ifdef PERL_OLD_COPY_ON_WRITE
58 #define SV_COW_NEXT_SV(sv) INT2PTR(SV *,SvUVX(sv))
59 #define SV_COW_NEXT_SV_SET(current,next) SvUV_set(current, PTR2UV(next))
60 /* This is a pessimistic view. Scalar must be purely a read-write PV to copy-
64 /* ============================================================================
66 =head1 Allocation and deallocation of SVs.
68 An SV (or AV, HV, etc.) is allocated in two parts: the head (struct
69 sv, av, hv...) contains type and reference count information, and for
70 many types, a pointer to the body (struct xrv, xpv, xpviv...), which
71 contains fields specific to each type. Some types store all they need
72 in the head, so don't have a body.
74 In all but the most memory-paranoid configuations (ex: PURIFY), heads
75 and bodies are allocated out of arenas, which by default are
76 approximately 4K chunks of memory parcelled up into N heads or bodies.
77 Sv-bodies are allocated by their sv-type, guaranteeing size
78 consistency needed to allocate safely from arrays.
80 For SV-heads, the first slot in each arena is reserved, and holds a
81 link to the next arena, some flags, and a note of the number of slots.
82 Snaked through each arena chain is a linked list of free items; when
83 this becomes empty, an extra arena is allocated and divided up into N
84 items which are threaded into the free list.
86 SV-bodies are similar, but they use arena-sets by default, which
87 separate the link and info from the arena itself, and reclaim the 1st
88 slot in the arena. SV-bodies are further described later.
90 The following global variables are associated with arenas:
92 PL_sv_arenaroot pointer to list of SV arenas
93 PL_sv_root pointer to list of free SV structures
95 PL_body_arenas head of linked-list of body arenas
96 PL_body_roots[] array of pointers to list of free bodies of svtype
97 arrays are indexed by the svtype needed
99 A few special SV heads are not allocated from an arena, but are
100 instead directly created in the interpreter structure, eg PL_sv_undef.
101 The size of arenas can be changed from the default by setting
102 PERL_ARENA_SIZE appropriately at compile time.
104 The SV arena serves the secondary purpose of allowing still-live SVs
105 to be located and destroyed during final cleanup.
107 At the lowest level, the macros new_SV() and del_SV() grab and free
108 an SV head. (If debugging with -DD, del_SV() calls the function S_del_sv()
109 to return the SV to the free list with error checking.) new_SV() calls
110 more_sv() / sv_add_arena() to add an extra arena if the free list is empty.
111 SVs in the free list have their SvTYPE field set to all ones.
113 At the time of very final cleanup, sv_free_arenas() is called from
114 perl_destruct() to physically free all the arenas allocated since the
115 start of the interpreter.
117 The function visit() scans the SV arenas list, and calls a specified
118 function for each SV it finds which is still live - ie which has an SvTYPE
119 other than all 1's, and a non-zero SvREFCNT. visit() is used by the
120 following functions (specified as [function that calls visit()] / [function
121 called by visit() for each SV]):
123 sv_report_used() / do_report_used()
124 dump all remaining SVs (debugging aid)
126 sv_clean_objs() / do_clean_objs(),do_clean_named_objs()
127 Attempt to free all objects pointed to by RVs,
128 and, unless DISABLE_DESTRUCTOR_KLUDGE is defined,
129 try to do the same for all objects indirectly
130 referenced by typeglobs too. Called once from
131 perl_destruct(), prior to calling sv_clean_all()
134 sv_clean_all() / do_clean_all()
135 SvREFCNT_dec(sv) each remaining SV, possibly
136 triggering an sv_free(). It also sets the
137 SVf_BREAK flag on the SV to indicate that the
138 refcnt has been artificially lowered, and thus
139 stopping sv_free() from giving spurious warnings
140 about SVs which unexpectedly have a refcnt
141 of zero. called repeatedly from perl_destruct()
142 until there are no SVs left.
144 =head2 Arena allocator API Summary
146 Private API to rest of sv.c
150 new_XPVNV(), del_XPVGV(),
155 sv_report_used(), sv_clean_objs(), sv_clean_all(), sv_free_arenas()
159 * ========================================================================= */
162 * "A time to plant, and a time to uproot what was planted..."
166 # define MEM_LOG_NEW_SV(sv, file, line, func) \
167 Perl_mem_log_new_sv(sv, file, line, func)
168 # define MEM_LOG_DEL_SV(sv, file, line, func) \
169 Perl_mem_log_del_sv(sv, file, line, func)
171 # define MEM_LOG_NEW_SV(sv, file, line, func) NOOP
172 # define MEM_LOG_DEL_SV(sv, file, line, func) NOOP
175 #ifdef DEBUG_LEAKING_SCALARS
176 # define FREE_SV_DEBUG_FILE(sv) Safefree((sv)->sv_debug_file)
177 # define DEBUG_SV_SERIAL(sv) \
178 DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) del_SV\n", \
179 PTR2UV(sv), (long)(sv)->sv_debug_serial))
181 # define FREE_SV_DEBUG_FILE(sv)
182 # define DEBUG_SV_SERIAL(sv) NOOP
186 # define SvARENA_CHAIN(sv) ((sv)->sv_u.svu_rv)
187 # define SvARENA_CHAIN_SET(sv,val) (sv)->sv_u.svu_rv = MUTABLE_SV((val))
188 /* Whilst I'd love to do this, it seems that things like to check on
190 # define POSION_SV_HEAD(sv) PoisonNew(sv, 1, struct STRUCT_SV)
192 # define POSION_SV_HEAD(sv) PoisonNew(&SvANY(sv), 1, void *), \
193 PoisonNew(&SvREFCNT(sv), 1, U32)
195 # define SvARENA_CHAIN(sv) SvANY(sv)
196 # define SvARENA_CHAIN_SET(sv,val) SvANY(sv) = (void *)(val)
197 # define POSION_SV_HEAD(sv)
200 /* Mark an SV head as unused, and add to free list.
202 * If SVf_BREAK is set, skip adding it to the free list, as this SV had
203 * its refcount artificially decremented during global destruction, so
204 * there may be dangling pointers to it. The last thing we want in that
205 * case is for it to be reused. */
207 #define plant_SV(p) \
209 const U32 old_flags = SvFLAGS(p); \
210 MEM_LOG_DEL_SV(p, __FILE__, __LINE__, FUNCTION__); \
211 DEBUG_SV_SERIAL(p); \
212 FREE_SV_DEBUG_FILE(p); \
214 SvFLAGS(p) = SVTYPEMASK; \
215 if (!(old_flags & SVf_BREAK)) { \
216 SvARENA_CHAIN_SET(p, PL_sv_root); \
222 #define uproot_SV(p) \
225 PL_sv_root = MUTABLE_SV(SvARENA_CHAIN(p)); \
230 /* make some more SVs by adding another arena */
237 char *chunk; /* must use New here to match call to */
238 Newx(chunk,PERL_ARENA_SIZE,char); /* Safefree() in sv_free_arenas() */
239 sv_add_arena(chunk, PERL_ARENA_SIZE, 0);
244 /* new_SV(): return a new, empty SV head */
246 #ifdef DEBUG_LEAKING_SCALARS
247 /* provide a real function for a debugger to play with */
249 S_new_SV(pTHX_ const char *file, int line, const char *func)
256 sv = S_more_sv(aTHX);
260 sv->sv_debug_optype = PL_op ? PL_op->op_type : 0;
261 sv->sv_debug_line = (U16) (PL_parser && PL_parser->copline != NOLINE
267 sv->sv_debug_inpad = 0;
268 sv->sv_debug_parent = NULL;
269 sv->sv_debug_file = PL_curcop ? savepv(CopFILE(PL_curcop)): NULL;
271 sv->sv_debug_serial = PL_sv_serial++;
273 MEM_LOG_NEW_SV(sv, file, line, func);
274 DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) new_SV (from %s:%d [%s])\n",
275 PTR2UV(sv), (long)sv->sv_debug_serial, file, line, func));
279 # define new_SV(p) (p)=S_new_SV(aTHX_ __FILE__, __LINE__, FUNCTION__)
287 (p) = S_more_sv(aTHX); \
291 MEM_LOG_NEW_SV(p, __FILE__, __LINE__, FUNCTION__); \
296 /* del_SV(): return an empty SV head to the free list */
309 S_del_sv(pTHX_ SV *p)
313 PERL_ARGS_ASSERT_DEL_SV;
318 for (sva = PL_sv_arenaroot; sva; sva = MUTABLE_SV(SvANY(sva))) {
319 const SV * const sv = sva + 1;
320 const SV * const svend = &sva[SvREFCNT(sva)];
321 if (p >= sv && p < svend) {
327 Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL),
328 "Attempt to free non-arena SV: 0x%"UVxf
329 pTHX__FORMAT, PTR2UV(p) pTHX__VALUE);
336 #else /* ! DEBUGGING */
338 #define del_SV(p) plant_SV(p)
340 #endif /* DEBUGGING */
344 =head1 SV Manipulation Functions
346 =for apidoc sv_add_arena
348 Given a chunk of memory, link it to the head of the list of arenas,
349 and split it into a list of free SVs.
355 S_sv_add_arena(pTHX_ char *const ptr, const U32 size, const U32 flags)
358 SV *const sva = MUTABLE_SV(ptr);
362 PERL_ARGS_ASSERT_SV_ADD_ARENA;
364 /* The first SV in an arena isn't an SV. */
365 SvANY(sva) = (void *) PL_sv_arenaroot; /* ptr to next arena */
366 SvREFCNT(sva) = size / sizeof(SV); /* number of SV slots */
367 SvFLAGS(sva) = flags; /* FAKE if not to be freed */
369 PL_sv_arenaroot = sva;
370 PL_sv_root = sva + 1;
372 svend = &sva[SvREFCNT(sva) - 1];
375 SvARENA_CHAIN_SET(sv, (sv + 1));
379 /* Must always set typemask because it's always checked in on cleanup
380 when the arenas are walked looking for objects. */
381 SvFLAGS(sv) = SVTYPEMASK;
384 SvARENA_CHAIN_SET(sv, 0);
388 SvFLAGS(sv) = SVTYPEMASK;
391 /* visit(): call the named function for each non-free SV in the arenas
392 * whose flags field matches the flags/mask args. */
395 S_visit(pTHX_ SVFUNC_t f, const U32 flags, const U32 mask)
401 PERL_ARGS_ASSERT_VISIT;
403 for (sva = PL_sv_arenaroot; sva; sva = MUTABLE_SV(SvANY(sva))) {
404 register const SV * const svend = &sva[SvREFCNT(sva)];
406 for (sv = sva + 1; sv < svend; ++sv) {
407 if (SvTYPE(sv) != SVTYPEMASK
408 && (sv->sv_flags & mask) == flags
421 /* called by sv_report_used() for each live SV */
424 do_report_used(pTHX_ SV *const sv)
426 if (SvTYPE(sv) != SVTYPEMASK) {
427 PerlIO_printf(Perl_debug_log, "****\n");
434 =for apidoc sv_report_used
436 Dump the contents of all SVs not yet freed. (Debugging aid).
442 Perl_sv_report_used(pTHX)
445 visit(do_report_used, 0, 0);
451 /* called by sv_clean_objs() for each live SV */
454 do_clean_objs(pTHX_ SV *const ref)
459 SV * const target = SvRV(ref);
460 if (SvOBJECT(target)) {
461 DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning object ref:\n "), sv_dump(ref)));
462 if (SvWEAKREF(ref)) {
463 sv_del_backref(target, ref);
469 SvREFCNT_dec(target);
474 /* XXX Might want to check arrays, etc. */
477 /* called by sv_clean_objs() for each live SV */
479 #ifndef DISABLE_DESTRUCTOR_KLUDGE
481 do_clean_named_objs(pTHX_ SV *const sv)
485 assert(SvTYPE(sv) == SVt_PVGV);
486 assert(isGV_with_GP(sv));
490 /* freeing GP entries may indirectly free the current GV;
491 * hold onto it while we mess with the GP slots */
494 if ( ((obj = GvSV(sv) )) && SvOBJECT(obj)) {
495 DEBUG_D((PerlIO_printf(Perl_debug_log,
496 "Cleaning named glob SV object:\n "), sv_dump(obj)));
500 if ( ((obj = MUTABLE_SV(GvAV(sv)) )) && SvOBJECT(obj)) {
501 DEBUG_D((PerlIO_printf(Perl_debug_log,
502 "Cleaning named glob AV object:\n "), sv_dump(obj)));
506 if ( ((obj = MUTABLE_SV(GvHV(sv)) )) && SvOBJECT(obj)) {
507 DEBUG_D((PerlIO_printf(Perl_debug_log,
508 "Cleaning named glob HV object:\n "), sv_dump(obj)));
512 if ( ((obj = MUTABLE_SV(GvCV(sv)) )) && SvOBJECT(obj)) {
513 DEBUG_D((PerlIO_printf(Perl_debug_log,
514 "Cleaning named glob CV object:\n "), sv_dump(obj)));
518 if ( ((obj = MUTABLE_SV(GvIO(sv)) )) && SvOBJECT(obj)) {
519 DEBUG_D((PerlIO_printf(Perl_debug_log,
520 "Cleaning named glob IO object:\n "), sv_dump(obj)));
524 SvREFCNT_dec(sv); /* undo the inc above */
529 =for apidoc sv_clean_objs
531 Attempt to destroy all objects not yet freed
537 Perl_sv_clean_objs(pTHX)
540 PL_in_clean_objs = TRUE;
541 visit(do_clean_objs, SVf_ROK, SVf_ROK);
542 #ifndef DISABLE_DESTRUCTOR_KLUDGE
543 /* some barnacles may yet remain, clinging to typeglobs */
544 visit(do_clean_named_objs, SVt_PVGV|SVpgv_GP, SVTYPEMASK|SVp_POK|SVpgv_GP);
546 PL_in_clean_objs = FALSE;
549 /* called by sv_clean_all() for each live SV */
552 do_clean_all(pTHX_ SV *const sv)
555 if (sv == (const SV *) PL_fdpid || sv == (const SV *)PL_strtab) {
556 /* don't clean pid table and strtab */
559 DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning loops: SV at 0x%"UVxf"\n", PTR2UV(sv)) ));
560 SvFLAGS(sv) |= SVf_BREAK;
565 =for apidoc sv_clean_all
567 Decrement the refcnt of each remaining SV, possibly triggering a
568 cleanup. This function may have to be called multiple times to free
569 SVs which are in complex self-referential hierarchies.
575 Perl_sv_clean_all(pTHX)
579 PL_in_clean_all = TRUE;
580 cleaned = visit(do_clean_all, 0,0);
585 ARENASETS: a meta-arena implementation which separates arena-info
586 into struct arena_set, which contains an array of struct
587 arena_descs, each holding info for a single arena. By separating
588 the meta-info from the arena, we recover the 1st slot, formerly
589 borrowed for list management. The arena_set is about the size of an
590 arena, avoiding the needless malloc overhead of a naive linked-list.
592 The cost is 1 arena-set malloc per ~320 arena-mallocs, + the unused
593 memory in the last arena-set (1/2 on average). In trade, we get
594 back the 1st slot in each arena (ie 1.7% of a CV-arena, less for
595 smaller types). The recovery of the wasted space allows use of
596 small arenas for large, rare body types, by changing array* fields
597 in body_details_by_type[] below.
600 char *arena; /* the raw storage, allocated aligned */
601 size_t size; /* its size ~4k typ */
602 svtype utype; /* bodytype stored in arena */
607 /* Get the maximum number of elements in set[] such that struct arena_set
608 will fit within PERL_ARENA_SIZE, which is probably just under 4K, and
609 therefore likely to be 1 aligned memory page. */
611 #define ARENAS_PER_SET ((PERL_ARENA_SIZE - sizeof(struct arena_set*) \
612 - 2 * sizeof(int)) / sizeof (struct arena_desc))
615 struct arena_set* next;
616 unsigned int set_size; /* ie ARENAS_PER_SET */
617 unsigned int curr; /* index of next available arena-desc */
618 struct arena_desc set[ARENAS_PER_SET];
622 =for apidoc sv_free_arenas
624 Deallocate the memory used by all arenas. Note that all the individual SV
625 heads and bodies within the arenas must already have been freed.
630 Perl_sv_free_arenas(pTHX)
637 /* Free arenas here, but be careful about fake ones. (We assume
638 contiguity of the fake ones with the corresponding real ones.) */
640 for (sva = PL_sv_arenaroot; sva; sva = svanext) {
641 svanext = MUTABLE_SV(SvANY(sva));
642 while (svanext && SvFAKE(svanext))
643 svanext = MUTABLE_SV(SvANY(svanext));
650 struct arena_set *aroot = (struct arena_set*) PL_body_arenas;
653 struct arena_set *current = aroot;
656 assert(aroot->set[i].arena);
657 Safefree(aroot->set[i].arena);
665 i = PERL_ARENA_ROOTS_SIZE;
667 PL_body_roots[i] = 0;
674 Here are mid-level routines that manage the allocation of bodies out
675 of the various arenas. There are 5 kinds of arenas:
677 1. SV-head arenas, which are discussed and handled above
678 2. regular body arenas
679 3. arenas for reduced-size bodies
682 Arena types 2 & 3 are chained by body-type off an array of
683 arena-root pointers, which is indexed by svtype. Some of the
684 larger/less used body types are malloced singly, since a large
685 unused block of them is wasteful. Also, several svtypes dont have
686 bodies; the data fits into the sv-head itself. The arena-root
687 pointer thus has a few unused root-pointers (which may be hijacked
688 later for arena types 4,5)
690 3 differs from 2 as an optimization; some body types have several
691 unused fields in the front of the structure (which are kept in-place
692 for consistency). These bodies can be allocated in smaller chunks,
693 because the leading fields arent accessed. Pointers to such bodies
694 are decremented to point at the unused 'ghost' memory, knowing that
695 the pointers are used with offsets to the real memory.
698 =head1 SV-Body Allocation
700 Allocation of SV-bodies is similar to SV-heads, differing as follows;
701 the allocation mechanism is used for many body types, so is somewhat
702 more complicated, it uses arena-sets, and has no need for still-live
705 At the outermost level, (new|del)_X*V macros return bodies of the
706 appropriate type. These macros call either (new|del)_body_type or
707 (new|del)_body_allocated macro pairs, depending on specifics of the
708 type. Most body types use the former pair, the latter pair is used to
709 allocate body types with "ghost fields".
711 "ghost fields" are fields that are unused in certain types, and
712 consequently don't need to actually exist. They are declared because
713 they're part of a "base type", which allows use of functions as
714 methods. The simplest examples are AVs and HVs, 2 aggregate types
715 which don't use the fields which support SCALAR semantics.
717 For these types, the arenas are carved up into appropriately sized
718 chunks, we thus avoid wasted memory for those unaccessed members.
719 When bodies are allocated, we adjust the pointer back in memory by the
720 size of the part not allocated, so it's as if we allocated the full
721 structure. (But things will all go boom if you write to the part that
722 is "not there", because you'll be overwriting the last members of the
723 preceding structure in memory.)
725 We calculate the correction using the STRUCT_OFFSET macro on the first
726 member present. If the allocated structure is smaller (no initial NV
727 actually allocated) then the net effect is to subtract the size of the NV
728 from the pointer, to return a new pointer as if an initial NV were actually
729 allocated. (We were using structures named *_allocated for this, but
730 this turned out to be a subtle bug, because a structure without an NV
731 could have a lower alignment constraint, but the compiler is allowed to
732 optimised accesses based on the alignment constraint of the actual pointer
733 to the full structure, for example, using a single 64 bit load instruction
734 because it "knows" that two adjacent 32 bit members will be 8-byte aligned.)
736 This is the same trick as was used for NV and IV bodies. Ironically it
737 doesn't need to be used for NV bodies any more, because NV is now at
738 the start of the structure. IV bodies don't need it either, because
739 they are no longer allocated.
741 In turn, the new_body_* allocators call S_new_body(), which invokes
742 new_body_inline macro, which takes a lock, and takes a body off the
743 linked list at PL_body_roots[sv_type], calling Perl_more_bodies() if
744 necessary to refresh an empty list. Then the lock is released, and
745 the body is returned.
747 Perl_more_bodies allocates a new arena, and carves it up into an array of N
748 bodies, which it strings into a linked list. It looks up arena-size
749 and body-size from the body_details table described below, thus
750 supporting the multiple body-types.
752 If PURIFY is defined, or PERL_ARENA_SIZE=0, arenas are not used, and
753 the (new|del)_X*V macros are mapped directly to malloc/free.
755 For each sv-type, struct body_details bodies_by_type[] carries
756 parameters which control these aspects of SV handling:
758 Arena_size determines whether arenas are used for this body type, and if
759 so, how big they are. PURIFY or PERL_ARENA_SIZE=0 set this field to
760 zero, forcing individual mallocs and frees.
762 Body_size determines how big a body is, and therefore how many fit into
763 each arena. Offset carries the body-pointer adjustment needed for
764 "ghost fields", and is used in *_allocated macros.
766 But its main purpose is to parameterize info needed in
767 Perl_sv_upgrade(). The info here dramatically simplifies the function
768 vs the implementation in 5.8.8, making it table-driven. All fields
769 are used for this, except for arena_size.
771 For the sv-types that have no bodies, arenas are not used, so those
772 PL_body_roots[sv_type] are unused, and can be overloaded. In
773 something of a special case, SVt_NULL is borrowed for HE arenas;
774 PL_body_roots[HE_SVSLOT=SVt_NULL] is filled by S_more_he, but the
775 bodies_by_type[SVt_NULL] slot is not used, as the table is not
780 struct body_details {
781 U8 body_size; /* Size to allocate */
782 U8 copy; /* Size of structure to copy (may be shorter) */
784 unsigned int type : 4; /* We have space for a sanity check. */
785 unsigned int cant_upgrade : 1; /* Cannot upgrade this type */
786 unsigned int zero_nv : 1; /* zero the NV when upgrading from this */
787 unsigned int arena : 1; /* Allocated from an arena */
788 size_t arena_size; /* Size of arena to allocate */
796 /* With -DPURFIY we allocate everything directly, and don't use arenas.
797 This seems a rather elegant way to simplify some of the code below. */
798 #define HASARENA FALSE
800 #define HASARENA TRUE
802 #define NOARENA FALSE
804 /* Size the arenas to exactly fit a given number of bodies. A count
805 of 0 fits the max number bodies into a PERL_ARENA_SIZE.block,
806 simplifying the default. If count > 0, the arena is sized to fit
807 only that many bodies, allowing arenas to be used for large, rare
808 bodies (XPVFM, XPVIO) without undue waste. The arena size is
809 limited by PERL_ARENA_SIZE, so we can safely oversize the
812 #define FIT_ARENA0(body_size) \
813 ((size_t)(PERL_ARENA_SIZE / body_size) * body_size)
814 #define FIT_ARENAn(count,body_size) \
815 ( count * body_size <= PERL_ARENA_SIZE) \
816 ? count * body_size \
817 : FIT_ARENA0 (body_size)
818 #define FIT_ARENA(count,body_size) \
820 ? FIT_ARENAn (count, body_size) \
821 : FIT_ARENA0 (body_size)
823 /* Calculate the length to copy. Specifically work out the length less any
824 final padding the compiler needed to add. See the comment in sv_upgrade
825 for why copying the padding proved to be a bug. */
827 #define copy_length(type, last_member) \
828 STRUCT_OFFSET(type, last_member) \
829 + sizeof (((type*)SvANY((const SV *)0))->last_member)
831 static const struct body_details bodies_by_type[] = {
832 /* HEs use this offset for their arena. */
833 { 0, 0, 0, SVt_NULL, FALSE, NONV, NOARENA, 0 },
835 /* The bind placeholder pretends to be an RV for now.
836 Also it's marked as "can't upgrade" to stop anyone using it before it's
838 { 0, 0, 0, SVt_BIND, TRUE, NONV, NOARENA, 0 },
840 /* IVs are in the head, so the allocation size is 0. */
842 sizeof(IV), /* This is used to copy out the IV body. */
843 STRUCT_OFFSET(XPVIV, xiv_iv), SVt_IV, FALSE, NONV,
844 NOARENA /* IVS don't need an arena */, 0
847 /* 8 bytes on most ILP32 with IEEE doubles */
848 { sizeof(NV), sizeof(NV),
849 STRUCT_OFFSET(XPVNV, xnv_u),
850 SVt_NV, FALSE, HADNV, HASARENA, FIT_ARENA(0, sizeof(NV)) },
852 /* 8 bytes on most ILP32 with IEEE doubles */
853 { sizeof(XPV) - STRUCT_OFFSET(XPV, xpv_cur),
854 copy_length(XPV, xpv_len) - STRUCT_OFFSET(XPV, xpv_cur),
855 + STRUCT_OFFSET(XPV, xpv_cur),
856 SVt_PV, FALSE, NONV, HASARENA,
857 FIT_ARENA(0, sizeof(XPV) - STRUCT_OFFSET(XPV, xpv_cur)) },
860 { sizeof(XPVIV) - STRUCT_OFFSET(XPV, xpv_cur),
861 copy_length(XPVIV, xiv_u) - STRUCT_OFFSET(XPV, xpv_cur),
862 + STRUCT_OFFSET(XPV, xpv_cur),
863 SVt_PVIV, FALSE, NONV, HASARENA,
864 FIT_ARENA(0, sizeof(XPVIV) - STRUCT_OFFSET(XPV, xpv_cur)) },
867 { sizeof(XPVNV) - STRUCT_OFFSET(XPV, xpv_cur),
868 copy_length(XPVNV, xnv_u) - STRUCT_OFFSET(XPV, xpv_cur),
869 + STRUCT_OFFSET(XPV, xpv_cur),
870 SVt_PVNV, FALSE, HADNV, HASARENA,
871 FIT_ARENA(0, sizeof(XPVNV) - STRUCT_OFFSET(XPV, xpv_cur)) },
874 { sizeof(XPVMG), copy_length(XPVMG, xnv_u), 0, SVt_PVMG, FALSE, HADNV,
875 HASARENA, FIT_ARENA(0, sizeof(XPVMG)) },
881 SVt_REGEXP, FALSE, NONV, HASARENA,
882 FIT_ARENA(0, sizeof(regexp))
886 { sizeof(XPVGV), sizeof(XPVGV), 0, SVt_PVGV, TRUE, HADNV,
887 HASARENA, FIT_ARENA(0, sizeof(XPVGV)) },
890 { sizeof(XPVLV), sizeof(XPVLV), 0, SVt_PVLV, TRUE, HADNV,
891 HASARENA, FIT_ARENA(0, sizeof(XPVLV)) },
894 copy_length(XPVAV, xav_alloc),
896 SVt_PVAV, TRUE, NONV, HASARENA,
897 FIT_ARENA(0, sizeof(XPVAV)) },
900 copy_length(XPVHV, xhv_max),
902 SVt_PVHV, TRUE, NONV, HASARENA,
903 FIT_ARENA(0, sizeof(XPVHV)) },
909 SVt_PVCV, TRUE, NONV, HASARENA,
910 FIT_ARENA(0, sizeof(XPVCV)) },
915 SVt_PVFM, TRUE, NONV, NOARENA,
916 FIT_ARENA(20, sizeof(XPVFM)) },
918 /* XPVIO is 84 bytes, fits 48x */
922 SVt_PVIO, TRUE, NONV, HASARENA,
923 FIT_ARENA(24, sizeof(XPVIO)) },
926 #define new_body_allocated(sv_type) \
927 (void *)((char *)S_new_body(aTHX_ sv_type) \
928 - bodies_by_type[sv_type].offset)
930 /* return a thing to the free list */
932 #define del_body(thing, root) \
934 void ** const thing_copy = (void **)thing; \
935 *thing_copy = *root; \
936 *root = (void*)thing_copy; \
941 #define new_XNV() safemalloc(sizeof(XPVNV))
942 #define new_XPVNV() safemalloc(sizeof(XPVNV))
943 #define new_XPVMG() safemalloc(sizeof(XPVMG))
945 #define del_XPVGV(p) safefree(p)
949 #define new_XNV() new_body_allocated(SVt_NV)
950 #define new_XPVNV() new_body_allocated(SVt_PVNV)
951 #define new_XPVMG() new_body_allocated(SVt_PVMG)
953 #define del_XPVGV(p) del_body(p + bodies_by_type[SVt_PVGV].offset, \
954 &PL_body_roots[SVt_PVGV])
958 /* no arena for you! */
960 #define new_NOARENA(details) \
961 safemalloc((details)->body_size + (details)->offset)
962 #define new_NOARENAZ(details) \
963 safecalloc((details)->body_size + (details)->offset, 1)
966 Perl_more_bodies (pTHX_ const svtype sv_type, const size_t body_size,
967 const size_t arena_size)
970 void ** const root = &PL_body_roots[sv_type];
971 struct arena_desc *adesc;
972 struct arena_set *aroot = (struct arena_set *) PL_body_arenas;
976 const size_t good_arena_size = Perl_malloc_good_size(arena_size);
977 #if defined(DEBUGGING) && !defined(PERL_GLOBAL_STRUCT_PRIVATE)
978 static bool done_sanity_check;
980 /* PERL_GLOBAL_STRUCT_PRIVATE cannot coexist with global
981 * variables like done_sanity_check. */
982 if (!done_sanity_check) {
983 unsigned int i = SVt_LAST;
985 done_sanity_check = TRUE;
988 assert (bodies_by_type[i].type == i);
994 /* may need new arena-set to hold new arena */
995 if (!aroot || aroot->curr >= aroot->set_size) {
996 struct arena_set *newroot;
997 Newxz(newroot, 1, struct arena_set);
998 newroot->set_size = ARENAS_PER_SET;
999 newroot->next = aroot;
1001 PL_body_arenas = (void *) newroot;
1002 DEBUG_m(PerlIO_printf(Perl_debug_log, "new arenaset %p\n", (void*)aroot));
1005 /* ok, now have arena-set with at least 1 empty/available arena-desc */
1006 curr = aroot->curr++;
1007 adesc = &(aroot->set[curr]);
1008 assert(!adesc->arena);
1010 Newx(adesc->arena, good_arena_size, char);
1011 adesc->size = good_arena_size;
1012 adesc->utype = sv_type;
1013 DEBUG_m(PerlIO_printf(Perl_debug_log, "arena %d added: %p size %"UVuf"\n",
1014 curr, (void*)adesc->arena, (UV)good_arena_size));
1016 start = (char *) adesc->arena;
1018 /* Get the address of the byte after the end of the last body we can fit.
1019 Remember, this is integer division: */
1020 end = start + good_arena_size / body_size * body_size;
1022 /* computed count doesnt reflect the 1st slot reservation */
1023 #if defined(MYMALLOC) || defined(HAS_MALLOC_GOOD_SIZE)
1024 DEBUG_m(PerlIO_printf(Perl_debug_log,
1025 "arena %p end %p arena-size %d (from %d) type %d "
1027 (void*)start, (void*)end, (int)good_arena_size,
1028 (int)arena_size, sv_type, (int)body_size,
1029 (int)good_arena_size / (int)body_size));
1031 DEBUG_m(PerlIO_printf(Perl_debug_log,
1032 "arena %p end %p arena-size %d type %d size %d ct %d\n",
1033 (void*)start, (void*)end,
1034 (int)arena_size, sv_type, (int)body_size,
1035 (int)good_arena_size / (int)body_size));
1037 *root = (void *)start;
1040 /* Where the next body would start: */
1041 char * const next = start + body_size;
1044 /* This is the last body: */
1045 assert(next == end);
1047 *(void **)start = 0;
1051 *(void**) start = (void *)next;
1056 /* grab a new thing from the free list, allocating more if necessary.
1057 The inline version is used for speed in hot routines, and the
1058 function using it serves the rest (unless PURIFY).
1060 #define new_body_inline(xpv, sv_type) \
1062 void ** const r3wt = &PL_body_roots[sv_type]; \
1063 xpv = (PTR_TBL_ENT_t*) (*((void **)(r3wt)) \
1064 ? *((void **)(r3wt)) : Perl_more_bodies(aTHX_ sv_type, \
1065 bodies_by_type[sv_type].body_size,\
1066 bodies_by_type[sv_type].arena_size)); \
1067 *(r3wt) = *(void**)(xpv); \
1073 S_new_body(pTHX_ const svtype sv_type)
1077 new_body_inline(xpv, sv_type);
1083 static const struct body_details fake_rv =
1084 { 0, 0, 0, SVt_IV, FALSE, NONV, NOARENA, 0 };
1087 =for apidoc sv_upgrade
1089 Upgrade an SV to a more complex form. Generally adds a new body type to the
1090 SV, then copies across as much information as possible from the old body.
1091 You generally want to use the C<SvUPGRADE> macro wrapper. See also C<svtype>.
1097 Perl_sv_upgrade(pTHX_ register SV *const sv, svtype new_type)
1102 const svtype old_type = SvTYPE(sv);
1103 const struct body_details *new_type_details;
1104 const struct body_details *old_type_details
1105 = bodies_by_type + old_type;
1106 SV *referant = NULL;
1108 PERL_ARGS_ASSERT_SV_UPGRADE;
1110 if (old_type == new_type)
1113 /* This clause was purposefully added ahead of the early return above to
1114 the shared string hackery for (sort {$a <=> $b} keys %hash), with the
1115 inference by Nick I-S that it would fix other troublesome cases. See
1116 changes 7162, 7163 (f130fd4589cf5fbb24149cd4db4137c8326f49c1 and parent)
1118 Given that shared hash key scalars are no longer PVIV, but PV, there is
1119 no longer need to unshare so as to free up the IVX slot for its proper
1120 purpose. So it's safe to move the early return earlier. */
1122 if (new_type != SVt_PV && SvIsCOW(sv)) {
1123 sv_force_normal_flags(sv, 0);
1126 old_body = SvANY(sv);
1128 /* Copying structures onto other structures that have been neatly zeroed
1129 has a subtle gotcha. Consider XPVMG
1131 +------+------+------+------+------+-------+-------+
1132 | NV | CUR | LEN | IV | MAGIC | STASH |
1133 +------+------+------+------+------+-------+-------+
1134 0 4 8 12 16 20 24 28
1136 where NVs are aligned to 8 bytes, so that sizeof that structure is
1137 actually 32 bytes long, with 4 bytes of padding at the end:
1139 +------+------+------+------+------+-------+-------+------+
1140 | NV | CUR | LEN | IV | MAGIC | STASH | ??? |
1141 +------+------+------+------+------+-------+-------+------+
1142 0 4 8 12 16 20 24 28 32
1144 so what happens if you allocate memory for this structure:
1146 +------+------+------+------+------+-------+-------+------+------+...
1147 | NV | CUR | LEN | IV | MAGIC | STASH | GP | NAME |
1148 +------+------+------+------+------+-------+-------+------+------+...
1149 0 4 8 12 16 20 24 28 32 36
1151 zero it, then copy sizeof(XPVMG) bytes on top of it? Not quite what you
1152 expect, because you copy the area marked ??? onto GP. Now, ??? may have
1153 started out as zero once, but it's quite possible that it isn't. So now,
1154 rather than a nicely zeroed GP, you have it pointing somewhere random.
1157 (In fact, GP ends up pointing at a previous GP structure, because the
1158 principle cause of the padding in XPVMG getting garbage is a copy of
1159 sizeof(XPVMG) bytes from a XPVGV structure in sv_unglob. Right now
1160 this happens to be moot because XPVGV has been re-ordered, with GP
1161 no longer after STASH)
1163 So we are careful and work out the size of used parts of all the
1171 referant = SvRV(sv);
1172 old_type_details = &fake_rv;
1173 if (new_type == SVt_NV)
1174 new_type = SVt_PVNV;
1176 if (new_type < SVt_PVIV) {
1177 new_type = (new_type == SVt_NV)
1178 ? SVt_PVNV : SVt_PVIV;
1183 if (new_type < SVt_PVNV) {
1184 new_type = SVt_PVNV;
1188 assert(new_type > SVt_PV);
1189 assert(SVt_IV < SVt_PV);
1190 assert(SVt_NV < SVt_PV);
1197 /* Because the XPVMG of PL_mess_sv isn't allocated from the arena,
1198 there's no way that it can be safely upgraded, because perl.c
1199 expects to Safefree(SvANY(PL_mess_sv)) */
1200 assert(sv != PL_mess_sv);
1201 /* This flag bit is used to mean other things in other scalar types.
1202 Given that it only has meaning inside the pad, it shouldn't be set
1203 on anything that can get upgraded. */
1204 assert(!SvPAD_TYPED(sv));
1207 if (old_type_details->cant_upgrade)
1208 Perl_croak(aTHX_ "Can't upgrade %s (%" UVuf ") to %" UVuf,
1209 sv_reftype(sv, 0), (UV) old_type, (UV) new_type);
1212 if (old_type > new_type)
1213 Perl_croak(aTHX_ "sv_upgrade from type %d down to type %d",
1214 (int)old_type, (int)new_type);
1216 new_type_details = bodies_by_type + new_type;
1218 SvFLAGS(sv) &= ~SVTYPEMASK;
1219 SvFLAGS(sv) |= new_type;
1221 /* This can't happen, as SVt_NULL is <= all values of new_type, so one of
1222 the return statements above will have triggered. */
1223 assert (new_type != SVt_NULL);
1226 assert(old_type == SVt_NULL);
1227 SvANY(sv) = (XPVIV*)((char*)&(sv->sv_u.svu_iv) - STRUCT_OFFSET(XPVIV, xiv_iv));
1231 assert(old_type == SVt_NULL);
1232 SvANY(sv) = new_XNV();
1237 assert(new_type_details->body_size);
1240 assert(new_type_details->arena);
1241 assert(new_type_details->arena_size);
1242 /* This points to the start of the allocated area. */
1243 new_body_inline(new_body, new_type);
1244 Zero(new_body, new_type_details->body_size, char);
1245 new_body = ((char *)new_body) - new_type_details->offset;
1247 /* We always allocated the full length item with PURIFY. To do this
1248 we fake things so that arena is false for all 16 types.. */
1249 new_body = new_NOARENAZ(new_type_details);
1251 SvANY(sv) = new_body;
1252 if (new_type == SVt_PVAV) {
1256 if (old_type_details->body_size) {
1259 /* It will have been zeroed when the new body was allocated.
1260 Lets not write to it, in case it confuses a write-back
1266 #ifndef NODEFAULT_SHAREKEYS
1267 HvSHAREKEYS_on(sv); /* key-sharing on by default */
1269 HvMAX(sv) = 7; /* (start with 8 buckets) */
1272 /* SVt_NULL isn't the only thing upgraded to AV or HV.
1273 The target created by newSVrv also is, and it can have magic.
1274 However, it never has SvPVX set.
1276 if (old_type == SVt_IV) {
1278 } else if (old_type >= SVt_PV) {
1279 assert(SvPVX_const(sv) == 0);
1282 if (old_type >= SVt_PVMG) {
1283 SvMAGIC_set(sv, ((XPVMG*)old_body)->xmg_u.xmg_magic);
1284 SvSTASH_set(sv, ((XPVMG*)old_body)->xmg_stash);
1286 sv->sv_u.svu_array = NULL; /* or svu_hash */
1292 /* This ensures that SvTHINKFIRST(sv) is true, and hence that
1293 sv_force_normal_flags(sv) is called. */
1296 /* XXX Is this still needed? Was it ever needed? Surely as there is
1297 no route from NV to PVIV, NOK can never be true */
1298 assert(!SvNOKp(sv));
1309 assert(new_type_details->body_size);
1310 /* We always allocated the full length item with PURIFY. To do this
1311 we fake things so that arena is false for all 16 types.. */
1312 if(new_type_details->arena) {
1313 /* This points to the start of the allocated area. */
1314 new_body_inline(new_body, new_type);
1315 Zero(new_body, new_type_details->body_size, char);
1316 new_body = ((char *)new_body) - new_type_details->offset;
1318 new_body = new_NOARENAZ(new_type_details);
1320 SvANY(sv) = new_body;
1322 if (old_type_details->copy) {
1323 /* There is now the potential for an upgrade from something without
1324 an offset (PVNV or PVMG) to something with one (PVCV, PVFM) */
1325 int offset = old_type_details->offset;
1326 int length = old_type_details->copy;
1328 if (new_type_details->offset > old_type_details->offset) {
1329 const int difference
1330 = new_type_details->offset - old_type_details->offset;
1331 offset += difference;
1332 length -= difference;
1334 assert (length >= 0);
1336 Copy((char *)old_body + offset, (char *)new_body + offset, length,
1340 #ifndef NV_ZERO_IS_ALLBITS_ZERO
1341 /* If NV 0.0 is stores as all bits 0 then Zero() already creates a
1342 * correct 0.0 for us. Otherwise, if the old body didn't have an
1343 * NV slot, but the new one does, then we need to initialise the
1344 * freshly created NV slot with whatever the correct bit pattern is
1346 if (old_type_details->zero_nv && !new_type_details->zero_nv
1347 && !isGV_with_GP(sv))
1351 if (new_type == SVt_PVIO) {
1352 IO * const io = MUTABLE_IO(sv);
1353 GV *iogv = gv_fetchpvs("IO::File::", GV_ADD, SVt_PVHV);
1356 /* Clear the stashcache because a new IO could overrule a package
1358 hv_clear(PL_stashcache);
1360 SvSTASH_set(io, MUTABLE_HV(SvREFCNT_inc(GvHV(iogv))));
1361 IoPAGE_LEN(sv) = 60;
1363 if (old_type < SVt_PV) {
1364 /* referant will be NULL unless the old type was SVt_IV emulating
1366 sv->sv_u.svu_rv = referant;
1370 Perl_croak(aTHX_ "panic: sv_upgrade to unknown type %lu",
1371 (unsigned long)new_type);
1374 if (old_type > SVt_IV) {
1378 /* Note that there is an assumption that all bodies of types that
1379 can be upgraded came from arenas. Only the more complex non-
1380 upgradable types are allowed to be directly malloc()ed. */
1381 assert(old_type_details->arena);
1382 del_body((void*)((char*)old_body + old_type_details->offset),
1383 &PL_body_roots[old_type]);
1389 =for apidoc sv_backoff
1391 Remove any string offset. You should normally use the C<SvOOK_off> macro
1398 Perl_sv_backoff(pTHX_ register SV *const sv)
1401 const char * const s = SvPVX_const(sv);
1403 PERL_ARGS_ASSERT_SV_BACKOFF;
1404 PERL_UNUSED_CONTEXT;
1407 assert(SvTYPE(sv) != SVt_PVHV);
1408 assert(SvTYPE(sv) != SVt_PVAV);
1410 SvOOK_offset(sv, delta);
1412 SvLEN_set(sv, SvLEN(sv) + delta);
1413 SvPV_set(sv, SvPVX(sv) - delta);
1414 Move(s, SvPVX(sv), SvCUR(sv)+1, char);
1415 SvFLAGS(sv) &= ~SVf_OOK;
1422 Expands the character buffer in the SV. If necessary, uses C<sv_unref> and
1423 upgrades the SV to C<SVt_PV>. Returns a pointer to the character buffer.
1424 Use the C<SvGROW> wrapper instead.
1430 Perl_sv_grow(pTHX_ register SV *const sv, register STRLEN newlen)
1434 PERL_ARGS_ASSERT_SV_GROW;
1436 if (PL_madskills && newlen >= 0x100000) {
1437 PerlIO_printf(Perl_debug_log,
1438 "Allocation too large: %"UVxf"\n", (UV)newlen);
1440 #ifdef HAS_64K_LIMIT
1441 if (newlen >= 0x10000) {
1442 PerlIO_printf(Perl_debug_log,
1443 "Allocation too large: %"UVxf"\n", (UV)newlen);
1446 #endif /* HAS_64K_LIMIT */
1449 if (SvTYPE(sv) < SVt_PV) {
1450 sv_upgrade(sv, SVt_PV);
1451 s = SvPVX_mutable(sv);
1453 else if (SvOOK(sv)) { /* pv is offset? */
1455 s = SvPVX_mutable(sv);
1456 if (newlen > SvLEN(sv))
1457 newlen += 10 * (newlen - SvCUR(sv)); /* avoid copy each time */
1458 #ifdef HAS_64K_LIMIT
1459 if (newlen >= 0x10000)
1464 s = SvPVX_mutable(sv);
1466 if (newlen > SvLEN(sv)) { /* need more room? */
1467 STRLEN minlen = SvCUR(sv);
1468 minlen += (minlen >> PERL_STRLEN_EXPAND_SHIFT) + 10;
1469 if (newlen < minlen)
1471 #ifndef Perl_safesysmalloc_size
1472 newlen = PERL_STRLEN_ROUNDUP(newlen);
1474 if (SvLEN(sv) && s) {
1475 s = (char*)saferealloc(s, newlen);
1478 s = (char*)safemalloc(newlen);
1479 if (SvPVX_const(sv) && SvCUR(sv)) {
1480 Move(SvPVX_const(sv), s, (newlen < SvCUR(sv)) ? newlen : SvCUR(sv), char);
1484 #ifdef Perl_safesysmalloc_size
1485 /* Do this here, do it once, do it right, and then we will never get
1486 called back into sv_grow() unless there really is some growing
1488 SvLEN_set(sv, Perl_safesysmalloc_size(s));
1490 SvLEN_set(sv, newlen);
1497 =for apidoc sv_setiv
1499 Copies an integer into the given SV, upgrading first if necessary.
1500 Does not handle 'set' magic. See also C<sv_setiv_mg>.
1506 Perl_sv_setiv(pTHX_ register SV *const sv, const IV i)
1510 PERL_ARGS_ASSERT_SV_SETIV;
1512 SV_CHECK_THINKFIRST_COW_DROP(sv);
1513 switch (SvTYPE(sv)) {
1516 sv_upgrade(sv, SVt_IV);
1519 sv_upgrade(sv, SVt_PVIV);
1523 if (!isGV_with_GP(sv))
1530 Perl_croak(aTHX_ "Can't coerce %s to integer in %s", sv_reftype(sv,0),
1534 (void)SvIOK_only(sv); /* validate number */
1540 =for apidoc sv_setiv_mg
1542 Like C<sv_setiv>, but also handles 'set' magic.
1548 Perl_sv_setiv_mg(pTHX_ register SV *const sv, const IV i)
1550 PERL_ARGS_ASSERT_SV_SETIV_MG;
1557 =for apidoc sv_setuv
1559 Copies an unsigned integer into the given SV, upgrading first if necessary.
1560 Does not handle 'set' magic. See also C<sv_setuv_mg>.
1566 Perl_sv_setuv(pTHX_ register SV *const sv, const UV u)
1568 PERL_ARGS_ASSERT_SV_SETUV;
1570 /* With these two if statements:
1571 u=1.49 s=0.52 cu=72.49 cs=10.64 scripts=270 tests=20865
1574 u=1.35 s=0.47 cu=73.45 cs=11.43 scripts=270 tests=20865
1576 If you wish to remove them, please benchmark to see what the effect is
1578 if (u <= (UV)IV_MAX) {
1579 sv_setiv(sv, (IV)u);
1588 =for apidoc sv_setuv_mg
1590 Like C<sv_setuv>, but also handles 'set' magic.
1596 Perl_sv_setuv_mg(pTHX_ register SV *const sv, const UV u)
1598 PERL_ARGS_ASSERT_SV_SETUV_MG;
1605 =for apidoc sv_setnv
1607 Copies a double into the given SV, upgrading first if necessary.
1608 Does not handle 'set' magic. See also C<sv_setnv_mg>.
1614 Perl_sv_setnv(pTHX_ register SV *const sv, const NV num)
1618 PERL_ARGS_ASSERT_SV_SETNV;
1620 SV_CHECK_THINKFIRST_COW_DROP(sv);
1621 switch (SvTYPE(sv)) {
1624 sv_upgrade(sv, SVt_NV);
1628 sv_upgrade(sv, SVt_PVNV);
1632 if (!isGV_with_GP(sv))
1639 Perl_croak(aTHX_ "Can't coerce %s to number in %s", sv_reftype(sv,0),
1644 (void)SvNOK_only(sv); /* validate number */
1649 =for apidoc sv_setnv_mg
1651 Like C<sv_setnv>, but also handles 'set' magic.
1657 Perl_sv_setnv_mg(pTHX_ register SV *const sv, const NV num)
1659 PERL_ARGS_ASSERT_SV_SETNV_MG;
1665 /* Print an "isn't numeric" warning, using a cleaned-up,
1666 * printable version of the offending string
1670 S_not_a_number(pTHX_ SV *const sv)
1677 PERL_ARGS_ASSERT_NOT_A_NUMBER;
1680 dsv = newSVpvs_flags("", SVs_TEMP);
1681 pv = sv_uni_display(dsv, sv, 10, 0);
1684 const char * const limit = tmpbuf + sizeof(tmpbuf) - 8;
1685 /* each *s can expand to 4 chars + "...\0",
1686 i.e. need room for 8 chars */
1688 const char *s = SvPVX_const(sv);
1689 const char * const end = s + SvCUR(sv);
1690 for ( ; s < end && d < limit; s++ ) {
1692 if (ch & 128 && !isPRINT_LC(ch)) {
1701 else if (ch == '\r') {
1705 else if (ch == '\f') {
1709 else if (ch == '\\') {
1713 else if (ch == '\0') {
1717 else if (isPRINT_LC(ch))
1734 Perl_warner(aTHX_ packWARN(WARN_NUMERIC),
1735 "Argument \"%s\" isn't numeric in %s", pv,
1738 Perl_warner(aTHX_ packWARN(WARN_NUMERIC),
1739 "Argument \"%s\" isn't numeric", pv);
1743 =for apidoc looks_like_number
1745 Test if the content of an SV looks like a number (or is a number).
1746 C<Inf> and C<Infinity> are treated as numbers (so will not issue a
1747 non-numeric warning), even if your atof() doesn't grok them.
1753 Perl_looks_like_number(pTHX_ SV *const sv)
1755 register const char *sbegin;
1758 PERL_ARGS_ASSERT_LOOKS_LIKE_NUMBER;
1761 sbegin = SvPVX_const(sv);
1764 else if (SvPOKp(sv))
1765 sbegin = SvPV_const(sv, len);
1767 return SvFLAGS(sv) & (SVf_NOK|SVp_NOK|SVf_IOK|SVp_IOK);
1768 return grok_number(sbegin, len, NULL);
1772 S_glob_2number(pTHX_ GV * const gv)
1774 const U32 wasfake = SvFLAGS(gv) & SVf_FAKE;
1775 SV *const buffer = sv_newmortal();
1777 PERL_ARGS_ASSERT_GLOB_2NUMBER;
1779 /* FAKE globs can get coerced, so need to turn this off temporarily if it
1782 gv_efullname3(buffer, gv, "*");
1783 SvFLAGS(gv) |= wasfake;
1785 /* We know that all GVs stringify to something that is not-a-number,
1786 so no need to test that. */
1787 if (ckWARN(WARN_NUMERIC))
1788 not_a_number(buffer);
1789 /* We just want something true to return, so that S_sv_2iuv_common
1790 can tail call us and return true. */
1794 /* Actually, ISO C leaves conversion of UV to IV undefined, but
1795 until proven guilty, assume that things are not that bad... */
1800 As 64 bit platforms often have an NV that doesn't preserve all bits of
1801 an IV (an assumption perl has been based on to date) it becomes necessary
1802 to remove the assumption that the NV always carries enough precision to
1803 recreate the IV whenever needed, and that the NV is the canonical form.
1804 Instead, IV/UV and NV need to be given equal rights. So as to not lose
1805 precision as a side effect of conversion (which would lead to insanity
1806 and the dragon(s) in t/op/numconvert.t getting very angry) the intent is
1807 1) to distinguish between IV/UV/NV slots that have cached a valid
1808 conversion where precision was lost and IV/UV/NV slots that have a
1809 valid conversion which has lost no precision
1810 2) to ensure that if a numeric conversion to one form is requested that
1811 would lose precision, the precise conversion (or differently
1812 imprecise conversion) is also performed and cached, to prevent
1813 requests for different numeric formats on the same SV causing
1814 lossy conversion chains. (lossless conversion chains are perfectly
1819 SvIOKp is true if the IV slot contains a valid value
1820 SvIOK is true only if the IV value is accurate (UV if SvIOK_UV true)
1821 SvNOKp is true if the NV slot contains a valid value
1822 SvNOK is true only if the NV value is accurate
1825 while converting from PV to NV, check to see if converting that NV to an
1826 IV(or UV) would lose accuracy over a direct conversion from PV to
1827 IV(or UV). If it would, cache both conversions, return NV, but mark
1828 SV as IOK NOKp (ie not NOK).
1830 While converting from PV to IV, check to see if converting that IV to an
1831 NV would lose accuracy over a direct conversion from PV to NV. If it
1832 would, cache both conversions, flag similarly.
1834 Before, the SV value "3.2" could become NV=3.2 IV=3 NOK, IOK quite
1835 correctly because if IV & NV were set NV *always* overruled.
1836 Now, "3.2" will become NV=3.2 IV=3 NOK, IOKp, because the flag's meaning
1837 changes - now IV and NV together means that the two are interchangeable:
1838 SvIVX == (IV) SvNVX && SvNVX == (NV) SvIVX;
1840 The benefit of this is that operations such as pp_add know that if
1841 SvIOK is true for both left and right operands, then integer addition
1842 can be used instead of floating point (for cases where the result won't
1843 overflow). Before, floating point was always used, which could lead to
1844 loss of precision compared with integer addition.
1846 * making IV and NV equal status should make maths accurate on 64 bit
1848 * may speed up maths somewhat if pp_add and friends start to use
1849 integers when possible instead of fp. (Hopefully the overhead in
1850 looking for SvIOK and checking for overflow will not outweigh the
1851 fp to integer speedup)
1852 * will slow down integer operations (callers of SvIV) on "inaccurate"
1853 values, as the change from SvIOK to SvIOKp will cause a call into
1854 sv_2iv each time rather than a macro access direct to the IV slot
1855 * should speed up number->string conversion on integers as IV is
1856 favoured when IV and NV are equally accurate
1858 ####################################################################
1859 You had better be using SvIOK_notUV if you want an IV for arithmetic:
1860 SvIOK is true if (IV or UV), so you might be getting (IV)SvUV.
1861 On the other hand, SvUOK is true iff UV.
1862 ####################################################################
1864 Your mileage will vary depending your CPU's relative fp to integer
1868 #ifndef NV_PRESERVES_UV
1869 # define IS_NUMBER_UNDERFLOW_IV 1
1870 # define IS_NUMBER_UNDERFLOW_UV 2
1871 # define IS_NUMBER_IV_AND_UV 2
1872 # define IS_NUMBER_OVERFLOW_IV 4
1873 # define IS_NUMBER_OVERFLOW_UV 5
1875 /* sv_2iuv_non_preserve(): private routine for use by sv_2iv() and sv_2uv() */
1877 /* For sv_2nv these three cases are "SvNOK and don't bother casting" */
1879 S_sv_2iuv_non_preserve(pTHX_ register SV *const sv
1887 PERL_ARGS_ASSERT_SV_2IUV_NON_PRESERVE;
1889 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));
1890 if (SvNVX(sv) < (NV)IV_MIN) {
1891 (void)SvIOKp_on(sv);
1893 SvIV_set(sv, IV_MIN);
1894 return IS_NUMBER_UNDERFLOW_IV;
1896 if (SvNVX(sv) > (NV)UV_MAX) {
1897 (void)SvIOKp_on(sv);
1900 SvUV_set(sv, UV_MAX);
1901 return IS_NUMBER_OVERFLOW_UV;
1903 (void)SvIOKp_on(sv);
1905 /* Can't use strtol etc to convert this string. (See truth table in
1907 if (SvNVX(sv) <= (UV)IV_MAX) {
1908 SvIV_set(sv, I_V(SvNVX(sv)));
1909 if ((NV)(SvIVX(sv)) == SvNVX(sv)) {
1910 SvIOK_on(sv); /* Integer is precise. NOK, IOK */
1912 /* Integer is imprecise. NOK, IOKp */
1914 return SvNVX(sv) < 0 ? IS_NUMBER_UNDERFLOW_UV : IS_NUMBER_IV_AND_UV;
1917 SvUV_set(sv, U_V(SvNVX(sv)));
1918 if ((NV)(SvUVX(sv)) == SvNVX(sv)) {
1919 if (SvUVX(sv) == UV_MAX) {
1920 /* As we know that NVs don't preserve UVs, UV_MAX cannot
1921 possibly be preserved by NV. Hence, it must be overflow.
1923 return IS_NUMBER_OVERFLOW_UV;
1925 SvIOK_on(sv); /* Integer is precise. NOK, UOK */
1927 /* Integer is imprecise. NOK, IOKp */
1929 return IS_NUMBER_OVERFLOW_IV;
1931 #endif /* !NV_PRESERVES_UV*/
1934 S_sv_2iuv_common(pTHX_ SV *const sv)
1938 PERL_ARGS_ASSERT_SV_2IUV_COMMON;
1941 /* erm. not sure. *should* never get NOKp (without NOK) from sv_2nv
1942 * without also getting a cached IV/UV from it at the same time
1943 * (ie PV->NV conversion should detect loss of accuracy and cache
1944 * IV or UV at same time to avoid this. */
1945 /* IV-over-UV optimisation - choose to cache IV if possible */
1947 if (SvTYPE(sv) == SVt_NV)
1948 sv_upgrade(sv, SVt_PVNV);
1950 (void)SvIOKp_on(sv); /* Must do this first, to clear any SvOOK */
1951 /* < not <= as for NV doesn't preserve UV, ((NV)IV_MAX+1) will almost
1952 certainly cast into the IV range at IV_MAX, whereas the correct
1953 answer is the UV IV_MAX +1. Hence < ensures that dodgy boundary
1955 #if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan)
1956 if (Perl_isnan(SvNVX(sv))) {
1962 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
1963 SvIV_set(sv, I_V(SvNVX(sv)));
1964 if (SvNVX(sv) == (NV) SvIVX(sv)
1965 #ifndef NV_PRESERVES_UV
1966 && (((UV)1 << NV_PRESERVES_UV_BITS) >
1967 (UV)(SvIVX(sv) > 0 ? SvIVX(sv) : -SvIVX(sv)))
1968 /* Don't flag it as "accurately an integer" if the number
1969 came from a (by definition imprecise) NV operation, and
1970 we're outside the range of NV integer precision */
1974 SvIOK_on(sv); /* Can this go wrong with rounding? NWC */
1976 /* scalar has trailing garbage, eg "42a" */
1978 DEBUG_c(PerlIO_printf(Perl_debug_log,
1979 "0x%"UVxf" iv(%"NVgf" => %"IVdf") (precise)\n",
1985 /* IV not precise. No need to convert from PV, as NV
1986 conversion would already have cached IV if it detected
1987 that PV->IV would be better than PV->NV->IV
1988 flags already correct - don't set public IOK. */
1989 DEBUG_c(PerlIO_printf(Perl_debug_log,
1990 "0x%"UVxf" iv(%"NVgf" => %"IVdf") (imprecise)\n",
1995 /* Can the above go wrong if SvIVX == IV_MIN and SvNVX < IV_MIN,
1996 but the cast (NV)IV_MIN rounds to a the value less (more
1997 negative) than IV_MIN which happens to be equal to SvNVX ??
1998 Analogous to 0xFFFFFFFFFFFFFFFF rounding up to NV (2**64) and
1999 NV rounding back to 0xFFFFFFFFFFFFFFFF, so UVX == UV(NVX) and
2000 (NV)UVX == NVX are both true, but the values differ. :-(
2001 Hopefully for 2s complement IV_MIN is something like
2002 0x8000000000000000 which will be exact. NWC */
2005 SvUV_set(sv, U_V(SvNVX(sv)));
2007 (SvNVX(sv) == (NV) SvUVX(sv))
2008 #ifndef NV_PRESERVES_UV
2009 /* Make sure it's not 0xFFFFFFFFFFFFFFFF */
2010 /*&& (SvUVX(sv) != UV_MAX) irrelevant with code below */
2011 && (((UV)1 << NV_PRESERVES_UV_BITS) > SvUVX(sv))
2012 /* Don't flag it as "accurately an integer" if the number
2013 came from a (by definition imprecise) NV operation, and
2014 we're outside the range of NV integer precision */
2020 DEBUG_c(PerlIO_printf(Perl_debug_log,
2021 "0x%"UVxf" 2iv(%"UVuf" => %"IVdf") (as unsigned)\n",
2027 else if (SvPOKp(sv) && SvLEN(sv)) {
2029 const int numtype = grok_number(SvPVX_const(sv), SvCUR(sv), &value);
2030 /* We want to avoid a possible problem when we cache an IV/ a UV which
2031 may be later translated to an NV, and the resulting NV is not
2032 the same as the direct translation of the initial string
2033 (eg 123.456 can shortcut to the IV 123 with atol(), but we must
2034 be careful to ensure that the value with the .456 is around if the
2035 NV value is requested in the future).
2037 This means that if we cache such an IV/a UV, we need to cache the
2038 NV as well. Moreover, we trade speed for space, and do not
2039 cache the NV if we are sure it's not needed.
2042 /* SVt_PVNV is one higher than SVt_PVIV, hence this order */
2043 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2044 == IS_NUMBER_IN_UV) {
2045 /* It's definitely an integer, only upgrade to PVIV */
2046 if (SvTYPE(sv) < SVt_PVIV)
2047 sv_upgrade(sv, SVt_PVIV);
2049 } else if (SvTYPE(sv) < SVt_PVNV)
2050 sv_upgrade(sv, SVt_PVNV);
2052 /* If NVs preserve UVs then we only use the UV value if we know that
2053 we aren't going to call atof() below. If NVs don't preserve UVs
2054 then the value returned may have more precision than atof() will
2055 return, even though value isn't perfectly accurate. */
2056 if ((numtype & (IS_NUMBER_IN_UV
2057 #ifdef NV_PRESERVES_UV
2060 )) == IS_NUMBER_IN_UV) {
2061 /* This won't turn off the public IOK flag if it was set above */
2062 (void)SvIOKp_on(sv);
2064 if (!(numtype & IS_NUMBER_NEG)) {
2066 if (value <= (UV)IV_MAX) {
2067 SvIV_set(sv, (IV)value);
2069 /* it didn't overflow, and it was positive. */
2070 SvUV_set(sv, value);
2074 /* 2s complement assumption */
2075 if (value <= (UV)IV_MIN) {
2076 SvIV_set(sv, -(IV)value);
2078 /* Too negative for an IV. This is a double upgrade, but
2079 I'm assuming it will be rare. */
2080 if (SvTYPE(sv) < SVt_PVNV)
2081 sv_upgrade(sv, SVt_PVNV);
2085 SvNV_set(sv, -(NV)value);
2086 SvIV_set(sv, IV_MIN);
2090 /* For !NV_PRESERVES_UV and IS_NUMBER_IN_UV and IS_NUMBER_NOT_INT we
2091 will be in the previous block to set the IV slot, and the next
2092 block to set the NV slot. So no else here. */
2094 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2095 != IS_NUMBER_IN_UV) {
2096 /* It wasn't an (integer that doesn't overflow the UV). */
2097 SvNV_set(sv, Atof(SvPVX_const(sv)));
2099 if (! numtype && ckWARN(WARN_NUMERIC))
2102 #if defined(USE_LONG_DOUBLE)
2103 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2iv(%" PERL_PRIgldbl ")\n",
2104 PTR2UV(sv), SvNVX(sv)));
2106 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2iv(%"NVgf")\n",
2107 PTR2UV(sv), SvNVX(sv)));
2110 #ifdef NV_PRESERVES_UV
2111 (void)SvIOKp_on(sv);
2113 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2114 SvIV_set(sv, I_V(SvNVX(sv)));
2115 if ((NV)(SvIVX(sv)) == SvNVX(sv)) {
2118 NOOP; /* Integer is imprecise. NOK, IOKp */
2120 /* UV will not work better than IV */
2122 if (SvNVX(sv) > (NV)UV_MAX) {
2124 /* Integer is inaccurate. NOK, IOKp, is UV */
2125 SvUV_set(sv, UV_MAX);
2127 SvUV_set(sv, U_V(SvNVX(sv)));
2128 /* 0xFFFFFFFFFFFFFFFF not an issue in here, NVs
2129 NV preservse UV so can do correct comparison. */
2130 if ((NV)(SvUVX(sv)) == SvNVX(sv)) {
2133 NOOP; /* Integer is imprecise. NOK, IOKp, is UV */
2138 #else /* NV_PRESERVES_UV */
2139 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2140 == (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT)) {
2141 /* The IV/UV slot will have been set from value returned by
2142 grok_number above. The NV slot has just been set using
2145 assert (SvIOKp(sv));
2147 if (((UV)1 << NV_PRESERVES_UV_BITS) >
2148 U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))) {
2149 /* Small enough to preserve all bits. */
2150 (void)SvIOKp_on(sv);
2152 SvIV_set(sv, I_V(SvNVX(sv)));
2153 if ((NV)(SvIVX(sv)) == SvNVX(sv))
2155 /* Assumption: first non-preserved integer is < IV_MAX,
2156 this NV is in the preserved range, therefore: */
2157 if (!(U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))
2159 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);
2163 0 0 already failed to read UV.
2164 0 1 already failed to read UV.
2165 1 0 you won't get here in this case. IV/UV
2166 slot set, public IOK, Atof() unneeded.
2167 1 1 already read UV.
2168 so there's no point in sv_2iuv_non_preserve() attempting
2169 to use atol, strtol, strtoul etc. */
2171 sv_2iuv_non_preserve (sv, numtype);
2173 sv_2iuv_non_preserve (sv);
2177 #endif /* NV_PRESERVES_UV */
2178 /* It might be more code efficient to go through the entire logic above
2179 and conditionally set with SvIOKp_on() rather than SvIOK(), but it
2180 gets complex and potentially buggy, so more programmer efficient
2181 to do it this way, by turning off the public flags: */
2183 SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK);
2187 if (isGV_with_GP(sv))
2188 return glob_2number(MUTABLE_GV(sv));
2190 if (!(SvFLAGS(sv) & SVs_PADTMP)) {
2191 if (!PL_localizing && ckWARN(WARN_UNINITIALIZED))
2194 if (SvTYPE(sv) < SVt_IV)
2195 /* Typically the caller expects that sv_any is not NULL now. */
2196 sv_upgrade(sv, SVt_IV);
2197 /* Return 0 from the caller. */
2204 =for apidoc sv_2iv_flags
2206 Return the integer value of an SV, doing any necessary string
2207 conversion. If flags includes SV_GMAGIC, does an mg_get() first.
2208 Normally used via the C<SvIV(sv)> and C<SvIVx(sv)> macros.
2214 Perl_sv_2iv_flags(pTHX_ register SV *const sv, const I32 flags)
2219 if (SvGMAGICAL(sv) || (SvTYPE(sv) == SVt_PVGV && SvVALID(sv))) {
2220 /* FBMs use the same flag bit as SVf_IVisUV, so must let them
2221 cache IVs just in case. In practice it seems that they never
2222 actually anywhere accessible by user Perl code, let alone get used
2223 in anything other than a string context. */
2224 if (flags & SV_GMAGIC)
2229 return I_V(SvNVX(sv));
2231 if (SvPOKp(sv) && SvLEN(sv)) {
2234 = grok_number(SvPVX_const(sv), SvCUR(sv), &value);
2236 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2237 == IS_NUMBER_IN_UV) {
2238 /* It's definitely an integer */
2239 if (numtype & IS_NUMBER_NEG) {
2240 if (value < (UV)IV_MIN)
2243 if (value < (UV)IV_MAX)
2248 if (ckWARN(WARN_NUMERIC))
2251 return I_V(Atof(SvPVX_const(sv)));
2256 assert(SvTYPE(sv) >= SVt_PVMG);
2257 /* This falls through to the report_uninit inside S_sv_2iuv_common. */
2258 } else if (SvTHINKFIRST(sv)) {
2263 if (flags & SV_SKIP_OVERLOAD)
2265 tmpstr=AMG_CALLun(sv,numer);
2266 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2267 return SvIV(tmpstr);
2270 return PTR2IV(SvRV(sv));
2273 sv_force_normal_flags(sv, 0);
2275 if (SvREADONLY(sv) && !SvOK(sv)) {
2276 if (ckWARN(WARN_UNINITIALIZED))
2282 if (S_sv_2iuv_common(aTHX_ sv))
2285 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2iv(%"IVdf")\n",
2286 PTR2UV(sv),SvIVX(sv)));
2287 return SvIsUV(sv) ? (IV)SvUVX(sv) : SvIVX(sv);
2291 =for apidoc sv_2uv_flags
2293 Return the unsigned integer value of an SV, doing any necessary string
2294 conversion. If flags includes SV_GMAGIC, does an mg_get() first.
2295 Normally used via the C<SvUV(sv)> and C<SvUVx(sv)> macros.
2301 Perl_sv_2uv_flags(pTHX_ register SV *const sv, const I32 flags)
2306 if (SvGMAGICAL(sv) || (SvTYPE(sv) == SVt_PVGV && SvVALID(sv))) {
2307 /* FBMs use the same flag bit as SVf_IVisUV, so must let them
2308 cache IVs just in case. */
2309 if (flags & SV_GMAGIC)
2314 return U_V(SvNVX(sv));
2315 if (SvPOKp(sv) && SvLEN(sv)) {
2318 = grok_number(SvPVX_const(sv), SvCUR(sv), &value);
2320 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2321 == IS_NUMBER_IN_UV) {
2322 /* It's definitely an integer */
2323 if (!(numtype & IS_NUMBER_NEG))
2327 if (ckWARN(WARN_NUMERIC))
2330 return U_V(Atof(SvPVX_const(sv)));
2335 assert(SvTYPE(sv) >= SVt_PVMG);
2336 /* This falls through to the report_uninit inside S_sv_2iuv_common. */
2337 } else if (SvTHINKFIRST(sv)) {
2342 if (flags & SV_SKIP_OVERLOAD)
2344 tmpstr = AMG_CALLun(sv,numer);
2345 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2346 return SvUV(tmpstr);
2349 return PTR2UV(SvRV(sv));
2352 sv_force_normal_flags(sv, 0);
2354 if (SvREADONLY(sv) && !SvOK(sv)) {
2355 if (ckWARN(WARN_UNINITIALIZED))
2361 if (S_sv_2iuv_common(aTHX_ sv))
2365 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2uv(%"UVuf")\n",
2366 PTR2UV(sv),SvUVX(sv)));
2367 return SvIsUV(sv) ? SvUVX(sv) : (UV)SvIVX(sv);
2371 =for apidoc sv_2nv_flags
2373 Return the num value of an SV, doing any necessary string or integer
2374 conversion. If flags includes SV_GMAGIC, does an mg_get() first.
2375 Normally used via the C<SvNV(sv)> and C<SvNVx(sv)> macros.
2381 Perl_sv_2nv_flags(pTHX_ register SV *const sv, const I32 flags)
2386 if (SvGMAGICAL(sv) || (SvTYPE(sv) == SVt_PVGV && SvVALID(sv))) {
2387 /* FBMs use the same flag bit as SVf_IVisUV, so must let them
2388 cache IVs just in case. */
2389 if (flags & SV_GMAGIC)
2393 if ((SvPOKp(sv) && SvLEN(sv)) && !SvIOKp(sv)) {
2394 if (!SvIOKp(sv) && ckWARN(WARN_NUMERIC) &&
2395 !grok_number(SvPVX_const(sv), SvCUR(sv), NULL))
2397 return Atof(SvPVX_const(sv));
2401 return (NV)SvUVX(sv);
2403 return (NV)SvIVX(sv);
2408 assert(SvTYPE(sv) >= SVt_PVMG);
2409 /* This falls through to the report_uninit near the end of the
2411 } else if (SvTHINKFIRST(sv)) {
2416 if (flags & SV_SKIP_OVERLOAD)
2418 tmpstr = AMG_CALLun(sv,numer);
2419 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2420 return SvNV(tmpstr);
2423 return PTR2NV(SvRV(sv));
2426 sv_force_normal_flags(sv, 0);
2428 if (SvREADONLY(sv) && !SvOK(sv)) {
2429 if (ckWARN(WARN_UNINITIALIZED))
2434 if (SvTYPE(sv) < SVt_NV) {
2435 /* The logic to use SVt_PVNV if necessary is in sv_upgrade. */
2436 sv_upgrade(sv, SVt_NV);
2437 #ifdef USE_LONG_DOUBLE
2439 STORE_NUMERIC_LOCAL_SET_STANDARD();
2440 PerlIO_printf(Perl_debug_log,
2441 "0x%"UVxf" num(%" PERL_PRIgldbl ")\n",
2442 PTR2UV(sv), SvNVX(sv));
2443 RESTORE_NUMERIC_LOCAL();
2447 STORE_NUMERIC_LOCAL_SET_STANDARD();
2448 PerlIO_printf(Perl_debug_log, "0x%"UVxf" num(%"NVgf")\n",
2449 PTR2UV(sv), SvNVX(sv));
2450 RESTORE_NUMERIC_LOCAL();
2454 else if (SvTYPE(sv) < SVt_PVNV)
2455 sv_upgrade(sv, SVt_PVNV);
2460 SvNV_set(sv, SvIsUV(sv) ? (NV)SvUVX(sv) : (NV)SvIVX(sv));
2461 #ifdef NV_PRESERVES_UV
2467 /* Only set the public NV OK flag if this NV preserves the IV */
2468 /* Check it's not 0xFFFFFFFFFFFFFFFF */
2470 SvIsUV(sv) ? ((SvUVX(sv) != UV_MAX)&&(SvUVX(sv) == U_V(SvNVX(sv))))
2471 : (SvIVX(sv) == I_V(SvNVX(sv))))
2477 else if (SvPOKp(sv) && SvLEN(sv)) {
2479 const int numtype = grok_number(SvPVX_const(sv), SvCUR(sv), &value);
2480 if (!SvIOKp(sv) && !numtype && ckWARN(WARN_NUMERIC))
2482 #ifdef NV_PRESERVES_UV
2483 if ((numtype & (IS_NUMBER_IN_UV | IS_NUMBER_NOT_INT))
2484 == IS_NUMBER_IN_UV) {
2485 /* It's definitely an integer */
2486 SvNV_set(sv, (numtype & IS_NUMBER_NEG) ? -(NV)value : (NV)value);
2488 SvNV_set(sv, Atof(SvPVX_const(sv)));
2494 SvNV_set(sv, Atof(SvPVX_const(sv)));
2495 /* Only set the public NV OK flag if this NV preserves the value in
2496 the PV at least as well as an IV/UV would.
2497 Not sure how to do this 100% reliably. */
2498 /* if that shift count is out of range then Configure's test is
2499 wonky. We shouldn't be in here with NV_PRESERVES_UV_BITS ==
2501 if (((UV)1 << NV_PRESERVES_UV_BITS) >
2502 U_V(SvNVX(sv) > 0 ? SvNVX(sv) : -SvNVX(sv))) {
2503 SvNOK_on(sv); /* Definitely small enough to preserve all bits */
2504 } else if (!(numtype & IS_NUMBER_IN_UV)) {
2505 /* Can't use strtol etc to convert this string, so don't try.
2506 sv_2iv and sv_2uv will use the NV to convert, not the PV. */
2509 /* value has been set. It may not be precise. */
2510 if ((numtype & IS_NUMBER_NEG) && (value > (UV)IV_MIN)) {
2511 /* 2s complement assumption for (UV)IV_MIN */
2512 SvNOK_on(sv); /* Integer is too negative. */
2517 if (numtype & IS_NUMBER_NEG) {
2518 SvIV_set(sv, -(IV)value);
2519 } else if (value <= (UV)IV_MAX) {
2520 SvIV_set(sv, (IV)value);
2522 SvUV_set(sv, value);
2526 if (numtype & IS_NUMBER_NOT_INT) {
2527 /* I believe that even if the original PV had decimals,
2528 they are lost beyond the limit of the FP precision.
2529 However, neither is canonical, so both only get p
2530 flags. NWC, 2000/11/25 */
2531 /* Both already have p flags, so do nothing */
2533 const NV nv = SvNVX(sv);
2534 if (SvNVX(sv) < (NV)IV_MAX + 0.5) {
2535 if (SvIVX(sv) == I_V(nv)) {
2538 /* It had no "." so it must be integer. */
2542 /* between IV_MAX and NV(UV_MAX).
2543 Could be slightly > UV_MAX */
2545 if (numtype & IS_NUMBER_NOT_INT) {
2546 /* UV and NV both imprecise. */
2548 const UV nv_as_uv = U_V(nv);
2550 if (value == nv_as_uv && SvUVX(sv) != UV_MAX) {
2559 /* It might be more code efficient to go through the entire logic above
2560 and conditionally set with SvNOKp_on() rather than SvNOK(), but it
2561 gets complex and potentially buggy, so more programmer efficient
2562 to do it this way, by turning off the public flags: */
2564 SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK);
2565 #endif /* NV_PRESERVES_UV */
2568 if (isGV_with_GP(sv)) {
2569 glob_2number(MUTABLE_GV(sv));
2573 if (!PL_localizing && !(SvFLAGS(sv) & SVs_PADTMP) && ckWARN(WARN_UNINITIALIZED))
2575 assert (SvTYPE(sv) >= SVt_NV);
2576 /* Typically the caller expects that sv_any is not NULL now. */
2577 /* XXX Ilya implies that this is a bug in callers that assume this
2578 and ideally should be fixed. */
2581 #if defined(USE_LONG_DOUBLE)
2583 STORE_NUMERIC_LOCAL_SET_STANDARD();
2584 PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2nv(%" PERL_PRIgldbl ")\n",
2585 PTR2UV(sv), SvNVX(sv));
2586 RESTORE_NUMERIC_LOCAL();
2590 STORE_NUMERIC_LOCAL_SET_STANDARD();
2591 PerlIO_printf(Perl_debug_log, "0x%"UVxf" 1nv(%"NVgf")\n",
2592 PTR2UV(sv), SvNVX(sv));
2593 RESTORE_NUMERIC_LOCAL();
2602 Return an SV with the numeric value of the source SV, doing any necessary
2603 reference or overload conversion. You must use the C<SvNUM(sv)> macro to
2604 access this function.
2610 Perl_sv_2num(pTHX_ register SV *const sv)
2612 PERL_ARGS_ASSERT_SV_2NUM;
2617 SV * const tmpsv = AMG_CALLun(sv,numer);
2618 TAINT_IF(tmpsv && SvTAINTED(tmpsv));
2619 if (tmpsv && (!SvROK(tmpsv) || (SvRV(tmpsv) != SvRV(sv))))
2620 return sv_2num(tmpsv);
2622 return sv_2mortal(newSVuv(PTR2UV(SvRV(sv))));
2625 /* uiv_2buf(): private routine for use by sv_2pv_flags(): print an IV or
2626 * UV as a string towards the end of buf, and return pointers to start and
2629 * We assume that buf is at least TYPE_CHARS(UV) long.
2633 S_uiv_2buf(char *const buf, const IV iv, UV uv, const int is_uv, char **const peob)
2635 char *ptr = buf + TYPE_CHARS(UV);
2636 char * const ebuf = ptr;
2639 PERL_ARGS_ASSERT_UIV_2BUF;
2651 *--ptr = '0' + (char)(uv % 10);
2660 =for apidoc sv_2pv_flags
2662 Returns a pointer to the string value of an SV, and sets *lp to its length.
2663 If flags includes SV_GMAGIC, does an mg_get() first. Coerces sv to a string
2665 Normally invoked via the C<SvPV_flags> macro. C<sv_2pv()> and C<sv_2pv_nomg>
2666 usually end up here too.
2672 Perl_sv_2pv_flags(pTHX_ register SV *const sv, STRLEN *const lp, const I32 flags)
2682 if (SvGMAGICAL(sv)) {
2683 if (flags & SV_GMAGIC)
2688 if (flags & SV_MUTABLE_RETURN)
2689 return SvPVX_mutable(sv);
2690 if (flags & SV_CONST_RETURN)
2691 return (char *)SvPVX_const(sv);
2694 if (SvIOKp(sv) || SvNOKp(sv)) {
2695 char tbuf[64]; /* Must fit sprintf/Gconvert of longest IV/NV */
2700 ? my_snprintf(tbuf, sizeof(tbuf), "%"UVuf, (UV)SvUVX(sv))
2701 : my_snprintf(tbuf, sizeof(tbuf), "%"IVdf, (IV)SvIVX(sv));
2703 Gconvert(SvNVX(sv), NV_DIG, 0, tbuf);
2710 #ifdef FIXNEGATIVEZERO
2711 if (len == 2 && tbuf[0] == '-' && tbuf[1] == '0') {
2717 SvUPGRADE(sv, SVt_PV);
2720 s = SvGROW_mutable(sv, len + 1);
2723 return (char*)memcpy(s, tbuf, len + 1);
2729 assert(SvTYPE(sv) >= SVt_PVMG);
2730 /* This falls through to the report_uninit near the end of the
2732 } else if (SvTHINKFIRST(sv)) {
2737 if (flags & SV_SKIP_OVERLOAD)
2739 tmpstr = AMG_CALLun(sv,string);
2740 TAINT_IF(tmpstr && SvTAINTED(tmpstr));
2741 if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) {
2743 /* char *pv = lp ? SvPV(tmpstr, *lp) : SvPV_nolen(tmpstr);
2747 if ((SvFLAGS(tmpstr) & (SVf_POK)) == SVf_POK) {
2748 if (flags & SV_CONST_RETURN) {
2749 pv = (char *) SvPVX_const(tmpstr);
2751 pv = (flags & SV_MUTABLE_RETURN)
2752 ? SvPVX_mutable(tmpstr) : SvPVX(tmpstr);
2755 *lp = SvCUR(tmpstr);
2757 pv = sv_2pv_flags(tmpstr, lp, flags);
2770 SV *const referent = SvRV(sv);
2774 retval = buffer = savepvn("NULLREF", len);
2775 } else if (SvTYPE(referent) == SVt_REGEXP) {
2776 REGEXP * const re = (REGEXP *)MUTABLE_PTR(referent);
2781 /* If the regex is UTF-8 we want the containing scalar to
2782 have an UTF-8 flag too */
2788 if ((seen_evals = RX_SEEN_EVALS(re)))
2789 PL_reginterp_cnt += seen_evals;
2792 *lp = RX_WRAPLEN(re);
2794 return RX_WRAPPED(re);
2796 const char *const typestr = sv_reftype(referent, 0);
2797 const STRLEN typelen = strlen(typestr);
2798 UV addr = PTR2UV(referent);
2799 const char *stashname = NULL;
2800 STRLEN stashnamelen = 0; /* hush, gcc */
2801 const char *buffer_end;
2803 if (SvOBJECT(referent)) {
2804 const HEK *const name = HvNAME_HEK(SvSTASH(referent));
2807 stashname = HEK_KEY(name);
2808 stashnamelen = HEK_LEN(name);
2810 if (HEK_UTF8(name)) {
2816 stashname = "__ANON__";
2819 len = stashnamelen + 1 /* = */ + typelen + 3 /* (0x */
2820 + 2 * sizeof(UV) + 2 /* )\0 */;
2822 len = typelen + 3 /* (0x */
2823 + 2 * sizeof(UV) + 2 /* )\0 */;
2826 Newx(buffer, len, char);
2827 buffer_end = retval = buffer + len;
2829 /* Working backwards */
2833 *--retval = PL_hexdigit[addr & 15];
2834 } while (addr >>= 4);
2840 memcpy(retval, typestr, typelen);
2844 retval -= stashnamelen;
2845 memcpy(retval, stashname, stashnamelen);
2847 /* retval may not neccesarily have reached the start of the
2849 assert (retval >= buffer);
2851 len = buffer_end - retval - 1; /* -1 for that \0 */
2859 if (SvREADONLY(sv) && !SvOK(sv)) {
2862 if (flags & SV_UNDEF_RETURNS_NULL)
2864 if (ckWARN(WARN_UNINITIALIZED))
2869 if (SvIOK(sv) || ((SvIOKp(sv) && !SvNOKp(sv)))) {
2870 /* I'm assuming that if both IV and NV are equally valid then
2871 converting the IV is going to be more efficient */
2872 const U32 isUIOK = SvIsUV(sv);
2873 char buf[TYPE_CHARS(UV)];
2877 if (SvTYPE(sv) < SVt_PVIV)
2878 sv_upgrade(sv, SVt_PVIV);
2879 ptr = uiv_2buf(buf, SvIVX(sv), SvUVX(sv), isUIOK, &ebuf);
2881 /* inlined from sv_setpvn */
2882 s = SvGROW_mutable(sv, len + 1);
2883 Move(ptr, s, len, char);
2887 else if (SvNOKp(sv)) {
2889 if (SvTYPE(sv) < SVt_PVNV)
2890 sv_upgrade(sv, SVt_PVNV);
2891 /* The +20 is pure guesswork. Configure test needed. --jhi */
2892 s = SvGROW_mutable(sv, NV_DIG + 20);
2893 /* some Xenix systems wipe out errno here */
2895 if (SvNVX(sv) == 0.0)
2896 my_strlcpy(s, "0", SvLEN(sv));
2900 Gconvert(SvNVX(sv), NV_DIG, 0, s);
2903 #ifdef FIXNEGATIVEZERO
2904 if (*s == '-' && s[1] == '0' && !s[2]) {
2916 if (isGV_with_GP(sv)) {
2917 GV *const gv = MUTABLE_GV(sv);
2918 const U32 wasfake = SvFLAGS(gv) & SVf_FAKE;
2919 SV *const buffer = sv_newmortal();
2921 /* FAKE globs can get coerced, so need to turn this off temporarily
2924 gv_efullname3(buffer, gv, "*");
2925 SvFLAGS(gv) |= wasfake;
2927 if (SvPOK(buffer)) {
2929 *lp = SvCUR(buffer);
2931 return SvPVX(buffer);
2942 if (flags & SV_UNDEF_RETURNS_NULL)
2944 if (!PL_localizing && !(SvFLAGS(sv) & SVs_PADTMP) && ckWARN(WARN_UNINITIALIZED))
2946 if (SvTYPE(sv) < SVt_PV)
2947 /* Typically the caller expects that sv_any is not NULL now. */
2948 sv_upgrade(sv, SVt_PV);
2952 const STRLEN len = s - SvPVX_const(sv);
2958 DEBUG_c(PerlIO_printf(Perl_debug_log, "0x%"UVxf" 2pv(%s)\n",
2959 PTR2UV(sv),SvPVX_const(sv)));
2960 if (flags & SV_CONST_RETURN)
2961 return (char *)SvPVX_const(sv);
2962 if (flags & SV_MUTABLE_RETURN)
2963 return SvPVX_mutable(sv);
2968 =for apidoc sv_copypv
2970 Copies a stringified representation of the source SV into the
2971 destination SV. Automatically performs any necessary mg_get and
2972 coercion of numeric values into strings. Guaranteed to preserve
2973 UTF8 flag even from overloaded objects. Similar in nature to
2974 sv_2pv[_flags] but operates directly on an SV instead of just the
2975 string. Mostly uses sv_2pv_flags to do its work, except when that
2976 would lose the UTF-8'ness of the PV.
2982 Perl_sv_copypv(pTHX_ SV *const dsv, register SV *const ssv)
2985 const char * const s = SvPV_const(ssv,len);
2987 PERL_ARGS_ASSERT_SV_COPYPV;
2989 sv_setpvn(dsv,s,len);
2997 =for apidoc sv_2pvbyte
2999 Return a pointer to the byte-encoded representation of the SV, and set *lp
3000 to its length. May cause the SV to be downgraded from UTF-8 as a
3003 Usually accessed via the C<SvPVbyte> macro.
3009 Perl_sv_2pvbyte(pTHX_ register SV *const sv, STRLEN *const lp)
3011 PERL_ARGS_ASSERT_SV_2PVBYTE;
3013 sv_utf8_downgrade(sv,0);
3014 return lp ? SvPV(sv,*lp) : SvPV_nolen(sv);
3018 =for apidoc sv_2pvutf8
3020 Return a pointer to the UTF-8-encoded representation of the SV, and set *lp
3021 to its length. May cause the SV to be upgraded to UTF-8 as a side-effect.
3023 Usually accessed via the C<SvPVutf8> macro.
3029 Perl_sv_2pvutf8(pTHX_ register SV *const sv, STRLEN *const lp)
3031 PERL_ARGS_ASSERT_SV_2PVUTF8;
3033 sv_utf8_upgrade(sv);
3034 return lp ? SvPV(sv,*lp) : SvPV_nolen(sv);
3039 =for apidoc sv_2bool
3041 This function is only called on magical items, and is only used by
3042 sv_true() or its macro equivalent.
3048 Perl_sv_2bool(pTHX_ register SV *const sv)
3052 PERL_ARGS_ASSERT_SV_2BOOL;
3060 SV * const tmpsv = AMG_CALLun(sv,bool_);
3061 if (tmpsv && (!SvROK(tmpsv) || (SvRV(tmpsv) != SvRV(sv))))
3062 return cBOOL(SvTRUE(tmpsv));
3064 return SvRV(sv) != 0;
3067 register XPV* const Xpvtmp = (XPV*)SvANY(sv);
3069 (*sv->sv_u.svu_pv > '0' ||
3070 Xpvtmp->xpv_cur > 1 ||
3071 (Xpvtmp->xpv_cur && *sv->sv_u.svu_pv != '0')))
3078 return SvIVX(sv) != 0;
3081 return SvNVX(sv) != 0.0;
3083 if (isGV_with_GP(sv))
3093 =for apidoc sv_utf8_upgrade
3095 Converts the PV of an SV to its UTF-8-encoded form.
3096 Forces the SV to string form if it is not already.
3097 Will C<mg_get> on C<sv> if appropriate.
3098 Always sets the SvUTF8 flag to avoid future validity checks even
3099 if the whole string is the same in UTF-8 as not.
3100 Returns the number of bytes in the converted string
3102 This is not as a general purpose byte encoding to Unicode interface:
3103 use the Encode extension for that.
3105 =for apidoc sv_utf8_upgrade_nomg
3107 Like sv_utf8_upgrade, but doesn't do magic on C<sv>
3109 =for apidoc sv_utf8_upgrade_flags
3111 Converts the PV of an SV to its UTF-8-encoded form.
3112 Forces the SV to string form if it is not already.
3113 Always sets the SvUTF8 flag to avoid future validity checks even
3114 if all the bytes are invariant in UTF-8. If C<flags> has C<SV_GMAGIC> bit set,
3115 will C<mg_get> on C<sv> if appropriate, else not.
3116 Returns the number of bytes in the converted string
3117 C<sv_utf8_upgrade> and
3118 C<sv_utf8_upgrade_nomg> are implemented in terms of this function.
3120 This is not as a general purpose byte encoding to Unicode interface:
3121 use the Encode extension for that.
3125 The grow version is currently not externally documented. It adds a parameter,
3126 extra, which is the number of unused bytes the string of 'sv' is guaranteed to
3127 have free after it upon return. This allows the caller to reserve extra space
3128 that it intends to fill, to avoid extra grows.
3130 Also externally undocumented for the moment is the flag SV_FORCE_UTF8_UPGRADE,
3131 which can be used to tell this function to not first check to see if there are
3132 any characters that are different in UTF-8 (variant characters) which would
3133 force it to allocate a new string to sv, but to assume there are. Typically
3134 this flag is used by a routine that has already parsed the string to find that
3135 there are such characters, and passes this information on so that the work
3136 doesn't have to be repeated.
3138 (One might think that the calling routine could pass in the position of the
3139 first such variant, so it wouldn't have to be found again. But that is not the
3140 case, because typically when the caller is likely to use this flag, it won't be
3141 calling this routine unless it finds something that won't fit into a byte.
3142 Otherwise it tries to not upgrade and just use bytes. But some things that
3143 do fit into a byte are variants in utf8, and the caller may not have been
3144 keeping track of these.)
3146 If the routine itself changes the string, it adds a trailing NUL. Such a NUL
3147 isn't guaranteed due to having other routines do the work in some input cases,
3148 or if the input is already flagged as being in utf8.
3150 The speed of this could perhaps be improved for many cases if someone wanted to
3151 write a fast function that counts the number of variant characters in a string,
3152 especially if it could return the position of the first one.
3157 Perl_sv_utf8_upgrade_flags_grow(pTHX_ register SV *const sv, const I32 flags, STRLEN extra)
3161 PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS_GROW;
3163 if (sv == &PL_sv_undef)
3167 if (SvREADONLY(sv) && (SvPOKp(sv) || SvIOKp(sv) || SvNOKp(sv))) {
3168 (void) sv_2pv_flags(sv,&len, flags);
3170 if (extra) SvGROW(sv, SvCUR(sv) + extra);
3174 (void) SvPV_force(sv,len);
3179 if (extra) SvGROW(sv, SvCUR(sv) + extra);
3184 sv_force_normal_flags(sv, 0);
3187 if (PL_encoding && !(flags & SV_UTF8_NO_ENCODING)) {
3188 sv_recode_to_utf8(sv, PL_encoding);
3189 if (extra) SvGROW(sv, SvCUR(sv) + extra);
3193 if (SvCUR(sv) == 0) {
3194 if (extra) SvGROW(sv, extra);
3195 } else { /* Assume Latin-1/EBCDIC */
3196 /* This function could be much more efficient if we
3197 * had a FLAG in SVs to signal if there are any variant
3198 * chars in the PV. Given that there isn't such a flag
3199 * make the loop as fast as possible (although there are certainly ways
3200 * to speed this up, eg. through vectorization) */
3201 U8 * s = (U8 *) SvPVX_const(sv);
3202 U8 * e = (U8 *) SvEND(sv);
3204 STRLEN two_byte_count = 0;
3206 if (flags & SV_FORCE_UTF8_UPGRADE) goto must_be_utf8;
3208 /* See if really will need to convert to utf8. We mustn't rely on our
3209 * incoming SV being well formed and having a trailing '\0', as certain
3210 * code in pp_formline can send us partially built SVs. */
3214 if (NATIVE_IS_INVARIANT(ch)) continue;
3216 t--; /* t already incremented; re-point to first variant */
3221 /* utf8 conversion not needed because all are invariants. Mark as
3222 * UTF-8 even if no variant - saves scanning loop */
3228 /* Here, the string should be converted to utf8, either because of an
3229 * input flag (two_byte_count = 0), or because a character that
3230 * requires 2 bytes was found (two_byte_count = 1). t points either to
3231 * the beginning of the string (if we didn't examine anything), or to
3232 * the first variant. In either case, everything from s to t - 1 will
3233 * occupy only 1 byte each on output.
3235 * There are two main ways to convert. One is to create a new string
3236 * and go through the input starting from the beginning, appending each
3237 * converted value onto the new string as we go along. It's probably
3238 * best to allocate enough space in the string for the worst possible
3239 * case rather than possibly running out of space and having to
3240 * reallocate and then copy what we've done so far. Since everything
3241 * from s to t - 1 is invariant, the destination can be initialized
3242 * with these using a fast memory copy
3244 * The other way is to figure out exactly how big the string should be
3245 * by parsing the entire input. Then you don't have to make it big
3246 * enough to handle the worst possible case, and more importantly, if
3247 * the string you already have is large enough, you don't have to
3248 * allocate a new string, you can copy the last character in the input
3249 * string to the final position(s) that will be occupied by the
3250 * converted string and go backwards, stopping at t, since everything
3251 * before that is invariant.
3253 * There are advantages and disadvantages to each method.
3255 * In the first method, we can allocate a new string, do the memory
3256 * copy from the s to t - 1, and then proceed through the rest of the
3257 * string byte-by-byte.
3259 * In the second method, we proceed through the rest of the input
3260 * string just calculating how big the converted string will be. Then
3261 * there are two cases:
3262 * 1) if the string has enough extra space to handle the converted
3263 * value. We go backwards through the string, converting until we
3264 * get to the position we are at now, and then stop. If this
3265 * position is far enough along in the string, this method is
3266 * faster than the other method. If the memory copy were the same
3267 * speed as the byte-by-byte loop, that position would be about
3268 * half-way, as at the half-way mark, parsing to the end and back
3269 * is one complete string's parse, the same amount as starting
3270 * over and going all the way through. Actually, it would be
3271 * somewhat less than half-way, as it's faster to just count bytes
3272 * than to also copy, and we don't have the overhead of allocating
3273 * a new string, changing the scalar to use it, and freeing the
3274 * existing one. But if the memory copy is fast, the break-even
3275 * point is somewhere after half way. The counting loop could be
3276 * sped up by vectorization, etc, to move the break-even point
3277 * further towards the beginning.
3278 * 2) if the string doesn't have enough space to handle the converted
3279 * value. A new string will have to be allocated, and one might
3280 * as well, given that, start from the beginning doing the first
3281 * method. We've spent extra time parsing the string and in
3282 * exchange all we've gotten is that we know precisely how big to
3283 * make the new one. Perl is more optimized for time than space,
3284 * so this case is a loser.
3285 * So what I've decided to do is not use the 2nd method unless it is
3286 * guaranteed that a new string won't have to be allocated, assuming
3287 * the worst case. I also decided not to put any more conditions on it
3288 * than this, for now. It seems likely that, since the worst case is
3289 * twice as big as the unknown portion of the string (plus 1), we won't
3290 * be guaranteed enough space, causing us to go to the first method,
3291 * unless the string is short, or the first variant character is near
3292 * the end of it. In either of these cases, it seems best to use the
3293 * 2nd method. The only circumstance I can think of where this would
3294 * be really slower is if the string had once had much more data in it
3295 * than it does now, but there is still a substantial amount in it */
3298 STRLEN invariant_head = t - s;
3299 STRLEN size = invariant_head + (e - t) * 2 + 1 + extra;
3300 if (SvLEN(sv) < size) {
3302 /* Here, have decided to allocate a new string */
3307 Newx(dst, size, U8);
3309 /* If no known invariants at the beginning of the input string,
3310 * set so starts from there. Otherwise, can use memory copy to
3311 * get up to where we are now, and then start from here */
3313 if (invariant_head <= 0) {
3316 Copy(s, dst, invariant_head, char);
3317 d = dst + invariant_head;
3321 const UV uv = NATIVE8_TO_UNI(*t++);
3322 if (UNI_IS_INVARIANT(uv))
3323 *d++ = (U8)UNI_TO_NATIVE(uv);
3325 *d++ = (U8)UTF8_EIGHT_BIT_HI(uv);
3326 *d++ = (U8)UTF8_EIGHT_BIT_LO(uv);
3330 SvPV_free(sv); /* No longer using pre-existing string */
3331 SvPV_set(sv, (char*)dst);
3332 SvCUR_set(sv, d - dst);
3333 SvLEN_set(sv, size);
3336 /* Here, have decided to get the exact size of the string.
3337 * Currently this happens only when we know that there is
3338 * guaranteed enough space to fit the converted string, so
3339 * don't have to worry about growing. If two_byte_count is 0,
3340 * then t points to the first byte of the string which hasn't
3341 * been examined yet. Otherwise two_byte_count is 1, and t
3342 * points to the first byte in the string that will expand to
3343 * two. Depending on this, start examining at t or 1 after t.
3346 U8 *d = t + two_byte_count;
3349 /* Count up the remaining bytes that expand to two */
3352 const U8 chr = *d++;
3353 if (! NATIVE_IS_INVARIANT(chr)) two_byte_count++;
3356 /* The string will expand by just the number of bytes that
3357 * occupy two positions. But we are one afterwards because of
3358 * the increment just above. This is the place to put the
3359 * trailing NUL, and to set the length before we decrement */
3361 d += two_byte_count;
3362 SvCUR_set(sv, d - s);
3366 /* Having decremented d, it points to the position to put the
3367 * very last byte of the expanded string. Go backwards through
3368 * the string, copying and expanding as we go, stopping when we
3369 * get to the part that is invariant the rest of the way down */
3373 const U8 ch = NATIVE8_TO_UNI(*e--);
3374 if (UNI_IS_INVARIANT(ch)) {
3375 *d-- = UNI_TO_NATIVE(ch);
3377 *d-- = (U8)UTF8_EIGHT_BIT_LO(ch);
3378 *d-- = (U8)UTF8_EIGHT_BIT_HI(ch);
3385 /* Mark as UTF-8 even if no variant - saves scanning loop */
3391 =for apidoc sv_utf8_downgrade
3393 Attempts to convert the PV of an SV from characters to bytes.
3394 If the PV contains a character that cannot fit
3395 in a byte, this conversion will fail;
3396 in this case, either returns false or, if C<fail_ok> is not
3399 This is not as a general purpose Unicode to byte encoding interface:
3400 use the Encode extension for that.
3406 Perl_sv_utf8_downgrade(pTHX_ register SV *const sv, const bool fail_ok)
3410 PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE;
3412 if (SvPOKp(sv) && SvUTF8(sv)) {
3418 sv_force_normal_flags(sv, 0);
3420 s = (U8 *) SvPV(sv, len);
3421 if (!utf8_to_bytes(s, &len)) {
3426 Perl_croak(aTHX_ "Wide character in %s",
3429 Perl_croak(aTHX_ "Wide character");
3440 =for apidoc sv_utf8_encode
3442 Converts the PV of an SV to UTF-8, but then turns the C<SvUTF8>
3443 flag off so that it looks like octets again.
3449 Perl_sv_utf8_encode(pTHX_ register SV *const sv)
3451 PERL_ARGS_ASSERT_SV_UTF8_ENCODE;
3454 sv_force_normal_flags(sv, 0);
3456 if (SvREADONLY(sv)) {
3457 Perl_croak_no_modify(aTHX);
3459 (void) sv_utf8_upgrade(sv);
3464 =for apidoc sv_utf8_decode
3466 If the PV of the SV is an octet sequence in UTF-8
3467 and contains a multiple-byte character, the C<SvUTF8> flag is turned on
3468 so that it looks like a character. If the PV contains only single-byte
3469 characters, the C<SvUTF8> flag stays being off.
3470 Scans PV for validity and returns false if the PV is invalid UTF-8.
3476 Perl_sv_utf8_decode(pTHX_ register SV *const sv)
3478 PERL_ARGS_ASSERT_SV_UTF8_DECODE;
3484 /* The octets may have got themselves encoded - get them back as
3487 if (!sv_utf8_downgrade(sv, TRUE))
3490 /* it is actually just a matter of turning the utf8 flag on, but
3491 * we want to make sure everything inside is valid utf8 first.
3493 c = (const U8 *) SvPVX_const(sv);
3494 if (!is_utf8_string(c, SvCUR(sv)+1))
3496 e = (const U8 *) SvEND(sv);
3499 if (!UTF8_IS_INVARIANT(ch)) {
3509 =for apidoc sv_setsv
3511 Copies the contents of the source SV C<ssv> into the destination SV
3512 C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
3513 function if the source SV needs to be reused. Does not handle 'set' magic.
3514 Loosely speaking, it performs a copy-by-value, obliterating any previous
3515 content of the destination.
3517 You probably want to use one of the assortment of wrappers, such as
3518 C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
3519 C<SvSetMagicSV_nosteal>.
3521 =for apidoc sv_setsv_flags
3523 Copies the contents of the source SV C<ssv> into the destination SV
3524 C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
3525 function if the source SV needs to be reused. Does not handle 'set' magic.
3526 Loosely speaking, it performs a copy-by-value, obliterating any previous
3527 content of the destination.
3528 If the C<flags> parameter has the C<SV_GMAGIC> bit set, will C<mg_get> on
3529 C<ssv> if appropriate, else not. If the C<flags> parameter has the
3530 C<NOSTEAL> bit set then the buffers of temps will not be stolen. <sv_setsv>
3531 and C<sv_setsv_nomg> are implemented in terms of this function.
3533 You probably want to use one of the assortment of wrappers, such as
3534 C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
3535 C<SvSetMagicSV_nosteal>.
3537 This is the primary function for copying scalars, and most other
3538 copy-ish functions and macros use this underneath.
3544 S_glob_assign_glob(pTHX_ SV *const dstr, SV *const sstr, const int dtype)
3546 I32 mro_changes = 0; /* 1 = method, 2 = isa */
3548 PERL_ARGS_ASSERT_GLOB_ASSIGN_GLOB;
3550 if (dtype != SVt_PVGV) {
3551 const char * const name = GvNAME(sstr);
3552 const STRLEN len = GvNAMELEN(sstr);
3554 if (dtype >= SVt_PV) {
3560 SvUPGRADE(dstr, SVt_PVGV);
3561 (void)SvOK_off(dstr);
3562 /* FIXME - why are we doing this, then turning it off and on again
3564 isGV_with_GP_on(dstr);
3566 GvSTASH(dstr) = GvSTASH(sstr);
3568 Perl_sv_add_backref(aTHX_ MUTABLE_SV(GvSTASH(dstr)), dstr);
3569 gv_name_set(MUTABLE_GV(dstr), name, len, GV_ADD);
3570 SvFAKE_on(dstr); /* can coerce to non-glob */
3573 if(GvGP(MUTABLE_GV(sstr))) {
3574 /* If source has method cache entry, clear it */
3576 SvREFCNT_dec(GvCV(sstr));
3580 /* If source has a real method, then a method is
3582 else if(GvCV((const GV *)sstr)) {
3587 /* If dest already had a real method, that's a change as well */
3588 if(!mro_changes && GvGP(MUTABLE_GV(dstr)) && GvCVu((const GV *)dstr)) {
3592 if(strEQ(GvNAME((const GV *)dstr),"ISA"))
3595 gp_free(MUTABLE_GV(dstr));
3596 isGV_with_GP_off(dstr);
3597 (void)SvOK_off(dstr);
3598 isGV_with_GP_on(dstr);
3599 GvINTRO_off(dstr); /* one-shot flag */
3600 GvGP(dstr) = gp_ref(GvGP(sstr));
3601 if (SvTAINTED(sstr))
3603 if (GvIMPORTED(dstr) != GVf_IMPORTED
3604 && CopSTASH_ne(PL_curcop, GvSTASH(dstr)))
3606 GvIMPORTED_on(dstr);
3609 if(mro_changes == 2) mro_isa_changed_in(GvSTASH(dstr));
3610 else if(mro_changes) mro_method_changed_in(GvSTASH(dstr));
3615 S_glob_assign_ref(pTHX_ SV *const dstr, SV *const sstr)
3617 SV * const sref = SvREFCNT_inc(SvRV(sstr));
3619 const int intro = GvINTRO(dstr);
3622 const U32 stype = SvTYPE(sref);
3624 PERL_ARGS_ASSERT_GLOB_ASSIGN_REF;
3627 GvINTRO_off(dstr); /* one-shot flag */
3628 GvLINE(dstr) = CopLINE(PL_curcop);
3629 GvEGV(dstr) = MUTABLE_GV(dstr);
3634 location = (SV **) &GvCV(dstr);
3635 import_flag = GVf_IMPORTED_CV;
3638 location = (SV **) &GvHV(dstr);
3639 import_flag = GVf_IMPORTED_HV;
3642 location = (SV **) &GvAV(dstr);
3643 import_flag = GVf_IMPORTED_AV;
3646 location = (SV **) &GvIOp(dstr);
3649 location = (SV **) &GvFORM(dstr);
3652 location = &GvSV(dstr);
3653 import_flag = GVf_IMPORTED_SV;
3656 if (stype == SVt_PVCV) {
3657 /*if (GvCVGEN(dstr) && (GvCV(dstr) != (const CV *)sref || GvCVGEN(dstr))) {*/
3658 if (GvCVGEN(dstr)) {
3659 SvREFCNT_dec(GvCV(dstr));
3661 GvCVGEN(dstr) = 0; /* Switch off cacheness. */
3664 SAVEGENERICSV(*location);
3668 if (stype == SVt_PVCV && (*location != sref || GvCVGEN(dstr))) {
3669 CV* const cv = MUTABLE_CV(*location);
3671 if (!GvCVGEN((const GV *)dstr) &&
3672 (CvROOT(cv) || CvXSUB(cv)))
3674 /* Redefining a sub - warning is mandatory if
3675 it was a const and its value changed. */
3676 if (CvCONST(cv) && CvCONST((const CV *)sref)
3678 == cv_const_sv((const CV *)sref)) {
3680 /* They are 2 constant subroutines generated from
3681 the same constant. This probably means that
3682 they are really the "same" proxy subroutine
3683 instantiated in 2 places. Most likely this is
3684 when a constant is exported twice. Don't warn.
3687 else if (ckWARN(WARN_REDEFINE)
3689 && (!CvCONST((const CV *)sref)
3690 || sv_cmp(cv_const_sv(cv),
3691 cv_const_sv((const CV *)
3693 Perl_warner(aTHX_ packWARN(WARN_REDEFINE),
3696 ? "Constant subroutine %s::%s redefined"
3697 : "Subroutine %s::%s redefined"),
3698 HvNAME_get(GvSTASH((const GV *)dstr)),
3699 GvENAME(MUTABLE_GV(dstr)));
3703 cv_ckproto_len(cv, (const GV *)dstr,
3704 SvPOK(sref) ? SvPVX_const(sref) : NULL,
3705 SvPOK(sref) ? SvCUR(sref) : 0);
3707 GvCVGEN(dstr) = 0; /* Switch off cacheness. */
3708 GvASSUMECV_on(dstr);
3709 if(GvSTASH(dstr)) mro_method_changed_in(GvSTASH(dstr)); /* sub foo { 1 } sub bar { 2 } *bar = \&foo */
3712 if (import_flag && !(GvFLAGS(dstr) & import_flag)
3713 && CopSTASH_ne(PL_curcop, GvSTASH(dstr))) {
3714 GvFLAGS(dstr) |= import_flag;
3716 if (stype == SVt_PVAV && strEQ(GvNAME((GV*)dstr), "ISA")) {
3717 sv_magic(sref, dstr, PERL_MAGIC_isa, NULL, 0);
3718 mro_isa_changed_in(GvSTASH(dstr));
3723 if (SvTAINTED(sstr))
3729 Perl_sv_setsv_flags(pTHX_ SV *dstr, register SV* sstr, const I32 flags)
3732 register U32 sflags;
3734 register svtype stype;
3736 PERL_ARGS_ASSERT_SV_SETSV_FLAGS;
3741 if (SvIS_FREED(dstr)) {
3742 Perl_croak(aTHX_ "panic: attempt to copy value %" SVf
3743 " to a freed scalar %p", SVfARG(sstr), (void *)dstr);
3745 SV_CHECK_THINKFIRST_COW_DROP(dstr);
3747 sstr = &PL_sv_undef;
3748 if (SvIS_FREED(sstr)) {
3749 Perl_croak(aTHX_ "panic: attempt to copy freed scalar %p to %p",
3750 (void*)sstr, (void*)dstr);
3752 stype = SvTYPE(sstr);
3753 dtype = SvTYPE(dstr);
3755 (void)SvAMAGIC_off(dstr);
3758 /* need to nuke the magic */
3762 /* There's a lot of redundancy below but we're going for speed here */
3767 if (dtype != SVt_PVGV) {
3768 (void)SvOK_off(dstr);
3776 sv_upgrade(dstr, SVt_IV);
3780 sv_upgrade(dstr, SVt_PVIV);
3783 goto end_of_first_switch;
3785 (void)SvIOK_only(dstr);
3786 SvIV_set(dstr, SvIVX(sstr));
3789 /* SvTAINTED can only be true if the SV has taint magic, which in
3790 turn means that the SV type is PVMG (or greater). This is the
3791 case statement for SVt_IV, so this cannot be true (whatever gcov
3793 assert(!SvTAINTED(sstr));
3798 if (dtype < SVt_PV && dtype != SVt_IV)
3799 sv_upgrade(dstr, SVt_IV);
3807 sv_upgrade(dstr, SVt_NV);
3811 sv_upgrade(dstr, SVt_PVNV);
3814 goto end_of_first_switch;
3816 SvNV_set(dstr, SvNVX(sstr));
3817 (void)SvNOK_only(dstr);
3818 /* SvTAINTED can only be true if the SV has taint magic, which in
3819 turn means that the SV type is PVMG (or greater). This is the
3820 case statement for SVt_NV, so this cannot be true (whatever gcov
3822 assert(!SvTAINTED(sstr));
3828 #ifdef PERL_OLD_COPY_ON_WRITE
3829 if ((SvFLAGS(sstr) & CAN_COW_MASK) == CAN_COW_FLAGS) {
3830 if (dtype < SVt_PVIV)
3831 sv_upgrade(dstr, SVt_PVIV);
3838 sv_upgrade(dstr, SVt_PV);
3841 if (dtype < SVt_PVIV)
3842 sv_upgrade(dstr, SVt_PVIV);
3845 if (dtype < SVt_PVNV)
3846 sv_upgrade(dstr, SVt_PVNV);
3850 const char * const type = sv_reftype(sstr,0);
3852 Perl_croak(aTHX_ "Bizarre copy of %s in %s", type, OP_DESC(PL_op));
3854 Perl_croak(aTHX_ "Bizarre copy of %s", type);
3859 if (dtype < SVt_REGEXP)
3860 sv_upgrade(dstr, SVt_REGEXP);
3863 /* case SVt_BIND: */
3866 if (isGV_with_GP(sstr) && dtype <= SVt_PVGV) {
3867 glob_assign_glob(dstr, sstr, dtype);
3870 /* SvVALID means that this PVGV is playing at being an FBM. */
3874 if (SvGMAGICAL(sstr) && (flags & SV_GMAGIC)) {
3876 if (SvTYPE(sstr) != stype) {
3877 stype = SvTYPE(sstr);
3878 if (isGV_with_GP(sstr) && stype == SVt_PVGV && dtype <= SVt_PVGV) {
3879 glob_assign_glob(dstr, sstr, dtype);
3884 if (stype == SVt_PVLV)
3885 SvUPGRADE(dstr, SVt_PVNV);
3887 SvUPGRADE(dstr, (svtype)stype);
3889 end_of_first_switch:
3891 /* dstr may have been upgraded. */
3892 dtype = SvTYPE(dstr);
3893 sflags = SvFLAGS(sstr);
3895 if (dtype == SVt_PVCV || dtype == SVt_PVFM) {
3896 /* Assigning to a subroutine sets the prototype. */
3899 const char *const ptr = SvPV_const(sstr, len);
3901 SvGROW(dstr, len + 1);
3902 Copy(ptr, SvPVX(dstr), len + 1, char);
3903 SvCUR_set(dstr, len);
3905 SvFLAGS(dstr) |= sflags & SVf_UTF8;
3909 } else if (dtype == SVt_PVAV || dtype == SVt_PVHV) {
3910 const char * const type = sv_reftype(dstr,0);
3912 Perl_croak(aTHX_ "Cannot copy to %s in %s", type, OP_DESC(PL_op));
3914 Perl_croak(aTHX_ "Cannot copy to %s", type);
3915 } else if (sflags & SVf_ROK) {
3916 if (isGV_with_GP(dstr) && dtype == SVt_PVGV
3917 && SvTYPE(SvRV(sstr)) == SVt_PVGV && isGV_with_GP(SvRV(sstr))) {
3920 if (GvIMPORTED(dstr) != GVf_IMPORTED
3921 && CopSTASH_ne(PL_curcop, GvSTASH(dstr)))
3923 GvIMPORTED_on(dstr);
3928 glob_assign_glob(dstr, sstr, dtype);
3932 if (dtype >= SVt_PV) {
3933 if (dtype == SVt_PVGV && isGV_with_GP(dstr)) {
3934 glob_assign_ref(dstr, sstr);
3937 if (SvPVX_const(dstr)) {
3943 (void)SvOK_off(dstr);
3944 SvRV_set(dstr, SvREFCNT_inc(SvRV(sstr)));
3945 SvFLAGS(dstr) |= sflags & SVf_ROK;
3946 assert(!(sflags & SVp_NOK));
3947 assert(!(sflags & SVp_IOK));
3948 assert(!(sflags & SVf_NOK));
3949 assert(!(sflags & SVf_IOK));
3951 else if (dtype == SVt_PVGV && isGV_with_GP(dstr)) {
3952 if (!(sflags & SVf_OK)) {
3953 Perl_ck_warner(aTHX_ packWARN(WARN_MISC),
3954 "Undefined value assigned to typeglob");
3957 GV *gv = gv_fetchsv(sstr, GV_ADD, SVt_PVGV);
3958 if (dstr != (const SV *)gv) {
3960 gp_free(MUTABLE_GV(dstr));
3961 GvGP(dstr) = gp_ref(GvGP(gv));
3965 else if (dtype == SVt_REGEXP && stype == SVt_REGEXP) {
3966 reg_temp_copy((REGEXP*)dstr, (REGEXP*)sstr);
3968 else if (sflags & SVp_POK) {
3972 * Check to see if we can just swipe the string. If so, it's a
3973 * possible small lose on short strings, but a big win on long ones.
3974 * It might even be a win on short strings if SvPVX_const(dstr)
3975 * has to be allocated and SvPVX_const(sstr) has to be freed.
3976 * Likewise if we can set up COW rather than doing an actual copy, we
3977 * drop to the else clause, as the swipe code and the COW setup code
3978 * have much in common.
3981 /* Whichever path we take through the next code, we want this true,
3982 and doing it now facilitates the COW check. */
3983 (void)SvPOK_only(dstr);
3986 /* If we're already COW then this clause is not true, and if COW
3987 is allowed then we drop down to the else and make dest COW
3988 with us. If caller hasn't said that we're allowed to COW
3989 shared hash keys then we don't do the COW setup, even if the
3990 source scalar is a shared hash key scalar. */
3991 (((flags & SV_COW_SHARED_HASH_KEYS)
3992 ? (sflags & (SVf_FAKE|SVf_READONLY)) != (SVf_FAKE|SVf_READONLY)
3993 : 1 /* If making a COW copy is forbidden then the behaviour we
3994 desire is as if the source SV isn't actually already
3995 COW, even if it is. So we act as if the source flags
3996 are not COW, rather than actually testing them. */
3998 #ifndef PERL_OLD_COPY_ON_WRITE
3999 /* The change that added SV_COW_SHARED_HASH_KEYS makes the logic
4000 when PERL_OLD_COPY_ON_WRITE is defined a little wrong.
4001 Conceptually PERL_OLD_COPY_ON_WRITE being defined should
4002 override SV_COW_SHARED_HASH_KEYS, because it means "always COW"
4003 but in turn, it's somewhat dead code, never expected to go
4004 live, but more kept as a placeholder on how to do it better
4005 in a newer implementation. */
4006 /* If we are COW and dstr is a suitable target then we drop down
4007 into the else and make dest a COW of us. */
4008 || (SvFLAGS(dstr) & CAN_COW_MASK) != CAN_COW_FLAGS
4013 (sflags & SVs_TEMP) && /* slated for free anyway? */
4014 !(sflags & SVf_OOK) && /* and not involved in OOK hack? */
4015 (!(flags & SV_NOSTEAL)) &&
4016 /* and we're allowed to steal temps */
4017 SvREFCNT(sstr) == 1 && /* and no other references to it? */
4018 SvLEN(sstr)) /* and really is a string */
4019 #ifdef PERL_OLD_COPY_ON_WRITE
4020 && ((flags & SV_COW_SHARED_HASH_KEYS)
4021 ? (!((sflags & CAN_COW_MASK) == CAN_COW_FLAGS
4022 && (SvFLAGS(dstr) & CAN_COW_MASK) == CAN_COW_FLAGS
4023 && SvTYPE(sstr) >= SVt_PVIV && SvTYPE(sstr) != SVt_PVFM))
4027 /* Failed the swipe test, and it's not a shared hash key either.
4028 Have to copy the string. */
4029 STRLEN len = SvCUR(sstr);
4030 SvGROW(dstr, len + 1); /* inlined from sv_setpvn */
4031 Move(SvPVX_const(sstr),SvPVX(dstr),len,char);
4032 SvCUR_set(dstr, len);
4033 *SvEND(dstr) = '\0';
4035 /* If PERL_OLD_COPY_ON_WRITE is not defined, then isSwipe will always
4037 /* Either it's a shared hash key, or it's suitable for
4038 copy-on-write or we can swipe the string. */
4040 PerlIO_printf(Perl_debug_log, "Copy on write: sstr --> dstr\n");
4044 #ifdef PERL_OLD_COPY_ON_WRITE
4046 if ((sflags & (SVf_FAKE | SVf_READONLY))
4047 != (SVf_FAKE | SVf_READONLY)) {
4048 SvREADONLY_on(sstr);
4050 /* Make the source SV into a loop of 1.
4051 (about to become 2) */
4052 SV_COW_NEXT_SV_SET(sstr, sstr);
4056 /* Initial code is common. */
4057 if (SvPVX_const(dstr)) { /* we know that dtype >= SVt_PV */
4062 /* making another shared SV. */
4063 STRLEN cur = SvCUR(sstr);
4064 STRLEN len = SvLEN(sstr);
4065 #ifdef PERL_OLD_COPY_ON_WRITE
4067 assert (SvTYPE(dstr) >= SVt_PVIV);
4068 /* SvIsCOW_normal */
4069 /* splice us in between source and next-after-source. */
4070 SV_COW_NEXT_SV_SET(dstr, SV_COW_NEXT_SV(sstr));
4071 SV_COW_NEXT_SV_SET(sstr, dstr);
4072 SvPV_set(dstr, SvPVX_mutable(sstr));
4076 /* SvIsCOW_shared_hash */
4077 DEBUG_C(PerlIO_printf(Perl_debug_log,
4078 "Copy on write: Sharing hash\n"));
4080 assert (SvTYPE(dstr) >= SVt_PV);
4082 HEK_KEY(share_hek_hek(SvSHARED_HEK_FROM_PV(SvPVX_const(sstr)))));
4084 SvLEN_set(dstr, len);
4085 SvCUR_set(dstr, cur);
4086 SvREADONLY_on(dstr);
4090 { /* Passes the swipe test. */
4091 SvPV_set(dstr, SvPVX_mutable(sstr));
4092 SvLEN_set(dstr, SvLEN(sstr));
4093 SvCUR_set(dstr, SvCUR(sstr));
4096 (void)SvOK_off(sstr); /* NOTE: nukes most SvFLAGS on sstr */
4097 SvPV_set(sstr, NULL);
4103 if (sflags & SVp_NOK) {
4104 SvNV_set(dstr, SvNVX(sstr));
4106 if (sflags & SVp_IOK) {
4107 SvIV_set(dstr, SvIVX(sstr));
4108 /* Must do this otherwise some other overloaded use of 0x80000000
4109 gets confused. I guess SVpbm_VALID */
4110 if (sflags & SVf_IVisUV)
4113 SvFLAGS(dstr) |= sflags & (SVf_IOK|SVp_IOK|SVf_NOK|SVp_NOK|SVf_UTF8);
4115 const MAGIC * const smg = SvVSTRING_mg(sstr);
4117 sv_magic(dstr, NULL, PERL_MAGIC_vstring,
4118 smg->mg_ptr, smg->mg_len);
4119 SvRMAGICAL_on(dstr);
4123 else if (sflags & (SVp_IOK|SVp_NOK)) {
4124 (void)SvOK_off(dstr);
4125 SvFLAGS(dstr) |= sflags & (SVf_IOK|SVp_IOK|SVf_IVisUV|SVf_NOK|SVp_NOK);
4126 if (sflags & SVp_IOK) {
4127 /* XXXX Do we want to set IsUV for IV(ROK)? Be extra safe... */
4128 SvIV_set(dstr, SvIVX(sstr));
4130 if (sflags & SVp_NOK) {
4131 SvNV_set(dstr, SvNVX(sstr));
4135 if (isGV_with_GP(sstr)) {
4136 /* This stringification rule for globs is spread in 3 places.
4137 This feels bad. FIXME. */
4138 const U32 wasfake = sflags & SVf_FAKE;
4140 /* FAKE globs can get coerced, so need to turn this off
4141 temporarily if it is on. */
4143 gv_efullname3(dstr, MUTABLE_GV(sstr), "*");
4144 SvFLAGS(sstr) |= wasfake;
4147 (void)SvOK_off(dstr);
4149 if (SvTAINTED(sstr))
4154 =for apidoc sv_setsv_mg
4156 Like C<sv_setsv>, but also handles 'set' magic.
4162 Perl_sv_setsv_mg(pTHX_ SV *const dstr, register SV *const sstr)
4164 PERL_ARGS_ASSERT_SV_SETSV_MG;
4166 sv_setsv(dstr,sstr);
4170 #ifdef PERL_OLD_COPY_ON_WRITE
4172 Perl_sv_setsv_cow(pTHX_ SV *dstr, SV *sstr)
4174 STRLEN cur = SvCUR(sstr);
4175 STRLEN len = SvLEN(sstr);
4176 register char *new_pv;
4178 PERL_ARGS_ASSERT_SV_SETSV_COW;
4181 PerlIO_printf(Perl_debug_log, "Fast copy on write: %p -> %p\n",
4182 (void*)sstr, (void*)dstr);
4189 if (SvTHINKFIRST(dstr))
4190 sv_force_normal_flags(dstr, SV_COW_DROP_PV);
4191 else if (SvPVX_const(dstr))
4192 Safefree(SvPVX_const(dstr));
4196 SvUPGRADE(dstr, SVt_PVIV);
4198 assert (SvPOK(sstr));
4199 assert (SvPOKp(sstr));
4200 assert (!SvIOK(sstr));
4201 assert (!SvIOKp(sstr));
4202 assert (!SvNOK(sstr));
4203 assert (!SvNOKp(sstr));
4205 if (SvIsCOW(sstr)) {
4207 if (SvLEN(sstr) == 0) {
4208 /* source is a COW shared hash key. */
4209 DEBUG_C(PerlIO_printf(Perl_debug_log,
4210 "Fast copy on write: Sharing hash\n"));
4211 new_pv = HEK_KEY(share_hek_hek(SvSHARED_HEK_FROM_PV(SvPVX_const(sstr))));
4214 SV_COW_NEXT_SV_SET(dstr, SV_COW_NEXT_SV(sstr));
4216 assert ((SvFLAGS(sstr) & CAN_COW_MASK) == CAN_COW_FLAGS);
4217 SvUPGRADE(sstr, SVt_PVIV);
4218 SvREADONLY_on(sstr);
4220 DEBUG_C(PerlIO_printf(Perl_debug_log,
4221 "Fast copy on write: Converting sstr to COW\n"));
4222 SV_COW_NEXT_SV_SET(dstr, sstr);
4224 SV_COW_NEXT_SV_SET(sstr, dstr);
4225 new_pv = SvPVX_mutable(sstr);
4228 SvPV_set(dstr, new_pv);
4229 SvFLAGS(dstr) = (SVt_PVIV|SVf_POK|SVp_POK|SVf_FAKE|SVf_READONLY);
4232 SvLEN_set(dstr, len);
4233 SvCUR_set(dstr, cur);
4242 =for apidoc sv_setpvn
4244 Copies a string into an SV. The C<len> parameter indicates the number of
4245 bytes to be copied. If the C<ptr> argument is NULL the SV will become
4246 undefined. Does not handle 'set' magic. See C<sv_setpvn_mg>.
4252 Perl_sv_setpvn(pTHX_ register SV *const sv, register const char *const ptr, register const STRLEN len)
4255 register char *dptr;
4257 PERL_ARGS_ASSERT_SV_SETPVN;
4259 SV_CHECK_THINKFIRST_COW_DROP(sv);
4265 /* len is STRLEN which is unsigned, need to copy to signed */
4268 Perl_croak(aTHX_ "panic: sv_setpvn called with negative strlen");
4270 SvUPGRADE(sv, SVt_PV);
4272 dptr = SvGROW(sv, len + 1);
4273 Move(ptr,dptr,len,char);
4276 (void)SvPOK_only_UTF8(sv); /* validate pointer */
4281 =for apidoc sv_setpvn_mg
4283 Like C<sv_setpvn>, but also handles 'set' magic.
4289 Perl_sv_setpvn_mg(pTHX_ register SV *const sv, register const char *const ptr, register const STRLEN len)
4291 PERL_ARGS_ASSERT_SV_SETPVN_MG;
4293 sv_setpvn(sv,ptr,len);
4298 =for apidoc sv_setpv
4300 Copies a string into an SV. The string must be null-terminated. Does not
4301 handle 'set' magic. See C<sv_setpv_mg>.
4307 Perl_sv_setpv(pTHX_ register SV *const sv, register const char *const ptr)
4310 register STRLEN len;
4312 PERL_ARGS_ASSERT_SV_SETPV;
4314 SV_CHECK_THINKFIRST_COW_DROP(sv);
4320 SvUPGRADE(sv, SVt_PV);
4322 SvGROW(sv, len + 1);
4323 Move(ptr,SvPVX(sv),len+1,char);
4325 (void)SvPOK_only_UTF8(sv); /* validate pointer */
4330 =for apidoc sv_setpv_mg
4332 Like C<sv_setpv>, but also handles 'set' magic.
4338 Perl_sv_setpv_mg(pTHX_ register SV *const sv, register const char *const ptr)
4340 PERL_ARGS_ASSERT_SV_SETPV_MG;
4347 =for apidoc sv_usepvn_flags
4349 Tells an SV to use C<ptr> to find its string value. Normally the
4350 string is stored inside the SV but sv_usepvn allows the SV to use an
4351 outside string. The C<ptr> should point to memory that was allocated
4352 by C<malloc>. The string length, C<len>, must be supplied. By default
4353 this function will realloc (i.e. move) the memory pointed to by C<ptr>,
4354 so that pointer should not be freed or used by the programmer after
4355 giving it to sv_usepvn, and neither should any pointers from "behind"
4356 that pointer (e.g. ptr + 1) be used.
4358 If C<flags> & SV_SMAGIC is true, will call SvSETMAGIC. If C<flags> &
4359 SV_HAS_TRAILING_NUL is true, then C<ptr[len]> must be NUL, and the realloc
4360 will be skipped. (i.e. the buffer is actually at least 1 byte longer than
4361 C<len>, and already meets the requirements for storing in C<SvPVX>)
4367 Perl_sv_usepvn_flags(pTHX_ SV *const sv, char *ptr, const STRLEN len, const U32 flags)
4372 PERL_ARGS_ASSERT_SV_USEPVN_FLAGS;
4374 SV_CHECK_THINKFIRST_COW_DROP(sv);
4375 SvUPGRADE(sv, SVt_PV);
4378 if (flags & SV_SMAGIC)
4382 if (SvPVX_const(sv))
4386 if (flags & SV_HAS_TRAILING_NUL)
4387 assert(ptr[len] == '\0');
4390 allocate = (flags & SV_HAS_TRAILING_NUL)
4392 #ifdef Perl_safesysmalloc_size
4395 PERL_STRLEN_ROUNDUP(len + 1);
4397 if (flags & SV_HAS_TRAILING_NUL) {
4398 /* It's long enough - do nothing.
4399 Specfically Perl_newCONSTSUB is relying on this. */
4402 /* Force a move to shake out bugs in callers. */
4403 char *new_ptr = (char*)safemalloc(allocate);
4404 Copy(ptr, new_ptr, len, char);
4405 PoisonFree(ptr,len,char);
4409 ptr = (char*) saferealloc (ptr, allocate);
4412 #ifdef Perl_safesysmalloc_size
4413 SvLEN_set(sv, Perl_safesysmalloc_size(ptr));
4415 SvLEN_set(sv, allocate);
4419 if (!(flags & SV_HAS_TRAILING_NUL)) {
4422 (void)SvPOK_only_UTF8(sv); /* validate pointer */
4424 if (flags & SV_SMAGIC)
4428 #ifdef PERL_OLD_COPY_ON_WRITE
4429 /* Need to do this *after* making the SV normal, as we need the buffer
4430 pointer to remain valid until after we've copied it. If we let go too early,
4431 another thread could invalidate it by unsharing last of the same hash key
4432 (which it can do by means other than releasing copy-on-write Svs)
4433 or by changing the other copy-on-write SVs in the loop. */
4435 S_sv_release_COW(pTHX_ register SV *sv, const char *pvx, SV *after)
4437 PERL_ARGS_ASSERT_SV_RELEASE_COW;
4439 { /* this SV was SvIsCOW_normal(sv) */
4440 /* we need to find the SV pointing to us. */
4441 SV *current = SV_COW_NEXT_SV(after);
4443 if (current == sv) {
4444 /* The SV we point to points back to us (there were only two of us
4446 Hence other SV is no longer copy on write either. */
4448 SvREADONLY_off(after);
4450 /* We need to follow the pointers around the loop. */
4452 while ((next = SV_COW_NEXT_SV(current)) != sv) {
4455 /* don't loop forever if the structure is bust, and we have
4456 a pointer into a closed loop. */
4457 assert (current != after);
4458 assert (SvPVX_const(current) == pvx);
4460 /* Make the SV before us point to the SV after us. */
4461 SV_COW_NEXT_SV_SET(current, after);
4467 =for apidoc sv_force_normal_flags
4469 Undo various types of fakery on an SV: if the PV is a shared string, make
4470 a private copy; if we're a ref, stop refing; if we're a glob, downgrade to
4471 an xpvmg; if we're a copy-on-write scalar, this is the on-write time when
4472 we do the copy, and is also used locally. If C<SV_COW_DROP_PV> is set
4473 then a copy-on-write scalar drops its PV buffer (if any) and becomes
4474 SvPOK_off rather than making a copy. (Used where this scalar is about to be
4475 set to some other value.) In addition, the C<flags> parameter gets passed to
4476 C<sv_unref_flags()> when unrefing. C<sv_force_normal> calls this function
4477 with flags set to 0.
4483 Perl_sv_force_normal_flags(pTHX_ register SV *const sv, const U32 flags)
4487 PERL_ARGS_ASSERT_SV_FORCE_NORMAL_FLAGS;
4489 #ifdef PERL_OLD_COPY_ON_WRITE
4490 if (SvREADONLY(sv)) {
4492 const char * const pvx = SvPVX_const(sv);
4493 const STRLEN len = SvLEN(sv);
4494 const STRLEN cur = SvCUR(sv);
4495 /* next COW sv in the loop. If len is 0 then this is a shared-hash
4496 key scalar, so we mustn't attempt to call SV_COW_NEXT_SV(), as
4497 we'll fail an assertion. */
4498 SV * const next = len ? SV_COW_NEXT_SV(sv) : 0;
4501 PerlIO_printf(Perl_debug_log,
4502 "Copy on write: Force normal %ld\n",
4508 /* This SV doesn't own the buffer, so need to Newx() a new one: */
4511 if (flags & SV_COW_DROP_PV) {
4512 /* OK, so we don't need to copy our buffer. */
4515 SvGROW(sv, cur + 1);
4516 Move(pvx,SvPVX(sv),cur,char);
4521 sv_release_COW(sv, pvx, next);
4523 unshare_hek(SvSHARED_HEK_FROM_PV(pvx));
4529 else if (IN_PERL_RUNTIME)
4530 Perl_croak_no_modify(aTHX);
4533 if (SvREADONLY(sv)) {
4535 const char * const pvx = SvPVX_const(sv);
4536 const STRLEN len = SvCUR(sv);
4541 SvGROW(sv, len + 1);
4542 Move(pvx,SvPVX(sv),len,char);
4544 unshare_hek(SvSHARED_HEK_FROM_PV(pvx));
4546 else if (IN_PERL_RUNTIME)
4547 Perl_croak_no_modify(aTHX);
4551 sv_unref_flags(sv, flags);
4552 else if (SvFAKE(sv) && SvTYPE(sv) == SVt_PVGV)
4554 else if (SvFAKE(sv) && SvTYPE(sv) == SVt_REGEXP) {
4555 /* Need to downgrade the REGEXP to a simple(r) scalar. This is analagous
4556 to sv_unglob. We only need it here, so inline it. */
4557 const svtype new_type = SvMAGIC(sv) || SvSTASH(sv) ? SVt_PVMG : SVt_PV;
4558 SV *const temp = newSV_type(new_type);
4559 void *const temp_p = SvANY(sv);
4561 if (new_type == SVt_PVMG) {
4562 SvMAGIC_set(temp, SvMAGIC(sv));
4563 SvMAGIC_set(sv, NULL);
4564 SvSTASH_set(temp, SvSTASH(sv));
4565 SvSTASH_set(sv, NULL);
4567 SvCUR_set(temp, SvCUR(sv));
4568 /* Remember that SvPVX is in the head, not the body. */
4570 SvLEN_set(temp, SvLEN(sv));
4571 /* This signals "buffer is owned by someone else" in sv_clear,
4572 which is the least effort way to stop it freeing the buffer.
4574 SvLEN_set(sv, SvLEN(sv)+1);
4576 /* Their buffer is already owned by someone else. */
4577 SvPVX(sv) = savepvn(SvPVX(sv), SvCUR(sv));
4578 SvLEN_set(temp, SvCUR(sv)+1);
4581 /* Now swap the rest of the bodies. */
4583 SvFLAGS(sv) &= ~(SVf_FAKE|SVTYPEMASK);
4584 SvFLAGS(sv) |= new_type;
4585 SvANY(sv) = SvANY(temp);
4587 SvFLAGS(temp) &= ~(SVTYPEMASK);
4588 SvFLAGS(temp) |= SVt_REGEXP|SVf_FAKE;
4589 SvANY(temp) = temp_p;
4598 Efficient removal of characters from the beginning of the string buffer.
4599 SvPOK(sv) must be true and the C<ptr> must be a pointer to somewhere inside
4600 the string buffer. The C<ptr> becomes the first character of the adjusted
4601 string. Uses the "OOK hack".
4602 Beware: after this function returns, C<ptr> and SvPVX_const(sv) may no longer
4603 refer to the same chunk of data.
4609 Perl_sv_chop(pTHX_ register SV *const sv, register const char *const ptr)
4615 const U8 *real_start;
4619 PERL_ARGS_ASSERT_SV_CHOP;
4621 if (!ptr || !SvPOKp(sv))
4623 delta = ptr - SvPVX_const(sv);
4625 /* Nothing to do. */
4628 /* SvPVX(sv) may move in SV_CHECK_THINKFIRST(sv), but after this line,
4629 nothing uses the value of ptr any more. */
4630 max_delta = SvLEN(sv) ? SvLEN(sv) : SvCUR(sv);
4631 if (ptr <= SvPVX_const(sv))
4632 Perl_croak(aTHX_ "panic: sv_chop ptr=%p, start=%p, end=%p",
4633 ptr, SvPVX_const(sv), SvPVX_const(sv) + max_delta);
4634 SV_CHECK_THINKFIRST(sv);
4635 if (delta > max_delta)
4636 Perl_croak(aTHX_ "panic: sv_chop ptr=%p (was %p), start=%p, end=%p",
4637 SvPVX_const(sv) + delta, ptr, SvPVX_const(sv),
4638 SvPVX_const(sv) + max_delta);
4641 if (!SvLEN(sv)) { /* make copy of shared string */
4642 const char *pvx = SvPVX_const(sv);
4643 const STRLEN len = SvCUR(sv);
4644 SvGROW(sv, len + 1);
4645 Move(pvx,SvPVX(sv),len,char);
4648 SvFLAGS(sv) |= SVf_OOK;
4651 SvOOK_offset(sv, old_delta);
4653 SvLEN_set(sv, SvLEN(sv) - delta);
4654 SvCUR_set(sv, SvCUR(sv) - delta);
4655 SvPV_set(sv, SvPVX(sv) + delta);
4657 p = (U8 *)SvPVX_const(sv);
4662 real_start = p - delta;
4666 if (delta < 0x100) {
4670 p -= sizeof(STRLEN);