[prev in list] [next in list] [prev in thread] [next in thread]
List: squirrelfish-dev
Subject: Re: [squirrelfish] block scope work
From: Oliver Hunt <oliver () apple ! com>
Date: 2012-03-12 19:36:08
Message-ID: A6D7845A-B972-450F-97D7-ABAB72B0E826 () apple ! com
[Download RAW message or body]
On Mar 12, 2012, at 3:39 AM, Andy Wingo wrote:
> Hi Oliver,
>
> On Fri, 2012-03-09 at 10:29 -0800, Oliver Hunt wrote:
> > > On Thu, 2012-02-09 at 17:49 +0100, Andy Wingo wrote:
> > > > The block [of registers] reserved
> > > > for block scopes will have as many registers as the maximum of (number
> > > > of block scope-bound variables + block scope depth).
> >
> > I don't understand why two passes are necessary.
>
> Consider you're in scope A. You see some block-scoped variables. Then
> you see a nested scope B. You go in to visit it, and once you're done
> visiting it you can know how many block-scoped variables there were in
> B. However after visiting it there can be more variables in A. That's
> why a simple high-water-mark algorithm is inappropriate.
I still don't follow -- block scoped variables are unaffected by traditional vars, \
and vice-versa, so counting should be sufficient.
>
> Either you do more work when leaving statements to track the
> block-scoped variables, or you do a separate pass -- seems to me,
> anyway.
It's always preferable to do it while generating the AST -- having an additional AST \
walk is a lot of expense
>
> > Why do you want to know the number of block scoped variables ahead of codegen \
> > time?
>
> When you compile a function, currently you know how many registers there
> will be for the variables, because they are all hoisted and known at
> parse-time. Consequently, you know where (at what index) you can start
> allocating temporaries. You'd like to know the same thing for
> block-scoped variables so that you can allocate them next to the
> function-scoped variables.
A block scoped variable can only be introduced at the statement level, so there won't \
be any live temporaries.
>
> > As for code size, i wouldn't be too worried unless it's a huge size increase: the \
> > parser+lexer are both so heavily templated that some (large) functions are \
> > generated like 8 times, some maybe more...
>
> OK.
>
> I know this has dragged on a long time, but maybe this is the week for
> things to come together on my side. Thanks for your patience.
>
> Andy
> _______________________________________________
> squirrelfish-dev mailing list
> squirrelfish-dev@lists.webkit.org
> http://lists.webkit.org/mailman/listinfo.cgi/squirrelfish-dev
_______________________________________________
squirrelfish-dev mailing list
squirrelfish-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/squirrelfish-dev
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic