Skip to content

Commit

Permalink
Merge pull request #4493 from schveiguy/fixcycles2
Browse files Browse the repository at this point in the history
Fix cycles in Phobos
  • Loading branch information
dnadlinger committed Jul 5, 2016
2 parents e41b83f + df16848 commit c33f386
Show file tree
Hide file tree
Showing 8 changed files with 54 additions and 49 deletions.
2 changes: 1 addition & 1 deletion posix.mak
Expand Up @@ -212,7 +212,7 @@ EXTRA_MODULES_INTERNAL := $(addprefix \
std/internal/digest/, sha_SSSE3 ) $(addprefix \
std/internal/math/, biguintcore biguintnoasm biguintx86 \
gammafunction errorfunction) $(addprefix std/internal/, \
cstring processinit unicode_tables scopebuffer\
cstring phobosinit unicode_tables scopebuffer\
unicode_comp unicode_decomp unicode_grapheme unicode_norm) \
$(addprefix std/internal/test/, dummyrange) \
$(addprefix std/experimental/ndslice/, internal) \
Expand Down
24 changes: 16 additions & 8 deletions std/encoding.d
Expand Up @@ -2635,10 +2635,11 @@ abstract class EncodingScheme
*/
class EncodingSchemeASCII : EncodingScheme
{
/* // moved to std.internal.phobosinit
shared static this()
{
EncodingScheme.register("std.encoding.EncodingSchemeASCII");
}
}*/

const
{
Expand Down Expand Up @@ -2720,10 +2721,11 @@ class EncodingSchemeASCII : EncodingScheme
*/
class EncodingSchemeLatin1 : EncodingScheme
{
/* // moved to std.internal.phobosinit
shared static this()
{
EncodingScheme.register("std.encoding.EncodingSchemeLatin1");
}
}*/

const
{
Expand Down Expand Up @@ -2799,10 +2801,11 @@ class EncodingSchemeLatin1 : EncodingScheme
*/
class EncodingSchemeLatin2 : EncodingScheme
{
/* // moved to std.internal.phobosinit
shared static this()
{
EncodingScheme.register("std.encoding.EncodingSchemeLatin2");
}
}*/

const
{
Expand Down Expand Up @@ -2870,10 +2873,11 @@ class EncodingSchemeLatin2 : EncodingScheme
*/
class EncodingSchemeWindows1250 : EncodingScheme
{
/* // moved to std.internal.phobosinit
shared static this()
{
EncodingScheme.register("std.encoding.EncodingSchemeWindows1250");
}
}*/

const
{
Expand Down Expand Up @@ -2937,10 +2941,11 @@ class EncodingSchemeWindows1250 : EncodingScheme
*/
class EncodingSchemeWindows1252 : EncodingScheme
{
/* // moved to std.internal.phobosinit
shared static this()
{
EncodingScheme.register("std.encoding.EncodingSchemeWindows1252");
}
}*/

const
{
Expand Down Expand Up @@ -3004,10 +3009,11 @@ class EncodingSchemeWindows1252 : EncodingScheme
*/
class EncodingSchemeUtf8 : EncodingScheme
{
/* // moved to std.internal.phobosinit
shared static this()
{
EncodingScheme.register("std.encoding.EncodingSchemeUtf8");
}
}*/

const
{
Expand Down Expand Up @@ -3072,10 +3078,11 @@ class EncodingSchemeUtf8 : EncodingScheme
*/
class EncodingSchemeUtf16Native : EncodingScheme
{
/* // moved to std.internal.phobosinit
shared static this()
{
EncodingScheme.register("std.encoding.EncodingSchemeUtf16Native");
}
}*/

const
{
Expand Down Expand Up @@ -3167,10 +3174,11 @@ class EncodingSchemeUtf16Native : EncodingScheme
*/
class EncodingSchemeUtf32Native : EncodingScheme
{
/* // moved to std.internal.phobosinit
shared static this()
{
EncodingScheme.register("std.encoding.EncodingSchemeUtf32Native");
}
}*/

const
{
Expand Down
15 changes: 0 additions & 15 deletions std/experimental/allocator/building_blocks/region.d
Expand Up @@ -596,21 +596,6 @@ version(Posix) struct SbrkRegion(uint minAlign = platformAlignment)
private static shared pthread_mutex_t sbrkMutex = PTHREAD_MUTEX_INITIALIZER;
import std.typecons : Ternary;

// workaround for https://issues.dlang.org/show_bug.cgi?id=14617
version(OSX)
{
shared static this()
{
pthread_mutex_init(cast(pthread_mutex_t*) &sbrkMutex, null) == 0
|| assert(0);
}
shared static ~this()
{
pthread_mutex_destroy(cast(pthread_mutex_t*) &sbrkMutex) == 0
|| assert(0);
}
}

static assert(minAlign.isGoodStaticAlignment);
static assert(size_t.sizeof == (void*).sizeof);
private shared void* _brkInitial, _brkCurrent;
Expand Down
35 changes: 35 additions & 0 deletions std/internal/phobosinit.d
@@ -0,0 +1,35 @@
// Written in the D programming language.

/++
The purpose of this module is to perform static construction away from the
normal modules to eliminate cyclic construction errors.
Copyright: Copyright 2011 - 2016
License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
Authors: Jonathan M Davis, Kato Shoichi, Steven Schveighoffer
Source: $(PHOBOSSRC std/internal/_phobosinit.d)
+/
module std.internal.phobosinit;

version(OSX)
{
extern(C) void std_process_shared_static_this();

shared static this()
{
std_process_shared_static_this();
}
}

shared static this()
{
import std.encoding;
EncodingScheme.register("std.encoding.EncodingSchemeASCII");
EncodingScheme.register("std.encoding.EncodingSchemeLatin1");
EncodingScheme.register("std.encoding.EncodingSchemeLatin2");
EncodingScheme.register("std.encoding.EncodingSchemeWindows1250");
EncodingScheme.register("std.encoding.EncodingSchemeWindows1252");
EncodingScheme.register("std.encoding.EncodingSchemeUtf8");
EncodingScheme.register("std.encoding.EncodingSchemeUtf16Native");
EncodingScheme.register("std.encoding.EncodingSchemeUtf32Native");
}
22 changes: 0 additions & 22 deletions std/internal/processinit.d

This file was deleted.

1 change: 0 additions & 1 deletion std/process.d
Expand Up @@ -100,7 +100,6 @@ version (Windows)

import std.range.primitives;
import std.stdio;
import std.internal.processinit;
import std.internal.cstring;


Expand Down
2 changes: 1 addition & 1 deletion win32.mak
Expand Up @@ -270,7 +270,7 @@ SRC_STD_C_FREEBSD= \

SRC_STD_INTERNAL= \
std\internal\cstring.d \
std\internal\processinit.d \
std\internal\phobosinit.d \
std\internal\unicode_tables.d \
std\internal\unicode_comp.d \
std\internal\unicode_decomp.d \
Expand Down
2 changes: 1 addition & 1 deletion win64.mak
Expand Up @@ -292,7 +292,7 @@ SRC_STD_C_FREEBSD= \

SRC_STD_INTERNAL= \
std\internal\cstring.d \
std\internal\processinit.d \
std\internal\phobosinit.d \
std\internal\unicode_tables.d \
std\internal\unicode_comp.d \
std\internal\unicode_decomp.d \
Expand Down

0 comments on commit c33f386

Please sign in to comment.