Nicholas Clark [Sat, 29 May 2010 21:07:04 +0000]
Properly free paren_name_list with its regexp.
Previously the AV paren_name_list would "leak" until global destruction.
This was only an issue under -DDEBUGGING. Fixes RT #73438.
Karl Williamson [Fri, 15 Jan 2010 04:21:37 +0000]
Clarify that count is bytes not unicode characters
Karl Williamson [Fri, 15 Jan 2010 02:19:22 +0000]
Display characters as Unicode for clarity
Karl Williamson [Fri, 15 Jan 2010 00:36:46 +0000]
Add tested for corrupted regnode
Karl Williamson [Thu, 14 Jan 2010 23:02:14 +0000]
Use sizeof instead of hard-coded array size
The array should be declared with its actual size.
Karl Williamson [Thu, 14 Jan 2010 23:01:13 +0000]
Typo
Nicholas Clark [Sat, 29 May 2010 15:23:53 +0000]
When assigning to $^P, don't zero $DB::single, $DB::trace and $DB::signal.
Previously, whenever a true value was assigned to $^P, all 3 were set to 0.
Now only set them to 0 if they aren't already SvIOK().
Resolves RT #72422.
Nicholas Clark [Fri, 28 May 2010 15:02:12 +0000]
Migrate most other op_private to name conversion into S_op_private_to_names().
Nicholas Clark [Fri, 28 May 2010 13:33:34 +0000]
In Perl_do_op_dump(), move calls to append_flags() into S_op_private_to_names()
Nicholas Clark [Fri, 28 May 2010 13:53:04 +0000]
Add C_ARRAY_END(), returning a pointer to after the last element of an array.
Refactor the macro append_flags() in dump.c to use it.
Nicholas Clark [Fri, 28 May 2010 12:53:02 +0000]
In Perl_do_op_dump(), reorder the ops within the if (o->op_private) clause.
Nicholas Clark [Fri, 28 May 2010 12:43:43 +0000]
In Perl_do_sv_dump(), use append_flags() for PVCV, PVFM and PVGP flags.
Nicholas Clark [Fri, 28 May 2010 10:50:54 +0000]
In Perl_do_sv_dump(), for PVCV and PVFM, test for SvCOMPILED(sv) last.
Nicholas Clark [Fri, 28 May 2010 10:26:16 +0000]
In Perl_do_op_dump(), move runs of op_private name tests to S_append_flags().
Nicholas Clark [Fri, 28 May 2010 09:56:21 +0000]
Create S_append_flags() from a common code pattern in dump.c.
Convert repetitive sequences of "if this bit is set, append that string" into
structures and a function call. Use a custom macro append_flags() to make
calling it easer.
This makes the object code slightly smaller.
Nicholas Clark [Tue, 5 Jan 2010 13:06:52 +0000]
InPerl_boot_core_UNIVERSAL() use a data structure for calls to newXS{,proto}
Replacing the longhand list of calls to newXS{,proto} with loop over a data
structure reduces the object size by over 1K.
Salvador Ortiz Garcia [Fri, 28 May 2010 08:25:52 +0000]
Naif calls segfault T_PRTOBJ of the stock typemap
The T_PTROBJ INPUT in stock typemap only uses 'sv_derived_from' for
input validation, that cause a segfault when the argument passed match
the class name.
Nicholas Clark [Fri, 28 May 2010 06:58:19 +0000]
Add simple_bitmask and varies_bitmask to globvar.sym.
global.sym is generated; is there a way to automate globvar.sym?
Nicholas Clark [Wed, 17 Mar 2010 17:16:24 +0000]
Convert REGNODE_{SIMPLE,VARIES} to a bitmask lookup, from a strchr() lookup.
This is O(1) with no branching, instead of O(n) with branching.
Deprecate the old implementation's externally visible variables
PL_simple and PL_varies. Google codesearch suggests that nothing outside the
core regexp code was using these.
Nicholas Clark [Wed, 17 Mar 2010 16:41:27 +0000]
Change regcomp.pl to 0-based indexing for its arrays and loops.
Nicholas Clark [Wed, 17 Mar 2010 13:58:25 +0000]
Encapsulate lookups in PL_{varies,simple} within macros REGNODE_{VARIES,SIMPLE}
This allows the implementation of the lookup mechanism to change.
Nicholas Clark [Wed, 17 Mar 2010 13:33:48 +0000]
Generate PL_simple[] and PL_varies[] with regcomp.pl, rather than hard-coding.
Add a new flags column to regcomp.sym, with V if the node type is in PL_varies,
S if it is in PL_simple, and . if a placeholder is needed because subsequent
optional columns are present.
Nicholas Clark [Tue, 16 Mar 2010 10:22:04 +0000]
Re-work the regcomp.sym to remove use of hard tabs. No data change.
The tab separating name and type is replaced with whitespace, the tab marking
the start of the description is replaced by a semicolon.
Nicholas Clark [Tue, 16 Mar 2010 09:50:29 +0000]
Correct the node numbers in comments.
Really, should we be maintaining these manually?
Nicholas Clark [Tue, 16 Mar 2010 09:48:35 +0000]
Remove stray tab character in definition for VERB.
As VERB is "Used only for the type field of verbs" this is only a cosmetic
change, causing that correct description to appear in the comment in
regnodes.h. The change to regarglen doesn't affect anything, as the VERB type
is never actually used for compiled nodes.
George Greer [Thu, 27 May 2010 01:12:37 +0000]
Fix clang "incompatible operand types" error in ternary expressions.
Karl Williamson [Fri, 14 May 2010 14:56:46 +0000]
PATCH: user defined special casing for non utf8
Users can define their own case changing mappings to replace the
standard ones. Prior to this patch, any mappings on characters whose
ordinals are 0-222, 224-255 that resulted in multiple characters were
ignored.
Note that there still is a deficiency in that the mappings will be
applied only to strings in utf8 format.
Karl Williamson [Mon, 24 May 2010 17:01:10 +0000]
Change a few tests to use new test.pl EBCDIC stuff
A few .t's are delivered here which use the new conversion functions in
test.pl. Obviously, this commit doesn't have to be incorporated, but it
does simplify those tests.
Karl Williamson [Mon, 24 May 2010 16:50:13 +0000]
Add functions to test.pl for easier EBCDIC testing
This patch adds functions native_to_latin1($) and latin1_to_native($) to
test.pl. Use of these in test scripts allows for less special case code
(or deciding to blow it off and just skip EBCDIC platforms). If a
string is all ASCII, one has always been able to just use it and not
worry about EBCDIC. But non-ASCII, latin1 characters have been a
different matter. This allows one to wrap those characters in a
function call and get automatic EBCDIC compatibility.
The functions do not handle UTF-8/UTF-EBCDIC conversions. This is more
complicated, and I was worried that that part was not appropriate for
test.pl which should use the bare minimum of Perl functionality. These
functions use tr///, beyond what other parts of test.pl use.
Nicholas Clark [Tue, 25 May 2010 16:23:10 +0000]
Fix CLONE/weakref bug revealed by
adf8f095c5881bce.
The AV unreferenced in the clone_params needs to be reference counted, rather
than not referenced counted, because the fixup to ensure that all otherwise
0-reference count scalars have a reference (on the temps stack) happens after
CLONE is run, and CLONE can run Perl code that causes their reference counts
to increase from then return to zero, which prematurely triggers sv_free().
H.Merijn Brand [Tue, 25 May 2010 16:26:37 +0000]
Update rsync sources in perlhack
Shlomi Fish [Mon, 24 May 2010 20:40:48 +0000]
Add the perl equivalent for av_make.
Signed-off-by: David Golden <dagolden@cpan.org>
Shlomi Fish [Wed, 19 May 2010 17:11:03 +0000]
Add the Perl equivalent for av_len.
Signed-off-by: David Golden <dagolden@cpan.org>
Shlomi Fish [Wed, 19 May 2010 14:46:43 +0000]
Add a missing comma in the av_fill() docs.
Minor, but still good enough for a commit.
Signed-off-by: David Golden <dagolden@cpan.org>
Shlomi Fish [Tue, 18 May 2010 14:42:52 +0000]
Clarify the av_fetch() documentation.
Thanks to LeoNerd and Zefram on #p5p on IRC for some insights and
suggesting versions for the modified text. I ended up using Zefram's
version.
Signed-off-by: David Golden <dagolden@cpan.org>
Shlomi Fish [Tue, 18 May 2010 12:31:41 +0000]
Add Perl equivalent for av_exists().
This mentions that it's equivalent to exists($myarray[$key]).
Signed-off-by: David Golden <dagolden@cpan.org>
Shlomi Fish [Sat, 15 May 2010 19:13:59 +0000]
Add a Perl equivalent to av_delete().
Signed-off-by: David Golden <dagolden@cpan.org>
Shlomi Fish [Sat, 15 May 2010 18:44:58 +0000]
Add the Perl equivalent example to av_clear.
Signed-off-by: David Golden <dagolden@cpan.org>
Shlomi Fish [Sat, 15 May 2010 18:37:46 +0000]
Link from GIMME_V to perlcall for a usage example.
Added a link from the GIMME_V entry to perlcall for a usage example.
Signed-off-by: David Golden <dagolden@cpan.org>
Karl Williamson [Mon, 24 May 2010 14:08:51 +0000]
PATCH: correct misstatement, formats in perlunicode
This is suitable for 5.12.2, but not many people use this feature.
Nicholas Clark [Tue, 25 May 2010 15:30:43 +0000]
Fix for typo in
0824d66743a706cd, in the expected output with threads.
David Mitchell [Tue, 25 May 2010 10:38:35 +0000]
add OPpDEREFed flag to avoid double mg_get()
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).
Father Chrysostomos (via RT) [Sun, 17 Jan 2010 22:32:24 +0000]
Deref ops ignore get-magic when SvROK(sv)
This is just like bug 68192, except in this case it’s a different set
of operators that have had this problem for much longer.
Father Chrysostomos [Mon, 24 May 2010 10:56:25 +0000]
Just the tests from a proposed fix for 68192
The bug was fixed in a different way by davem, but the tests
are needed as the base for a commit to follow
Karl Williamson [Tue, 18 May 2010 14:43:31 +0000]
Replace wrong tr/// table in perlebcdic.pod
perlebcdic.pod contains a helpful table to use in tr/// to convert
between EBCDIC and Latin1/ASCII. Unfortunately, the table is the
inverse of the one it describes, as I discovered in following the
directions on how it was extracted.
The actual code that uses the table uses it in the inverse way, so it
actually works correctly, but if you follow the instructions to get the
tables corresponding to the other recognized code pages, you will get
the inverse of the ones you wanted, and things won't work out.
This patch changes the table to its inverse, and changes the sample code
to correspond, as this is easier for the person trying to follow the
instructions since deriving the old table is somewhat more complicated.
I also changed the table to hex from octal, as that is more the norm
these days, and I changed to recipes in the pod to print out leading
zeros to make all the values the same length, as the table that they can
generate has them.
Karl Williamson [Tue, 18 May 2010 16:02:26 +0000]
Remove unused, wrong #define in utf8.h
is unused in the code, and is wrong for EBCDIC platforms, as there can
be invariants there that aren't ASCII. I simply removed it.
Jerry D. Hedden [Fri, 7 May 2010 16:14:05 +0000]
Fix build warnings introduced by v5.13.0-139-ge0fa7e2
Nicholas Clark [Mon, 24 May 2010 20:01:29 +0000]
Add Perl_clone_params_{del,new} and Perl_sv_dup to the "no threads" exclusions.
Nicholas Clark [Fri, 26 Feb 2010 09:18:44 +0000]
Set PADSTALE on all lexicals at the end of sub creation.
The PADSTALEness of lexicals between the 0th and 1st call to a subroutine is now
consistent with the state between the nth and (n + 1)th call.
This permits a work around in Perl_padlist_dup() to avoid leaking active pad
data into a new thread, whilst still correctly bodging the external references
needed by the current ?{} implementation. Fix that, and this can be removed.
Nicholas Clark [Thu, 25 Feb 2010 21:35:39 +0000]
Don't clone the contents of lexicals in pads.
This stops the values of lexicals in active stack frames in the parent leaking
into the lexicals in the child thread.
With an exception for lexicals with a reference count of > 1, to cope with the
implementation of ?{{ ... }} blocks in regexps. :-(
Nicholas Clark [Thu, 25 Feb 2010 16:56:53 +0000]
In Perl_pad_tidy(), merge the SvPADTMP_on() loops for padtidy_SUB and _FORMAT.
Nicholas Clark [Thu, 25 Feb 2010 14:21:18 +0000]
In Perl_padlist_dup() don't duplicate @_ or pads caused by recursion.
CvDEPTH() is 0 in a new thread, so duplicating pads beyond the always-present
first level is a waste of effort and memory.
Nicholas Clark [Wed, 10 Feb 2010 09:57:23 +0000]
Convert PAD_DUP to a function Perl_padlist_dup().
assert() that pads are never AvREAL().
Nicholas Clark [Thu, 25 Feb 2010 11:12:03 +0000]
When deleting CLONE_PARAMS, push any unreferenced SVs onto the temps stack.
Effectively this leaves the cloned-into interpreter in a consistent state.
In the cloned-from interpreter, the SV targets of non-reference owning pointers
*are* referenced and managed by other pointers. SvREFCNT() == 0 SVs in the
cloned-into interpreter result from the non-reference owning pointers being
found and followed, but the reference owning and managing pointers not being
part of the subsection of interpreter state cloned over. Hence, this change
creates reference owning pointers to this SVs on the temps stack, which ensures
that they are correctly cleaned up, and don't "leak" until interpreter
destruction. (Which might be some time away, in a persistent process.)
Nicholas Clark [Wed, 24 Feb 2010 17:15:41 +0000]
Better ithreads cloning - add all SVs with a 0 refcnt to the temps stack.
Track all SVs created by sv_dup() that have a 0 reference count. If they still
have a 0 reference count at the end of cloning, assign a reference to each to
the temps stack. As the temps stack is cleared at thread exit, SVs book keeping
will be correct and consistent before perl_destruct() makes its check for
leaked scalars.
Remove special case code for checking each @_ and the parent's temp stack.
Nicholas Clark [Mon, 24 May 2010 14:48:06 +0000]
Cleaner implementations for Perl_clone_params_{new,del}
Not source or binary compatible with maint-5.12.
Nicholas Clark [Wed, 24 Feb 2010 11:47:08 +0000]
Abstract *correct* initialisation of CLONE_PARAMS into Perl_clone_params_new().
As it allocates memory dynamically, add Perl_clone_params_del(). This will
allow CLONE_PARAMS to be expand in future in a source and binary compatible
fashion.
These implementations of Perl_clone_params_new()/Perl_clone_params_del() jump
through hoops to remain source and binary compatible, in particular, by not
assuming that the structure member is present and correctly initialised. Hence
they should be suitable for inclusion into Devel::PPPort.
Convert threads.xs to use them, resolving RT #73046.
Nicholas Clark [Tue, 23 Feb 2010 14:48:17 +0000]
Convert Perl_sv_dup_inc() from a macro to a real function.
Nicholas Clark [Wed, 24 Feb 2010 15:07:51 +0000]
In perl_clone_using(), turn off AvREAL() on param->stashes.
This is an optimisation, not a bug fix.
Zefram [Mon, 24 May 2010 11:38:24 +0000]
Add package block syntax to perldelta
David Golden [Mon, 24 May 2010 00:04:38 +0000]
Add perldelta entry for non-destructive substitution
Nicholas Clark [Sun, 23 May 2010 20:09:13 +0000]
Change the API documentation from sv_2nv to sv_2nv_flags.
Addendum to
39d5de13bc6d138b.
Zefram [Sat, 22 May 2010 22:10:16 +0000]
fix MAD handling of package block syntax
There was a broken TOKEN_GETMAD attempting to handle the label preceding a
package-block statement, where no label is actually possible. The correct
behaviour for no label is a no-op, so just remove the TOKEN_GETMAD.
David Mitchell [Sun, 23 May 2010 14:04:37 +0000]
add perldelta entry for overload fixes
David Golden [Sun, 23 May 2010 11:51:04 +0000]
Format perlhist consistently by maint/dev track
David Golden [Sun, 23 May 2010 11:22:32 +0000]
create perl5132delta
David Golden [Sun, 23 May 2010 02:46:50 +0000]
Rephrase perlop for non-destructive substitution
David Golden [Sun, 23 May 2010 02:31:38 +0000]
Add David Caldwell to AUTHORS
David Caldwell [Tue, 24 Nov 2009 01:24:25 +0000]
Add s///r (non-destructive substitution).
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.
Nicholas Clark [Tue, 17 Nov 2009 10:17:11 +0000]
Restore strict refs on stashes, removed by
ce10b5d1ec5b5f68b0811018a415bc37.
Strictures on stashes were special-cased, because the lexer was special-cased
to avoid autovivifying stashes (in
adc51b978ed1b2e9d4512c9bfa80386ac917d05a,
now reverted), to keep the behaviour of defined %stash:: consistent.
defined %stash:: is deprecated.
Keep the new regression tests from
ce10b5d1ec5b5f68b0811018a415bc37bb6bfe5e.
Nicholas Clark [Sat, 24 Oct 2009 11:22:01 +0000]
Re-instate the use of gv_stashpvn_flags(), and the correct non-boolean argument.
This restores the change of
9bde8eb087a2c05d4c8b0394a59d28a09fe5f529.
Nicholas Clark [Sat, 24 Oct 2009 10:36:06 +0000]
Remove the tokeniser hack that prevents compile-time vivification of %stash::
This was put in to ensure that defined %stash:: continued to return false after
the implementation of hashes was changed, such that stashes were always defined.
defined %stash:: is deprecated.
This reverts the tokeniser changes of
adc51b978ed1b2e9d4512c9bfa80386ac917d05a,
76138434928a968a390c791aec92e5f00017d01d,
d6069db2e52f58ef65bf59f2fd453604270d2205 and part of
9bde8eb087a2c05d4c8b0394a59d28a09fe5f529, and updates the tests added with those
commits to reflect the restored (but as yet unreleased) behaviour.
I don't think that this should be merged to blead until after 5.12.0 ships,
with the enabled deprecation warnings on defined %hash, as it changes subtle
behaviour that all current released stable perls accept without warning.
Nicholas Clark [Fri, 21 May 2010 19:32:28 +0000]
PL_in_load_module only has values 0 and 1, so can be a bool instead of int.
Nicholas Clark [Sat, 13 Mar 2010 11:23:46 +0000]
Perl_hv_fill(), count empty chains down, rather than used chains up.
The assumption is that most chains of a hash are in use.
Suggestion and initial patch by Ruslan Zakirov.
Nicholas Clark [Sun, 24 Jan 2010 15:39:53 +0000]
Eliminate xhv_fill from struct xpvhv.
Nicholas Clark [Sun, 24 Jan 2010 15:07:50 +0000]
Make HvFILL() count the allocated buckets, instead of reading a stored value.
Add a function Perl_hv_fill to perform the count. This will save 1 IV per hash,
and on some systems cause struct xpvhv to become cache aligned.
Nicholas Clark [Sun, 24 Jan 2010 10:50:02 +0000]
Replace boolean use of HvFILL(hv) with HvTOTALKEYS(hv), which is equivalent.
David Mitchell [Fri, 21 May 2010 16:07:40 +0000]
followup to magic/overload fix
6f1401dc2acd2a2b85df22b0a74e5f7e6e0a33aa was over-enthusiastic
on removing redundant code in the comparison ops. This code was only used
on 64-bit #ifdef branches which is why I failed to spot it earlier.
So restore that code!
David Mitchell [Fri, 21 May 2010 13:18:21 +0000]
make overload respect get magic
In most places, ops checked their args for overload *before* doing
mg_get(). This meant that, among other issues, tied vars that
returned overloaded objects wouldn't trigger calling the
overloaded method. (Actually, for tied and arrays and hashes, it
still often would since mg_get gets called beforehand in rvalue
context).
This patch does the following:
Makes sure get magic is called first.
Moves most of the overload code formerly included by macros at the
start of each pp function into the separate helper functions
Perl_try_amagic_bin, Perl_try_amagic_un, S_try_amagic_ftest,
with 3 new wrapper macros:
tryAMAGICbin_MG, tryAMAGICun_MG, tryAMAGICftest_MG.
This made the code 3800 bytes smaller.
Makes sure that FETCH is not called multiple times. Much of this
bit was helped by some earlier work from Father Chrysostomos.
Added new functions and macros sv_inc_nomg(), sv_dec_nomg(),
dPOPnv_nomg, dPOPXiirl_ul_nomg, dPOPTOPnnrl_nomg, dPOPTOPiirl_ul_nomg
dPOPTOPiirl_nomg, SvIV_please_nomg, SvNV_nomg (again, some of
these were based on Father Chrysostomos's work).
Fixed the list version of the repeat operator (x): it now only
calls overloaded methods for the scalar version:
(1,2,$overloaded) x 10
no longer erroneously calls
x_method($overloaded,10))
The only thing I haven't checked/fixed yet is overloading the
iterator operator, <>.
Nicholas Clark [Tue, 26 Jan 2010 17:03:41 +0000]
Remove union _xivu from _XPVCV_COMMON, and hence structs xpvcv and xpvfm
Replaced with xcv_depth and xfm_lines respectively. Both structures might
benefit from some field re-ordering.
Update the descriptive comments in the definition of union _xivu.
Nicholas Clark [Tue, 26 Jan 2010 16:28:59 +0000]
Remove union _xivu from struct regexp - replace it with a non-union paren_names.
This was the only user of xivu_hv in union _xivu, so remove that too.
Nicholas Clark [Mon, 25 Jan 2010 14:28:30 +0000]
Remove union _xivu from struct xpvhv - replace it with a non-union xav_keys.
Nicholas Clark [Mon, 25 Jan 2010 13:55:28 +0000]
Remove union _xivu from struct xpvav - replace it with a non-union xav_alloc.
This was the only user of xivu_p1 in union _xivu, so remove that too.
Nicholas Clark [Mon, 25 Jan 2010 13:30:16 +0000]
Reinstate space optimisations to SV body structures.
Nicholas Clark [Mon, 25 Jan 2010 09:27:56 +0000]
In the SV body, exchange the positions of the NV and stash/magic.
Nicholas Clark [Fri, 22 Jan 2010 15:31:49 +0000]
Remove all space optimisations from SV body structures.
H.Merijn Brand [Fri, 21 May 2010 06:01:54 +0000]
The size of a character in C is per definition 1
Sisyphus [Fri, 21 May 2010 00:56:07 +0000]
Fix CCINCDIR and CCLIBDIR for mingw64 cross compiler
When building perl with the mingw64 x64 cross-compiler 'incpath', 'libpth',
'ldflags', 'lddlflags' and 'ldflags_nolargefiles' values in Config.pm and
Config_heavy.pl are not being set correctly because, with that compiler, the
include and lib directories are not immediately below $(CCHOME).
Zefram [Thu, 20 May 2010 20:48:03 +0000]
fully test package-version-block syntax
Extend the exhaustive package-version tests in t/op/packagev.t
to test each case using package-block syntax in addition to the
package-declaration syntax.
Zefram [Sat, 1 May 2010 16:51:21 +0000]
additional tests for package block syntax
Test that __PACKAGE__ propagates into string eval correctly. Test that
__LINE__ is correct. Test that goto into and out of package blocks
works correctly.
Zefram [Sat, 1 May 2010 16:30:26 +0000]
fix SEGV with eval("package Foo {")
OPs relating to the package name and version were subject to double
freeing during error recovery from an incomplete package block. Fixed by
using the op_latefree mechanism to shift the op free time.
Zefram [Mon, 19 Apr 2010 19:37:25 +0000]
support "package Foo { ... }"
Package block syntax limits the scope of the package declaration to the
attached block. It's cleaner than requiring the declaration to come
inside the block.
Nicholas Clark [Tue, 23 Feb 2010 20:35:29 +0000]
PL_endav can be NULL, so in S_ithread_create() no need to set it to newAV().
Nicholas Clark [Sat, 13 Feb 2010 09:05:18 +0000]
Remove redundant hv_exists() calls from ithread_create()'s spec parser.
hv_fetch(..., 0) won't create the element if it doesn't exist, returning a NULL
pointer, so hv_exists() and hv_fetch() is doing two hash lookups where one would
suffice.
On this machine, reduces the object code by 3K, about 7%. Everyone's a winner.
Nicholas Clark [Sat, 13 Feb 2010 08:31:55 +0000]
Change S_ithread_create() params from a single AV* to a pair of SV** pointers.
This saves creating, duplicating and freeing and AV, which is only ever used for
an internal calling convention.
Nicholas Clark [Sat, 13 Feb 2010 08:01:45 +0000]
In threads.xs, convert thread->params from RV to AV.
Pass around and store the array directly, rather than creating, holding and
dereferencing a reference to it.
Nicholas Clark [Tue, 26 Jan 2010 12:00:56 +0000]
SvIVX() isn't valid on SVt_REGEXP
Nicholas Clark [Mon, 25 Jan 2010 10:53:33 +0000]
In sv.c, _all_ {new,del}_X* macros can be *_body_allocated.
Previously those where bodies_by_type[sv_type].offset was zero were using
{new,del}_body_typed. However, the optimiser can spot this, and generates the
same object code. This allows simplification of the C code, and more
flexibility to rearrange the structures without generating bugs.
Ricardo Signes [Thu, 20 May 2010 14:14:39 +0000]
update Ricardo Signes's email
Rafael Garcia-Suarez [Wed, 19 May 2010 18:36:12 +0000]
Do not try to load a feature bundle when doing "no VERSION"