summaryrefslogtreecommitdiff
path: root/ext/B
Commit message (Collapse)AuthorAgeFilesLines
* Convert modules in ext/ to pass minimal arguments to XSLoader::load().Nicholas Clark2010-10-141-3/+3
|
* Add a warning to test.pl if quotes are used in one-liners.Nicholas Clark2010-09-241-1/+1
| | | | | | Fix all the tests that were using quotes, and (by implication) working because barewords are treated as strings, and one-liners aren't run under strict.
* Change .t to use new (?^...)Karl Williamson2010-09-221-1/+1
| | | | | | There is a line in this .t which uses the old regex stringification. The contents are not currently tested for, but for cleanliness, change to the new.
* Change comments, documentation for new (?^...)Karl Williamson2010-09-221-3/+3
| | | | I overlooked these earlier in adding the caret notation.
* Peephole optimise adjacent pairs of nextstate ops.Nicholas Clark2010-08-272-312/+298
| | | | | | | | | | | | | | | | | | | | | Previously, in code such as use constant DEBUG=>0; sub GAK { warn if DEBUG; print "stuff\n"; } the ops for C<warn if DEBUG;> would be folded to a null op (ex-const), but the nextstate op would remain, resulting in a runtime op dispatch of nextstate, nextstate, ... The execution of a sequence of nexstate ops is indistinguishable from just the last nextstate op, so teach the peephole optimiser to eliminate the first of a pair of nextstate ops. (Except where the first carries a label, as labels mustn't be eliminated by the optimiser, and label usage isn't conclusively known at compile time.)
* Refactor common parts of op.h, regexp.h into new .hKarl Williamson2010-07-291-1/+1
| | | | | | | | | | | op.h and regexp.h share common elements in their data structures. They have had to manually be kept in sync. This patch makes it easier by putting those common parts into a common header #included by the two. To do this, it seemed easiest to change the symbol definitions to use left shifts to generate the flag bits. But this meant that regcomp.pl and axt/B/defsubs_h.PL had to be taught to recognize those forms of expressions, done in separate commits
* ext/B/defsubs_h.PL: teach to allow exprs with <<Karl Williamson2010-07-291-1/+5
| | | | Allow #defines which have left shift operators in them.
* ext/B/defsubs_h.PL: add explanatory commentKarl Williamson2010-07-291-0/+4
|
* defsubs_h.PL: Use correct variable in error msgKarl Williamson2010-07-291-1/+1
|
* version bump for B::t::OptreeCheck and add to deltaMatt S Trout2010-06-211-1/+1
|
* version bump for B::Concise and add change to deltaMatt S Trout2010-06-211-1/+1
|
* Fix list of constants to import to make this test passRafael Garcia-Suarez2010-06-181-1/+1
|
* Spell-check fixes in extH.Merijn Brand2010-06-071-2/+2
|
* Fix for typo in 0824d66743a706cd, in the expected output with threads.Nicholas Clark2010-05-251-1/+1
|
* add OPpDEREFed flag to avoid double mg_get()David Mitchell2010-05-252-2/+3
| | | | | | | | | | | | | The previous commit made various ops such as rv2av unconditionally do an SvGETMAGIC(). Under some circumstances this could cause a double mg_get() (and hence double FETCH etc). In particular, when the proceeding op was something like aelem with OPpDEREF, the aelem would call vivify_ref(), which would call magic. So in peep(), mark OP_RV2[SAH]V ops with the new OPpDEREFed flag if the preceding op was OPpDEREF. Then use this flag to avoid a second dose of magic. Note that RV2GV probably needs this flag too, but there weren't any spare private flag bits left for that op (I think).
* Add s///r (non-destructive substitution).David Caldwell2010-05-221-1/+2
| | | | | | | | | | | | | | | | This changes s/// so that it doesn't act destructively on its target. Instead it returns the result of the substitution (or the original string if there was no match). In addition this patch: * Adds a new warning when s///r happens in void context. * Adds a error when you try to use s///r with !~ * Makes it so constant strings can be bound to s///r with =~ * Adds documentation. * Adds some tests. * Updates various debug code so it knows about the /r flag. * Adds some new 'r' words to B::Deparse.
* Make tests pass with open pragma in effectRafael Garcia-Suarez2010-05-041-22/+22
|
* shift; optimizationRuslan Zakirov2010-05-031-168/+148
|
* Downgrade Socket.pm's new inet_ntop and inet_pton to EXPORT_OK ratherJesse Vincent2010-03-251-1/+1
| | | | | than EXPORT as they're new functions which clobber symbols in downstream CPAN modules.
* Teach B::Deparse about in-place reverseVincent Pit2009-11-151-4/+4
| | | | And bump the $VERSION.
* Optimize reversing an array in-placeVincent Pit2009-11-101-0/+1
|
* Avoid using defined %hash in core code and tests.Nicholas Clark2009-10-231-2/+2
|
* Bump B::Consise's version number since it's changed since 5.11.0Jesse Vincent2009-10-201-1/+1
|
* Replace sv_2mortal(newSVpvn(...)) with newSVpvn_flags(..., SVs_TEMP)Nicholas Clark2009-10-151-9/+9
|
* Use sv_catpvs(), newSVpvs(), newSVpvn(), newSVhek(), gv_stashpvs() and theNicholas Clark2009-10-152-47/+51
| | | | | | | | return value of sprintf(). Brought to you by the Campaign for the Elimination of strlen(). (And the elimination of accidental bugs due to typos in lengths of constant strings.)
* Optimise if (%foo) to be faster than if(keys %foo)demerphq2009-10-151-1/+1
| | | | | | | | | | | Thread was "[PATCH] Make if (%hash) {} act the same as if (keys %hash) {}" http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2006-11/msg00432.html but the implementation evolved from the approach described in the subject, to instead add a new opcode pp_boolkeys, to exactly preserve the existing behaviour. Various conflicts with the passage of time resolved, 'register' removed, and a $VERSION bump.
* A number of pod fixes found by podcheck.tJesse Vincent2009-10-051-2/+2
|
* Remove the $ENV{PERL_CORE} boilerplate from B's tests.Nicholas Clark2009-08-3018-132/+20
|
* Break out B::Debug into its own directory in ext.Nicholas Clark2009-08-302-510/+0
|
* Break out B::Deparse into its own directory in ext.Nicholas Clark2009-08-302-5486/+0
|
* Break out B::Lint into its own directory in ext.Nicholas Clark2009-08-304-1030/+0
|
* There is no longer an "err" low-prec version of //, so remove it from B::DeparseRafael Garcia-Suarez2009-08-281-2/+2
|
* Make extensions in ext run their tests from the extension's own directory.Nicholas Clark2009-08-282-2/+3
| | | | | | | | | | | Inspired by, and in parts borrows from, Schwern's branch on github, but takes a slightly different approach in places. Not quite perfect yet - ext/File-Glob still runs from t, at least one FIXME needs fixing, and the changes to dual-life modules' tests need to be filtered back upstream, and possibly modified to suit their respective authors. But it works.
* B - The Perl Compiler (wrong name)Reini Urban2009-08-271-1/+1
| | | | | The Perl Compilers are for some time in B::C and not B. B is only the backend.
* Fix a Deparse bug - constants and PCSs were appearing as subroutine stubs.Nicholas Clark2009-08-242-3/+11
| | | | | | | (Because constants and other Proxy Constant Subroutines are stored in the symbol table as references, and in 5.11.0 RVs merged with IVs, and B::Deparse knows that an IV in the symbol table is a stub declaration for a subroutine with no prototype, so B::Deparse "knew" that that's what it was.)
* Remove the MacOS Classic support from deparse.t (as it's getting in the way).Nicholas Clark2009-08-241-18/+3
|
* ameliorate B::Deparse slowdownDavid Mitchell2009-08-121-4/+9
| | | | | | | commit 2990415a45 improved the ability to deparse inlined constants, but at the cost of having to walk all the symbol tables when each new B::Deparse object is created. Make this scan instead only happen the first time its needed.
* Add a version number to B::Lint::DebugRafael Garcia-Suarez2009-07-161-0/+2
|
* bump versions of non-dual-life modules thatDavid Mitchell2009-07-031-1/+1
| | | | | * differ between 5.10.0 and maint-5.10, or * differ between 5.8.9 and maint-5.10
* fully sync blead with B::Debug 1.11 (debug.t was out of date)David Mitchell2009-06-121-5/+17
|
* Mark all .t and .pm files as non executableRafael Garcia-Suarez2009-06-063-0/+0
|
* resync some files with their CPAN equivalents (just the trivial errors forDavid Mitchell2009-06-021-1/+1
| | | | now, like whitespace)
* TODO tests for deparsing strict, warnings as strings, and my $x if 0;Nicholas Clark2009-04-131-1/+22
|
* our $TODO should be local $::TODO, revealing a bug in the de-commenting regexp.Nicholas Clark2009-04-131-5/+5
| | | | | Remove some orphaned trailing quotes from TODO message that are no longer conditional code.
* Correct two other tests that apparently should be TODOs rather than SKIPs.Nicholas Clark2009-04-131-2/+6
|
* A perl-version portable fix for B coping with CVf_LOCKED being removed in 5.11.Nicholas Clark2009-04-133-4/+19
|
* Refactor the SKIP parser to also handle TODOs. TODO 3 tests that were wronglyNicholas Clark2009-04-131-14/+19
| | | | SKIPs.
* Remove CVf_LOCKED and CvLOCKED*(), now that nothing sets that flag bit.Nicholas Clark2009-04-133-5/+3
|
* Deprecate use of the attribute :locked on subroutines.Nicholas Clark2009-04-121-6/+2
|
* Fix concise-xs.t after recent changes to Socket.pmRafael Garcia-Suarez2009-03-271-0/+1
| | | | | Since concise-xs.t uses IO::Socket as a source for its testing, we need to list correctly all function it exports.