annotate runtime/ldc.diff @ 715:30b42a283c8e

Removed TypeOpaque from DMD. Changed runtime functions taking opaque[] to void[]. Implemented proper type painting, to avoid "resizing" array casts in runtime calls that previously took opaque[]. Implemented dynamic arrays as first class types, this implements proper ABI for these types on x86. Added dwarf region end after call to assert function, fixes some problems with llvm not allowing this to be missing. Reverted change to WithStatement from rev [704] it breaks MiniD, mini/with2.d needs to be fixed some other way... Fixed tango bug 1339 in runtime, problem with _adReverseChar on invalid UTF-8. Disabled .bc generation in the compiler runtime part, genobj.d triggers some llvm bug when using debug info. the .o seems to work fine.
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Wed, 22 Oct 2008 14:55:33 +0200
parents f0ba5d37dd86
children f34b552619fd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
1 Index: object.di
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
2 ===================================================================
685
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
3 --- object.di (revision 4002)
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
636
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
15 Index: lib/common/tango/core/BitManip.d
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
16 ===================================================================
685
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
17 --- lib/common/tango/core/BitManip.d (revision 4002)
636
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
18 +++ lib/common/tango/core/BitManip.d (working copy)
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
19 @@ -171,6 +171,10 @@
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
20 */
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
21 uint outpl( uint port_address, uint value );
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
22 }
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
23 +else version( LDC )
636
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
24 +{
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
25 + public import ldc.bitmanip;
636
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
26 +}
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
27 else
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
28 {
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
29 public import std.intrinsic;
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
30 Index: lib/common/tango/core/Thread.d
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
31 ===================================================================
685
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
32 --- lib/common/tango/core/Thread.d (revision 4002)
636
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
33 +++ lib/common/tango/core/Thread.d (working copy)
698
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
34 @@ -235,6 +235,7 @@
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
35 // used to track the number of suspended threads
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
36 //
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
37 sem_t suspendCount;
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
38 + sem_t* suspendCountPtr;
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
39
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
40
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
41 extern (C) void thread_suspendHandler( int sig )
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
42 @@ -244,8 +245,29 @@
636
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
43 }
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
44 body
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
45 {
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
46 - version( D_InlineAsm_X86 )
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
47 + version( LDC)
636
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
48 {
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
49 + version(X86)
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
50 + {
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
51 + uint eax,ecx,edx,ebx,ebp,esi,edi;
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
52 + asm
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
53 + {
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
54 + mov eax[EBP], EAX ;
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
55 + mov ecx[EBP], ECX ;
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
56 + mov edx[EBP], EDX ;
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
57 + mov ebx[EBP], EBX ;
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
58 + mov ebp[EBP], EBP ;
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
59 + mov esi[EBP], ESI ;
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
60 + mov edi[EBP], EDI ;
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
61 + }
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
62 + }
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
63 + else
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
64 + {
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
65 + static assert( false, "Architecture not supported." );
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
66 + }
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
67 + }
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
68 + else version( D_InlineAsm_X86 )
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
69 + {
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
70 asm
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
71 {
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
72 pushad;
698
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
73 @@ -286,7 +308,7 @@
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
74 status = sigdelset( &sigres, SIGUSR2 );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
75 assert( status == 0 );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
76
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
77 - status = sem_post( &suspendCount );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
78 + status = sem_post( suspendCountPtr );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
79 assert( status == 0 );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
80
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
81 sigsuspend( &sigres );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
82 @@ -297,8 +319,12 @@
636
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
83 }
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
84 }
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
85
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
86 - version( D_InlineAsm_X86 )
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
87 + version( LDC)
636
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
88 {
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
89 + // nothing to pop
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
90 + }
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
91 + else version( D_InlineAsm_X86 )
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
92 + {
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
93 asm
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
94 {
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
95 popad;
698
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
96 @@ -1572,8 +1598,14 @@
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
97 status = sigaction( SIGUSR2, &sigusr2, null );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
98 assert( status == 0 );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
99
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
100 - status = sem_init( &suspendCount, 0, 0 );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
101 - assert( status == 0 );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
102 + version(darwin){
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
103 + suspendCountPtr = sem_open( "/thread_init/sem\0".ptr, 0 );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
104 + assert( suspendCountPtr !is null );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
105 + }else {
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
106 + status=sem_init(&suspendCount,0,0);
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
107 + suspendCountPtr=&suspendCount;
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
108 + assert(status==0);
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
109 + }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
110
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
111 status = pthread_key_create( &Thread.sm_this, null );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
112 assert( status == 0 );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
113 @@ -1781,7 +1813,7 @@
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
114 // to simply loop on sem_wait at the end, but I'm not
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
115 // convinced that this would be much faster than the
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
116 // current approach.
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
117 - sem_wait( &suspendCount );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
118 + sem_wait( suspendCountPtr );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
119 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
120 else if( !t.m_lock )
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
121 {
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
122 @@ -2286,6 +2318,13 @@
640
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
123 version = AsmPPC_Posix;
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
124 }
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
125
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
126 + version( LLVM_InlineAsm_X86 )
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
127 + {
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
128 + version( Win32 )
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
129 + version = LLVM_AsmX86_Win32;
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
130 + else version( Posix )
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
131 + version = LLVM_AsmX86_Posix;
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
132 + }
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
133
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
134 version( Posix )
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
135 {
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
136 @@ -2296,6 +2328,8 @@
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
137 version( AsmX86_Win32 ) {} else
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
138 version( AsmX86_Posix ) {} else
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
139 version( AsmPPC_Posix ) {} else
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
140 + version( LLVM_AsmX86_Win32 ) {} else
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
141 + version( LLVM_AsmX86_Posix ) {} else
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
142 {
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
143 // NOTE: The ucontext implementation requires architecture specific
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
144 // data definitions to operate so testing for it must be done
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
145 @@ -2306,10 +2340,10 @@
636
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
146 import tango.stdc.posix.ucontext;
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
147 }
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
148 }
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
149 -
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
150 - const size_t PAGESIZE;
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
151 }
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
152
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
153 +// this can't be private since it's used as default argument to a public function
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
154 +const size_t PAGESIZE;
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
155
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
156 static this()
9fb1f559d9e9 updated tango patch so it compiles again with the latests check for using privates as default args for public functions.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 627
diff changeset
157 {
640
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
158 @@ -2336,7 +2370,7 @@
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
159 }
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
160 }
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
161
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
162 -
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
163 +extern(C) int printf(char*, ...);
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
164 ////////////////////////////////////////////////////////////////////////////////
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
165 // Fiber Entry Point and Context Switch
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
166 ////////////////////////////////////////////////////////////////////////////////
641
d9927f20758b Fiber support: clobber the registers we want restored on a context switch.
Christian Kamm <kamm incasoftware de>
parents: 640
diff changeset
167 @@ -2450,6 +2484,22 @@
640
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
168 ret;
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
169 }
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
170 }
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
171 + else version( LLVM_AsmX86_Posix )
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
172 + {
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
173 + asm
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
174 + {
641
d9927f20758b Fiber support: clobber the registers we want restored on a context switch.
Christian Kamm <kamm incasoftware de>
parents: 640
diff changeset
175 + // clobber registers to save
d9927f20758b Fiber support: clobber the registers we want restored on a context switch.
Christian Kamm <kamm incasoftware de>
parents: 640
diff changeset
176 + inc EBX;
d9927f20758b Fiber support: clobber the registers we want restored on a context switch.
Christian Kamm <kamm incasoftware de>
parents: 640
diff changeset
177 + inc ESI;
d9927f20758b Fiber support: clobber the registers we want restored on a context switch.
Christian Kamm <kamm incasoftware de>
parents: 640
diff changeset
178 + inc EDI;
d9927f20758b Fiber support: clobber the registers we want restored on a context switch.
Christian Kamm <kamm incasoftware de>
parents: 640
diff changeset
179 +
640
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
180 + // store oldp again with more accurate address
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
181 + mov EAX, oldp;
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
182 + mov [EAX], ESP;
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
183 + // load newp to begin context switch
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
184 + mov ESP, newp;
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
185 + }
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
186 + }
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
187 else static if( is( ucontext_t ) )
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
188 {
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
189 Fiber cfib = Fiber.getThis();
641
d9927f20758b Fiber support: clobber the registers we want restored on a context switch.
Christian Kamm <kamm incasoftware de>
parents: 640
diff changeset
190 @@ -3115,6 +3165,16 @@
640
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
191 push( 0x00000000 ); // ESI
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
192 push( 0x00000000 ); // EDI
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
193 }
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
194 + else version( LLVM_AsmX86_Posix )
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
195 + {
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
196 + push( cast(size_t) &fiber_entryPoint ); // EIP
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
197 + push( 0x00000000 ); // newp
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
198 + push( 0x00000000 ); // oldp
641
d9927f20758b Fiber support: clobber the registers we want restored on a context switch.
Christian Kamm <kamm incasoftware de>
parents: 640
diff changeset
199 + push( 0x00000000 ); // EBP
d9927f20758b Fiber support: clobber the registers we want restored on a context switch.
Christian Kamm <kamm incasoftware de>
parents: 640
diff changeset
200 + push( 0x00000000 ); // EBX
d9927f20758b Fiber support: clobber the registers we want restored on a context switch.
Christian Kamm <kamm incasoftware de>
parents: 640
diff changeset
201 + push( 0x00000000 ); // ESI
d9927f20758b Fiber support: clobber the registers we want restored on a context switch.
Christian Kamm <kamm incasoftware de>
parents: 640
diff changeset
202 + push( 0x00000000 ); // EDI
640
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
203 + }
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
204 else version( AsmPPC_Posix )
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
205 {
c2a342b5d8e5 Made Fibers work with LLVMDC on x86 Posix.
Christian Kamm <kamm incasoftware de>
parents: 636
diff changeset
206 version( StackGrowsDown )
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
207 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
208 ===================================================================
685
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
209 --- lib/unittest.sh (revision 4002)
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
210 +++ 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
211 @@ -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
212 --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
213 --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
214 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
215 - 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
216 - 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
217 + 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
218 + gdc: Builds unittests for gdc
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
219 + 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
220
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
221 <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
222 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
223 @@ -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
224 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
225 EOF
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
226
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
227 - 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
228 + 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
229 -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
230 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
231 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
232 @@ -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
233 gdc)
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
234 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
235 ;;
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
236 + ldc)
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
237 + 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
238 + ;;
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
239 *)
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
240 usage
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
241 ;;
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
242 @@ -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
243 shift
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
244 done
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
245
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
246 -if [ ! "$DMD" -a ! "$GDC" ]
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
247 +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
248 then
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
249 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
250 GDC=1
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
251 + 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
252 fi
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
253
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
254 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
255 @@ -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
256 then
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
257 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
258 fi
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
259 -
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
260 +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
261 +then
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
262 + 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
263 +fi
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 ===================================================================
685
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
266 --- lib/gc/basic/gcx.d (revision 4002)
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 ===================================================================
685
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
338 --- lib/gc/basic/gcbits.d (revision 4002)
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 ===================================================================
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
353 --- lib/build-tango.sh (revision 4002)
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 ===================================================================
685
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
385 --- tango/text/convert/Layout.d (revision 4002)
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;
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
400 @@ -197,9 +203,18 @@
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
401 assert (formatStr, "null format specifier");
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
402 assert (arguments.length < 64, "too many args in Layout.convert");
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
403
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
404 - version (GNU)
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
405 + 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
406 {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
407 Arg[64] arglist = void;
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
408 + foreach (i, arg; arguments)
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
409 + {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
410 + arglist[i] = args;
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
411 + args += (arg.tsize + size_t.sizeof - 1) & ~ (size_t.sizeof - 1);
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
412 + }
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
413 + }
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
414 + 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
415 + {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
416 + Arg[64] arglist = void;
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
417 int[64] intargs = void;
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
418 byte[64] byteargs = void;
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
419 long[64] longargs = void;
685
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
420 Index: tango/net/cluster/CacheInvalidator.d
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
421 ===================================================================
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
422 --- tango/net/cluster/CacheInvalidator.d (revision 4002)
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
423 +++ tango/net/cluster/CacheInvalidator.d (working copy)
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
424 @@ -79,7 +79,7 @@
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
425
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
426 *******************************************************************************/
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
427
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
428 -private class InvalidatorPayload : NetworkMessage
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
429 +package class InvalidatorPayload : NetworkMessage
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
430 {
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
431 private char[] key_;
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
432
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 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
434 ===================================================================
685
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
435 --- tango/core/Vararg.d (revision 4002)
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
436 +++ 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
437 @@ -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
438 {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
439 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
440 }
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
441 +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
442 +{
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
443 + 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
444 +}
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
445 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
446 {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
447 /**
698
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
448 Index: tango/core/sync/Semaphore.d
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 --- tango/core/sync/Semaphore.d (revision 3979)
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
451 +++ tango/core/sync/Semaphore.d (working copy)
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
452 @@ -329,7 +329,8 @@
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
453 {
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
454 synchronized( synComplete )
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
455 {
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
456 - if( numComplete == numConsumers )
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
457 + // if( numComplete == numConsumers )
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
458 + if( numComplete == numToProduce )
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
459 break;
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
460 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
461 Thread.yield();
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
462 @@ -337,9 +338,9 @@
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
463
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
464 synchronized( synComplete )
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
465 {
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
466 - assert( numComplete == numConsumers );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
467 + assert( numComplete == numToProduce );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
468 + // assert( numComplete == numConsumers );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
469 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
470 -
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
471 synchronized( synConsumed )
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 assert( numConsumed == numToProduce );
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
474 @@ -400,7 +401,8 @@
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
475
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
476 unittest
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
477 {
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
478 + version(darwin){}else{
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
479 testWait();
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
480 - testWaitTimeout();
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
481 + testWaitTimeout();}
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
482 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
483 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
484 Index: tango/core/sync/Condition.d
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
485 ===================================================================
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
486 --- tango/core/sync/Condition.d (revision 3979)
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
487 +++ tango/core/sync/Condition.d (working copy)
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
488 @@ -553,8 +553,11 @@
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
489
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
490 unittest
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
491 {
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
492 + version(darwin){}
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
493 + else{
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
494 testNotify();
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
495 testNotifyAll();
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
496 testWaitTimeout();
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
497 + }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
498 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
499 }
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
500 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
501 ===================================================================
685
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
502 --- tango/core/Atomic.d (revision 4002)
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
503 +++ tango/core/Atomic.d (working copy)
615
c60e122f4ada Fix atomicIncr and atomicDecr. Probably.
Christian Kamm <kamm incasoftware de>
parents: 613
diff changeset
504 @@ -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
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 ////////////////////////////////////////////////////////////////////////////////
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
508 +// 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
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 +
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
512 +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
513 +{
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
514 + 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
515 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
516 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
517 + ////////////////////////////////////////////////////////////////////////////
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
518 + // 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
519 + ////////////////////////////////////////////////////////////////////////////
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
520 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
521 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
522 + 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
523 + {
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
524 + 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
525 + {
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
526 + 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
527 + 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
528 + 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
529 + 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
530 + 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
531 + false);
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
532 + 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
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 + 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
535 + }
613
19cbc612380a Add bool-special cases in tango.core.Atomic.
Christian Kamm <kamm incasoftware de>
parents: 609
diff changeset
536 + else static if (is(T == bool))
19cbc612380a Add bool-special cases in tango.core.Atomic.
Christian Kamm <kamm incasoftware de>
parents: 609
diff changeset
537 + {
19cbc612380a Add bool-special cases in tango.core.Atomic.
Christian Kamm <kamm incasoftware de>
parents: 609
diff changeset
538 + 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
539 + }
529
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
540 + else
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 + 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
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 + }
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 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
547 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
548 + ////////////////////////////////////////////////////////////////////////////
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
549 + // 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
550 + ////////////////////////////////////////////////////////////////////////////
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
551 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
552 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
553 + 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
554 + {
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
555 + 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
556 + {
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
557 + 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
558 + 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
559 + 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
560 + 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
561 + 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
562 + false);
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
563 + 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
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 + 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
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 + 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
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 + 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
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 + else
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 + 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
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 + }
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 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
578 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
579 + ////////////////////////////////////////////////////////////////////////////
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
580 + // 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
581 + ////////////////////////////////////////////////////////////////////////////
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
582 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
583 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
584 + 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
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 + 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
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 + 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
589 + 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
590 + 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
591 + 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
592 + 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
593 + false);
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
594 + 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
595 + 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
596 + {
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
597 + 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
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 + 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
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 + 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
602 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
603 + else
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 + 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
606 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
607 + 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
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 + }
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 +
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 + // 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
614 + ////////////////////////////////////////////////////////////////////////////
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 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
617 + 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
618 + {
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 + // 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
621 + //
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
622 + 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
623 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
624 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
625 + 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
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 + 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
628 + {
615
c60e122f4ada Fix atomicIncr and atomicDecr. Probably.
Christian Kamm <kamm incasoftware de>
parents: 613
diff changeset
629 + 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
630 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
631 + else
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
632 + {
615
c60e122f4ada Fix atomicIncr and atomicDecr. Probably.
Christian Kamm <kamm incasoftware de>
parents: 613
diff changeset
633 + 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
634 + }
615
c60e122f4ada Fix atomicIncr and atomicDecr. Probably.
Christian Kamm <kamm incasoftware de>
parents: 613
diff changeset
635 + 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
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 + }
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 +
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 + // 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
642 + ////////////////////////////////////////////////////////////////////////////
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 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
645 + 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
646 + {
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
647 + //
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
648 + // 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
649 + //
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
650 + 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
651 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
652 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
653 + 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
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 + 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
656 + {
615
c60e122f4ada Fix atomicIncr and atomicDecr. Probably.
Christian Kamm <kamm incasoftware de>
parents: 613
diff changeset
657 + 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
658 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
659 + else
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
660 + {
615
c60e122f4ada Fix atomicIncr and atomicDecr. Probably.
Christian Kamm <kamm incasoftware de>
parents: 613
diff changeset
661 + 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
662 + }
615
c60e122f4ada Fix atomicIncr and atomicDecr. Probably.
Christian Kamm <kamm incasoftware de>
parents: 613
diff changeset
663 + 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
664 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
665 + }
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
666 +}
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
667 +
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
668 +////////////////////////////////////////////////////////////////////////////////
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
669 // 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
670 ////////////////////////////////////////////////////////////////////////////////
cef0cbcf7d22 Updated tango patch, with rewrittten Atomics using llvm atomic intrinsics.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 454
diff changeset
671
698
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
672 @@ -282,9 +598,9 @@
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
673 {
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
674 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
675 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
676 -
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
677 + version(darwin){}
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
678 + else { version = Has64BitCAS; }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
679 version = Has32BitOps;
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
680 - version = Has64BitCAS;
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
681 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
682 version( X86_64 )
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
683 {
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
684 Index: tango/math/IEEE.d
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
685 ===================================================================
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
686 --- tango/math/IEEE.d (revision 3979)
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
687 +++ tango/math/IEEE.d (working copy)
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
688 @@ -1543,7 +1543,12 @@
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
689 else return 0;
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
690 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
691 } else {
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
692 - assert(0, "Unsupported");
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
693 + static if (is(X==real)){
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
694 + static assert(0, X.stringof~" unsupported by feqrel");
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
695 + } else {
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
696 + int res=feqrel(cast(real)x,cast(real)y);
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
697 + return ((res>X.mant_dig)?X.mant_dig:res);
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
698 + }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
699 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
700 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
701
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
702 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
703 ===================================================================
685
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
704 --- tango/math/Math.d (revision 4002)
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 +++ 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
706 @@ -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
707 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
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 }
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
710 +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
711 +{
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
712 + 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
713 + 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
714 + {
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
715 + 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
716 + }
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
717 +}
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
718
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
719 /*
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
720 * Constants
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
721 @@ -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
722 * Bugs:
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
723 * 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
724 */
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
725 +version(LDC)
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
726 +{
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
727 + 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
728 + 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
729 + version(X86)
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
730 + {
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
731 + 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
732 + }
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
733 + else
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
734 + {
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
735 + 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
736 + {
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
737 + 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
738 + }
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
739 + }
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
740 +}
444
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
741 +else
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
742 +{
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
743 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
744 {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
745 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
746 @@ -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
747 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
748 }
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
749 }
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
750 +}
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
751
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
752 debug(UnitTest) {
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
753 unittest {
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
754 @@ -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
755 * Bugs:
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
756 * 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
757 */
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
758 +version(LDC)
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
759 +{
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
760 + 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
761 + 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
762 + version(X86)
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
763 + {
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
764 + 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
765 + }
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
766 + else
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
767 + {
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
768 + 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
769 + {
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
770 + 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
771 + }
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
772 + }
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
773 +}
444
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
774 +else
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
775 +{
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
776 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
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(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
779 @@ -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
780 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
781 }
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
782 }
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
783 +}
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
784
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
785 debug(UnitTest) {
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
786 unittest {
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
787 @@ -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
788 {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
789 version (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
790 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
791 - } 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
792 + }
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
793 + 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
794 + 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
795 + }
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
796 + 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
797 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
798 {
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
799 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
800 @@ -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
801 * <tr> <td> +&infin; <td> +&infin; <td> no
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
802 * )
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
803 */
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
804 +version(LDC)
444
f2b5f86348ef Updated tango patch. tango.math.Math was incorrect.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
805 +{
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
806 + 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
807 + 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
808 + 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
809 + {
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
810 + 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
811 + }
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
812 + 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
813 + {
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
814 + 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
815 + {
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
816 + 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
817 + }
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
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 +else
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
821 +{
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
822 +
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
823 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
824 {
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
825 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
826 @@ -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
827 }
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
828 }
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
829
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
830 +}
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
831 +
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
832 /** ditto */
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
833 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
834 {
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
835 @@ -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
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 - return tango.stdc.math.powl(x, y);
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
840 + 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
841 + {
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 444
diff changeset
842 + 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
843 + }
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
844 + 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
845 + {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
846 + 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
847 + }
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
848 }
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
849
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
850 debug(UnitTest) {
698
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
851 Index: tango/stdc/posix/sys/types.d
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
852 ===================================================================
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
853 --- tango/stdc/posix/sys/types.d (revision 3979)
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
854 +++ tango/stdc/posix/sys/types.d (working copy)
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
855 @@ -422,7 +422,11 @@
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
856 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
857 else version( darwin )
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
858 {
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
859 - struct pthread_spinlock_t;
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
860 + version (LDC)
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
861 + alias void* pthread_spinlock_t;
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
862 +
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
863 + else
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
864 + struct pthread_spinlock_t;
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
865 }
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
866 else version( freebsd )
f0ba5d37dd86 Merge darwin patch for Tango.
Christian Kamm <kamm incasoftware de>
parents: 685
diff changeset
867 {
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
868 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
869 ===================================================================
685
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
870 --- tango/stdc/stdlib.d (revision 4002)
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
871 +++ 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
872 @@ -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
873 {
44f08170f4ef Removed tango from the repository and instead added a 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 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
875 }
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
876 +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
877 +{
44f08170f4ef Removed tango from the repository and instead added a 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 + 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
879 + 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
880 +}
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
881 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
882 {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
883 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
884 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
885 ===================================================================
685
8d7e58801c82 Adjust build-tango.sh for ldc.
Christian Kamm <kamm incasoftware de>
parents: 665
diff changeset
886 --- tango/stdc/stdarg.d (revision 4002)
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
887 +++ 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
888 @@ -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
889 {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
890 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
891 }
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
892 +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
893 +{
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 647
diff changeset
894 + 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
895 +}
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
896 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
897 {
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents:
diff changeset
898 alias void* va_list;