Skip to content

Commit c8c073c

Browse files
squadettegitster
authored andcommitted
xdiff/xmerge.c: use memset() instead of explicit for-loop
memset() is heavily optimized, and resulting assembler code is about 150 lines less for that file. Signed-off-by: Alexey Mahotkin <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent d599e04 commit c8c073c

File tree

1 file changed

+8
-9
lines changed

1 file changed

+8
-9
lines changed

xdiff/xmerge.c

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,6 @@ static int fill_conflict_hunk(xdfenv_t *xe1, const char *name1,
152152
int marker1_size = (name1 ? strlen(name1) + 1 : 0);
153153
int marker2_size = (name2 ? strlen(name2) + 1 : 0);
154154
int marker3_size = (name3 ? strlen(name3) + 1 : 0);
155-
int j;
156155

157156
if (marker_size <= 0)
158157
marker_size = DEFAULT_CONFLICT_MARKER_SIZE;
@@ -164,8 +163,8 @@ static int fill_conflict_hunk(xdfenv_t *xe1, const char *name1,
164163
if (!dest) {
165164
size += marker_size + 1 + marker1_size;
166165
} else {
167-
for (j = 0; j < marker_size; j++)
168-
dest[size++] = '<';
166+
memset(dest + size, '<', marker_size);
167+
size += marker_size;
169168
if (marker1_size) {
170169
dest[size] = ' ';
171170
memcpy(dest + size + 1, name1, marker1_size - 1);
@@ -183,8 +182,8 @@ static int fill_conflict_hunk(xdfenv_t *xe1, const char *name1,
183182
if (!dest) {
184183
size += marker_size + 1 + marker3_size;
185184
} else {
186-
for (j = 0; j < marker_size; j++)
187-
dest[size++] = '|';
185+
memset(dest + size, '|', marker_size);
186+
size += marker_size;
188187
if (marker3_size) {
189188
dest[size] = ' ';
190189
memcpy(dest + size + 1, name3, marker3_size - 1);
@@ -199,8 +198,8 @@ static int fill_conflict_hunk(xdfenv_t *xe1, const char *name1,
199198
if (!dest) {
200199
size += marker_size + 1;
201200
} else {
202-
for (j = 0; j < marker_size; j++)
203-
dest[size++] = '=';
201+
memset(dest + size, '=', marker_size);
202+
size += marker_size;
204203
dest[size++] = '\n';
205204
}
206205

@@ -210,8 +209,8 @@ static int fill_conflict_hunk(xdfenv_t *xe1, const char *name1,
210209
if (!dest) {
211210
size += marker_size + 1 + marker2_size;
212211
} else {
213-
for (j = 0; j < marker_size; j++)
214-
dest[size++] = '>';
212+
memset(dest + size, '>', marker_size);
213+
size += marker_size;
215214
if (marker2_size) {
216215
dest[size] = ' ';
217216
memcpy(dest + size + 1, name2, marker2_size - 1);

0 commit comments

Comments
 (0)