On 2015/07/29 20:45:06, ofrobots wrote:
On 2015/07/24 06:32:10, Hannes Payer wrote:
> https://codereview.chromium.org/1252053003/diff/1/src/heap/spaces.cc
> File src/heap/spaces.cc (right):
>
>

https://codereview.chromium.org/1252053003/diff/1/src/heap/spaces.cc#newcode1478
> src/heap/spaces.cc:1478: int aligned_size_in_bytes = size_in_bytes +
> alignment_size;
> On 2015/07/23 17:41:06, ofrobots wrote:
> > On 2015/07/23 16:31:34, ofrobots wrote:
> > > On 2015/07/23 10:58:54, Hannes Payer wrote:
> > > > I think we do not need the complicated machinery to update new inline
> > > allocation
> > > > limit. Why don't we just allocate, get the new top pointer after that,
> > perform
> > > > the Step, and call UpdateInlineAllocationLimit(0)?
> > >
> > > Okay, let me look into this.
> >
> > The reason this complicated machinery exists is to avoid an infinite loop. > > Calling allocate first before doing UpdateInlineAllocationLimit makes a > > recursive infinite loop between AllocateRaw* and SlowAllocateRaw. To call > > UpdateInlineAllocationLimit we need to do this complicated machinery to > > guesstimate the aligned_size_in_bytes that the allocation would allocate.
> >
> > This code is a bit too wacky. The challenge is to find incremental steps
to
> make
> > it better.
> >
> > I stand by my earlier assertion that it does not make a lot of logical
sense
> to
> > do a step in the `if (AddFreshPage())` clause because there is no clean
way
to
> > avoid double counting. One option would be for me to add an argument to
> > AllocateRaw* to distinguish the recursive call from here in
SlowAllocateRate,
> > but I really dislike that option.
>
> Arg, yes. That is the reason why it is complicated. OK, let's keep it. This
also
> complicates the AddFreshPage case.
>
> Adding a parameter to AllocateRaw to indicate the recursion is not nice.
>
> One way to clean that up would be to get rid of this recursion.
SlowAllocateRaw
> (renamed to EnsureAllocation) could basically make sure that there is room
for
> the allocation if possible and could just return to AllocateRaw* which
performs
> the allocation. I think then it should be possible to account for the right
> allocated bytes. Similar cases as before 1) just increase the limit if
allowed
> 2) a new page is needed: don't account for the leftover memory at the end of
the
> page and the page header. As a result, each call to allocation would just
> perform one step and would update the top_on_previous_step counter once.
WDYT?

SGTM. Will update the patches.

Decided to make the suggested changes to remove recursion in a separate
change-list https://codereview.chromium.org/1265443003.

Once that is accepted, I will rebase this.

https://codereview.chromium.org/1252053003/

--
--
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.

Reply via email to