Mercurial > projects > ldc
annotate runtime/ldc.diff @ 754:f34b552619fd
Update tango patch to latest tango revision.
author | Christian Kamm <kamm incasoftware de> |
---|---|
date | Sat, 08 Nov 2008 10:22:08 +0100 |
parents | f0ba5d37dd86 |
children | 61c7a96f28c3 |
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 ) |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
99 @@ -256,8 +257,29 @@ |
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 + } |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
120 + else |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
121 + { |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
122 + static assert( false, "Architecture not supported." ); |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
123 + } |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
124 + } |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
125 + else version( D_InlineAsm_X86 ) |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
126 + { |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
127 asm |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
128 { |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
129 pushad; |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
130 @@ -298,7 +320,7 @@ |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
131 status = sigdelset( &sigres, SIGUSR2 ); |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
132 assert( status == 0 ); |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
133 |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
134 - status = sem_post( &suspendCount ); |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
135 + status = sem_post( suspendCountPtr ); |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
136 assert( status == 0 ); |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
137 |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
138 sigsuspend( &sigres ); |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
139 @@ -309,8 +331,12 @@ |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
140 } |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
141 } |
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 - version( D_InlineAsm_X86 ) |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
144 + version( LDC) |
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 + // nothing to pop |
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 + else version( D_InlineAsm_X86 ) |
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 asm |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
151 { |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
152 popad; |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
153 @@ -1584,8 +1610,14 @@ |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
154 status = sigaction( SIGUSR2, &sigusr2, null ); |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
155 assert( status == 0 ); |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
156 |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
157 - status = sem_init( &suspendCount, 0, 0 ); |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
158 - assert( status == 0 ); |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
159 + version(darwin){ |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
160 + 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
|
161 + assert( suspendCountPtr !is null ); |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
162 + }else { |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
163 + status=sem_init(&suspendCount,0,0); |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
164 + suspendCountPtr=&suspendCount; |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
165 + assert(status==0); |
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 |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
168 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
|
169 assert( status == 0 ); |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
170 @@ -1793,7 +1825,7 @@ |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
171 // 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
|
172 // 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
|
173 // current approach. |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
174 - sem_wait( &suspendCount ); |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
175 + sem_wait( suspendCountPtr ); |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
176 } |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
177 else if( !t.m_lock ) |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
178 { |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
179 @@ -2298,6 +2330,13 @@ |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
180 version = AsmPPC_Posix; |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
181 } |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
182 |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
183 + version( LLVM_InlineAsm_X86 ) |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
184 + { |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
185 + version( Win32 ) |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
186 + version = LLVM_AsmX86_Win32; |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
187 + else version( Posix ) |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
188 + version = LLVM_AsmX86_Posix; |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
189 + } |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
190 |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
191 version( Posix ) |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
192 { |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
193 @@ -2308,6 +2347,8 @@ |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
194 version( AsmX86_Win32 ) {} else |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
195 version( AsmX86_Posix ) {} else |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
196 version( AsmPPC_Posix ) {} else |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
197 + version( LLVM_AsmX86_Win32 ) {} else |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
198 + version( LLVM_AsmX86_Posix ) {} else |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
199 { |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
200 // NOTE: The ucontext implementation requires architecture specific |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
201 // data definitions to operate so testing for it must be done |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
202 @@ -2318,10 +2359,10 @@ |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
203 import tango.stdc.posix.ucontext; |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
204 } |
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 - |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
207 - const size_t PAGESIZE; |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
208 } |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
209 |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
210 +// 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
|
211 +const size_t PAGESIZE; |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
212 |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
213 static this() |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
214 { |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
215 @@ -2348,7 +2389,7 @@ |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
216 } |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
217 } |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
218 |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
219 - |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
220 +extern(C) int printf(char*, ...); |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
221 //////////////////////////////////////////////////////////////////////////////// |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
222 // Fiber Entry Point and Context Switch |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
223 //////////////////////////////////////////////////////////////////////////////// |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
224 @@ -2462,6 +2503,22 @@ |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
225 ret; |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
226 } |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
227 } |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
228 + else version( LLVM_AsmX86_Posix ) |
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 + asm |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
231 + { |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
232 + // clobber registers to save |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
233 + inc EBX; |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
234 + inc ESI; |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
235 + inc EDI; |
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 + // store oldp again with more accurate address |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
238 + mov EAX, oldp; |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
239 + mov [EAX], ESP; |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
240 + // load newp to begin context switch |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
241 + mov ESP, newp; |
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 + } |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
244 else static if( is( ucontext_t ) ) |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
245 { |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
246 Fiber cfib = Fiber.getThis(); |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
247 @@ -3127,6 +3184,16 @@ |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
248 push( 0x00000000 ); // ESI |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
249 push( 0x00000000 ); // EDI |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
250 } |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
251 + else version( LLVM_AsmX86_Posix ) |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
252 + { |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
253 + push( cast(size_t) &fiber_entryPoint ); // EIP |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
254 + push( 0x00000000 ); // newp |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
255 + push( 0x00000000 ); // oldp |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
256 + push( 0x00000000 ); // EBP |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
257 + push( 0x00000000 ); // EBX |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
258 + push( 0x00000000 ); // ESI |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
259 + push( 0x00000000 ); // EDI |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
260 + } |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
261 else version( AsmPPC_Posix ) |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
262 { |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
263 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
|
264 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
|
265 =================================================================== |
754
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
266 --- 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
|
267 +++ 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
|
268 @@ -65,6 +65,13 @@ |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
269 } |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
270 |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
271 |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
272 +struct BlkInfo |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
273 +{ |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
274 + void* base; |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
275 + size_t size; |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
276 + uint attr; |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
277 +} |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
278 + |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
279 private |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
280 { |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
281 enum BlkAttr : uint |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
282 @@ -75,13 +82,6 @@ |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
283 ALL_BITS = 0b1111_1111 |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
284 } |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
285 |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
286 - struct BlkInfo |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
287 - { |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
288 - void* base; |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
289 - size_t size; |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
290 - uint attr; |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
291 - } |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
292 - |
79cbe5034fec
Tango patch: xml document fixes and symbol visibility in gc
Christian Kamm <kamm incasoftware de>
parents:
615
diff
changeset
|
293 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
|
294 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
|
295 |
540
9312024a7053
Gah, missed something still. I'll test properly next time ;)
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
539
diff
changeset
|
296 @@ -2178,6 +2178,28 @@ |
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
|
297 __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
|
298 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
|
299 } |
663
6aaa3d3c1183
First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents:
647
diff
changeset
|
300 + 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
|
301 + { |
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
|
302 + 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
|
303 + { |
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
|
304 + 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
|
305 + 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
|
306 + { |
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
|
307 + 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
|
308 + 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
|
309 + 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
|
310 + 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
|
311 + 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
|
312 + 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
|
313 + 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
|
314 + 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
|
315 + } |
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
|
316 + } |
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
|
317 + 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
|
318 + { |
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
|
319 + 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
|
320 + } |
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
|
321 + } |
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
|
322 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
|
323 { |
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
|
324 asm |
540
9312024a7053
Gah, missed something still. I'll test properly next time ;)
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
539
diff
changeset
|
325 @@ -2191,6 +2213,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
|
326 { |
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
|
327 // 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
|
328 } |
663
6aaa3d3c1183
First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents:
647
diff
changeset
|
329 + 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
|
330 + { |
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
|
331 + // 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
|
332 + } |
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
|
333 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
|
334 { |
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
|
335 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
|
336 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
|
337 =================================================================== |
754
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
338 --- 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
|
339 +++ 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
|
340 @@ -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
|
341 { |
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
|
342 // 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
|
343 } |
663
6aaa3d3c1183
First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents:
647
diff
changeset
|
344 +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
|
345 +{ |
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
|
346 + // 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
|
347 +} |
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
|
348 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
|
349 { |
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
|
350 version = Asm86; |
685
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
351 Index: lib/build-tango.sh |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
352 =================================================================== |
754
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
353 --- lib/build-tango.sh (revision 4071) |
685
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
354 +++ lib/build-tango.sh (working copy) |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
355 @@ -23,7 +23,7 @@ |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
356 --debug: Will enable debug info |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
357 --warn: Will enable warnings |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
358 --verbose: Increase verbosity |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
359 - <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
|
360 + <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
|
361 libgtango.a or universal Mac binaries respectively |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
362 |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
363 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
|
364 @@ -105,7 +105,7 @@ |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
365 if filter $OBJNAME |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
366 then |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
367 if [ $VERBOSE == 1 ]; then echo "[$DC] $FILENAME"; fi |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
368 - $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
|
369 + $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
|
370 if [ "$?" != 0 ] |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
371 then |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
372 return 1; |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
373 @@ -189,6 +189,9 @@ |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
374 gdc) |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
375 build gdmd libgtango.a libgphobos.a |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
376 ;; |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
377 + ldc) |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
378 + 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
|
379 + ;; |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
380 mac) |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
381 # build Universal Binary version of the Tango library |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
382 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
|
383 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
|
384 =================================================================== |
754
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
385 --- 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
|
386 +++ 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
|
387 @@ -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
|
388 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
|
389 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
|
390 } |
663
6aaa3d3c1183
First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents:
647
diff
changeset
|
391 +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
|
392 + { |
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
|
393 + 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
|
394 + 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
|
395 + 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
|
396 + } |
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
|
397 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
|
398 { |
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
|
399 alias void* Arg; |
754
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
400 @@ -295,7 +301,7 @@ |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
401 foreach (i, arg; arguments) |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
402 { |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
403 arglist[i] = args; |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
404 - 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
|
405 + 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
|
406 } |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
407 } |
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
408 return parse (formatStr, arguments, arglist, sink); |
685
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
409 Index: tango/net/cluster/CacheInvalidator.d |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
410 =================================================================== |
754
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
411 --- tango/net/cluster/CacheInvalidator.d (revision 4071) |
685
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
412 +++ tango/net/cluster/CacheInvalidator.d (working copy) |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
413 @@ -79,7 +79,7 @@ |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
414 |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
415 *******************************************************************************/ |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
416 |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
417 -private class InvalidatorPayload : NetworkMessage |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
418 +package class InvalidatorPayload : NetworkMessage |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
419 { |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
420 private char[] key_; |
8d7e58801c82
Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents:
665
diff
changeset
|
421 |
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
|
422 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
|
423 =================================================================== |
754
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
424 --- 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
|
425 +++ 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
|
426 @@ -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
|
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 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
|
429 } |
663
6aaa3d3c1183
First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents:
647
diff
changeset
|
430 +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
|
431 +{ |
663
6aaa3d3c1183
First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents:
647
diff
changeset
|
432 + 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
|
433 +} |
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 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
|
435 { |
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 /** |
698
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
437 Index: tango/core/sync/Semaphore.d |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
438 =================================================================== |
754
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
439 --- tango/core/sync/Semaphore.d (revision 4071) |
698
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
440 +++ tango/core/sync/Semaphore.d (working copy) |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
441 @@ -329,7 +329,8 @@ |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
442 { |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
443 synchronized( synComplete ) |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
444 { |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
445 - if( numComplete == numConsumers ) |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
446 + // if( numComplete == numConsumers ) |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
447 + if( numComplete == numToProduce ) |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
448 break; |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
449 } |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
450 Thread.yield(); |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
451 @@ -337,9 +338,9 @@ |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
452 |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
453 synchronized( synComplete ) |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
454 { |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
455 - assert( numComplete == numConsumers ); |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
456 + assert( numComplete == numToProduce ); |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
457 + // assert( numComplete == numConsumers ); |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
458 } |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
459 - |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
460 synchronized( synConsumed ) |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
461 { |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
462 assert( numConsumed == numToProduce ); |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
463 @@ -400,7 +401,8 @@ |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
464 |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
465 unittest |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
466 { |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
467 + version(darwin){}else{ |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
468 testWait(); |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
469 - testWaitTimeout(); |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
470 + testWaitTimeout();} |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
471 } |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
472 } |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
473 Index: tango/core/sync/Condition.d |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
474 =================================================================== |
754
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
475 --- tango/core/sync/Condition.d (revision 4071) |
698
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
476 +++ tango/core/sync/Condition.d (working copy) |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
477 @@ -553,8 +553,11 @@ |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
478 |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
479 unittest |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
480 { |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
481 + version(darwin){} |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
482 + else{ |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
483 testNotify(); |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
484 testNotifyAll(); |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
485 testWaitTimeout(); |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
486 + } |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
487 } |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
488 } |
529
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
489 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
|
490 =================================================================== |
754
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
491 --- 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
|
492 +++ tango/core/Atomic.d (working copy) |
615
c60e122f4ada
Fix atomicIncr and atomicDecr. Probably.
Christian Kamm <kamm incasoftware de>
parents:
613
diff
changeset
|
493 @@ -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
|
494 |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
495 |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
496 //////////////////////////////////////////////////////////////////////////////// |
663
6aaa3d3c1183
First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents:
647
diff
changeset
|
497 +// 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
|
498 +//////////////////////////////////////////////////////////////////////////////// |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
499 + |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
500 + |
663
6aaa3d3c1183
First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents:
647
diff
changeset
|
501 +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
|
502 +{ |
663
6aaa3d3c1183
First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents:
647
diff
changeset
|
503 + 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
|
504 + |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
505 + |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
506 + //////////////////////////////////////////////////////////////////////////// |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
507 + // 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
|
508 + //////////////////////////////////////////////////////////////////////////// |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
509 + |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
510 + |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
511 + 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
|
512 + { |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
513 + 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
|
514 + { |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
515 + 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
|
516 + 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
|
517 + 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
|
518 + 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
|
519 + 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
|
520 + false); |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
521 + 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
|
522 + { |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
523 + 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
|
524 + } |
613
19cbc612380a
Add bool-special cases in tango.core.Atomic.
Christian Kamm <kamm incasoftware de>
parents:
609
diff
changeset
|
525 + else static if (is(T == bool)) |
19cbc612380a
Add bool-special cases in tango.core.Atomic.
Christian Kamm <kamm incasoftware de>
parents:
609
diff
changeset
|
526 + { |
19cbc612380a
Add bool-special cases in tango.core.Atomic.
Christian Kamm <kamm incasoftware de>
parents:
609
diff
changeset
|
527 + 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
|
528 + } |
529
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
529 + else |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
530 + { |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
531 + 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
|
532 + } |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
533 + } |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
534 + } |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
535 + |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
536 + |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
537 + //////////////////////////////////////////////////////////////////////////// |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
538 + // 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
|
539 + //////////////////////////////////////////////////////////////////////////// |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
540 + |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
541 + |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
542 + 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
|
543 + { |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
544 + 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
|
545 + { |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
546 + 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
|
547 + 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
|
548 + 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
|
549 + 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
|
550 + 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
|
551 + false); |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
552 + 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
|
553 + { |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
554 + 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
|
555 + } |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
556 + 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
|
557 + { |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
558 + 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
|
559 + } |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
560 + else |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
561 + { |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
562 + 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
|
563 + } |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
564 + } |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
565 + } |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
566 + |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
567 + |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
568 + //////////////////////////////////////////////////////////////////////////// |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
569 + // 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
|
570 + //////////////////////////////////////////////////////////////////////////// |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
571 + |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
572 + |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
573 + 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
|
574 + { |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
575 + 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
|
576 + { |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
577 + 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
|
578 + 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
|
579 + 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
|
580 + 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
|
581 + 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
|
582 + false); |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
583 + 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
|
584 + 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
|
585 + { |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
586 + 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
|
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 + 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
|
589 + { |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
590 + 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
|
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 + else |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
593 + { |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
594 + 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
|
595 + } |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
596 + 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
|
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 + |
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 + // 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
|
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 + |
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 + 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
|
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 + // |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
609 + // 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
|
610 + // |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
611 + 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
|
612 + |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
613 + |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
614 + 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
|
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 + 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
|
617 + { |
615
c60e122f4ada
Fix atomicIncr and atomicDecr. Probably.
Christian Kamm <kamm incasoftware de>
parents:
613
diff
changeset
|
618 + 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
|
619 + } |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
620 + else |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
621 + { |
615
c60e122f4ada
Fix atomicIncr and atomicDecr. Probably.
Christian Kamm <kamm incasoftware de>
parents:
613
diff
changeset
|
622 + 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
|
623 + } |
615
c60e122f4ada
Fix atomicIncr and atomicDecr. Probably.
Christian Kamm <kamm incasoftware de>
parents:
613
diff
changeset
|
624 + 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
|
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 + // 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
|
631 + //////////////////////////////////////////////////////////////////////////// |
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 + 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
|
635 + { |
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 + // 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
|
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 + 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
|
640 + |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
641 + |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
642 + 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
|
643 + { |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
644 + 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
|
645 + { |
615
c60e122f4ada
Fix atomicIncr and atomicDecr. Probably.
Christian Kamm <kamm incasoftware de>
parents:
613
diff
changeset
|
646 + 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
|
647 + } |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
648 + else |
cef0cbcf7d22
Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
454
diff
changeset
|
649 + { |
615
c60e122f4ada
Fix atomicIncr and atomicDecr. Probably.
Christian Kamm <kamm incasoftware de>
parents:
613
diff
changeset
|
650 + 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
|
651 + } |
615
c60e122f4ada
Fix atomicIncr and atomicDecr. Probably.
Christian Kamm <kamm incasoftware de>
parents:
613
diff
changeset
|
652 + 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
|
653 + } |
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 +} |
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 // 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
|
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 |
754
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
661 @@ -282,9 +443,9 @@ |
698
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
662 { |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
663 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
|
664 } |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
665 - |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
666 + version(darwin){} |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
667 + else { version = Has64BitCAS; } |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
668 version = Has32BitOps; |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
669 - version = Has64BitCAS; |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
670 } |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
671 version( X86_64 ) |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
672 { |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
673 Index: tango/math/IEEE.d |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
674 =================================================================== |
754
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
675 --- tango/math/IEEE.d (revision 4071) |
698
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
676 +++ tango/math/IEEE.d (working copy) |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
677 @@ -1543,7 +1543,12 @@ |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
678 else return 0; |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
679 } |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
680 } else { |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
681 - assert(0, "Unsupported"); |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
682 + static if (is(X==real)){ |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
683 + static assert(0, X.stringof~" unsupported by feqrel"); |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
684 + } else { |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
685 + int res=feqrel(cast(real)x,cast(real)y); |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
686 + return ((res>X.mant_dig)?X.mant_dig:res); |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
687 + } |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
688 } |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
689 } |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
690 |
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
|
691 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
|
692 =================================================================== |
754
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
693 --- 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
|
694 +++ 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
|
695 @@ -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
|
696 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
|
697 } |
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
|
698 } |
663
6aaa3d3c1183
First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents:
647
diff
changeset
|
699 +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
|
700 +{ |
663
6aaa3d3c1183
First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents:
647
diff
changeset
|
701 + 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
|
702 + 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
|
703 + { |
663
6aaa3d3c1183
First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents:
647
diff
changeset
|
704 + 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
|
705 + } |
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
|
706 +} |
445
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
707 |
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
|
708 /* |
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
|
709 * Constants |
445
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
710 @@ -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
|
711 * Bugs: |
f2b5f86348ef
Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
443
diff
changeset
|
712 * 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
|
713 */ |
663
6aaa3d3c1183
First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents:
647
diff
changeset
|
714 +version(LDC) |
445
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
715 +{ |
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
716 + 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
|
717 + 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
|
718 + version(X86) |
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
719 + { |
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
720 + 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
|
721 + } |
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
722 + else |
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
723 + { |
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
724 + 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
|
725 + { |
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
726 + 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
|
727 + } |
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
728 + } |
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
729 +} |
444
f2b5f86348ef
Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
443
diff
changeset
|
730 +else |
f2b5f86348ef
Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
443
diff
changeset
|
731 +{ |
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
|
732 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
|
733 { |
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
|
734 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
|
735 @@ -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
|
736 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
|
737 } |
f2b5f86348ef
Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
443
diff
changeset
|
738 } |
f2b5f86348ef
Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
443
diff
changeset
|
739 +} |
f2b5f86348ef
Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
443
diff
changeset
|
740 |
f2b5f86348ef
Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
443
diff
changeset
|
741 debug(UnitTest) { |
f2b5f86348ef
Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
443
diff
changeset
|
742 unittest { |
445
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
743 @@ -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
|
744 * Bugs: |
f2b5f86348ef
Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
443
diff
changeset
|
745 * 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
|
746 */ |
663
6aaa3d3c1183
First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents:
647
diff
changeset
|
747 +version(LDC) |
445
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
748 +{ |
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
749 + 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
|
750 + 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
|
751 + version(X86) |
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
752 + { |
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
753 + 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
|
754 + } |
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
755 + else |
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
756 + { |
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
757 + 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
|
758 + { |
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
759 + 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
|
760 + } |
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
761 + } |
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
762 +} |
444
f2b5f86348ef
Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
443
diff
changeset
|
763 +else |
f2b5f86348ef
Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
443
diff
changeset
|
764 +{ |
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
|
765 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
|
766 { |
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
|
767 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
|
768 @@ -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
|
769 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
|
770 } |
f2b5f86348ef
Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
443
diff
changeset
|
771 } |
f2b5f86348ef
Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
443
diff
changeset
|
772 +} |
f2b5f86348ef
Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
443
diff
changeset
|
773 |
f2b5f86348ef
Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
443
diff
changeset
|
774 debug(UnitTest) { |
f2b5f86348ef
Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
443
diff
changeset
|
775 unittest { |
445
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
776 @@ -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
|
777 { |
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
|
778 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
|
779 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
|
780 - } 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
|
781 + } |
663
6aaa3d3c1183
First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents:
647
diff
changeset
|
782 + 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
|
783 + 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
|
784 + } |
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
785 + 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
|
786 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
|
787 { |
445
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
788 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
|
789 @@ -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
|
790 * <tr> <td> +∞ <td> +∞ <td> no |
f2b5f86348ef
Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
443
diff
changeset
|
791 * ) |
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
|
792 */ |
663
6aaa3d3c1183
First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents:
647
diff
changeset
|
793 +version(LDC) |
444
f2b5f86348ef
Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
443
diff
changeset
|
794 +{ |
445
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
795 + 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
|
796 + 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
|
797 + 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
|
798 + { |
445
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
799 + 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
|
800 + } |
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 + 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
|
802 + { |
445
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
803 + 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
|
804 + { |
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
805 + 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
|
806 + } |
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
|
807 + } |
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 +else |
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
810 +{ |
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
811 + |
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
812 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
|
813 { |
445
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
814 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
|
815 @@ -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
|
816 } |
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
|
817 } |
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
|
818 |
445
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
819 +} |
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 /** ditto */ |
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
822 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
|
823 { |
445
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
824 @@ -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
|
825 } |
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 } |
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
|
828 - return tango.stdc.math.powl(x, y); |
663
6aaa3d3c1183
First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents:
647
diff
changeset
|
829 + 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
|
830 + { |
445
cc40db549aea
Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
444
diff
changeset
|
831 + 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
|
832 + } |
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
|
833 + 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
|
834 + { |
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
|
835 + 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
|
836 + } |
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
|
837 } |
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
|
838 |
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 debug(UnitTest) { |
698
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
840 Index: tango/stdc/posix/sys/types.d |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
841 =================================================================== |
754
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
842 --- tango/stdc/posix/sys/types.d (revision 4071) |
698
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
843 +++ tango/stdc/posix/sys/types.d (working copy) |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
844 @@ -422,7 +422,11 @@ |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
845 } |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
846 else version( darwin ) |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
847 { |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
848 - struct pthread_spinlock_t; |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
849 + version (LDC) |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
850 + alias void* pthread_spinlock_t; |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
851 + |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
852 + else |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
853 + struct pthread_spinlock_t; |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
854 } |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
855 else version( freebsd ) |
f0ba5d37dd86
Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents:
685
diff
changeset
|
856 { |
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
|
857 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
|
858 =================================================================== |
754
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
859 --- 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
|
860 +++ 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
|
861 @@ -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
|
862 { |
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
|
863 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
|
864 } |
663
6aaa3d3c1183
First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents:
647
diff
changeset
|
865 +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
|
866 +{ |
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
|
867 + 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
|
868 + 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
|
869 +} |
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 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
|
871 { |
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 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
|
873 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
|
874 =================================================================== |
754
f34b552619fd
Update tango patch to latest tango revision.
Christian Kamm <kamm incasoftware de>
parents:
698
diff
changeset
|
875 --- 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
|
876 +++ 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
|
877 @@ -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
|
878 { |
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 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
|
880 } |
663
6aaa3d3c1183
First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents:
647
diff
changeset
|
881 +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
|
882 +{ |
663
6aaa3d3c1183
First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents:
647
diff
changeset
|
883 + 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
|
884 +} |
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 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
|
886 { |
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
|
887 alias void* va_list; |