Skip to content

Commit 4b63963

Browse files
peffgitster
authored andcommitted
raw_object_store: drop extra pointer to replace_map
We store the replacement data in an oidmap, which is itself a pointer in the raw_object_store struct. But there's no need for an extra pointer indirection here. It is always allocated and initialized along with the containing struct, and we never check it for NULL-ness. Let's embed the map directly in the struct, which is simpler and avoids extra pointer chasing. Signed-off-by: Jeff King <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 5961847 commit 4b63963

File tree

5 files changed

+8
-10
lines changed

5 files changed

+8
-10
lines changed

commit-graph.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ static int commit_graph_compatible(struct repository *r)
222222

223223
if (replace_refs_enabled(r)) {
224224
prepare_replace_object(r);
225-
if (oidmap_get_size(r->objects->replace_map))
225+
if (oidmap_get_size(&r->objects->replace_map))
226226
return 0;
227227
}
228228

object-store.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1017,8 +1017,7 @@ void raw_object_store_clear(struct raw_object_store *o)
10171017
{
10181018
FREE_AND_NULL(o->alternate_db);
10191019

1020-
oidmap_clear(o->replace_map, 1);
1021-
FREE_AND_NULL(o->replace_map);
1020+
oidmap_clear(&o->replace_map, 1);
10221021
pthread_mutex_destroy(&o->replace_mutex);
10231022

10241023
free_commit_graph(o->commit_graph);

object-store.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include "object.h"
66
#include "list.h"
77
#include "oidset.h"
8+
#include "oidmap.h"
89
#include "thread-utils.h"
910

1011
struct oidmap;
@@ -176,7 +177,7 @@ struct raw_object_store {
176177
* Objects that should be substituted by other objects
177178
* (see git-replace(1)).
178179
*/
179-
struct oidmap *replace_map;
180+
struct oidmap replace_map;
180181
unsigned replace_map_initialized : 1;
181182
pthread_mutex_t replace_mutex; /* protect object replace functions */
182183

replace-object.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ static int register_replace_ref(const char *refname,
3131
oidcpy(&repl_obj->replacement, oid);
3232

3333
/* Register new object */
34-
if (oidmap_put(r->objects->replace_map, repl_obj))
34+
if (oidmap_put(&r->objects->replace_map, repl_obj))
3535
die(_("duplicate replace ref: %s"), refname);
3636

3737
return 0;
@@ -48,9 +48,7 @@ void prepare_replace_object(struct repository *r)
4848
return;
4949
}
5050

51-
r->objects->replace_map =
52-
xmalloc(sizeof(*r->objects->replace_map));
53-
oidmap_init(r->objects->replace_map, 0);
51+
oidmap_init(&r->objects->replace_map, 0);
5452

5553
refs_for_each_replace_ref(get_main_ref_store(r),
5654
register_replace_ref, r);
@@ -80,7 +78,7 @@ const struct object_id *do_lookup_replace_object(struct repository *r,
8078
/* Try to recursively replace the object */
8179
while (depth-- > 0) {
8280
struct replace_object *repl_obj =
83-
oidmap_get(r->objects->replace_map, cur);
81+
oidmap_get(&r->objects->replace_map, cur);
8482
if (!repl_obj)
8583
return cur;
8684
cur = &repl_obj->replacement;

replace-object.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ static inline const struct object_id *lookup_replace_object(struct repository *r
4747
{
4848
if (!replace_refs_enabled(r) ||
4949
(r->objects->replace_map_initialized &&
50-
oidmap_get_size(r->objects->replace_map) == 0))
50+
oidmap_get_size(&r->objects->replace_map) == 0))
5151
return oid;
5252
return do_lookup_replace_object(r, oid);
5353
}

0 commit comments

Comments
 (0)