annotate runtime/ldc.diff @ 755:61c7a96f28c3

Merge in most of x86-64 tango patch.
author Christian Kamm <kamm incasoftware de>
date Sat, 08 Nov 2008 11:34:35 +0100
parents f34b552619fd
children 0375841e3175
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
1 Index: object.di
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
2 ===================================================================
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
3 --- object.di (revision 4071)
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
4 +++ object.di (working copy)
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
5 @@ -150,6 +150,9 @@
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
6 void function() dtor;
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
7 void function() unitTest;
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
8
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
9 + void* xgetMembers;
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
10 + void function() ictor;
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
11 +
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
12 static int opApply( int delegate( inout ModuleInfo ) );
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
13 }
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
14
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
15 Index: lib/unittest.sh
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
16 ===================================================================
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
17 --- lib/unittest.sh (revision 4071)
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
18 +++ lib/unittest.sh (working copy)
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
19 @@ -18,8 +18,9 @@
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
20 --help: This message
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
21 --run-all: Reports result instead of breaking. Do not use this if you want to
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
22 run unittest runner through a debugger.
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
23 - dmd: Builds unittests for dmd
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
24 - gdc: Builds unittests for gdc
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
25 + dmd: Builds unittests for dmd
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
26 + gdc: Builds unittests for gdc
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
27 + ldc: Builds unittests for ldc
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
28
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
29 <none>: Builds unittests for all known compilers.'
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
30 exit 0
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
31 @@ -86,7 +87,7 @@
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
32 void main() {}
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
33 EOF
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
34
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
35 - rebuild -w -d -g -L-ldl -L-lz -L-lbz2 -debug=UnitTest -debug -full -clean -unittest \
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
36 + rebuild -w -d -L-ldl -L-lz -L-lbz2 -debug=UnitTest -debug -full -clean -unittest \
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
37 -version=UnitTest $EXE.d tango/core/*.d tango/core/sync/*.d tango/io/digest/*.d \
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
38 tango/io/model/*.d tango/io/protocol/*.d tango/io/selector/*.d tango/io/*.d \
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
39 tango/io/vfs/*.d tango/io/vfs/model/*.d \
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
40 @@ -125,6 +126,9 @@
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
41 gdc)
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
42 GDC=1
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
43 ;;
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
44 + ldc)
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
45 + LDC=1
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
46 + ;;
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
47 *)
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
48 usage
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
49 ;;
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
50 @@ -132,10 +136,11 @@
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
51 shift
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
52 done
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
53
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
54 -if [ ! "$DMD" -a ! "$GDC" ]
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
55 +if [ ! "$DMD" -a ! "$GDC" -a ! "$LDC" ]
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
56 then
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
57 DMD=1
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
58 GDC=1
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
59 + LDC=1
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
60 fi
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
61
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
62 if [ "$DMD" = "1" ]
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
63 @@ -146,4 +151,7 @@
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
64 then
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
65 compile gdc runUnitTest_gdc
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
66 fi
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
67 -
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
68 +if [ "$LDC" = "1" ]
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
69 +then
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
70 + compile ldc runUnitTest_ldc
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
71 +fi
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
72 Index: lib/common/tango/core/BitManip.d
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
73 ===================================================================
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
74 --- lib/common/tango/core/BitManip.d (revision 4071)
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
75 +++ lib/common/tango/core/BitManip.d (working copy)
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
76 @@ -171,6 +171,10 @@
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
77 */
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
78 uint outpl( uint port_address, uint value );
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
79 }
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
80 +else version( LDC )
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
81 +{
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
82 + public import ldc.bitmanip;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
83 +}
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
84 else
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
85 {
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
86 public import std.intrinsic;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
87 Index: lib/common/tango/core/Thread.d
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
88 ===================================================================
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
89 --- lib/common/tango/core/Thread.d (revision 4071)
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
90 +++ lib/common/tango/core/Thread.d (working copy)
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
91 @@ -247,6 +247,7 @@
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
92 // used to track the number of suspended threads
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
93 //
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
94 sem_t suspendCount;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
95 + sem_t* suspendCountPtr;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
96
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
97
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
98 extern (C) void thread_suspendHandler( int sig )
755
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
99 @@ -256,8 +257,50 @@
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
100 }
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
101 body
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
102 {
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
103 - version( D_InlineAsm_X86 )
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
104 + version( LDC)
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
105 {
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
106 + version(X86)
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
107 + {
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
108 + uint eax,ecx,edx,ebx,ebp,esi,edi;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
109 + asm
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
110 + {
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
111 + mov eax[EBP], EAX ;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
112 + mov ecx[EBP], ECX ;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
113 + mov edx[EBP], EDX ;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
114 + mov ebx[EBP], EBX ;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
115 + mov ebp[EBP], EBP ;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
116 + mov esi[EBP], ESI ;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
117 + mov edi[EBP], EDI ;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
118 + }
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
119 + }
755
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
120 + else version (X86_64)
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
121 + {
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
122 + ulong rax,rbx,rcx,rdx,rbp,rsi,rdi,rsp,r10,r11,r12,r13,r14,r15;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
123 + asm
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
124 + {
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
125 + movq rax[RBP], RAX ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
126 + movq rbx[RBP], RBX ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
127 + movq rcx[RBP], RCX ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
128 + movq rdx[RBP], RDX ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
129 + movq rbp[RBP], RBP ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
130 + movq rsi[RBP], RSI ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
131 + movq rdi[RBP], RDI ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
132 + movq rsp[RBP], RSP ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
133 + movq r10[RBP], R10 ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
134 + movq r11[RBP], R11 ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
135 + movq r12[RBP], R12 ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
136 + movq r13[RBP], R13 ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
137 + movq r14[RBP], R14 ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
138 + movq r15[RBP], R15 ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
139 + }
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
140 + }
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
141 + else
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
142 + {
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
143 + static assert( false, "Architecture not supported." );
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
144 + }
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
145 + }
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
146 + else version( D_InlineAsm_X86 )
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
147 + {
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
148 asm
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
149 {
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
150 pushad;
755
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
151 @@ -298,7 +341,7 @@
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
152 status = sigdelset( &sigres, SIGUSR2 );
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
153 assert( status == 0 );
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
154
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
155 - status = sem_post( &suspendCount );
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
156 + status = sem_post( suspendCountPtr );
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
157 assert( status == 0 );
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
158
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
159 sigsuspend( &sigres );
755
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
160 @@ -309,8 +352,12 @@
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
161 }
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
162 }
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
163
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
164 - version( D_InlineAsm_X86 )
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
165 + version( LDC)
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
166 {
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
167 + // nothing to pop
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
168 + }
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
169 + else version( D_InlineAsm_X86 )
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
170 + {
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
171 asm
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
172 {
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
173 popad;
755
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
174 @@ -1584,8 +1631,14 @@
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
175 status = sigaction( SIGUSR2, &sigusr2, null );
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
176 assert( status == 0 );
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
177
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
178 - status = sem_init( &suspendCount, 0, 0 );
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
179 - assert( status == 0 );
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
180 + version(darwin){
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
181 + suspendCountPtr = sem_open( "/thread_init/sem\0".ptr, 0 );
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
182 + assert( suspendCountPtr !is null );
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
183 + }else {
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
184 + status=sem_init(&suspendCount,0,0);
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
185 + suspendCountPtr=&suspendCount;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
186 + assert(status==0);
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
187 + }
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
188
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
189 status = pthread_key_create( &Thread.sm_this, null );
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
190 assert( status == 0 );
755
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
191 @@ -1793,7 +1846,7 @@
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
192 // to simply loop on sem_wait at the end, but I'm not
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
193 // convinced that this would be much faster than the
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
194 // current approach.
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
195 - sem_wait( &suspendCount );
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
196 + sem_wait( suspendCountPtr );
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
197 }
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
198 else if( !t.m_lock )
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
199 {
755
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
200 @@ -2298,7 +2351,20 @@
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
201 version = AsmPPC_Posix;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
202 }
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
203
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
204 + version( LLVM_InlineAsm_X86 )
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
205 + {
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
206 + version( Win32 )
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
207 + version = LLVM_AsmX86_Win32;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
208 + else version( Posix )
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
209 + version = LLVM_AsmX86_Posix;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
210 + }
755
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
211 + else version( LLVM_InlineAsm_X86_64 )
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
212 + {
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
213 + version( Posix )
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
214 + version = LLVM_AsmX86_64_Posix;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
215 + }
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
216
755
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
217 +
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
218 version( Posix )
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
219 {
755
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
220 import tango.stdc.posix.unistd; // for sysconf
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
221 @@ -2308,6 +2374,10 @@
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
222 version( AsmX86_Win32 ) {} else
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
223 version( AsmX86_Posix ) {} else
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
224 version( AsmPPC_Posix ) {} else
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
225 + version( LLVM_AsmX86_Win32 ) {} else
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
226 + version( LLVM_AsmX86_Posix ) {} else
755
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
227 +//TODO: Enable when x86-64 Posix supports fibers
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
228 +// version( LLVM_AsmX86_64_Posix ) {} else
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
229 {
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
230 // NOTE: The ucontext implementation requires architecture specific
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
231 // data definitions to operate so testing for it must be done
755
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
232 @@ -2318,10 +2388,10 @@
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
233 import tango.stdc.posix.ucontext;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
234 }
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
235 }
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
236 -
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
237 - const size_t PAGESIZE;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
238 }
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
239
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
240 +// this can't be private since it's used as default argument to a public function
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
241 +const size_t PAGESIZE;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
242
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
243 static this()
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
244 {
755
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
245 @@ -2348,7 +2418,7 @@
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
246 }
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
247 }
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
248
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
249 -
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
250 +extern(C) int printf(char*, ...);
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
251 ////////////////////////////////////////////////////////////////////////////////
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
252 // Fiber Entry Point and Context Switch
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
253 ////////////////////////////////////////////////////////////////////////////////
755
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
254 @@ -2462,6 +2532,28 @@
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
255 ret;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
256 }
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
257 }
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
258 + else version( LLVM_AsmX86_Posix )
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
259 + {
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
260 + asm
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
261 + {
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
262 + // clobber registers to save
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
263 + inc EBX;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
264 + inc ESI;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
265 + inc EDI;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
266 +
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
267 + // store oldp again with more accurate address
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
268 + mov EAX, oldp;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
269 + mov [EAX], ESP;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
270 + // load newp to begin context switch
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
271 + mov ESP, newp;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
272 + }
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
273 + }
755
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
274 +/+
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
275 + version( LLVM_AsmX86_64_Posix )
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
276 + {
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
277 + //TODO: Fiber implementation here
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
278 + }
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
279 ++/
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
280 else static if( is( ucontext_t ) )
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
281 {
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
282 Fiber cfib = Fiber.getThis();
755
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
283 @@ -2980,16 +3072,25 @@
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
284 m_size = sz;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
285 }
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
286 else
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
287 - { static if( is( typeof( mmap ) ) )
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
288 + {
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
289 + static if( is( typeof( mmap ) ) )
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
290 {
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
291 - m_pmem = mmap( null,
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
292 + //TODO: This seems a bit dubious.
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
293 + version (X86_64)
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
294 + {
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
295 + m_pmem = malloc( sz );
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
296 + }
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
297 + else
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
298 + {
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
299 + m_pmem = mmap( null,
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
300 sz,
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
301 PROT_READ | PROT_WRITE,
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
302 MAP_PRIVATE | MAP_ANON,
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
303 -1,
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
304 0 );
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
305 - if( m_pmem == MAP_FAILED )
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
306 - m_pmem = null;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
307 + if( m_pmem == MAP_FAILED )
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
308 + m_pmem = null;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
309 + }
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
310 }
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
311 else static if( is( typeof( valloc ) ) )
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
312 {
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
313 @@ -3127,6 +3228,22 @@
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
314 push( 0x00000000 ); // ESI
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
315 push( 0x00000000 ); // EDI
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
316 }
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
317 + else version( LLVM_AsmX86_Posix )
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
318 + {
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
319 + push( cast(size_t) &fiber_entryPoint ); // EIP
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
320 + push( 0x00000000 ); // newp
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
321 + push( 0x00000000 ); // oldp
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
322 + push( 0x00000000 ); // EBP
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
323 + push( 0x00000000 ); // EBX
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
324 + push( 0x00000000 ); // ESI
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
325 + push( 0x00000000 ); // EDI
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
326 + }
755
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
327 +//TODO: Implement x86-64 fibers
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
328 +/+
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
329 + else version( LLVM_AsmX86_Posix )
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
330 + {
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
331 + }
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
332 ++/
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
333 else version( AsmPPC_Posix )
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
334 {
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
335 version( StackGrowsDown )
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
336 Index: lib/gc/basic/gcx.d
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
337 ===================================================================
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
338 --- lib/gc/basic/gcx.d (revision 4071)
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
339 +++ lib/gc/basic/gcx.d (working copy)
627
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
340 @@ -65,6 +65,13 @@
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
341 }
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
342
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
343
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
344 +struct BlkInfo
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
345 +{
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
346 + void* base;
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
347 + size_t size;
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
348 + uint attr;
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
349 +}
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
350 +
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
351 private
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
352 {
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
353 enum BlkAttr : uint
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
354 @@ -75,13 +82,6 @@
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
355 ALL_BITS = 0b1111_1111
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
356 }
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
357
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
358 - struct BlkInfo
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
359 - {
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
360 - void* base;
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
361 - size_t size;
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
362 - uint attr;
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
363 - }
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
364 -
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
365 extern (C) void* rt_stackBottom();
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
366 extern (C) void* rt_stackTop();
79cbe5034fec Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents: 615
diff changeset
367
755
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
368 @@ -2178,6 +2178,49 @@
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
369 __builtin_unwind_init();
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
370 sp = & sp;
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
371 }
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
372 + else version(LDC)
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
373 + {
531
f775ea9d09d3 Updated the tango patch, removed some now unnecessarily complex inline asm.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 529
diff changeset
374 + version(X86)
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
375 + {
533
2fe2d4518618 Reverted some changes in the Tango patch, splitting asm block is simply not supported by llvm.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 531
diff changeset
376 + uint eax,ecx,edx,ebx,ebp,esi,edi;
531
f775ea9d09d3 Updated the tango patch, removed some now unnecessarily complex inline asm.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 529
diff changeset
377 + asm
f775ea9d09d3 Updated the tango patch, removed some now unnecessarily complex inline asm.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 529
diff changeset
378 + {
533
2fe2d4518618 Reverted some changes in the Tango patch, splitting asm block is simply not supported by llvm.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 531
diff changeset
379 + mov eax[EBP], EAX ;
2fe2d4518618 Reverted some changes in the Tango patch, splitting asm block is simply not supported by llvm.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 531
diff changeset
380 + mov ecx[EBP], ECX ;
2fe2d4518618 Reverted some changes in the Tango patch, splitting asm block is simply not supported by llvm.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 531
diff changeset
381 + mov edx[EBP], EDX ;
2fe2d4518618 Reverted some changes in the Tango patch, splitting asm block is simply not supported by llvm.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 531
diff changeset
382 + mov ebx[EBP], EBX ;
2fe2d4518618 Reverted some changes in the Tango patch, splitting asm block is simply not supported by llvm.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 531
diff changeset
383 + mov ebp[EBP], EBP ;
2fe2d4518618 Reverted some changes in the Tango patch, splitting asm block is simply not supported by llvm.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 531
diff changeset
384 + mov esi[EBP], ESI ;
2fe2d4518618 Reverted some changes in the Tango patch, splitting asm block is simply not supported by llvm.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 531
diff changeset
385 + mov edi[EBP], EDI ;
531
f775ea9d09d3 Updated the tango patch, removed some now unnecessarily complex inline asm.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 529
diff changeset
386 + mov sp[EBP],ESP ;
f775ea9d09d3 Updated the tango patch, removed some now unnecessarily complex inline asm.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 529
diff changeset
387 + }
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
388 + }
755
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
389 + else version (X86_64)
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
390 + {
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
391 + ulong rax,rbx,rcx,rdx,rbp,rsi,rdi,rsp,r10,r11,r12,r13,r14,r15;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
392 + asm
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
393 + {
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
394 + movq rax[RBP], RAX ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
395 + movq rbx[RBP], RBX ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
396 + movq rcx[RBP], RCX ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
397 + movq rdx[RBP], RDX ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
398 + movq rbp[RBP], RBP ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
399 + movq rsi[RBP], RSI ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
400 + movq rdi[RBP], RDI ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
401 + movq rsp[RBP], RSP ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
402 + movq r10[RBP], R10 ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
403 + movq r11[RBP], R11 ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
404 + movq r12[RBP], R12 ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
405 + movq r13[RBP], R13 ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
406 + movq r14[RBP], R14 ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
407 + movq r15[RBP], R15 ;
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
408 + }
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
409 + }
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
410 + else
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
411 + {
533
2fe2d4518618 Reverted some changes in the Tango patch, splitting asm block is simply not supported by llvm.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 531
diff changeset
412 + static assert( false, "Architecture not supported." );
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
413 + }
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
414 + }
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
415 else
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
416 {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
417 asm
755
61c7a96f28c3 Merge in most of x86-64 tango patch.
Christian Kamm <kamm incasoftware de>
parents: 754
diff changeset
418 @@ -2191,6 +2234,10 @@
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
419 {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
420 // nothing to do
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
421 }
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
422 + else version(LDC)
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
423 + {
533
2fe2d4518618 Reverted some changes in the Tango patch, splitting asm block is simply not supported by llvm.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 531
diff changeset
424 + // nothing to do
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
425 + }
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
426 else
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
427 {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
428 asm
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
429 Index: lib/gc/basic/gcbits.d
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
430 ===================================================================
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
431 --- lib/gc/basic/gcbits.d (revision 4071)
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
432 +++ lib/gc/basic/gcbits.d (working copy)
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
433 @@ -39,6 +39,10 @@
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
434 {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
435 // use the unoptimized version
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
436 }
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
437 +else version(LDC)
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
438 +{
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
439 + // ditto
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
440 +}
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
441 else version (D_InlineAsm_X86)
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
442 {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
443 version = Asm86;
685
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
444 Index: lib/build-tango.sh
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
445 ===================================================================
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
446 --- lib/build-tango.sh (revision 4071)
685
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
447 +++ lib/build-tango.sh (working copy)
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
448 @@ -23,7 +23,7 @@
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
449 --debug: Will enable debug info
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
450 --warn: Will enable warnings
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
451 --verbose: Increase verbosity
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
452 - <identifier> is one of {dmd, gdc, mac} and will build libtango.a,
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
453 + <identifier> is one of {dmd, gdc, ldc, mac} and will build libtango.a,
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
454 libgtango.a or universal Mac binaries respectively
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
455
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
456 The script must be called from within lib/ and the resulting
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
457 @@ -105,7 +105,7 @@
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
458 if filter $OBJNAME
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
459 then
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
460 if [ $VERBOSE == 1 ]; then echo "[$DC] $FILENAME"; fi
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
461 - $DC $WARN -c $INLINE $DEBUG $RELEASE -version=Posix -version=Tango -of$OBJNAME $FILENAME
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
462 + $DC $WARN -c $INLINE $DEBUG $RELEASE -version=Tango -of$OBJNAME $FILENAME
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
463 if [ "$?" != 0 ]
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
464 then
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
465 return 1;
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
466 @@ -189,6 +189,9 @@
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
467 gdc)
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
468 build gdmd libgtango.a libgphobos.a
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
469 ;;
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
470 + ldc)
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
471 + build ldc libtango-user-ldc.a build-tango.sh
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
472 + ;;
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
473 mac)
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
474 # build Universal Binary version of the Tango library
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
475 build powerpc-apple-darwin8-gdmd libgtango.a.ppc libgphobos.a.ppc
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
476 Index: tango/text/convert/Layout.d
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
477 ===================================================================
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
478 --- tango/text/convert/Layout.d (revision 4071)
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
479 +++ tango/text/convert/Layout.d (working copy)
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
480 @@ -47,6 +47,12 @@
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
481 alias void* Arg;
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
482 alias va_list ArgList;
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
483 }
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
484 +else version(LDC)
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
485 + {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
486 + private import tango.core.Vararg;
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
487 + alias void* Arg;
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
488 + alias va_list ArgList;
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
489 + }
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
490 else
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
491 {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
492 alias void* Arg;
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
493 @@ -295,7 +301,7 @@
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
494 foreach (i, arg; arguments)
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
495 {
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
496 arglist[i] = args;
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
497 - args += (arg.tsize + int.sizeof - 1) & ~ (int.sizeof - 1);
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
498 + args += (arg.tsize + size_t.sizeof - 1) & ~ (size_t.sizeof - 1);
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
499 }
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
500 }
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
501 return parse (formatStr, arguments, arglist, sink);
685
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
502 Index: tango/net/cluster/CacheInvalidator.d
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
503 ===================================================================
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
504 --- tango/net/cluster/CacheInvalidator.d (revision 4071)
685
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
505 +++ tango/net/cluster/CacheInvalidator.d (working copy)
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
506 @@ -79,7 +79,7 @@
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
507
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
508 *******************************************************************************/
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
509
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
510 -private class InvalidatorPayload : NetworkMessage
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
511 +package class InvalidatorPayload : NetworkMessage
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
512 {
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
513 private char[] key_;
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
514
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
515 Index: tango/core/Vararg.d
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
516 ===================================================================
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
517 --- tango/core/Vararg.d (revision 4071)
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
518 +++ tango/core/Vararg.d (working copy)
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
519 @@ -15,6 +15,10 @@
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
520 {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
521 public import std.stdarg;
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
522 }
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
523 +else version( LDC )
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
524 +{
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
525 + public import ldc.vararg;
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
526 +}
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
527 else
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
528 {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
529 /**
698
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
530 Index: tango/core/sync/Semaphore.d
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
531 ===================================================================
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
532 --- tango/core/sync/Semaphore.d (revision 4071)
698
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
533 +++ tango/core/sync/Semaphore.d (working copy)
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
534 @@ -329,7 +329,8 @@
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
535 {
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
536 synchronized( synComplete )
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
537 {
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
538 - if( numComplete == numConsumers )
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
539 + // if( numComplete == numConsumers )
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
540 + if( numComplete == numToProduce )
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
541 break;
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
542 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
543 Thread.yield();
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
544 @@ -337,9 +338,9 @@
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
545
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
546 synchronized( synComplete )
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
547 {
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
548 - assert( numComplete == numConsumers );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
549 + assert( numComplete == numToProduce );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
550 + // assert( numComplete == numConsumers );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
551 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
552 -
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
553 synchronized( synConsumed )
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
554 {
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
555 assert( numConsumed == numToProduce );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
556 @@ -400,7 +401,8 @@
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
557
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
558 unittest
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
559 {
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
560 + version(darwin){}else{
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
561 testWait();
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
562 - testWaitTimeout();
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
563 + testWaitTimeout();}
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
564 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
565 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
566 Index: tango/core/sync/Condition.d
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
567 ===================================================================
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
568 --- tango/core/sync/Condition.d (revision 4071)
698
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
569 +++ tango/core/sync/Condition.d (working copy)
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
570 @@ -553,8 +553,11 @@
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
571
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
572 unittest
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
573 {
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
574 + version(darwin){}
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
575 + else{
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
576 testNotify();
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
577 testNotifyAll();
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
578 testWaitTimeout();
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
579 + }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
580 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
581 }
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
582 Index: tango/core/Atomic.d
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
583 ===================================================================
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
584 --- tango/core/Atomic.d (revision 4071)
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
585 +++ tango/core/Atomic.d (working copy)
615
c60e122f4ada Fix atomicIncr and atomicDecr. Probably.
Christian Kamm <kamm incasoftware de>
parents: 613
diff changeset
586 @@ -270,6 +270,167 @@
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
587
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
588
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
589 ////////////////////////////////////////////////////////////////////////////////
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
590 +// LDC Atomics Implementation
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
591 +////////////////////////////////////////////////////////////////////////////////
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
592 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
593 +
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
594 +else version( LDC )
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
595 +{
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
596 + import ldc.intrinsics;
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
597 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
598 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
599 + ////////////////////////////////////////////////////////////////////////////
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
600 + // Atomic Load
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
601 + ////////////////////////////////////////////////////////////////////////////
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
602 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
603 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
604 + template atomicLoad( msync ms = msync.seq, T )
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
605 + {
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
606 + T atomicLoad(ref T val)
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
607 + {
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
608 + llvm_memory_barrier(
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
609 + ms == msync.hlb || ms == msync.acq || ms == msync.seq,
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
610 + ms == msync.hsb || ms == msync.acq || ms == msync.seq,
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
611 + ms == msync.slb || ms == msync.rel || ms == msync.seq,
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
612 + ms == msync.ssb || ms == msync.rel || ms == msync.seq,
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
613 + false);
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
614 + static if (isPointerType!(T))
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
615 + {
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
616 + return cast(T)llvm_atomic_load_add!(size_t)(cast(size_t*)&val, 0);
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
617 + }
613
19cbc612380a Add bool-special cases in tango.core.Atomic.
Christian Kamm <kamm incasoftware de>
parents: 609
diff changeset
618 + else static if (is(T == bool))
19cbc612380a Add bool-special cases in tango.core.Atomic.
Christian Kamm <kamm incasoftware de>
parents: 609
diff changeset
619 + {
19cbc612380a Add bool-special cases in tango.core.Atomic.
Christian Kamm <kamm incasoftware de>
parents: 609
diff changeset
620 + return llvm_atomic_load_add!(ubyte)(cast(ubyte*)&val, cast(ubyte)0) ? 1 : 0;
19cbc612380a Add bool-special cases in tango.core.Atomic.
Christian Kamm <kamm incasoftware de>
parents: 609
diff changeset
621 + }
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
622 + else
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
623 + {
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
624 + return llvm_atomic_load_add!(T)(&val, cast(T)0);
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
625 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
626 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
627 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
628 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
629 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
630 + ////////////////////////////////////////////////////////////////////////////
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
631 + // Atomic Store
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
632 + ////////////////////////////////////////////////////////////////////////////
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
633 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
634 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
635 + template atomicStore( msync ms = msync.seq, T )
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
636 + {
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
637 + void atomicStore( ref T val, T newval )
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
638 + {
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
639 + llvm_memory_barrier(
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
640 + ms == msync.hlb || ms == msync.acq || ms == msync.seq,
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
641 + ms == msync.hsb || ms == msync.acq || ms == msync.seq,
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
642 + ms == msync.slb || ms == msync.rel || ms == msync.seq,
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
643 + ms == msync.ssb || ms == msync.rel || ms == msync.seq,
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
644 + false);
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
645 + static if (isPointerType!(T))
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
646 + {
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
647 + llvm_atomic_swap!(size_t)(cast(size_t*)&val, cast(size_t)newval);
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
648 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
649 + else static if (is(T == bool))
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
650 + {
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
651 + llvm_atomic_swap!(ubyte)(cast(ubyte*)&val, newval?1:0);
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
652 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
653 + else
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
654 + {
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
655 + llvm_atomic_swap!(T)(&val, newval);
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
656 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
657 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
658 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
659 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
660 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
661 + ////////////////////////////////////////////////////////////////////////////
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
662 + // Atomic Store If
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
663 + ////////////////////////////////////////////////////////////////////////////
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
664 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
665 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
666 + template atomicStoreIf( msync ms = msync.seq, T )
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
667 + {
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
668 + bool atomicStoreIf( ref T val, T newval, T equalTo )
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
669 + {
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
670 + llvm_memory_barrier(
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
671 + ms == msync.hlb || ms == msync.acq || ms == msync.seq,
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
672 + ms == msync.hsb || ms == msync.acq || ms == msync.seq,
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
673 + ms == msync.slb || ms == msync.rel || ms == msync.seq,
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
674 + ms == msync.ssb || ms == msync.rel || ms == msync.seq,
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
675 + false);
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
676 + T oldval = void;
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
677 + static if (isPointerType!(T))
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
678 + {
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
679 + oldval = cast(T)llvm_atomic_cmp_swap!(size_t)(cast(size_t*)&val, cast(size_t)equalTo, cast(size_t)newval);
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
680 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
681 + else static if (is(T == bool))
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
682 + {
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
683 + oldval = llvm_atomic_cmp_swap!(ubyte)(cast(ubyte*)&val, equalTo?1:0, newval?1:0)?0:1;
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
684 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
685 + else
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
686 + {
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
687 + oldval = llvm_atomic_cmp_swap!(T)(&val, equalTo, newval);
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
688 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
689 + return oldval == equalTo;
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
690 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
691 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
692 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
693 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
694 + ////////////////////////////////////////////////////////////////////////////
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
695 + // Atomic Increment
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
696 + ////////////////////////////////////////////////////////////////////////////
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
697 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
698 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
699 + template atomicIncrement( msync ms = msync.seq, T )
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
700 + {
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
701 + //
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
702 + // NOTE: This operation is only valid for integer or pointer types
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
703 + //
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
704 + static assert( isValidNumericType!(T) );
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
705 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
706 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
707 + T atomicIncrement( ref T val )
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
708 + {
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
709 + static if (isPointerType!(T))
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
710 + {
615
c60e122f4ada Fix atomicIncr and atomicDecr. Probably.
Christian Kamm <kamm incasoftware de>
parents: 613
diff changeset
711 + llvm_atomic_load_add!(size_t)(cast(size_t*)&val, 1);
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
712 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
713 + else
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
714 + {
615
c60e122f4ada Fix atomicIncr and atomicDecr. Probably.
Christian Kamm <kamm incasoftware de>
parents: 613
diff changeset
715 + llvm_atomic_load_add!(T)(&val, cast(T)1);
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
716 + }
615
c60e122f4ada Fix atomicIncr and atomicDecr. Probably.
Christian Kamm <kamm incasoftware de>
parents: 613
diff changeset
717 + return val;
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
718 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
719 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
720 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
721 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
722 + ////////////////////////////////////////////////////////////////////////////
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
723 + // Atomic Decrement
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
724 + ////////////////////////////////////////////////////////////////////////////
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
725 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
726 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
727 + template atomicDecrement( msync ms = msync.seq, T )
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
728 + {
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
729 + //
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
730 + // NOTE: This operation is only valid for integer or pointer types
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
731 + //
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
732 + static assert( isValidNumericType!(T) );
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
733 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
734 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
735 + T atomicDecrement( ref T val )
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
736 + {
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
737 + static if (isPointerType!(T))
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
738 + {
615
c60e122f4ada Fix atomicIncr and atomicDecr. Probably.
Christian Kamm <kamm incasoftware de>
parents: 613
diff changeset
739 + llvm_atomic_load_sub!(size_t)(cast(size_t*)&val, 1);
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
740 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
741 + else
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
742 + {
615
c60e122f4ada Fix atomicIncr and atomicDecr. Probably.
Christian Kamm <kamm incasoftware de>
parents: 613
diff changeset
743 + llvm_atomic_load_sub!(T)(&val, cast(T)1);
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
744 + }
615
c60e122f4ada Fix atomicIncr and atomicDecr. Probably.
Christian Kamm <kamm incasoftware de>
parents: 613
diff changeset
745 + return val;
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
746 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
747 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
748 +}
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
749 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
750 +////////////////////////////////////////////////////////////////////////////////
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
751 // x86 Atomic Function Implementation
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
752 ////////////////////////////////////////////////////////////////////////////////
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
753
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
754 @@ -282,9 +443,9 @@
698
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
755 {
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
756 pragma( msg, "tango.core.Atomic: using IA-32 inline asm" );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
757 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
758 -
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
759 + version(darwin){}
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
760 + else { version = Has64BitCAS; }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
761 version = Has32BitOps;
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
762 - version = Has64BitCAS;
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
763 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
764 version( X86_64 )
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
765 {
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
766 Index: tango/math/IEEE.d
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
767 ===================================================================
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
768 --- tango/math/IEEE.d (revision 4071)
698
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
769 +++ tango/math/IEEE.d (working copy)
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
770 @@ -1543,7 +1543,12 @@
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
771 else return 0;
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
772 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
773 } else {
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
774 - assert(0, "Unsupported");
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
775 + static if (is(X==real)){
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
776 + static assert(0, X.stringof~" unsupported by feqrel");
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
777 + } else {
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
778 + int res=feqrel(cast(real)x,cast(real)y);
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
779 + return ((res>X.mant_dig)?X.mant_dig:res);
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
780 + }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
781 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
782 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
783
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
784 Index: tango/math/Math.d
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
785 ===================================================================
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
786 --- tango/math/Math.d (revision 4071)
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
787 +++ tango/math/Math.d (working copy)
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
788 @@ -76,6 +76,14 @@
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
789 version = DigitalMars_D_InlineAsm_X86;
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
790 }
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
791 }
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
792 +else version(LDC)
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
793 +{
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
794 + import ldc.intrinsics;
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
795 + version(X86)
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
796 + {
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
797 + version = LDC_X86;
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
798 + }
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
799 +}
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
800
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
801 /*
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
802 * Constants
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
803 @@ -298,6 +306,24 @@
444
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
804 * Bugs:
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
805 * Results are undefined if |x| >= $(POWER 2,64).
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
806 */
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
807 +version(LDC)
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
808 +{
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
809 + alias llvm_cos_f32 cos;
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
810 + alias llvm_cos_f64 cos;
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
811 + version(X86)
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
812 + {
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
813 + alias llvm_cos_f80 cos;
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
814 + }
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
815 + else
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
816 + {
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
817 + real cos(real x)
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
818 + {
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
819 + return tango.stdc.math.cosl(x);
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
820 + }
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
821 + }
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
822 +}
444
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
823 +else
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
824 +{
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
825 real cos(real x) /* intrinsic */
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
826 {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
827 version(D_InlineAsm_X86)
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
828 @@ -313,6 +339,7 @@
444
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
829 return tango.stdc.math.cosl(x);
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
830 }
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
831 }
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
832 +}
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
833
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
834 debug(UnitTest) {
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
835 unittest {
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
836 @@ -333,6 +360,24 @@
444
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
837 * Bugs:
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
838 * Results are undefined if |x| >= $(POWER 2,64).
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
839 */
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
840 +version(LDC)
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
841 +{
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
842 + alias llvm_sin_f32 sin;
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
843 + alias llvm_sin_f64 sin;
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
844 + version(X86)
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
845 + {
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
846 + alias llvm_sin_f80 sin;
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
847 + }
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
848 + else
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
849 + {
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
850 + real sin(real x)
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
851 + {
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
852 + return tango.stdc.math.sinl(x);
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
853 + }
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
854 + }
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
855 +}
444
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
856 +else
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
857 +{
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
858 real sin(real x) /* intrinsic */
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
859 {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
860 version(D_InlineAsm_X86)
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
861 @@ -348,6 +393,7 @@
444
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
862 return tango.stdc.math.sinl(x);
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
863 }
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
864 }
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
865 +}
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
866
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
867 debug(UnitTest) {
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
868 unittest {
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
869 @@ -374,7 +420,11 @@
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
870 {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
871 version (GNU) {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
872 return tanl(x);
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
873 - } else {
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
874 + }
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
875 + else version(LDC) {
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
876 + return tango.stdc.math.tanl(x);
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
877 + }
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
878 + else {
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
879 asm
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
880 {
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
881 fld x[EBP] ; // load theta
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
882 @@ -947,6 +997,25 @@
444
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
883 * <tr> <td> +&infin; <td> +&infin; <td> no
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
884 * )
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
885 */
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
886 +version(LDC)
444
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
887 +{
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
888 + alias llvm_sqrt_f32 sqrt;
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
889 + alias llvm_sqrt_f64 sqrt;
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
890 + version(X86)
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
891 + {
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
892 + alias llvm_sqrt_f80 sqrt;
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
893 + }
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
894 + else
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
895 + {
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
896 + real sqrt(real x)
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
897 + {
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
898 + return tango.stdc.math.sqrtl(x);
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
899 + }
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
900 + }
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
901 +}
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
902 +else
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
903 +{
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
904 +
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
905 float sqrt(float x) /* intrinsic */
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
906 {
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
907 version(D_InlineAsm_X86)
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
908 @@ -995,6 +1064,8 @@
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
909 }
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
910 }
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
911
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
912 +}
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
913 +
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
914 /** ditto */
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
915 creal sqrt(creal z)
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
916 {
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
917 @@ -1477,7 +1548,14 @@
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
918 }
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
919 }
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
920 }
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
921 - return tango.stdc.math.powl(x, y);
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
922 + version(LDC_X86)
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
923 + {
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
924 + return llvm_pow_f80(x, y);
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
925 + }
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
926 + else
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
927 + {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
928 + return tango.stdc.math.powl(x, y);
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
929 + }
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
930 }
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
931
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
932 debug(UnitTest) {
698
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
933 Index: tango/stdc/posix/sys/types.d
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
934 ===================================================================
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
935 --- tango/stdc/posix/sys/types.d (revision 4071)
698
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
936 +++ tango/stdc/posix/sys/types.d (working copy)
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
937 @@ -422,7 +422,11 @@
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
938 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
939 else version( darwin )
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
940 {
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
941 - struct pthread_spinlock_t;
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
942 + version (LDC)
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
943 + alias void* pthread_spinlock_t;
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
944 +
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
945 + else
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
946 + struct pthread_spinlock_t;
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
947 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
948 else version( freebsd )
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
949 {
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
950 Index: tango/stdc/stdlib.d
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
951 ===================================================================
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
952 --- tango/stdc/stdlib.d (revision 4071)
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
953 +++ tango/stdc/stdlib.d (working copy)
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
954 @@ -94,6 +94,11 @@
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
955 {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
956 void* alloca(size_t size);
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
957 }
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
958 +else version( LDC )
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
959 +{
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
960 + pragma(alloca)
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
961 + void* alloca(size_t size);
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
962 +}
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
963 else version( GNU )
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
964 {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
965 private import gcc.builtins;
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
966 Index: tango/stdc/stdarg.d
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
967 ===================================================================
754
f34b552619fd Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents: 698
diff changeset
968 --- tango/stdc/stdarg.d (revision 4071)
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
969 +++ tango/stdc/stdarg.d (working copy)
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
970 @@ -13,6 +13,10 @@
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
971 {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
972 public import std.c.stdarg;
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
973 }
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
974 +else version( LDC )
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
975 +{
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
976 + public import ldc.cstdarg;
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
977 +}
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
978 else
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
979 {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
980 alias void* va_list;