summaryrefslogtreecommitdiff
path: root/perly.c
Commit message (Collapse)AuthorAgeFilesLines
* perly.c: Disarm the YYDEBUG defines in perly.hFather Chrysostomos2012-10-011-7/+9
| | | | | | | | See <craigberry-E9C729.16313730092012@cpc2-bmly6-0-0-cust974.2-3.cable.virginmedia.com>. Move the YYDEBUG defines in perly.c back where they were before, but undefine YYDEBUG first. That leaves bison 2.6’s YYDEBUG defines in perly.h harmless.
* Restore perly.o build with -DDEBUGGINGFather Chrysostomos2012-09-251-4/+9
|
* Prevent assertion failure with ‘no a a 3’Father Chrysostomos2012-09-141-2/+0
| | | | | | | | | | | | | | | This particular syntax error, whittled down from ‘no if $] >= 5.17.4 warnings => "deprecated"’ (which contains a type), causes the parser to try to free an op from the new sub (for the BEGIN block) after freeing the new sub. This happens on line 526 of perly.c. It should not be necessary for the parser to free the op at this point, since after an error any ops owned by incomplete subs’ slabs will be freed. I’m leaving the other three instances of op_free in perly.c in place, at least for now, since there are cases where the forced token stack prevents ops from being freed when their subs are.
* Omnibus removal of register declarationsKarl Williamson2012-08-181-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This removes most register declarations in C code (and accompanying documentation) in the Perl core. Retained are those in the ext directory, Configure, and those that are associated with assembly language. See: http://stackoverflow.com/questions/314994/whats-a-good-example-of-register-variable-usage-in-c which says, in part: There is no good example of register usage when using modern compilers (read: last 10+ years) because it almost never does any good and can do some bad. When you use register, you are telling the compiler "I know how to optimize my code better than you do" which is almost never the case. One of three things can happen when you use register: The compiler ignores it, this is most likely. In this case the only harm is that you cannot take the address of the variable in the code. The compiler honors your request and as a result the code runs slower. The compiler honors your request and the code runs faster, this is the least likely scenario. Even if one compiler produces better code when you use register, there is no reason to believe another will do the same. If you have some critical code that the compiler is not optimizing well enough your best bet is probably to use assembler for that part anyway but of course do the appropriate profiling to verify the generated code is really a problem first.
* Remove op_latefree(d)Father Chrysostomos2012-07-141-110/+1
| | | | | | | This was an early attempt to fix leaking of ops after syntax errors, disabled because it was deemed to fragile. The new slab allocator (8be227a) has solved this problem another way, so latefree(d) no longer serves any purpose.
* update the editor hints for spaces, not tabsRicardo Signes2012-05-291-2/+2
| | | | | This updates the editor hints in our files for Emacs and vim to request that tabs be inserted as spaces.
* Label UTF8 cleanupBrian Fraser2012-03-251-5/+0
| | | | | This meant changing LABEL's definition in perly.y, so most of this commit is actually from the regened files.
* Bump several file copyright datesSteffen Schwigon2012-01-191-1/+2
| | | | | | | Sync copyright dates with actual changes according to git history. [Plus run regen_perly.h to update the SHA-256 checksums, and regen/regcharclass.pl to update regcharclass.h]
* Fix typos (spelling errors) in Perl sources.Peter J. Acklam) (via RT2011-01-071-1/+1
| | | | | | | | | # New Ticket Created by (Peter J. Acklam) # Please include the string: [perl #81904] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=81904 > Signed-off-by: Abigail <abigail@abigail.be>
* function interface to parse Perl statementZefram2010-09-061-6/+26
| | | | | | | | | | | | | yyparse() becomes reentrant. The yacc stack and related resources are allocated in yyparse(), rather than in lex_start(), and they are localised to yyparse(), preserving their values from any outer parser. yyparse() now takes a parameter which determines which production it will parse at the top level. New API function parse_fullstmt() uses this facility to parse just a single statement. The top-level single-statement production that is used for this then messes with the parser's head so that the parsing stops without seeing EOF, and any lookahead token seen after the statement is pushed back to the lexer.
* When discarding a token free the op associated with itGerard Goossen2009-12-181-0/+2
| | | | | | | | | | | | | | | | | | | | When discarding a token free the op associated with it. Fixes memory leak in comp/parser.t Gerard Goossen From 7694ec023ec8856f34964b5eeea58f1b588c89bc Mon Sep 17 00:00:00 2001 From: Gerard Goossen <gerard@ggoossen.net> Date: Fri, 18 Dec 2009 18:32:11 +0100 Subject: [PATCH 4/4] When discarding a token free the op associated with it. Status: O Content-Length: 438 Lines: 20 Fixes memory leak in comp/parser.t Signed-off-by: H.Merijn Brand <h.m.brand@xs4all.nl>
* Fix casting warningsRafael Garcia-Suarez2009-12-161-3/+3
|
* Store the PL_compcv instead of the the PL_comppad in parser stack, and make ↵Gerard Goossen2009-12-161-14/+28
| | | | it reference counted. Properly solves [perl #66094]
* Update copyright years.Nicholas Clark2008-10-251-1/+1
| | | p4raw-id: //depot/perl@34585
* Silence Borland compiler warnings (except for warnings from zlib) here:Steve Hay2008-02-251-1/+1
| | | | | http://www.nntp.perl.org/group/perl.daily-build.reports/2008/02/msg53937.html p4raw-id: //depot/perl@33370
* [perl #43425] local $[: fix scoping during parser error handling.Dave Mitchell2007-07-161-0/+7
| | | | | | | | | Change 22306# inadvertently made 'local $[' statement-scoped rather than block-scoped; so revert that change and add a different fix. The problem was to ensure that the savestack got popped correctly while popping errored tokens. We how record the current value of PL_savestack_ix with each pushed parser state. p4raw-id: //depot/perl@31615
* Make parser_free() be called slightly later,Dave Mitchell2007-04-011-17/+3
| | | | | | i.e. at the point where lexer vars are being restored in a LEAVE, rather than at the end of yyparse() p4raw-id: //depot/perl@30822
* disable parser stack cleanup on reduce croak (too fragile)Dave Mitchell2007-01-181-1/+17
| | | p4raw-id: //depot/perl@29866
* silence a warning in perly.cDave Mitchell2007-01-071-1/+1
| | | p4raw-id: //depot/perl@29706
* Silence various VC6 warningsSteve Hay2007-01-051-1/+1
| | | p4raw-id: //depot/perl@29692
* make parser_free actually free the parser!Dave Mitchell2007-01-041-0/+3
| | | | | also remove two SAVEs left over from #29655 p4raw-id: //depot/perl@29680
* handle cloning of parsers on the save stackDave Mitchell2007-01-031-1/+1
| | | p4raw-id: //depot/perl@29678
* Update copyright years to include 2007. (Plus a couple of 2006s andNicholas Clark2007-01-021-1/+1
| | | | | earlier we missed in av.h and hv.h) p4raw-id: //depot/perl@29670
* fix -Mad build breakageDave Mitchell2007-01-021-1/+2
| | | p4raw-id: //depot/perl@29667
* move easy lexer state variables into PL_parserDave Mitchell2007-01-021-1/+1
| | | | | (where "easy" == "only appear in toke.c") p4raw-id: //depot/perl@29655
* split parser initialisation from parser executionDave Mitchell2007-01-011-21/+6
| | | p4raw-id: //depot/perl@29652
* split parser stack from parser objectDave Mitchell2007-01-011-30/+29
| | | p4raw-id: //depot/perl@29649
* smoke signs suppressionJarkko Hietaniemi2006-12-311-1/+1
| | | | | Message-ID: <4597C078.4000503@iki.fi> p4raw-id: //depot/perl@29645
* further fix for #29543: fix parser leaks caused by croakingDave Mitchell2006-12-291-16/+39
| | | p4raw-id: //depot/perl@29636
* make -Dpv print 8 parser stack items, not 9Dave Mitchell2006-12-191-1/+1
| | | p4raw-id: //depot/perl@29589
* move parser state into new parser object, PL_parserDave Mitchell2006-12-181-70/+36
| | | p4raw-id: //depot/perl@29570
* merge the four parser stacks into oneDave Mitchell2006-12-171-247/+145
| | | p4raw-id: //depot/perl@29569
* delete dead code and macros from perly.cDave Mitchell2006-12-171-129/+3
| | | p4raw-id: //depot/perl@29568
* unify stacks arithmetic in parserDave Mitchell2006-12-171-16/+12
| | | p4raw-id: //depot/perl@29567
* fix a cast warning in perly.cDave Mitchell2006-12-161-1/+1
| | | p4raw-id: //depot/perl@29560
* make -Dpv display the parser stack before reductionDave Mitchell2006-12-131-11/+1
| | | | | (rather than afterwards) p4raw-id: //depot/perl@29549
* fix parser leaks caused by croaking while shifting or reducingDave Mitchell2006-12-131-16/+102
| | | | | | | e.g. these no longer leak: eval q[my $x; local $x] while 1; eval q[$s = sub <> {}] while 1; p4raw-id: //depot/perl@29543
* remove extraneous debugging code introduced by #29504Dave Mitchell2006-12-111-34/+0
| | | p4raw-id: //depot/perl@29508
* fix eval qw(BEGIN{die}) style leaks (second attempt).Dave Mitchell2006-12-111-22/+129
| | | | | | | | | | | | Repeat of change #28319 (backed out by change #28720), this time freeing ops using the right pad. Also backs out the remempad parser addition from change #29501; instead a new auxiliary paser stack is added, which records the current value of PL_comppad for every state. p4raw-link: @29501 on //depot/perl: 2af555bf3f2b3ca8e114df3f5f680d40bd24d6bf p4raw-link: @28720 on //depot/perl: c86b7e916b443ee192c5638ad9d077ad4e244713 p4raw-link: @28319 on //depot/perl: eb7d7d25d2f780edcbedc124a5bdca0d53ad8687 p4raw-id: //depot/perl@29504
* #28315 could crash when freeing ops with different padsDave Mitchell2006-12-101-2/+17
| | | | | | Add hook to parser to record current PL_comppad, then use this when popping ops off the parser stack after parser error p4raw-id: //depot/perl@29501
* parser: expand yy_is_opval[] to include all value typesDave Mitchell2006-12-101-6/+19
| | | | | | and rename to yy_type_tab[]. Then use this table to improve stack dumping with -Dpv p4raw-id: //depot/perl@29500
* merge perly.y and madlu.yDave Mitchell2006-12-041-17/+28
| | | p4raw-id: //depot/perl@29455
* add support for bison 2.3Dave Mitchell2006-12-031-0/+5
| | | p4raw-id: //depot/perl@29443
* merge perly.c and madly.cDave Mitchell2006-12-031-5/+27
| | | | | madly.c is now just a wrapper that #includes perly.c p4raw-id: //depot/perl@29440
* synchronise perly.c and madly.cDave Mitchell2006-12-021-6/+6
| | | p4raw-id: //depot/perl@29438
* Revert change 28319, which may cause segfaults with threaded perlsRafael Garcia-Suarez2006-08-151-53/+1
| | | | | on eval("syntax error") statements p4raw-id: //depot/perl@28720
* fix eval qw(BEGIN{die}) style leaks.Dave Mitchell2006-05-271-3/+53
| | | | | | | death while exdcuting code while parsing meant that the current parse stack got quiety abandonded, thus leaking a bunch of OPs. Register a destructor to be called when this happens. p4raw-id: //depot/perl@28319
* make -Dpv display OP names ons the parser stackDave Mitchell2006-05-271-6/+15
| | | p4raw-id: //depot/perl@28316
* stop OPs leaking in eval "syntax error"Dave Mitchell2006-05-271-0/+8
| | | | | | | | When bison pops states during error recovery, any states holding an OP would leak the OP. Create an extra YY table that tells us which states are of type opval, and when popping one of those, free the op. p4raw-id: //depot/perl@28315
* Add the madly parser. I believe that this is all the C code. Now toNicholas Clark2006-03-091-3/+3
| | | | | find the bugs that stowed away. p4raw-id: //depot/perl@27447