Skip to content

Commit f1b83ae

Browse files
committed
Make SplitMerge with a timsort improvement. 1.5% faster with mincer.
1 parent cc3cbd0 commit f1b83ae

File tree

2 files changed

+145
-61
lines changed

2 files changed

+145
-61
lines changed

sources/declare.h

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -526,6 +526,13 @@ extern WORD DoDelta(WORD *);
526526
extern WORD DoDelta3(PHEAD WORD *,WORD);
527527
extern WORD TestPartitions(WORD *, PARTI *);
528528
extern WORD DoPartitions(PHEAD WORD *,WORD);
529+
extern int CoCanonicalize(UBYTE *);
530+
extern int DoCanonicalize(PHEAD WORD *, WORD *);
531+
extern WORD GenTopologies(PHEAD WORD *,WORD);
532+
extern WORD GenDiagrams(PHEAD WORD *,WORD);
533+
extern int DoTopologyCanonicalize(PHEAD WORD *,WORD,WORD,WORD *);
534+
extern int DoShattering(PHEAD WORD *,WORD *,WORD *,WORD);
535+
extern WORD GenerateTopologies(PHEAD WORD,WORD,WORD,WORD);
529536
extern WORD DoTableExpansion(WORD *,WORD);
530537
extern WORD DoDistrib(PHEAD WORD *,WORD);
531538
extern WORD DoShuffle(PHEAD WORD *,WORD,WORD,WORD);
@@ -668,11 +675,7 @@ extern WORD Sflush(FILEHANDLE *);
668675
extern WORD Simplify(PHEAD UWORD *,WORD *,UWORD *,WORD *);
669676
extern WORD SortWild(WORD *,WORD);
670677
extern FILE *LocateBase(char **,char **);
671-
#ifdef NEWSPLITMERGE
672678
extern LONG SplitMerge(PHEAD WORD **,LONG);
673-
#else
674-
extern VOID SplitMerge(PHEAD WORD **,LONG);
675-
#endif
676679
extern WORD StoreTerm(PHEAD WORD *);
677680
extern VOID SubPLon(UWORD *,WORD,UWORD *,WORD,UWORD *,WORD *);
678681
extern VOID Substitute(PHEAD WORD *,WORD *,WORD);
@@ -759,6 +762,8 @@ extern VOID Terminate(int);
759762
extern NAMENODE *GetNode(NAMETREE *,UBYTE *);
760763
extern int AddName(NAMETREE *,UBYTE *,WORD,WORD,int *);
761764
extern int GetName(NAMETREE *,UBYTE *,WORD *,int);
765+
extern UBYTE *GetFunction(UBYTE *,WORD *);
766+
extern UBYTE *GetNumber(UBYTE *,WORD *);
762767
extern int GetLastExprName(UBYTE *,WORD *);
763768
extern int GetAutoName(UBYTE *,WORD *);
764769
extern int GetVar(UBYTE *,WORD *,WORD *,int,int);
@@ -831,6 +836,7 @@ extern int StrCmp(UBYTE *,UBYTE *);
831836
extern int StrICmp(UBYTE *,UBYTE *);
832837
extern int StrHICmp(UBYTE *,UBYTE *);
833838
extern int StrICont(UBYTE *,UBYTE *);
839+
extern int CmpArray(WORD *,WORD *,WORD);
834840
extern int ConWord(UBYTE *,UBYTE *);
835841
extern int StrLen(UBYTE *);
836842
extern UBYTE *GetPreVar(UBYTE *,int);
@@ -1195,6 +1201,7 @@ extern int AssignDollar(PHEAD WORD *,WORD);
11951201
extern UBYTE *WriteDollarToBuffer(WORD,WORD);
11961202
extern UBYTE *WriteDollarFactorToBuffer(WORD,WORD,WORD);
11971203
extern void AddToDollarBuffer(UBYTE *);
1204+
extern int PutTermInDollar(WORD *,WORD);
11981205
extern void TermAssign(WORD *);
11991206
extern void WildDollars(PHEAD WORD *);
12001207
extern LONG numcommute(WORD *,LONG *);

0 commit comments

Comments
 (0)