Hey Mircea,

I think I just came up with a good criteria for a new register allocator:

It should be possible to add stack checks to every loop in asm.js code
without noticable performance impact.

Currently we skip the stack checks for asm.js functions because the
spilling around the stack check would completely ruin the performance of
all loops (see AstGraphBuilder::VisitIterationBody in ast-graph-builder.cc
for details). I guess once we're able to turn on those checks (which will
also make asm.js code interruptible/debuggable), we probably reached the
first important milestone for a new register allocator.

greets,
Benedikt

On Fri, Jun 12, 2015 at 5:21 PM, Mircea Trofin <mtro...@chromium.org> wrote:

> Thanks, indeed, while the code bring-in will change a bunch of things, I
> can still use the feedback.
>
> On Fri, Jun 12, 2015 at 8:20 AM Mircea Trofin <mtro...@chromium.org>
> wrote:
>
>> Oh, nice! Thanks.
>>
>> The openness just means that a_end == b_start || b_end == a_start doesn't
>> mean intersection. So we just need strict inequality in your expression,
>> that's all.
>>
>>
>> On Fri, Jun 12, 2015 at 12:36 AM <svenpa...@chromium.org> wrote:
>>
>>> Quick DBC...
>>>
>>>
>>>
>>> https://codereview.chromium.org/1157663007/diff/160001/src/compiler/register-allocator.h
>>> File src/compiler/register-allocator.h (right):
>>>
>>>
>>> https://codereview.chromium.org/1157663007/diff/160001/src/compiler/register-allocator.h#newcode969
>>> src/compiler/register-allocator.h:969
>>> <https://codereview.chromium.org/1157663007/diff/160001/src/compiler/register-allocator.h#newcode969src/compiler/register-allocator.h:969>:
>>> if (a_start < b_start) return
>>> a_end > b_start;
>>> On 2015/06/12 04:09:12, jarin wrote:
>>> > Out of curiosity, cannot you just leave out the "if (a_start ==
>>> b_start) return
>>> > true" line and replace "a_start < b_start" with "a_start <= b_start"?
>>>
>>> > This special casing for equality seems a bit funny.
>>>
>>> > Perhaps you can even expand the recursive call, so the body would be:
>>>
>>> > if (a_start <= b_start) return b_start < a_end;
>>> > return b_start <= a_start && a_start < b_end;
>>>
>>> Hmmm, this looks still too complicated, normally just a single line is
>>> needed:
>>>
>>>     return a_start <= b_end && b_start <= a_end;
>>>
>>> I'm not sure about the "open-ness" of our intervals, but I'm quite sure
>>> that this condition can be tweaked to any convention.
>>>
>>> https://codereview.chromium.org/1157663007/
>>>
>>

-- 
-- 
v8-dev mailing list
v8-dev@googlegroups.com
http://groups.google.com/group/v8-dev
--- 
You received this message because you are subscribed to the Google Groups 
"v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to v8-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to