Sounds reasonable to me. The splitting policy and placement of spill code is somewhat orthogonal to the allocator core, but the main point on which we suck. I discussed with Mircea pre-splitting the ranges around calls and in differed code before building intervals. That could potentially benefit either allocator.
On Mon, Jun 15, 2015 at 9:05 PM, Benedikt Meurer <[email protected]> wrote: > 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 <[email protected]> > 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 <[email protected]> >> 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 <[email protected]> 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 [email protected] 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 [email protected]. For more options, visit https://groups.google.com/d/optout.
