Skip to content

Commit

Permalink
Preallocate memory earlier in fast-import
Browse files Browse the repository at this point in the history
I'm about to teach fast-import how to reload the marks file created
by a prior session.  The general approach that I want to use is to
immediately parse the marks file when the specific argument is found
in argv, thereby allowing the caller to supply multiple marks files,
as the mark space can be sparsely populated.

To make that work out we need to allocate our object tables before
we parse the command line options.  Since none of these tables
depend on the command line options, we can easily relocate them.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
  • Loading branch information
Shawn O. Pearce committed Mar 7, 2007
1 parent c390ae9 commit 93e72d8
Showing 1 changed file with 6 additions and 8 deletions.
14 changes: 6 additions & 8 deletions fast-import.c
Original file line number Diff line number Diff line change
Expand Up @@ -1988,6 +1988,12 @@ int main(int argc, const char **argv)
int i, show_stats = 1;

git_config(git_default_config);
alloc_objects(object_entry_alloc);
strbuf_init(&command_buf);
atom_table = xcalloc(atom_table_sz, sizeof(struct atom_str*));
branch_table = xcalloc(branch_table_sz, sizeof(struct branch*));
avail_tree_table = xcalloc(avail_tree_table_sz, sizeof(struct avail_tree_content*));
marks = pool_calloc(1, sizeof(struct mark_set));

for (i = 1; i < argc; i++) {
const char *a = argv[i];
Expand Down Expand Up @@ -2031,14 +2037,6 @@ int main(int argc, const char **argv)
if (i != argc)
usage(fast_import_usage);

alloc_objects(object_entry_alloc);
strbuf_init(&command_buf);

atom_table = xcalloc(atom_table_sz, sizeof(struct atom_str*));
branch_table = xcalloc(branch_table_sz, sizeof(struct branch*));
avail_tree_table = xcalloc(avail_tree_table_sz, sizeof(struct avail_tree_content*));
marks = pool_calloc(1, sizeof(struct mark_set));

start_packfile();
for (;;) {
read_next_command();
Expand Down

0 comments on commit 93e72d8

Please sign in to comment.