Revision: 983
Author: tim.bunce
Date: Sun Dec 20 12:22:26 2009
Log: Limitations docs: Two steps forward, one step back.
Removed Scope::Upper unwind and substcont limitations which are now fixed.
Added "Freed values in @_ may be mutated"

http://code.google.com/p/perl-devel-nytprof/source/detail?r=983

Modified:
  /trunk/Makefile.PL
  /trunk/lib/Devel/NYTProf.pm

=======================================
--- /trunk/Makefile.PL  Fri Dec 18 09:04:28 2009
+++ /trunk/Makefile.PL  Sun Dec 20 12:22:26 2009
@@ -205,7 +205,6 @@
  # not dofile because it's an alias for require
  # (and causes problems like  
http://www.nntp.perl.org/group/perl.cpan.testers/2009/12/msg6409150.html)
  # not fork because it doesn't make much sense
-# not substcont yet - needs more work XXX
  slowops::
        $(NOECHO) $(PERL) -e 'require v5.10.0; # only regenerate with 5.10+ to  
get all ops'
        $(PERL) -MOpcode=opset_to_ops,opset \
=======================================
--- /trunk/lib/Devel/NYTProf.pm Thu Dec 10 07:29:00 2009
+++ /trunk/lib/Devel/NYTProf.pm Sun Dec 20 12:22:26 2009
@@ -624,18 +624,20 @@
  The reporting code currently doesn't handle #line directives, but at least  
it
  warns about them. Patches welcome.

-=head2 Scope::Upper unwind()
-
-NYTProf is currently incompatible with the deep magic performed by
-Scope::Upper's unwind() function. As a partial workaround you can set the
-C<subs=0:leave=0> options, but you won't get any subroutine timings.
-See L<http://rt.cpan.org/Public/Bug/Display.html?id=50634>
-
-=head2 Slowops doesn't include all kinds of s/// substitutions
-
-Currently the C<substcont> opcode isn't profiled. This means that  
substitutions
-using variables in the replacement string, or that use the C</e> modifier,
-are not fully profiled.
+=head2 Freed values in @_ may be mutated
+
+Perl has a class of bugs related to the fact that values placed in the  
stack
+are not reference counted. Consider this example:
+
+  @a = (1..9);  sub s { undef @a; print $_ for @_ }  s(@a);
+
+The C<undef @a> frees the values that C<@_> refers to. Perl can sometimes
+detect when a freed value is accessed and treats it as an undef. However,  
if
+the freed value is assigned some new value then @_ is effectively  
corrupted.
+
+NYTProf allocates new values while it's profiling, in order to record  
program
+activity, and so may appear to corrupt C<@_> in this (rare) situation.  If  
this
+happens, NYTProf is simply exposing an existing problem in the code.

  =head1 CLOCKS

-- 
You've received this message because you are subscribed to
the Devel::NYTProf Development User group.

Group hosted at:  http://groups.google.com/group/develnytprof-dev
Project hosted at:  http://perl-devel-nytprof.googlecode.com
CPAN distribution:  http://search.cpan.org/dist/Devel-NYTProf

To post, email:  [email protected]
To unsubscribe, email:  [email protected]

Reply via email to