This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Two more TODOs for those with C knowledge.
authorNicholas Clark <nick@ccl4.org>
Tue, 7 Mar 2006 19:31:49 +0000 (19:31 +0000)
committerNicholas Clark <nick@ccl4.org>
Tue, 7 Mar 2006 19:31:49 +0000 (19:31 +0000)
p4raw-id: //depot/perl@27406

pod/perltodo.pod

index f4f9f59..c87c9a1 100644 (file)
@@ -372,6 +372,31 @@ anyone feeling like exercising their skill with coverage and profiling tools
 might want to determine what ops I<really> are the most commonly used. And in
 turn suggest evictions and promotions to achieve a better F<pp_hot.c>.
 
+=head2 Shrink struct context
+
+In F<cop.h>, we have
+
+    struct context {
+        U32            cx_type;        /* what kind of context this is */
+        union {
+       struct block    cx_blk;
+       struct subst    cx_subst;
+        } cx_u;
+    };
+
+There are less than 256 values for C<cx_type>, and the constituent parts
+C<struct block> and C<struct subst> both contain some C<U8> and C<U16> fields,
+so it should be possible to move them to the first word, and share space with
+a C<U8> C<cx_type>, saving 1 word.
+
+=head2 Allocate OPs from arenas
+
+Currently all new OP structures are individually malloc()ed and free()d.
+All C<malloc> implementations have space overheads, and are now as fast as
+custom allocates so it would both use less memory and less CPU to allocate
+the various OP structures from arenas. The SV arena code can probably be
+re-used for this.
+