This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add attempting Exterminate! cop_label to perltodo.
authorNicholas Clark <nick@ccl4.org>
Sun, 6 Apr 2008 19:32:03 +0000 (19:32 +0000)
committerNicholas Clark <nick@ccl4.org>
Sun, 6 Apr 2008 19:32:03 +0000 (19:32 +0000)
p4raw-id: //depot/perl@33652

pod/perltodo.pod

index 227fd6b..35ee02a 100644 (file)
@@ -720,6 +720,28 @@ also the warning messages (see L<perllexwarn>, C<warnings.pl>).
 These tasks would need C knowledge, and knowledge of how the interpreter works,
 or a willingness to learn.
 
+=head2 Abolish cop_label?
+
+C<struct cop> contains
+
+    char *     cop_label;      /* label for this construct */
+
+Most statements don't have labels. It might be possible to eliminate this
+member and instead store the label, if present, in
+
+    struct refcounted_he * cop_hints_hash;
+
+(with a hint bit, similar to
+
+    #define HINT_ARYBASE       0x00000010 /* $[ is non-zero */
+    #define HINT_LEXICAL_IO_IN 0x00040000 /* ${^OPEN} is set for input */
+    #define HINT_LEXICAL_IO_OUT        0x00080000 /* ${^OPEN} is set for output */
+
+). The trick would be ensuring that this faked lexical hint doesn't get
+propagated to nested scopes. It might be as simple as moving the setting of
+"cop_label" in C<Perl_newSTATEOP> after the code to set up
+C<cop->cop_hints_hash>.
+
 =head2 lexicals used only once
 
 This warns: