GNU bug report logs -
#16901
24.3.50; emacs_backtrace.txt
Previous Next
Reported by: Drew Adams <drew.adams <at> oracle.com>
Date: Fri, 28 Feb 2014 04:58:02 UTC
Severity: normal
Tags: moreinfo
Merged with 16899,
16908
Found in version 24.3.50
Done: Lars Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
Message #105 received at 16901 <at> debbugs.gnu.org (full text, mbox):
> Date: Tue, 04 Mar 2014 09:23:39 -0500
> From: Ken Brown <kbrown <at> cornell.edu>
> CC: lekktu <at> gmail.com, 16901 <at> debbugs.gnu.org, dmantipov <at> yandex.ru
>
> On 3/3/2014 10:45 PM, Eli Zaretskii wrote:
> >> Date: Mon, 03 Mar 2014 18:20:09 -0500
> >> From: Ken Brown <kbrown <at> cornell.edu>
> >> CC: 16901 <at> debbugs.gnu.org, dmantipov <at> yandex.ru
> >>
> >> If adj == 0 in line 1596, then we've allocated much more memory than
> >> we needed, and the next call to malloc (line 1602) allocates even
> >> more. And if adj == 1 in line 1596, then we've allocated exactly as
> >> much memory as we needed, so there's no need to call malloc again in
> >> line 1602.
> >
> > Thanks for reviewing.
> >
> > These are further optimizations, and can (and probably should) be done
> > in separate commits.
Now done in trunk revision 16661.
> > But you aren't saying that the previous code was correct, are you?
>
> No, I think it was clearly wrong. By accident, however, it probably
> worked most of the time and didn't waste memory, since adj is usually 0.
Yes, when the initial allocation was already aligned, it worked OK.
> When/if you do the optimizations I suggested, I think it would clarify
> the code if `adj' were used to represent the actual adjustment needed,
> something like this:
>
> adj = (uintptr_t) alignment - result % alignment;
> if (adj == alignment)
> adj = 0;
I didn't make this change, but feel free to follow up.
Thanks.
This bug report was last modified 9 years and 149 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.