Skip to content

Commit

Permalink
Merge pull request #1650 from blackwhale/faster-compile-2
Browse files Browse the repository at this point in the history
Split off rarely used unicode tables
  • Loading branch information
WalterBright committed Oct 17, 2013
2 parents 217ae37 + 87bff61 commit 5a8b5fd
Show file tree
Hide file tree
Showing 9 changed files with 221 additions and 86 deletions.
3 changes: 2 additions & 1 deletion posix.mak
Expand Up @@ -193,7 +193,8 @@ EXTRA_MODULES += $(EXTRA_DOCUMENTABLES) $(addprefix \
std/internal/digest/, sha_SSSE3 ) $(addprefix \
std/internal/math/, biguintcore biguintnoasm biguintx86 \
gammafunction errorfunction) $(addprefix std/internal/, \
processinit uni uni_tab unicode_tables)
processinit uni uni_tab unicode_tables \
unicode_comp unicode_decomp unicode_grapheme unicode_norm)

# Aggregate all D modules relevant to this build
D_MODULES = crc32 $(STD_MODULES) $(EXTRA_MODULES) $(STD_NET_MODULES) $(STD_DIGEST_MODULES)
Expand Down
32 changes: 32 additions & 0 deletions std/internal/unicode_comp.d

Large diffs are not rendered by default.

32 changes: 32 additions & 0 deletions std/internal/unicode_decomp.d

Large diffs are not rendered by default.

28 changes: 28 additions & 0 deletions std/internal/unicode_grapheme.d

Large diffs are not rendered by default.

28 changes: 28 additions & 0 deletions std/internal/unicode_norm.d

Large diffs are not rendered by default.

65 changes: 1 addition & 64 deletions std/internal/unicode_tables.d

Large diffs are not rendered by default.

