# HG changeset patch # User Christian Kamm # Date 1227357696 -3600 # Node ID 961e249eb2aaea5e557fd815176190608e7e94e6 # Parent 6aa2b350c8cc39094ce5be3407b750c76905e809 Include x86-32 fiber fixes in tango patch again. diff -r 6aa2b350c8cc -r 961e249eb2aa runtime/ldc.diff --- a/runtime/ldc.diff Thu Nov 20 17:20:00 2008 +0100 +++ b/runtime/ldc.diff Sat Nov 22 13:41:36 2008 +0100 @@ -1,6 +1,6 @@ Index: object.di =================================================================== ---- object.di (revision 4097) +--- object.di (revision 4110) +++ object.di (working copy) @@ -150,6 +150,9 @@ void function() dtor; @@ -14,7 +14,7 @@ Index: lib/unittest.sh =================================================================== ---- lib/unittest.sh (revision 4097) +--- lib/unittest.sh (revision 4110) +++ lib/unittest.sh (working copy) @@ -18,8 +18,9 @@ --help: This message @@ -71,7 +71,7 @@ +fi Index: lib/common/tango/core/BitManip.d =================================================================== ---- lib/common/tango/core/BitManip.d (revision 4097) +--- lib/common/tango/core/BitManip.d (revision 4110) +++ lib/common/tango/core/BitManip.d (working copy) @@ -171,6 +171,10 @@ */ @@ -86,7 +86,7 @@ public import std.intrinsic; Index: lib/common/tango/core/Thread.d =================================================================== ---- lib/common/tango/core/Thread.d (revision 4097) +--- lib/common/tango/core/Thread.d (revision 4110) +++ lib/common/tango/core/Thread.d (working copy) @@ -273,8 +273,50 @@ } @@ -154,7 +154,26 @@ asm { popad; -@@ -2357,6 +2403,10 @@ +@@ -2347,6 +2393,18 @@ + version( Posix ) + version = AsmPPC_Posix; + } ++ version( LLVM_InlineAsm_X86 ) ++ { ++ version( Win32 ) ++ version = LLVM_AsmX86_Win32; ++ else version( Posix ) ++ version = LLVM_AsmX86_Posix; ++ } ++ else version( LLVM_InlineAsm_X86_64 ) ++ { ++ version( Posix ) ++ version = LLVM_AsmX86_64_Posix; ++ } + + version( Posix ) + { +@@ -2357,6 +2415,10 @@ version( AsmX86_Win32 ) {} else version( AsmX86_Posix ) {} else version( AsmPPC_Posix ) {} else @@ -165,7 +184,7 @@ { // NOTE: The ucontext implementation requires architecture specific // data definitions to operate so testing for it must be done -@@ -2367,9 +2417,11 @@ +@@ -2367,9 +2429,11 @@ import tango.stdc.posix.ucontext; } } @@ -178,7 +197,7 @@ static this() { static if( is( typeof( GetSystemInfo ) ) ) -@@ -2522,7 +2574,7 @@ +@@ -2522,7 +2586,7 @@ } } @@ -187,7 +206,30 @@ //////////////////////////////////////////////////////////////////////////////// // Fiber //////////////////////////////////////////////////////////////////////////////// -@@ -3204,6 +3256,28 @@ +@@ -3177,6 +3241,22 @@ + push( 0x00000000 ); // ESI + push( 0x00000000 ); // EDI + } ++ else version( LLVM_AsmX86_Posix ) ++ { ++ push( cast(size_t) &fiber_entryPoint ); // EIP ++ push( 0x00000000 ); // newp ++ push( 0x00000000 ); // oldp ++ push( 0x00000000 ); // EBP ++ push( 0x00000000 ); // EBX ++ push( 0x00000000 ); // ESI ++ push( 0x00000000 ); // EDI ++ } ++//TODO: Implement x86-64 fibers ++/+ ++ else version( LLVM_AsmX86_Posix ) ++ { ++ } +++/ + else version( AsmPPC_Posix ) + { + version( StackGrowsDown ) +@@ -3204,6 +3284,28 @@ assert( cast(uint) pstack & 0x0f == 0 ); } @@ -218,7 +260,7 @@ getcontext( &m_utxt ); Index: lib/gc/basic/gcx.d =================================================================== ---- lib/gc/basic/gcx.d (revision 4097) +--- lib/gc/basic/gcx.d (revision 4110) +++ lib/gc/basic/gcx.d (working copy) @@ -65,6 +65,13 @@ } @@ -311,7 +353,7 @@ asm Index: lib/gc/basic/gcbits.d =================================================================== ---- lib/gc/basic/gcbits.d (revision 4097) +--- lib/gc/basic/gcbits.d (revision 4110) +++ lib/gc/basic/gcbits.d (working copy) @@ -39,6 +39,10 @@ { @@ -326,7 +368,7 @@ version = Asm86; Index: lib/build-tango.sh =================================================================== ---- lib/build-tango.sh (revision 4097) +--- lib/build-tango.sh (revision 4110) +++ lib/build-tango.sh (working copy) @@ -23,7 +23,7 @@ --debug: Will enable debug info @@ -358,7 +400,7 @@ build powerpc-apple-darwin8-gdmd libgtango.a.ppc libgphobos.a.ppc Index: tango/text/convert/Layout.d =================================================================== ---- tango/text/convert/Layout.d (revision 4097) +--- tango/text/convert/Layout.d (revision 4110) +++ tango/text/convert/Layout.d (working copy) @@ -47,6 +47,12 @@ alias void* Arg; @@ -384,7 +426,7 @@ return parse (formatStr, arguments, arglist, sink); Index: tango/net/cluster/CacheInvalidator.d =================================================================== ---- tango/net/cluster/CacheInvalidator.d (revision 4097) +--- tango/net/cluster/CacheInvalidator.d (revision 4110) +++ tango/net/cluster/CacheInvalidator.d (working copy) @@ -79,7 +79,7 @@ @@ -397,7 +439,7 @@ Index: tango/core/Vararg.d =================================================================== ---- tango/core/Vararg.d (revision 4097) +--- tango/core/Vararg.d (revision 4110) +++ tango/core/Vararg.d (working copy) @@ -15,6 +15,10 @@ { @@ -412,7 +454,7 @@ /** Index: tango/core/sync/Semaphore.d =================================================================== ---- tango/core/sync/Semaphore.d (revision 4097) +--- tango/core/sync/Semaphore.d (revision 4110) +++ tango/core/sync/Semaphore.d (working copy) @@ -376,7 +376,8 @@ { @@ -448,7 +490,7 @@ } Index: tango/core/sync/Condition.d =================================================================== ---- tango/core/sync/Condition.d (revision 4097) +--- tango/core/sync/Condition.d (revision 4110) +++ tango/core/sync/Condition.d (working copy) @@ -553,8 +553,11 @@ @@ -464,7 +506,7 @@ } Index: tango/core/Atomic.d =================================================================== ---- tango/core/Atomic.d (revision 4097) +--- tango/core/Atomic.d (revision 4110) +++ tango/core/Atomic.d (working copy) @@ -270,6 +270,167 @@ @@ -648,11 +690,11 @@ { Index: tango/math/IEEE.d =================================================================== ---- tango/math/IEEE.d (revision 4097) +--- tango/math/IEEE.d (revision 4110) +++ tango/math/IEEE.d (working copy) -@@ -1543,7 +1543,12 @@ - else return 0; - } +@@ -1554,7 +1554,12 @@ + return (bitsdiff == 0 && !((pa[F.EXPPOS_SHORT] ^ pb[F.EXPPOS_SHORT])& F.EXPMASK)) ? 1 : 0; + } } else { - assert(0, "Unsupported"); + static if (is(X==real)){ @@ -666,7 +708,7 @@ Index: tango/math/Math.d =================================================================== ---- tango/math/Math.d (revision 4097) +--- tango/math/Math.d (revision 4110) +++ tango/math/Math.d (working copy) @@ -76,6 +76,14 @@ version = DigitalMars_D_InlineAsm_X86; @@ -815,7 +857,7 @@ debug(UnitTest) { Index: tango/stdc/posix/sys/types.d =================================================================== ---- tango/stdc/posix/sys/types.d (revision 4097) +--- tango/stdc/posix/sys/types.d (revision 4110) +++ tango/stdc/posix/sys/types.d (working copy) @@ -422,7 +422,11 @@ } @@ -832,7 +874,7 @@ { Index: tango/stdc/stdlib.d =================================================================== ---- tango/stdc/stdlib.d (revision 4097) +--- tango/stdc/stdlib.d (revision 4110) +++ tango/stdc/stdlib.d (working copy) @@ -94,6 +94,11 @@ { @@ -848,7 +890,7 @@ private import gcc.builtins; Index: tango/stdc/stdarg.d =================================================================== ---- tango/stdc/stdarg.d (revision 4097) +--- tango/stdc/stdarg.d (revision 4110) +++ tango/stdc/stdarg.d (working copy) @@ -13,6 +13,10 @@ {