summaryrefslogtreecommitdiff
path: root/embedvar.h
Commit message (Collapse)AuthorAgeFilesLines
* Generate pp_* prototypes in pp_proto.h, and remove pp.symNicholas Clark2011-01-091-1/+1
| | | | | | | | | | | Eliminate the #define pp_foo Perl_pp_foo(pTHX) macros, and update the 13 locations that relied on them. regen/opcode.pl now generates prototypes for the PP functions directly, into pp_proto.h. It no longer writes pp.sym, and regen/embed.pl no longer reads this, removing the only ordering dependency in the regen scripts. opcode.pl is now responsible for prototypes for pp_* functions. (embed.pl remains responsible for ck_* functions, reading from regen/opcodes)
* Improve custom OP support.Ben Morrow2010-11-141-0/+2
| | | | | | | | | | | | | | | | | Change the custom op registrations from two separate hashes to one hash holding structure pointers, and add API functions to register ops and look them up. This will make it easier to add new properties of custom ops in the future. Copy entries across from the old hashes where necessary, to preserve compatibility. Add two new properties, in addition to the already-existing 'name' and 'description': 'class' and 'peep'. 'class' is one of the OA_*OP constants, and allows B and other introspection mechanisms to work with custom ops that aren't BASEOPs. 'peep' is a pointer to a function that will be called for ops of this type from Perl_rpeep. Adjust B.xs to take account of the new properties, and also to give custom ops their registered name rather than simply 'custom'.
* Eliminate PL_dirtyFlorian Ragwitz2010-11-141-2/+0
| | | | | It now only exists as a compatibility macro for extensions that want to introspect it.
* Add ${^GLOBAL_PHASE}Florian Ragwitz2010-11-141-0/+2
| | | | This exposes the current top-level interpreter phase to perl space.
* regexec.c: Don't give up on fold matching earlyKarl Williamson2010-11-071-0/+2
| | | | | | | | | | | | | | | | | | | | As noted in the comments of the code, "a" =~ /[A]/i doesn't work currently (except that regcomp.c knows about the ASCII characters and corrects for it, but not always, for example in cases like "a" =~ /\p{Upper}/i. This patch catches all those). It works by computing a list of all characters that (singly) fold to another one, and then checking each of those. The maximum length of the list is 3 in the current Unicode standard. I believe that a better long-term solution is to do this at compile rather than execution time, by generating a closure of everything matched. But this can't be done now because the data structure would need to be extensively revamped to list all non-byte characters, and user-defined \p{} matches are not known at compile-time. And it doesn't handle the multi-char folds. There is a separate ticket for those.
* RT #76248: double-freed SV with nested sig-handlerDavid Mitchell2010-11-011-3/+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.
* replace PL_doextract with better kinds of variableZefram2010-10-211-2/+0
| | | | | | | | PL_doextract had two unrelated jobs, neither best served by an interpreter global variable. The first was to track the -x command-line switch. That is replaced with a local variable in S_parse_body(). The second was to track whether the lexer is in the middle of a =pod section. That is replaced with an element in PL_parser.
* 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/+3
|
* 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).
* Get rid of PERL_POLLUTEJan Dubois2010-07-211-33/+0
| | | | | | | | | | | PERL_POLLUTE was added (but undefined by default) in 5.6 to optionally expose older 5.005 symbols for backwards compatibility. It's use was always discouraged, and MakeMaker contains a more specific escape hatch: perl Makefile.PL POLLUTE=1 This can be used for modules that have not been upgraded to 5.6 naming conventions (and really should be completely obsolete by now).
* 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/+3
| | | | 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-1/+0
|
* Replace run-time on-demand initialisation of PL_bitcount with a constant table.Nicholas Clark2009-05-201-1/+0
| | | | | | | | | | | | | | | | (The table is 256 bytes; the run-time initialisation code is larger than this!) Adapt generate_uudmap.c to generate the initalisation block for PL_bitcount, writing the code to bitcount.h, using the same approach as uudmap.h. To preserve binary compatibility: for MULTIPLICITY: keep Ibitcount in the interpreter structure, but remove all the macros that access it. PL_bitcount is a new symbol in the object file, which won't clash with anything as that name wasn't used before. otherwise: keep PL_bitcount as a char *, but initialise it at compile time to a new constant array PL_bitcount array. Remove the code that attempts to Safefree() it at interpreter destruction time.
* 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-6/+6
| | | | | | 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/+18
| | | | | | | | | | | 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/+6
| | | | | | | 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-160/+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