From: Junio C Hamano <gitster@pobox.com>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: Kevin Willford <kcwillford@gmail.com>,
git@vger.kernel.org, Kevin Willford <kewillf@microsoft.com>
Subject: Re: [[PATCH v2] 1/4] patch-ids: stop using a hand-rolled hashmap implementation
Date: Tue, 02 Aug 2016 11:04:05 -0700 [thread overview]
Message-ID: <xmqqtwf3dp4a.fsf@gitster.mtv.corp.google.com> (raw)
In-Reply-To: <xmqqshunf6lm.fsf@gitster.mtv.corp.google.com> (Junio C. Hamano's message of "Tue, 02 Aug 2016 10:01:09 -0700")
Junio C Hamano <gitster@pobox.com> writes:
> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>
>> Oh, we are already safely in Unrelated Tangent Land for a while, I would
>> think. Nothing of what we are discussing in this thread has anything to do
>> with Kevin's patch series,...
>
> Oh, no question about that. Go back to my review, to which your
> message I am responding to is a reply to. What you wrote are all
> about things after "This is a tangent, but this made me wonder if it
> is safe to simply free(3) the result...", which pointed out rough
> points in the hashmap API from the API user's point of view and
> suggested a few possible improvement opportunities.
In other words, I'd be happy with a patch like this, outside the
scope of and independent from this series.
When the hashmap_entry structure does acquire references to external
resources (which I wouldn't judge the likelihood of), this paragraph
will become stale, but that is exactly the point at which _clear()
function needs to be added to the API and described here, replacing
this paragraph.
I do not mind having an empty _clear() before that happens, but I do
not think it adds much safety. A disciplined user of the API may
call that empty _clear() to make her code future-proof, but we know
there are undisciplined developers and reviewers and there will be
codepaths that call _init() without calling the empty _clear(), and
we won't notice it. Whoever is adding the real need for _clear()
must audit the codebase at that point _anyway_, and that is why I
think having an empty _clear() before would not buy us much.
Documentation/technical/api-hashmap.txt | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/Documentation/technical/api-hashmap.txt b/Documentation/technical/api-hashmap.txt
index ad7a5bd..1dcec3d 100644
--- a/Documentation/technical/api-hashmap.txt
+++ b/Documentation/technical/api-hashmap.txt
@@ -104,6 +104,11 @@ If `free_entries` is true, each hashmap_entry in the map is freed as well
`entry` points to the entry to initialize.
+
`hash` is the hash code of the entry.
++
+The hashmap_entry structure does not hold references to external resources,
+and it is safe to just discard it once you are done with it (i.e. if
+your structure was allocated with xmalloc(), you can just free(3) it,
+and if it is on stack, you can just let it go out of scope).
`void *hashmap_get(const struct hashmap *map, const void *key, const void *keydata)`::
next prev parent reply other threads:[~2016-08-02 18:10 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-29 16:19 [[PATCH v2] 0/4] Use header data patch ids for rebase to avoid loading file content Kevin Willford
2016-07-29 16:19 ` [[PATCH v2] 1/4] patch-ids: stop using a hand-rolled hashmap implementation Kevin Willford
2016-07-29 20:47 ` Junio C Hamano
2016-08-01 8:54 ` Johannes Schindelin
2016-08-01 20:04 ` Junio C Hamano
2016-08-01 22:34 ` Eric Wong
2016-08-02 10:30 ` Johannes Schindelin
2016-08-02 17:01 ` Junio C Hamano
2016-08-02 18:04 ` Junio C Hamano [this message]
2016-07-29 21:29 ` Junio C Hamano
2016-07-29 16:19 ` [[PATCH v2] 2/4] patch-ids: replace the seen indicator with a commit pointer Kevin Willford
2016-07-29 21:03 ` Junio C Hamano
2016-07-29 16:19 ` [[PATCH v2] 3/4] patch-ids: add flag to create the diff patch id using header only data Kevin Willford
2016-07-29 16:19 ` [[PATCH v2] 4/4] rebase: avoid computing unnecessary patch IDs Kevin Willford
2016-07-29 21:46 ` Junio C Hamano
2016-08-01 8:58 ` Johannes Schindelin
2016-08-01 20:11 ` Junio C Hamano
2016-08-02 9:50 ` Jakub Narębski
2016-08-02 17:06 ` Junio C Hamano
2016-08-02 10:45 ` Johannes Schindelin
2016-08-02 17:08 ` Junio C Hamano
2016-08-04 3:00 ` Junio C Hamano
2016-08-04 14:21 ` Johannes Schindelin
2016-07-29 20:22 ` [[PATCH v2] 0/4] Use header data patch ids for rebase to avoid loading file content Junio C Hamano
2016-08-01 9:01 ` Johannes Schindelin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqtwf3dp4a.fsf@gitster.mtv.corp.google.com \
--to=gitster@pobox.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=kcwillford@gmail.com \
--cc=kewillf@microsoft.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.