summaryrefslogtreecommitdiff
path: root/pp_hot.c
Commit message (Collapse)AuthorAgeFilesLines
* Ensure that pp_qr returns a new regexp SV each time. Resolves RT #69852.Nicholas Clark2009-12-021-4/+7
| | | | | | | | | | | | | | | | Instead of returning a(nother) reference to the (pre-compiled) regexp in the optree, use reg_temp_copy() to create a copy of it, and return a reference to that. This resolves issues about Regexp::DESTROY not being called in a timely fashion (the original bug tracked by RT #69852), as well as bugs related to blessing regexps, and of assigning to regexps, as described in correspondence added to the ticket. It transpires that we also need to undo the SvPVX() sharing when ithreads cloning a Regexp SV, because mother_re is set to NULL, instead of a cloned copy of the mother_re. This change might fix bugs with regexps and threads in certain other situations, but as yet neither tests nor bug reports have indicated any problems, so it might not actually be an edge case that it's possible to reach.
* Inline PL_no_symref into pp_entersub. Deprecate the visible global variable.Nicholas Clark2009-11-151-1/+1
| | | | | | | | | | | As the core no longer needs this fixed string in more than one place, it seems daft to go to the overhead (and cost) of making it public in case any module wants to use it. Modules that do want to use it should provide their own inline copy in future. Also restore the visible global PL_no_symref back to the original format specification (of 5.10.0 and earlier), as an extra %s has the potential to cause SEGVs or worse if not spotted at compile time.
* Add ENTER_with_name and LEAVE_with_name to automaticly check for matching ↵Gerard Goossen2009-11-121-20/+20
| | | | ENTER/LEAVE when debugging is enabled
* add an elipses to string/ref warnings when str longer than 32 charsYves Orton2009-10-261-1/+1
| | | | | | Wasted a few minutes more than necessary trying to work out why the string was truncated when in fact it was the error message that was truncating the string.
* Add Perl_ck_warner(), which combines Perl_ckwarn() and Perl_warner().Nicholas Clark2009-10-121-5/+5
| | | | | | | Replace ckWARN{,2,3,4}() && Perl_warner() with it, which trades reduced code size (about 0.2%), for 1 more function call if warnings are not enabled. However, if we're now in the L1 or L2 cache when we weren't previously, that's still going to be a speed win.
* Remove an unnecessary NULL check, which is already checked other placesgfx2009-09-051-2/+4
| | | | Signed-off-by: Yves Orton <demerphq@gemini.(none)>
* In pp_entersub, replace gv_fetchpv() with gv_fetchpvs().Nicholas Clark2009-08-221-1/+1
|
* Use the new SAVEHDELETE() macro wherever possibleVincent Pit2009-07-251-10/+5
|
* Don't call SvPV_const() on the method name at the top of method_common(), as ↵Vincent Pit2009-03-291-5/+7
| | | | it's not needed when the method is in the current stash (which happens quite often)
* Also define 'localizing' in pp_helem for the sake of clarityVincent Pit2008-12-281-2/+3
|
* On scope end, delete localized array elements that should not exist anymore, ↵Vincent Pit2008-12-281-2/+21
| | | | so that the array recovers its previous length. Honour EXISTS and DELETE for tied arrays.
* Introduce SvCANEXISTDELETE in pp.h, which simplify the logic in pp_helem and ↵Vincent Pit2008-12-281-14/+9
| | | | pp_hslice
* [perl #38809] return do { } : take 3 (or 4...)Vincent Pit2008-11-251-10/+8
| | | | | Message-ID: <48E0F5E9.4050805@profvince.com> p4raw-id: //depot/perl@34907
* [perl #48489] patch to fix perl bug #7013bharanee rathna2008-11-141-1/+8
| | | | | | | | | From: "bharanee rathna" (via RT) <perlbug-followup@perl.org> Message-ID: <rt-3.6.HEAD-28750-1197415521-1978.48489-75-0@perl.org> Just the pp_hot.c portion of this patch applied along with removing the TODO from the test added in the previous change. p4raw-id: //depot/perl@34833
* [perl #948] [PATCH] Allow tied $,Chip Salzenberg2008-11-141-2/+4
| | | | | Message-ID: <20081114084436.GJ5779@tytlal.topaz.cx> p4raw-id: //depot/perl@34831
* Re: [perl #60360] [PATCH] UPDATED: local $SIG{FOO} = sub {...}; sets signal ↵Chip Salzenberg2008-11-131-1/+2
| | | | | | | | | | | | handler to SIG_DFL Message-ID: <20081112234504.GI2062@tytlal.topaz.cx> Updated patch to retain source compatibility. Plus using the correct PERL_ARGS_ASSERT_SAVE_HELEM_FLAGS macro and running make regen. p4raw-id: //depot/perl@34829
* Re: [perl #60360] [PATCH] local $SIG{FOO} = sub {...}; sets signalChip Salzenberg2008-11-121-1/+1
| | | | | Message-ID: <20081111000040.GB19329@tytlal.topaz.cx> p4raw-id: //depot/perl@34819
* Assigning to DEFSV leaks if PL_defgv's gp_sv isn't set.Marcus Holland-Moritz2008-11-081-1/+1
| | | | | | | | | As Nicholas already noted in a FIXME, assigning to DEFSV should use GvSV instead of GvSVn. This change ensures that, at least under -DPERL_CORE, DEFSV cannot be assigned to and introduces a DEFSV_set macro to allow setting DEFSV. This fixes #53038: map leaks memory. p4raw-id: //depot/perl@34776
* PATCH: Large omnibus patch to clean up the JRRT quotesTom Christiansen2008-11-021-2/+4
| | | | | | Message-ID: <25940.1225611819@chthon> Date: Sun, 02 Nov 2008 01:43:39 -0600 p4raw-id: //depot/perl@34698
* Explicitly specify some printf formats for constant strings.Rafael Garcia-Suarez2008-11-021-5/+5
| | | | | | This is mostly to silence gcc's warning, "format not a string literal and no format arguments". p4raw-id: //depot/perl@34694
* Add MUTABLE_GV(), and eliminate (V *) casts in *.c.Nicholas Clark2008-10-311-10/+11
| | | | | | Can't easily do gv.h, as GvGP() (at least) needs to split into two macros - one const for reading, one non-const for writing. p4raw-id: //depot/perl@34679
* Eliminate (SV *) casts from the rest of *.c, picking up one (further)Nicholas Clark2008-10-301-28/+28
| | | | | erroneous const in dump.c. p4raw-id: //depot/perl@34675
* Use pvs macros instead of pvn where possible.Marcus Holland-Moritz2008-10-291-2/+2
| | | p4raw-id: //depot/perl@34653
* Eliminate (AV *) casts in *.c.Nicholas Clark2008-10-291-7/+7
| | | p4raw-id: //depot/perl@34650
* Add MUTABLE_CV(), and eliminate (CV *) casts in *.c.Nicholas Clark2008-10-291-2/+2
| | | p4raw-id: //depot/perl@34647
* Every remaining (HV *) cast in *.cNicholas Clark2008-10-281-4/+4
| | | p4raw-id: //depot/perl@34629
* Update copyright years.Nicholas Clark2008-10-251-2/+2
| | | p4raw-id: //depot/perl@34585
* Fix memory leak in qr// operator. This was most probablyMarcus Holland-Moritz2008-10-181-0/+1
| | | | | introduced with #30849. p4raw-id: //depot/perl@34506
* Some more missing isGV_with_GP()sBen Morrow2008-06-281-5/+9
| | | | | Message-ID: <20080628160017.GA81579@osiris.mauzo.dyndns.org> p4raw-id: //depot/perl@34092
* Re: [perl #51636] segmentation fault with array tiesVincent Pit2008-05-021-3/+19
| | | | | | From: "Vincent Pit" <perl@profvince.com> Message-ID: <56287.147.210.17.175.1205339860.squirrel@147.210.17.175> p4raw-id: //depot/perl@33778
* /* This code tries to figure out just what went wrong withNicholas Clark2008-04-171-73/+3
| | | | | | | | | | | gv_fetchmethod. It therefore needs to duplicate a lot of the internals of that function. "Duplicate". <snigger>. You said a naughty word. Now sanitised. [All tests pass, but I'm not 100% confident that this code is equivalent in all reachable corner cases, and it may be possible to simplify the error reporting logic now in gv_fetchmethod_flags] p4raw-id: //depot/perl@33702
* Silence warning from VC++ following #33447Steve Hay2008-03-101-0/+1
| | | | | (not all control paths return a value) p4raw-id: //depot/perl@33463
* Refactoring the /Can't return (?:array|hash) to scalar context/ croakNicholas Clark2008-03-061-10/+7
| | | | | logic in pp_rv2av into one place saves 112 bytes here. p4raw-id: //depot/perl@33447
* Chainsaw DEBUG_S out, as suggested by Vincent Pit.Rafael Garcia-Suarez2008-02-261-4/+0
| | | p4raw-id: //depot/perl@33376
* Re: [PATCH] Splitting OP_CONST (Was: pp_const, not, that, hot?)Vincent Pit2008-02-231-8/+1
| | | | | | Message-ID: <47B60D72.50708@profvince.com> Date: Fri, 15 Feb 2008 23:08:50 +0100 p4raw-id: //depot/perl@33356
* Revert change #33302. This change was wrong, since it wasRafael Garcia-Suarez2008-02-141-8/+2
| | | | | | using OP_ENTERSUB as a LISTOP, whereas it's a UNOP. p4raw-link: @33302 on //depot/perl: 781e3f050073176aa21ffc243184a1cb57f4ec92 p4raw-id: //depot/perl@33307
* [perl #47047] Use of inherited AUTOLOAD for non-method is deprecated Rick Delaney2008-02-131-2/+8
| | | | | | From: Rick Delaney (via RT) <perlbug-followup@perl.org> Message-ID: <rt-3.6.HEAD-24634-1193800780-55.47047-75-0@perl.org> p4raw-id: //depot/perl@33302
* assert() that every NN argument is not NULL. Otherwise we have theNicholas Clark2008-02-121-0/+9
| | | | | | | | | | | | ability to create landmines that will explode under someone in the future when they upgrade their compiler to one with better optimisation. We've already done this at least twice. (Yes, some of the assertions are after code that would already have SEGVd because it already deferences a pointer, but they are put in to make it easier to automate checking that each and every case is covered.) Add a tool, checkARGS_ASSERT.pl, to check that every case is covered. p4raw-id: //depot/perl@33291
* Eliminate the OP_SETSTATE, which had been disabled by change 4309.Nicholas Clark2008-01-261-7/+0
| | | p4raw-id: //depot/perl@33072
* Re: struct context now 12.5% smaller than 5.10Benjamin Smith2008-01-261-41/+38
| | | | | | Message-ID: <20080124215537.GB10198@vtrl.co.uk> Date: Thu, 24 Jan 2008 21:55:37 +0000 p4raw-id: //depot/perl@33070
* Using PL_sv_no in place of any !SvOK() maximum removes a little bit ofNicholas Clark2008-01-251-3/+3
| | | | | hot code in pp_iter. p4raw-id: //depot/perl@33068
* In struct block_loop, merge itermax and iterlval into a unionNicholas Clark2008-01-241-7/+6
| | | | | | | | | lval_max_u, as CXt_LOOP_LAZYIV doesn't use iterlval and the other LOOP types don't use itermax. This reduces struct block_loop by 1 IV. As it's the largest component of the unions making up struct context, this reduces struct context. On ILP32 it will now be 56 bytes, down from the 64 of 5.10.x, as I've already removed the element 'label'. p4raw-id: //depot/perl@33063
* Merge CXt_LOOP_STACK's use of itermax for the reverse minimum withNicholas Clark2008-01-241-2/+3
| | | | | iterary, as the two structure members are not used simultaneously. p4raw-id: //depot/perl@33062
* Change the context type of for ($a .. $b) to CXt_LOOP_LAZYIV, andNicholas Clark2008-01-241-1/+2
| | | | | | assert that it isn't using cx->blk_loop.iterlval. Fix a casting bug when assigning a sentinal to cx->blk_loop.iterary. p4raw-id: //depot/perl@33061
* Avoid using cx->blk_loop.itermax when reverse iterating an array.Nicholas Clark2008-01-241-1/+2
| | | p4raw-id: //depot/perl@33060
* Split out foreach iterations of temporary lists on the stack toNicholas Clark2008-01-241-1/+1
| | | | | CXt_LOOP_STACK. Don't use cx->blk_loop.iterary to store PL_curstack. p4raw-id: //depot/perl@33059
* Split CXt_LOOP into CXt_LOOP_PLAIN and CXt_LOOP_FOR, eliminating theNicholas Clark2008-01-241-1/+1
| | | | | CXp_FOREACH flag added as part of given/when. p4raw-id: //depot/perl@33057
* Eliminate the U8 sbu_once from struct subst, and shrink sbu_rflags fromNicholas Clark2008-01-211-2/+2
| | | | | I32 to U8, which reduces the size of the struct by at least 4 bytes. p4raw-id: //depot/perl@33035
* In pp_subst, rxtainted is not a boolean, as it stores 2 bits of values.Nicholas Clark2008-01-211-1/+1
| | | p4raw-id: //depot/perl@33033
* In struct block_sub and block_format, access the members hasargs andNicholas Clark2008-01-201-2/+2
| | | | | | lval via macros CxHASARGS() and CxLVAL(), which will allow the storage location to be changed. p4raw-id: //depot/perl@33017