develooper Front page | perl.perl6.internals | Postings from November 2001

Lexical implementation work

Thread Next
From:
Ken Fox
Date:
November 8, 2001 21:37
Subject:
Lexical implementation work
Message ID:
3BEB6C09.2BC17DDC@vulpes.com
Simon just chastised me for talking instead of patching.
Most of the stuff I'm interested in is heavily related to
the implementation of lexicals, so that's where I'm going
to jump in.

There are a number of decisions to make about lexicals
and the current PDD is pretty slim. So, IMHO, the place
to start is with the PDD. Anybody have any more thoughts
on the interface? Dan? Is this stone tablet stuff yet?

The big five questions on my list are:

1. The find_lex/fetch_lex ops push a lot of work into the
   run-time when the compiler can figure out what frame a
   lexical appears in.

   Should there be an alternative, faster interface to
   lexicals that eliminates string lookups? The symbolic
   interface is required to support %MY and debugging, so
   it stays regardless of whether other interfaces exist.

2. Perl 5 doesn't support nested subs, but I haven't read
   anything about Perl 6 and I don't know if other
   targets for Parrot support them either.

   Do we want to support nested subs? Efficiently?

3. We've adopted a register machine architecture to
   reduce push/pop stack traffic. Register save/load
   traffic is similar, but not nearly as bad.

   Do we want to further reduce memory moves by allowing
   ops to work directly on lexicals?

4. There has been discussion about how useful non-PMC
   registers will be to the Perl compiler. If there are
   questions there, surely non-PMC lexicals would be even
   less useful to Perl.

   Do we want non-PMC lexical support?

5. Perl 5 uses pads and scratchpads for holding lexicals.

   Do we want to consider other implementations such as
   traditional stack frames with a display or static
   link?

I'm leaning towards yes on all questions.

If there aren't any obvious answers, I propose that we
implement a couple different approaches and objectively
compare them. Lexical implementation is as critical to
Perl's performance as the dispatcher is, so we should
take some time to get it right.

- Ken

Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About