]>
git.vpit.fr Git - perl/modules/Scope-Upper.git/log
Vincent Pit [Mon, 19 Sep 2011 10:35:15 +0000 (12:35 +0200)]
Create the renamed CV as a shallow copy of the original one
From now they share the exact same pad, without any refcount bump. This
means that we have to handle the renamed CV destruction ourselves by
clearing its padlist entry before freeing it, but we need to reset its
depth anyway before that (or that would cause "still in use" warnings).
This allows us to call pp_entersub directly with the renamed CV as we were
doing earlier, and to remove the exotic destruction dance from
su_uplevel_restore().
Vincent Pit [Tue, 13 Sep 2011 21:32:59 +0000 (23:32 +0200)]
Fix a test in t/60-uplevel-target.t that does not test anything
Vincent Pit [Tue, 13 Sep 2011 21:10:36 +0000 (23:10 +0200)]
Don't rely on being able to access the old context in su_uplevel_restore()
It will be overwritten if the callback gotos into another subroutine.
This also fixes "Attempt to free unreferenced scalar" warning when the
debugger is enabled.
Vincent Pit [Tue, 13 Sep 2011 19:50:27 +0000 (21:50 +0200)]
Rename some variables and struct members around su_uplevel()
Vincent Pit [Tue, 13 Sep 2011 17:34:16 +0000 (19:34 +0200)]
In su_cv_clone(), add stash->cloned_cv backrefs on perl 5.13.x
This fixes test failures on debugging perl 5.13.[456].
Vincent Pit [Tue, 13 Sep 2011 10:42:15 +0000 (12:42 +0200)]
Inline Perl_cv_clone() and Perl_new_pad()
What we really need to fake the callback's GV is a pure copy of it, but
Perl_cv_clone does not do this : it creates a new copy with a depth of 1
and an empty pad, which is appropriate for pp_anoncode but not for our
situation. The easiest way to fix this is simply to inline Perl_cv_clone()
in our code, set up the copy's depth from the original, and crudely copy
the old pad into a new one.
This fixes closures defined in the uplevel callback that captures lexical
from outside of the uplevel call, and also allows us to remove all the
hacks from the previous su_cv_clone().
Vincent Pit [Fri, 9 Sep 2011 23:53:13 +0000 (01:53 +0200)]
Activate the correct pad when calling the uplevel'd code
This fixes at least two issues :
- closures defined inside the uplevel callback can now wrap around
lexicals from inside (but not outside yet, this will be fixed by the
next commit).
- state variables in the uplevel callback now work properly.
Vincent Pit [Fri, 9 Sep 2011 17:30:16 +0000 (19:30 +0200)]
Reorder some code in su_uplevel()
Vincent Pit [Wed, 7 Sep 2011 22:18:54 +0000 (00:18 +0200)]
Make sure the stack is large enough when returning values from words
Vincent Pit [Mon, 5 Sep 2011 17:40:07 +0000 (19:40 +0200)]
Silence some compiler warnings
Vincent Pit [Sun, 4 Sep 2011 15:40:14 +0000 (17:40 +0200)]
Test unwinding while unwinding
Vincent Pit [Sun, 4 Sep 2011 15:00:19 +0000 (17:00 +0200)]
One more POD wording fix
Inspired by a fix in Debian.
Vincent Pit [Sun, 4 Sep 2011 14:10:38 +0000 (16:10 +0200)]
Move the unwind()-related members of the global context in their own struct
Also correct the third argument to Zero() calls used to initialize the
return_op and proxy_op members : the size was passed, while it is supposed
to be the type.
Vincent Pit [Sun, 4 Sep 2011 14:04:57 +0000 (16:04 +0200)]
Abstract the uplevel storage logic in two new functions
Also disable the restore-soonish magic trick on perl 5.13.7 and earlier, as
the core behaves correctly since then.
Vincent Pit [Sun, 4 Sep 2011 13:10:00 +0000 (15:10 +0200)]
Tweak some comments in the uplevel() code
Vincent Pit [Sun, 4 Sep 2011 13:03:28 +0000 (15:03 +0200)]
Don't grow the fake cxstack if it's already large enough
Vincent Pit [Sun, 4 Sep 2011 13:00:16 +0000 (15:00 +0200)]
Fix some typos/wording in POD
Vincent Pit [Sat, 3 Sep 2011 23:00:26 +0000 (01:00 +0200)]
This is 0.16
Vincent Pit [Sat, 3 Sep 2011 22:49:12 +0000 (00:49 +0200)]
Silence some "Attempt to free unreferenced scalar" errors
They were printed during the second benchmark.
Vincent Pit [Sat, 3 Sep 2011 22:33:19 +0000 (00:33 +0200)]
Implement uplevel()
Vincent Pit [Sat, 3 Sep 2011 22:32:54 +0000 (00:32 +0200)]
Correct a couple of test descriptions
Vincent Pit [Wed, 24 Aug 2011 14:16:46 +0000 (16:16 +0200)]
This is 0.15
Vincent Pit [Wed, 24 Aug 2011 13:57:57 +0000 (15:57 +0200)]
Update bundled Test::Leaner to 0.04
Vincent Pit [Wed, 24 Aug 2011 12:52:01 +0000 (14:52 +0200)]
Encode the README file in UTF-8
Vincent Pit [Mon, 18 Jul 2011 14:19:13 +0000 (16:19 +0200)]
Ignore MYMETA.json
Vincent Pit [Mon, 18 Jul 2011 14:18:54 +0000 (16:18 +0200)]
Add META.json
Vincent Pit [Mon, 18 Jul 2011 14:16:57 +0000 (16:16 +0200)]
Replace $] by "$]"
An old bug could cause $] to be initialized to a wrong decimal value.
Since its stringified value was always right, we use it instead.
Occurences of $^V were also replaced by $].
Vincent Pit [Mon, 18 Jul 2011 14:04:10 +0000 (16:04 +0200)]
Update bundled Test::Leaner to 0.03
Vincent Pit [Sat, 5 Mar 2011 23:28:42 +0000 (00:28 +0100)]
Switch to qw<>
Vincent Pit [Mon, 28 Feb 2011 01:11:43 +0000 (02:11 +0100)]
Invalidate the method cache when localizing subroutines
Vincent Pit [Sun, 27 Feb 2011 00:01:11 +0000 (01:01 +0100)]
This is 0.14
Vincent Pit [Sat, 26 Feb 2011 23:28:51 +0000 (00:28 +0100)]
Really include Test::Leaner 0.02
Vincent Pit [Sat, 26 Feb 2011 23:03:30 +0000 (00:03 +0100)]
Compatibility fix for perl 5.13.10
This solves RT #64997.
Vincent Pit [Sun, 6 Feb 2011 15:29:28 +0000 (16:29 +0100)]
Run lengthy tests with Test::Leaner
This includes Test::Leaner 0.02.
Vincent Pit [Wed, 5 Jan 2011 20:07:47 +0000 (21:07 +0100)]
Bump copyright year
Vincent Pit [Wed, 5 Jan 2011 20:06:54 +0000 (21:06 +0100)]
Preemptively remove uses of lvalue GvCV
Vincent Pit [Mon, 20 Dec 2010 01:03:55 +0000 (02:03 +0100)]
This is 0.13
Vincent Pit [Mon, 20 Dec 2010 00:25:57 +0000 (01:25 +0100)]
Skip threads tests unless perl version is 5.13.4 or greater
There was a long standing bug in the handling of GV <-> CV double linkage
that could (and explicitely did with a poisonous perl) cause segfaults at
thread destruction. It got fixed by Dave in commit
803f274 which went in
5.13.3, but the fix was amended for 5.13.4 in commit
09aad8f . Since it's
not really fair for the user to not be able to install the module because
of this, we skip the threads tests unless perl is at least 5.13.4.
Vincent Pit [Mon, 20 Dec 2010 00:20:44 +0000 (01:20 +0100)]
Compatibility fix for perl 5.13.8
This fixes RT #63378.
Vincent Pit [Mon, 20 Dec 2010 00:19:16 +0000 (01:19 +0100)]
Ignore MYMETA.yml
Vincent Pit [Sun, 19 Dec 2010 23:54:15 +0000 (00:54 +0100)]
Fix stack corruption when using unwind() under Devel::NYTProf
This fixes RT #61904.
Thanks Sergey Aleynikov for contributing the fix.
Vincent Pit [Wed, 19 May 2010 00:42:30 +0000 (02:42 +0200)]
This is 0.12
Vincent Pit [Wed, 19 May 2010 00:32:21 +0000 (02:32 +0200)]
Fix for the official 5.13.0 release
Vincent Pit [Tue, 18 May 2010 21:53:58 +0000 (23:53 +0200)]
Swap the ud and cxix arguments of su_init()
Vincent Pit [Tue, 18 May 2010 21:50:18 +0000 (23:50 +0200)]
Stop leaking SVs when trying to localize an element out of a non array/hash
Achieve this by introducing a new SU_UD_LOCALIZE_FREE() macro.
Vincent Pit [Tue, 18 May 2010 21:10:33 +0000 (23:10 +0200)]
Use a PPCODE: section in CLONE
Vincent Pit [Tue, 18 May 2010 20:57:35 +0000 (22:57 +0200)]
Make su_ud_localize_init() return the required slot size
This strips away all magical size value.
Also, fix the save_gp() size on 5.13, since it now uses 4 slots.
Vincent Pit [Tue, 18 May 2010 19:57:14 +0000 (21:57 +0200)]
Save a mock pointer as the placeholder instead of an int
Since 5.13, small ints are saved with only two save stack slots, so it's
better to use something with a fixed size instead.
Vincent Pit [Tue, 18 May 2010 19:48:12 +0000 (21:48 +0200)]
Tie the array after localizing it in t/{34,44}-*-magic.t
This fixes failures under perl 5.13 since Dave made "local @tied" untie
the array.
Vincent Pit [Tue, 18 May 2010 19:46:41 +0000 (21:46 +0200)]
Skip two pairs of tests in t/20-localize-target.t with perl 5.8.0
We can't actually localize through a reference before 5.8.1.
Vincent Pit [Fri, 16 Apr 2010 23:16:42 +0000 (01:16 +0200)]
This is 0.11
Vincent Pit [Fri, 16 Apr 2010 22:13:59 +0000 (00:13 +0200)]
Skip t/05-words.t when ran under the debugger
With this change, the whole test suite passes under the debugger. Hurray!
Vincent Pit [Fri, 16 Apr 2010 22:12:10 +0000 (00:12 +0200)]
Silence a gcc warning
Vincent Pit [Fri, 16 Apr 2010 21:40:49 +0000 (23:40 +0200)]
Stop skipping frames as a pop optimization
This caused breakage under the debugger (and most likely everywhere).
Vincent Pit [Fri, 16 Apr 2010 21:12:39 +0000 (23:12 +0200)]
A couple of SEE ALSO
Vincent Pit [Fri, 16 Apr 2010 21:03:05 +0000 (23:03 +0200)]
POD tags harmonization
Vincent Pit [Fri, 16 Apr 2010 21:00:59 +0000 (23:00 +0200)]
Disallow reference localization targets
Vincent Pit [Fri, 16 Apr 2010 20:47:34 +0000 (22:47 +0200)]
Be stricter about what localize_elem() accepts
Vincent Pit [Fri, 16 Apr 2010 19:47:59 +0000 (21:47 +0200)]
Fix numerous localizations in the same scope not happening
Vincent Pit [Fri, 16 Apr 2010 14:31:07 +0000 (16:31 +0200)]
Improved synopsys
Vincent Pit [Fri, 16 Apr 2010 13:29:07 +0000 (15:29 +0200)]
Correct two comments in a sample script
Vincent Pit [Fri, 16 Apr 2010 13:26:34 +0000 (15:26 +0200)]
Assorted documentation tweaks and clarifications
Vincent Pit [Thu, 15 Apr 2010 23:00:27 +0000 (01:00 +0200)]
Properly vivify nonexistent glob slots
This fixes RT #55593.
Vincent Pit [Thu, 15 Apr 2010 22:44:05 +0000 (00:44 +0200)]
A better explaination of how string symbols work
Vincent Pit [Thu, 15 Apr 2010 22:33:51 +0000 (00:33 +0200)]
POD formatting nit
Vincent Pit [Thu, 15 Apr 2010 21:44:02 +0000 (23:44 +0200)]
Also apply the context overwrite workaround when not under OP_DIE
This fixes RT #56301.
Vincent Pit [Mon, 18 Jan 2010 23:47:29 +0000 (00:47 +0100)]
This is 0.10
Vincent Pit [Mon, 18 Jan 2010 23:42:56 +0000 (00:42 +0100)]
Point to Continuation::Escape
Vincent Pit [Mon, 18 Jan 2010 22:50:25 +0000 (23:50 +0100)]
A somewhat more robust handling of debugging frames
Vincent Pit [Mon, 18 Jan 2010 22:04:33 +0000 (23:04 +0100)]
Forge a better testdeb rule
Vincent Pit [Mon, 18 Jan 2010 21:51:22 +0000 (22:51 +0100)]
Bump copyright year
Vincent Pit [Mon, 18 Jan 2010 21:41:01 +0000 (22:41 +0100)]
Silence a switch warning
Vincent Pit [Mon, 18 Jan 2010 21:40:18 +0000 (22:40 +0100)]
Use SvREFCNT_inc_simple_void() whenever possible
Vincent Pit [Mon, 18 Jan 2010 21:21:39 +0000 (22:21 +0100)]
Stop treating the ENTER/LEAVE couple from entersub specially
Vincent Pit [Mon, 18 Jan 2010 20:55:22 +0000 (21:55 +0100)]
Discover the type of localization immediately when localize() is called
So that we can reserve the appropriate size on the save stack when a glob is localized with perl 5.8.8 or earlier.
Vincent Pit [Mon, 18 Jan 2010 19:49:36 +0000 (20:49 +0100)]
More debugging info tweaks
Vincent Pit [Fri, 15 Jan 2010 00:31:46 +0000 (01:31 +0100)]
Revamp debugging info
Vincent Pit [Thu, 14 Jan 2010 22:39:34 +0000 (23:39 +0100)]
Fix building with SU_DEBUG defined on 5.8
Vincent Pit [Thu, 14 Jan 2010 22:27:28 +0000 (23:27 +0100)]
Correct some test descriptions
Vincent Pit [Thu, 14 Jan 2010 22:25:58 +0000 (23:25 +0100)]
More tests for reap and localized at given/when
Vincent Pit [Thu, 14 Jan 2010 21:36:54 +0000 (22:36 +0100)]
We don't really need a more lexical $_ in the test given blocks
Vincent Pit [Thu, 14 Jan 2010 20:48:55 +0000 (21:48 +0100)]
Fix handling of given/when
Vincent Pit [Tue, 29 Dec 2009 16:35:38 +0000 (17:35 +0100)]
Fix for {ENTER,LEAVE}_with_name
Vincent Pit [Sun, 4 Oct 2009 09:18:03 +0000 (11:18 +0200)]
Re-indent WriteMakefile() arguments
Vincent Pit [Sun, 4 Oct 2009 08:33:23 +0000 (10:33 +0200)]
Build the $name and the main $file from $dist
Vincent Pit [Sun, 4 Oct 2009 07:45:58 +0000 (09:45 +0200)]
Put prerequisites in their own separate hash
Vincent Pit [Sun, 4 Oct 2009 07:28:22 +0000 (09:28 +0200)]
Give an explicit value to dynamic_config
Vincent Pit [Sat, 26 Sep 2009 09:53:10 +0000 (11:53 +0200)]
Kwalitee test overhaul
Vincent Pit [Sun, 16 Aug 2009 22:28:09 +0000 (00:28 +0200)]
base.pm is also a dependency
Vincent Pit [Sat, 8 Aug 2009 07:40:28 +0000 (09:40 +0200)]
Righteously is really rightfully
Vincent Pit [Sun, 17 May 2009 20:20:16 +0000 (22:20 +0200)]
This is 0.09
Vincent Pit [Sun, 17 May 2009 20:11:17 +0000 (22:11 +0200)]
Update the comment about the "call_sv() during LEAVE" workaround
Vincent Pit [Sun, 17 May 2009 19:57:48 +0000 (21:57 +0200)]
Get rid of t/90-boilerplate.t
Vincent Pit [Sun, 17 May 2009 19:57:09 +0000 (21:57 +0200)]
A better test for imports
Vincent Pit [Fri, 15 May 2009 22:22:26 +0000 (00:22 +0200)]
5.9.5 fix
Vincent Pit [Sat, 2 May 2009 15:01:50 +0000 (17:01 +0200)]
Explicitely require perl 5.6
Vincent Pit [Sat, 2 May 2009 15:00:30 +0000 (17:00 +0200)]
Disable thread safety for 5.8.x on Windows
Vincent Pit [Sat, 2 May 2009 14:55:16 +0000 (16:55 +0200)]
Skip t/59-unwind-threads.t when the module is not thread safe
Vincent Pit [Sat, 2 May 2009 14:49:17 +0000 (16:49 +0200)]
Introduce SU_THREADSAFE
Vincent Pit [Sat, 2 May 2009 14:42:38 +0000 (16:42 +0200)]
A saner workaround for the "call_sv() during LEAVE clobbers the still used last popped stack element" issue on 5.10