Commit 151a199f by Iain Buclaw

libphobos: Add Fiber/Thread support for StackGrowsUp.

The StackGrowsDown version being turned off for hppa targets.

After other fixes in the compiler, this allows core.thread unittests to
all pass, as well as the garbage collector to work correctly.

Backported from upstream druntime 2.084.

Reviewed-on: https://github.com/dlang/druntime/pull/2410

From-SVN: r268056
parent 50deb970
......@@ -3254,7 +3254,9 @@ private void* getStackBottom() nothrow @nogc
pthread_getattr_np(pthread_self(), &attr);
pthread_attr_getstack(&attr, &addr, &size);
pthread_attr_destroy(&attr);
return addr + size;
version (StackGrowsDown)
addr += size;
return addr;
}
else version (FreeBSD)
{
......@@ -3265,7 +3267,9 @@ private void* getStackBottom() nothrow @nogc
pthread_attr_get_np(pthread_self(), &attr);
pthread_attr_getstack(&attr, &addr, &size);
pthread_attr_destroy(&attr);
return addr + size;
version (StackGrowsDown)
addr += size;
return addr;
}
else version (NetBSD)
{
......@@ -3276,7 +3280,9 @@ private void* getStackBottom() nothrow @nogc
pthread_attr_get_np(pthread_self(), &attr);
pthread_attr_getstack(&attr, &addr, &size);
pthread_attr_destroy(&attr);
return addr + size;
version (StackGrowsDown)
addr += size;
return addr;
}
else version (Solaris)
{
......@@ -3293,7 +3299,9 @@ private void* getStackBottom() nothrow @nogc
pthread_getattr_np(pthread_self(), &attr);
pthread_attr_getstack(&attr, &addr, &size);
pthread_attr_destroy(&attr);
return addr + size;
version (StackGrowsDown)
addr += size;
return addr;
}
else
static assert(false, "Platform not supported.");
......
......@@ -30,12 +30,6 @@ module gc.impl.conservative.gc;
//debug = INVARIANT; // enable invariants
//debug = PROFILE_API; // profile API calls for config.profile > 1
/*************** Configuration *********************/
version = STACKGROWSDOWN; // growing the stack means subtracting from the stack pointer
// (use for Intel X86 CPUs)
// else growing the stack means adding to the stack pointer
/***************************************************/
import gc.bits;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment