From: Junio C Hamano Date: Wed, 2 May 2012 20:54:58 +0000 (-0700) Subject: Merge branch 'tr/xdiff-fast-hash' X-Git-Tag: v1.7.11-rc0~64 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/4d1f0ef2104dd0705cdde56979601bdd66f2c16f?ds=inline;hp=-c Merge branch 'tr/xdiff-fast-hash' Use word-at-a-time comparison to find end of line or NUL (end of buffer), borrowed from the linux-kernel discussion. By Thomas Rast * tr/xdiff-fast-hash: xdiff: choose XDL_FAST_HASH code on sizeof(long) instead of __WORDSIZE xdiff: load full words in the inner loop of xdl_hash_record --- 4d1f0ef2104dd0705cdde56979601bdd66f2c16f diff --combined Makefile index 7e243085da,13ed1b1d29..bdf2a578df --- a/Makefile +++ b/Makefile @@@ -288,6 -288,11 +288,11 @@@ all: # dependency rules. # # Define NATIVE_CRLF if your platform uses CRLF for line endings. + # + # Define XDL_FAST_HASH to use an alternative line-hashing method in + # the diff algorithm. It gives a nice speedup if your processor has + # fast unaligned word loads. Does NOT work on big-endian systems! + # Enabled by default on x86_64. GIT-VERSION-FILE: FORCE @$(SHELL_PATH) ./GIT-VERSION-GEN @@@ -386,7 -391,6 +391,7 @@@ XDIFF_OBJS VCSSVN_H = VCSSVN_OBJS = VCSSVN_TEST_OBJS = +MISC_H = EXTRA_CPPFLAGS = LIB_H = LIB_OBJS = @@@ -441,7 -445,6 +446,7 @@@ SCRIPT_PERL += git-send-email.per SCRIPT_PERL += git-svn.perl SCRIPT_PYTHON += git-remote-testgit.py +SCRIPT_PYTHON += git-p4.py SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) \ $(patsubst %.perl,%,$(SCRIPT_PERL)) \ @@@ -482,11 -485,9 +487,11 @@@ TEST_PROGRAMS_NEED_X += test-genrando TEST_PROGRAMS_NEED_X += test-index-version TEST_PROGRAMS_NEED_X += test-line-buffer TEST_PROGRAMS_NEED_X += test-match-trees +TEST_PROGRAMS_NEED_X += test-mergesort TEST_PROGRAMS_NEED_X += test-mktemp TEST_PROGRAMS_NEED_X += test-parse-options TEST_PROGRAMS_NEED_X += test-path-utils +TEST_PROGRAMS_NEED_X += test-revision-walking TEST_PROGRAMS_NEED_X += test-run-command TEST_PROGRAMS_NEED_X += test-sha1 TEST_PROGRAMS_NEED_X += test-sigchain @@@ -547,36 -548,6 +552,36 @@@ LIB_FILE=libgit. XDIFF_LIB=xdiff/lib.a VCSSVN_LIB=vcs-svn/lib.a +XDIFF_H += xdiff/xinclude.h +XDIFF_H += xdiff/xmacros.h +XDIFF_H += xdiff/xdiff.h +XDIFF_H += xdiff/xtypes.h +XDIFF_H += xdiff/xutils.h +XDIFF_H += xdiff/xprepare.h +XDIFF_H += xdiff/xdiffi.h +XDIFF_H += xdiff/xemit.h + +VCSSVN_H += vcs-svn/line_buffer.h +VCSSVN_H += vcs-svn/sliding_window.h +VCSSVN_H += vcs-svn/repo_tree.h +VCSSVN_H += vcs-svn/fast_export.h +VCSSVN_H += vcs-svn/svndiff.h +VCSSVN_H += vcs-svn/svndump.h + +MISC_H += branch.h +MISC_H += bundle.h +MISC_H += bisect.h +MISC_H += common-cmds.h +MISC_H += fetch-pack.h +MISC_H += thread-utils.h +MISC_H += send-pack.h +MISC_H += shortlog.h +MISC_H += reachable.h +MISC_H += wt-status.h +MISC_H += tar.h +MISC_H += url.h +MISC_H += walker.h + LIB_H += advice.h LIB_H += archive.h LIB_H += argv-array.h @@@ -624,7 -595,6 +629,7 @@@ LIB_H += log-tree. LIB_H += mailmap.h LIB_H += merge-file.h LIB_H += merge-recursive.h +LIB_H += mergesort.h LIB_H += notes.h LIB_H += notes-cache.h LIB_H += notes-merge.h @@@ -662,7 -632,6 +667,7 @@@ LIB_H += tree-walk. LIB_H += unpack-trees.h LIB_H += userdiff.h LIB_H += utf8.h +LIB_H += varint.h LIB_H += xdiff-interface.h LIB_H += xdiff/xdiff.h @@@ -730,7 -699,6 +735,7 @@@ LIB_OBJS += mailmap. LIB_OBJS += match-trees.o LIB_OBJS += merge-file.o LIB_OBJS += merge-recursive.o +LIB_OBJS += mergesort.o LIB_OBJS += name-hash.o LIB_OBJS += notes.o LIB_OBJS += notes-cache.o @@@ -789,7 -757,6 +794,7 @@@ LIB_OBJS += url. LIB_OBJS += usage.o LIB_OBJS += userdiff.o LIB_OBJS += utf8.o +LIB_OBJS += varint.o LIB_OBJS += walker.o LIB_OBJS += wrapper.o LIB_OBJS += write_or_die.o @@@ -902,6 -869,9 +907,9 @@@ EXTLIBS # because maintaining the nesting to match is a pain. If # we had "elif" things would have been much nicer... + ifeq ($(uname_M),x86_64) + XDL_FAST_HASH = YesPlease + endif ifeq ($(uname_S),OSF1) # Need this for u_short definitions et al BASIC_CFLAGS += -D_OSF_SOURCE @@@ -1775,6 -1745,10 +1783,10 @@@ ifndef NO_MSGFMT_EXTENDED_OPTION MSGFMT += --check --statistics endif + ifneq (,$(XDL_FAST_HASH)) + BASIC_CFLAGS += -DXDL_FAST_HASH + endif + ifeq ($(TCLTK_PATH),) NO_TCLTK=NoThanks endif @@@ -1887,13 -1861,6 +1899,13 @@@ DEFAULT_PAGER_CQ_SQ = $(subst ','\'',$( BASIC_CFLAGS += -DDEFAULT_PAGER='$(DEFAULT_PAGER_CQ_SQ)' endif +ifdef SHELL_PATH +SHELL_PATH_CQ = "$(subst ",\",$(subst \,\\,$(SHELL_PATH)))" +SHELL_PATH_CQ_SQ = $(subst ','\'',$(SHELL_PATH_CQ)) + +BASIC_CFLAGS += -DSHELL_PATH='$(SHELL_PATH_CQ_SQ)' +endif + ALL_CFLAGS += $(BASIC_CFLAGS) ALL_LDFLAGS += $(BASIC_LDFLAGS) @@@ -2215,8 -2182,24 +2227,8 @@@ connect.o transport.o url.o http-backen http-fetch.o http-walker.o remote-curl.o transport.o walker.o: walker.h http.o http-walker.o http-push.o http-fetch.o remote-curl.o: http.h url.h -XDIFF_H += xdiff/xinclude.h -XDIFF_H += xdiff/xmacros.h -XDIFF_H += xdiff/xdiff.h -XDIFF_H += xdiff/xtypes.h -XDIFF_H += xdiff/xutils.h -XDIFF_H += xdiff/xprepare.h -XDIFF_H += xdiff/xdiffi.h -XDIFF_H += xdiff/xemit.h - xdiff-interface.o $(XDIFF_OBJS): $(XDIFF_H) -VCSSVN_H += vcs-svn/line_buffer.h -VCSSVN_H += vcs-svn/sliding_window.h -VCSSVN_H += vcs-svn/repo_tree.h -VCSSVN_H += vcs-svn/fast_export.h -VCSSVN_H += vcs-svn/svndiff.h -VCSSVN_H += vcs-svn/svndump.h - $(VCSSVN_OBJS) $(VCSSVN_TEST_OBJS): $(LIB_H) $(VCSSVN_H) endif @@@ -2287,8 -2270,6 +2299,8 @@@ $(XDIFF_LIB): $(XDIFF_OBJS $(VCSSVN_LIB): $(VCSSVN_OBJS) $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(VCSSVN_OBJS) +export DEFAULT_EDITOR DEFAULT_PAGER + doc: $(MAKE) -C Documentation all @@@ -2313,7 -2294,7 +2325,7 @@@ XGETTEXT_FLAGS_C = $(XGETTEXT_FLAGS) -- --keyword=_ --keyword=N_ --keyword="Q_:1,2" XGETTEXT_FLAGS_SH = $(XGETTEXT_FLAGS) --language=Shell XGETTEXT_FLAGS_PERL = $(XGETTEXT_FLAGS) --keyword=__ --language=Perl -LOCALIZED_C := $(C_OBJ:o=c) +LOCALIZED_C := $(C_OBJ:o=c) $(LIB_H) $(XDIFF_H) $(VCSSVN_H) $(MISC_H) LOCALIZED_SH := $(SCRIPT_SH) LOCALIZED_PERL := $(SCRIPT_PERL)