109 changes: 91 additions & 18 deletions std/uni.d
Expand Up @@ -5807,6 +5807,7 @@ enum {
+/
public dchar compose(dchar first, dchar second)
{
import std.internal.unicode_comp;
size_t packed = compositionJumpTrie[first];
if(packed == ushort.max)
return dchar.init;
Expand Down Expand Up @@ -5848,6 +5849,7 @@ public dchar compose(dchar first, dchar second)
+/
public Grapheme decompose(UnicodeDecomposition decompType=Canonical)(dchar ch)
{
import std.internal.unicode_decomp;
static if(decompType == Canonical)
{
alias table = decompCanonTable;
Expand Down Expand Up @@ -7427,29 +7429,100 @@ private:
auto symbolTrie() { static immutable res = asTrie(symbolTrieEntries); return res; }
auto graphicalTrie() { static immutable res = asTrie(graphicalTrieEntries); return res; }
auto nonCharacterTrie() { static immutable res = asTrie(nonCharacterTrieEntries); return res; }
auto nfcQCTrie() { static immutable res = asTrie(nfcQCTrieEntries); return res; }
auto nfdQCTrie() { static immutable res = asTrie(nfdQCTrieEntries); return res; }
auto nfkcQCTrie() { static immutable res = asTrie(nfkcQCTrieEntries); return res; }
auto nfkdQCTrie() { static immutable res = asTrie(nfkdQCTrieEntries); return res; }
auto mcTrie() { static immutable res = asTrie(mcTrieEntries); return res; }
auto graphemeExtendTrie() { static immutable res = asTrie(graphemeExtendTrieEntries); return res; }
auto combiningClassTrie() { static immutable res = asTrie(combiningClassTrieEntries); return res; }
auto compatMappingTrie() { static immutable res = asTrie(compatMappingTrieEntries); return res; }
auto canonMappingTrie() { static immutable res = asTrie(canonMappingTrieEntries); return res; }
auto compositionJumpTrie() { static immutable res = asTrie(compositionJumpTrieEntries); return res; }

//normalization quick-check tables
auto nfcQCTrie()
{
import std.internal.unicode_norm;
static immutable res = asTrie(nfcQCTrieEntries);
return res;
}

auto nfdQCTrie()
{
import std.internal.unicode_norm;
static immutable res = asTrie(nfdQCTrieEntries);
return res;
}

auto nfkcQCTrie()
{
import std.internal.unicode_norm;
static immutable res = asTrie(nfkcQCTrieEntries);
return res;
}

auto nfkdQCTrie()
{
import std.internal.unicode_norm;
static immutable res = asTrie(nfkdQCTrieEntries);
return res;
}

//grapheme breaking algorithm tables
auto mcTrie()
{
import std.internal.unicode_grapheme;
static immutable res = asTrie(mcTrieEntries);
return res;
}

auto graphemeExtendTrie()
{
import std.internal.unicode_grapheme;
static immutable res = asTrie(graphemeExtendTrieEntries);
return res;
}

auto hangLV()
{
import std.internal.unicode_grapheme;
static immutable res = asTrie(hangulLVTrieEntries);
return res;
}

auto hangLVT()
{
import std.internal.unicode_grapheme;
static immutable res = asTrie(hangulLVTTrieEntries);
return res;
}

// tables below are used for composition/decomposition
auto combiningClassTrie()
{
import std.internal.unicode_comp;
static immutable res = asTrie(combiningClassTrieEntries);
return res;
}

auto compatMappingTrie()
{
import std.internal.unicode_decomp;
static immutable res = asTrie(compatMappingTrieEntries);
return res;
}

auto canonMappingTrie()
{
import std.internal.unicode_decomp;
static immutable res = asTrie(canonMappingTrieEntries);
return res;
}

auto compositionJumpTrie()
{
import std.internal.unicode_comp;
static immutable res = asTrie(compositionJumpTrieEntries);
return res;
}

//case conversion tables
auto toUpperIndexTrie() { static immutable res = asTrie(toUpperIndexTrieEntries); return res; }
auto toLowerIndexTrie() { static immutable res = asTrie(toLowerIndexTrieEntries); return res; }
auto toTitleIndexTrie() { static immutable res = asTrie(toTitleIndexTrieEntries); return res; }
}

// TODO: move sets below to Tries
__gshared CodepointSet hangLV;
__gshared CodepointSet hangLVT;

shared static this()
{
hangLV = asSet(hangul.LV);
hangLVT = asSet(hangul.LVT);
}

}// version(!std_uni_bootstrap)
Expand Down
4 changes: 3 additions & 1 deletion win32.mak
Expand Up @@ -191,7 +191,9 @@ SRC_STD_C_OSX= std\c\osx\socket.d

SRC_STD_C_FREEBSD= std\c\freebsd\socket.d

SRC_STD_INTERNAL= std\internal\processinit.d std\internal\uni.d std\internal\uni_tab.d std\internal\unicode_tables.d
SRC_STD_INTERNAL= std\internal\processinit.d std\internal\uni.d std\internal\uni_tab.d \
std\internal\unicode_tables.d std\internal\unicode_comp.d std\internal\unicode_decomp.d \
std\internal\unicode_grapheme.d std\internal\unicode_norm.d

SRC_STD_INTERNAL_DIGEST= std\internal\digest\sha_SSSE3.d

Expand Down
6 changes: 4 additions & 2 deletions win64.mak
Expand Up @@ -210,13 +210,15 @@ SRC_STD_C_OSX= std\c\osx\socket.d

SRC_STD_C_FREEBSD= std\c\freebsd\socket.d

SRC_STD_INTERNAL= std\internal\processinit.d std\internal\uni.d std\internal\uni_tab.d std\internal\unicode_tables.d
SRC_STD_INTERNAL= std\internal\processinit.d std\internal\uni.d std\internal\uni_tab.d \
std\internal\unicode_tables.d std\internal\unicode_comp.d std\internal\unicode_decomp.d \
std\internal\unicode_grapheme.d std\internal\unicode_norm.d

SRC_STD_INTERNAL_DIGEST= std\internal\digest\sha_SSSE3.d

SRC_STD_INTERNAL_MATH= std\internal\math\biguintcore.d \
std\internal\math\biguintnoasm.d std\internal\math\biguintx86.d \
std\internal\math\gammafunction.d std\internal\math\errorfunction.d
std\internal\math\gammafunction.d std\internal\math\errorfunction.d

SRC_STD_INTERNAL_WINDOWS= std\internal\windows\advapi32.d

Expand Down

0 comments on commit 5a8b5fd

Please sign in to comment.