X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FScope%2FUpper.pm;h=eefe25362df85b9fdabf14a419e3351f9917434a;hb=b2d82822b73f234e282b0e290b3cf0c783a65a99;hp=ad3f339cf3ff37d933c0d590c9dc318cefd96361;hpb=c672756e32f272a25fc1464eee307708fb46538c;p=perl%2Fmodules%2FScope-Upper.git diff --git a/lib/Scope/Upper.pm b/lib/Scope/Upper.pm index ad3f339..eefe253 100644 --- a/lib/Scope/Upper.pm +++ b/lib/Scope/Upper.pm @@ -310,7 +310,7 @@ Both are identical, with the following caveats : =item * The L implementation of C may execute a code reference in the context of B upper stack frame. -The L version only allows to uplevel to a B stack frame, and will croak if you try to target an C or a format. +The L version can only uplevel to a B stack frame, and will croak if you try to target an C or a format. =item * @@ -520,6 +520,12 @@ However, it's possible to hook the end of the current scope compilation with L to replace an L'd code frame does not work when a custom runloop is used or when debugging flags are set with C. +In those two cases, L will look for a C statement in its callback and, if there is one, throw an exception before executing the code. + +Moreover, in order to handle C statements properly, L currently has to suffer a run-time overhead proportional to the size of the the callback in every case (with a small ratio), and proportional to the size of B the code executed as the result of the L call (including subroutine calls inside the callback) when a C statement is found in the L callback. +Despite this shortcoming, this XS version of L should still run way faster than the pure-Perl version from L. + =head1 DEPENDENCIES L (standard since perl 5.006).