|
From: | Ken Brown |
Subject: | bug#16901: 24.3.50; emacs_backtrace.txt |
Date: | Tue, 04 Mar 2014 09:23:39 -0500 |
User-agent: | Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 |
On 3/3/2014 10:45 PM, Eli Zaretskii wrote:
Date: Mon, 03 Mar 2014 18:20:09 -0500 From: Ken Brown <kbrown@cornell.edu> CC: 16901@debbugs.gnu.org, dmantipov@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. 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.
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; Ken
[Prev in Thread] | Current Thread | [Next in Thread] |