summaryrefslogtreecommitdiff
path: root/perlapi.h
Commit message (Collapse)AuthorAgeFilesLines
* RT #76248: double-freed SV with nested sig-handlerDavid Mitchell2010-11-011-2/+0
| | | | | | | | | | | | | | | | | | | There was some buggy code in Perl_sighandler() related to getting an SV with the signal name to pass to the perl-level handler function. ` Basically: on threaded builds, a sig handler that died leaked PL_psig_name[sig]; on unthreaded builds, in a recursive handler that died, PL_sig_sv was prematurely freed. PL_sig_sv was originally just a file static var that was not recursion-save anyway, and got promoted to perlvars.h when it should instead have been done away with. So I've got rid of it now, and rationalised the code, which fixed the two issues listed above. Also added an assert which makes the dodgy manual popping of the save stack slightly less dodgy.
* embed.pl -> regen/embed.plFather Chrysostomos2010-10-131-2/+2
| | | | so newcomers can find it more easily
* make PL_charclass available to modules under Win32Tony Cook2010-09-261-0/+2
|
* Eliminate PL_* accessor functions under ithreads.Nicholas Clark2010-09-211-664/+3
| | | | | | | | | | | | | | | | | | | | | | When MULTIPLICITY was first developed, and interpreter state moved into an interpreter struct, thread and interpreter local PL_* variables were defined as macros that called accessor functions, returning the address of the value, outside of the perl core. The intent was to allow members within the interpreter struct to change size without breaking binary compatibility, so that bug fixes could be merged to a maintenance branch that necessitated such a size change. However, some non-core code defines PERL_CORE, sometimes intentionally to bypass this mechanism for speed reasons, sometimes for other reasons but with the inadvertent side effect of bypassing this mechanism. As some of this code is widespread in production use, the result is that the core *can't* change the size of members of the interpreter struct, as it will break such modules compiled against a previous release on that maintenance branch. The upshot is that this mechanism is redundant, and well-behaved code is penalised by it. Hence it can and should be removed. Accessor functions are still needed for globals when PERL_GLOBAL_STRUCT is defined.
* Remove offer_nice_chunk(), PL_nice_chunk and PL_nice_chunk_size.Nicholas Clark2010-09-081-4/+0
| | | | | | | | | | | | | | | | | | These provided a non-public API for the hash and array code to donate free memory direct to the SV head allocation routines, instead of returning it to the malloc system with free(). I assume that on some older mallocs this could offer significant benefits. However, my benchmarking on a modern malloc couldn't detect any significant effect (positive or negative) on removing the code. Its (continued) presence, however, has downsides a: slightly more code complexity b: slightly larger interpreter structure c: in the steady state, if net creation of SVs is zero, 1 chunk of allocated but unused memory will exist (per thread) So I think it best to remove it.
* make recursive part of peephole optimiser hookableZefram2010-08-261-0/+2
| | | | | | | | New variable PL_rpeepp makes it possible for extensions to hook the per-op-chain part of the peephole optimiser (which recurses into side chains). The existing variable PL_peepp still allows hooking the per-sub part of the peephole optimiser, maintaining perfect backward compatibility.
* Check API compatibility when loading xs modulesFlorian Ragwitz2010-07-261-0/+2
| | | | | | | | | | | | | This adds PL_apiversion, allowing the API version of a running interpreter to be introspected. It is used in the new XS_APIVERSION_BOOTCHECK macro, which is added to the _boot function of every XS module, to compare it against the API version the module has been compiled against. If the versions do not match, an exception is thrown. This doesn't fully prevent binary incompatible extensions to be loaded. It merely compares PERL_API_* between compile- and runtime, and does not attempt to solve the problem of identifying binary incompatible perls with the same API version (i.e. the same perl version configured with and without DEBUGGING).
* Generic hooks into Perl_block_{start,end}.Ben Morrow2010-07-121-0/+2
| | | | | | | | | | These take the form of a vtable pushed onto the new PL_blockhooks array. This could probably do with a API around it later. Separate pre_end and post_end hooks are needed to capture globals before the stack is unwound (like needblockscope in the existing code). The intention is that once a vtable is installed it never gets removed, so where necessary extensions using this will need to use a hinthv element to determine whether to do anything or not.
* add PL_signalhook to hook into signal dispatchDavid Mitchell2010-06-041-0/+2
| | | | | This is initially intended for threads::shared and shouldn't (yet) be considered part of the public API.
* unwinding target nominated by separate globalZefram2010-04-251-0/+2
| | | | | | | | When unwinding due to die, the new global PL_restartjmpenv points to the JMP_ENV at which longjmping should stop and control should be transferred to PL_restartop. This replaces the previous use of cxstack[cxstack_ix+1].blk_eval.cur_top_env, located in a nominally-discarded context frame.
* qr/\X/ expansionKarl Williamson2009-12-051-0/+20
|
* Add ENTER_with_name and LEAVE_with_name to automaticly check for matching ↵Gerard Goossen2009-11-121-0/+2
| | | | ENTER/LEAVE when debugging is enabled
* regen generated files changed by the previous patch - facility to plug in ↵Jesse Vincent2009-11-051-0/+2
| | | | syntax triggered by keywords
* somewhat fix failing regex tests. but break lots of other stuff at the same timeYves Orton2009-10-191-0/+6
|
* Remove obsolete interpreter variable PL_utf8_alnumcRafael Garcia-Suarez2009-09-131-2/+0
|
* Add a pluggable hook in op_free()Vincent Pit2009-07-081-0/+2
|
* Remove binary compatibility scaffolding for the change to PL_bitcount.Nicholas Clark2009-05-201-2/+0
|
* Bump coopyright year in embed.pl and various files that were just touchedRafael Garcia-Suarez2009-01-021-1/+1
| | | | (and run "make regen")
* Add Perl_mro_register() to register Method Resolution Orders,Nicholas Clark2008-12-271-0/+2
| | | | | | Perl_mro_get_from_name() to retrieve MROs by name, and PL_registered_mros to store them in. Abolish the static array of mros, and instead register the dfs and c3 MRO structures.
* Rename PL_breakable_sub_generation to PL_breakable_sub_gen, to pleaseNicholas Clark2008-11-181-2/+2
| | | | | the ANSI gods of VMS. p4raw-id: //depot/perl@34886
* Fix the bug introduced with MRO, whereby the internals were not savingNicholas Clark2008-11-171-0/+2
| | | | | lines in subroutines defined inside eval ""s for the debugger. p4raw-id: //depot/perl@34873
* [perl #948] [PATCH] Allow tied $,Chip Salzenberg2008-11-141-2/+2
| | | | | Message-ID: <20081114084436.GJ5779@tytlal.topaz.cx> p4raw-id: //depot/perl@34831
* Update copyright year in embed.pl, and everything that it builds.Nicholas Clark2008-10-251-1/+1
| | | p4raw-id: //depot/perl@34586
* Run 'make regen' for #34567 and #34568.Marcus Holland-Moritz2008-10-241-0/+2
| | | p4raw-id: //depot/perl@34569
* Remove the -P switchRafael Garcia-Suarez2008-01-111-2/+0
| | | p4raw-id: //depot/perl@32954
* Remove (probably) the last vestige of the assertions implementation -Nicholas Clark2007-11-241-2/+0
| | | | | a now unused variable. p4raw-id: //depot/perl@32477
* Following 32238, change "interpreter_size" to "interp_size" in the new Craig A. Berry2007-11-111-4/+4
| | | | | | global symbols to keep overall symbol length within 31 characters, which is what the VMS C compiler with default flags can handle. p4raw-id: //depot/perl@32275
* Bug fix for storing shared objects in shared structuresJerry D. Hedden2007-11-081-0/+2
| | | | | | | | From: "Jerry D. Hedden" <jdhedden@cpan.org> Message-ID: <1ff86f510711061136t52a1fe62waf384c4551612181@mail.gmail.com> (core patch only) p4raw-id: //depot/perl@32241
* "Bake" the values of PERL_REVISION, PERL_VERSION and PERL_SUBVERSIONNicholas Clark2007-11-071-0/+12
| | | | | | | | | | | into global variables (and hence a shared perl library). Additionally under MULTIPLICITY record the size of the interpreter structure (total, and for this version) and under PERL_GLOBAL_STRUCT the size of the global variables structure. Coupled with PL_bincompat_options this will allow 5.10.1 (and later), when compiled with a shared perl library, to perform sanity checks in main() to verify that the shared library is indeed binary compatible. p4raw-id: //depot/perl@32238
* PL_cshname is actually a constant value known at compile time.Nicholas Clark2007-10-051-4/+0
| | | | | | | PL_cshlen can be calculated by the compiler. So eliminate both as interpreter variables, and the code that calculates PL_cshlen at runtime. p4raw-id: //depot/perl@32035
* Reverse change #31978Rafael Garcia-Suarez2007-10-031-4/+0
| | | | | p4raw-link: @31978 on //depot/perl: d804f4346b490171e547d5cc512063e53da10708 p4raw-id: //depot/perl@32015
* Change 31987 forgot to re-run embed.plNicholas Clark2007-09-281-0/+2
| | | p4raw-id: //depot/perl@31990
* RE: [PATCH] use 5.010 is ugly; use 5.10.0 warnsRobin Barker2007-09-261-0/+2
| | | | | | From: "Robin Barker" <Robin.Barker@npl.co.uk> Message-ID: <2C2E01334A940D4792B3E115F95B7226C9D1C3@exchsvr1.npl.ad.local> p4raw-id: //depot/perl@31978
* Re: optimize push @ISA, (was Re: parent.pm at http://corion.net/perl-dev)Brandon Black2007-08-311-2/+0
| | | | | | From: "Brandon Black" <blblack@gmail.com> Message-ID: <84621a60708121336m13dcf9e5uac624fb246f2a79c@mail.gmail.com> p4raw-id: //depot/perl@31770
* delete PL_hash_seed_set, PL_lineary; move PL_runops_std/dbgDave Mitchell2007-05-251-8/+4
| | | | | | | the first two aren't used, and the last two are just place holders to ensure that both runops functions get linked in; so make them global rather than per-interpeter p4raw-id: //depot/perl@31280
* move PL_error_count into the PL_parser structDave Mitchell2007-05-211-2/+0
| | | p4raw-id: //depot/perl@31255
* move PL_multi_end into the PL_parser structDave Mitchell2007-05-211-2/+0
| | | p4raw-id: //depot/perl@31254
* move PL_tokenbuf into the PL_parser structDave Mitchell2007-05-211-2/+0
| | | p4raw-id: //depot/perl@31252
* delete unused vars PL_av_fetch_sv, PL_hv_fetch_svDave Mitchell2007-05-201-4/+0
| | | | | | and fix 'duplicate symbol' warnings from embed.pl for utf8cache and sh_path p4raw-id: //depot/perl@31246
* delete thrdvar.h and move its contents to intrpvar.hDave Mitchell2007-05-201-159/+157
| | | p4raw-id: //depot/perl@31245
* move PL_in_my and PL_in_my_stash into the PL_parser structDave Mitchell2007-05-121-4/+0
| | | p4raw-id: //depot/perl@31203
* move PL_rsfp_filters into the parser structDave Mitchell2007-05-121-2/+0
| | | p4raw-id: //depot/perl@31200
* move PL_rsfp into the PL_parser structDave Mitchell2007-05-111-2/+0
| | | | | and simplify its creation and destruction p4raw-id: //depot/perl@31199
* move PL_lex_state into the PL_parser structDave Mitchell2007-05-051-2/+0
| | | p4raw-id: //depot/perl@31154
* migrate more variables to PL_parser struct:Dave Mitchell2007-05-051-8/+0
| | | | | PL_nexttoke PL_curforce PL_nextval PL_nexttype p4raw-id: //depot/perl@31148
* move some more variables into the PL_parser struct:Dave Mitchell2007-05-041-16/+0
| | | | | | | PL_bufptr PL_oldbufptr PL_oldoldbufptr PL_linestart PL_bufend PL_last_uni PL_last_lop PL_last_lop_op p4raw-id: //depot/perl@31147
* move PL_expect and PL_copline into the PL_parser structureDave Mitchell2007-05-041-4/+0
| | | p4raw-id: //depot/perl@31134
* Re: mro status, etcBrandon Black2007-05-031-0/+2
| | | | | | From: "Brandon Black" <blblack@gmail.com> Message-ID: <84621a60704301445y37e9b05ey235210a8e5547cc1@mail.gmail.com> p4raw-id: //depot/perl@31122
* Re: mro status, etcBrandon Black2007-04-301-0/+2
| | | | | | From: "Brandon Black" <blblack@gmail.com> Message-ID: <84621a60704291527y1b39be37l221ef66e4c828f66@mail.gmail.com> p4raw-id: //depot/perl@31107
* Make PL_uudmap a constant global. Remove the run time initialisationNicholas Clark2007-04-241-2/+0
| | | | | | | code, and instead use it to generate a header at perl build time. By removing uudmap from the interpreter structure we save 256 bytes per child thread. p4raw-id: //depot/perl@31059