Mercurial > projects > ldc
view tango-0.99.8.patch @ 1650:40bd4a0d4870
Update to work with LLVM 2.7.
Removed use of dyn_cast, llvm no compiles
without exceptions and rtti by
default. We do need exceptions for the libconfig stuff, but rtti isn't
necessary (anymore).
Debug info needs to be rewritten, as in LLVM 2.7 the format has
completely changed. To have something to look at while rewriting, the
old code has been wrapped inside #ifndef DISABLE_DEBUG_INFO , this means
that you have to define this to compile at the moment.
Updated tango 0.99.9 patch to include updated EH runtime code, which is
needed for LLVM 2.7 as well.
author | Tomas Lindquist Olsen |
---|---|
date | Wed, 19 May 2010 12:42:32 +0200 |
parents | 2a8d4f98b543 |
children |
line wrap: on
line source
Index: object.di =================================================================== --- object.di (revision 4578) +++ object.di (working copy) @@ -35,15 +35,17 @@ Interface[] interfaces; ClassInfo base; void* destructor; - void(*classInvariant)(Object); + void* classInvariant; uint flags; // 1: // IUnknown // 2: // has no possible pointers into GC memory // 4: // has offTi[] member // 8: // has constructors + // 32: // has typeinfo void* deallocator; OffsetTypeInfo[] offTi; void* defaultConstructor; + TypeInfo typeinfo; static ClassInfo find(char[] classname); Object create(); @@ -127,10 +129,11 @@ char[] name; void[] m_init; - uint function(void*) xtoHash; - int function(void*,void*) xopEquals; - int function(void*,void*) xopCmp; - char[] function(void*) xtoString; + // These are ONLY for use as a delegate.funcptr! + hash_t function() xtoHash; + int function(void*) xopEquals; + int function(void*) xopCmp; + char[] function() xtoString; uint m_flags; } Index: lib/common/tango/core/Thread.d =================================================================== --- lib/common/tango/core/Thread.d (revision 4578) +++ lib/common/tango/core/Thread.d (working copy) @@ -295,7 +295,7 @@ } else version (X86_64) { - ulong rax,rbx,rcx,rdx,rbp,rsi,rdi,rsp,r10,r11,r12,r13,r14,r15; + ulong rax,rbx,rcx,rdx,rbp,rsi,rdi,rsp,r8,r9,r10,r11,r12,r13,r14,r15; asm { movq rax[RBP], RAX ; @@ -306,6 +306,8 @@ movq rsi[RBP], RSI ; movq rdi[RBP], RDI ; movq rsp[RBP], RSP ; + movq r8[RBP], R8 ; + movq r9[RBP], R9 ; movq r10[RBP], R10 ; movq r11[RBP], R11 ; movq r12[RBP], R12 ; Index: lib/gc/basic/gcx.d =================================================================== --- lib/gc/basic/gcx.d (revision 4578) +++ lib/gc/basic/gcx.d (working copy) @@ -2198,7 +2198,7 @@ } else version (X86_64) { - ulong rax,rbx,rcx,rdx,rbp,rsi,rdi,rsp,r10,r11,r12,r13,r14,r15; + ulong rax,rbx,rcx,rdx,rbp,rsi,rdi,rsp,r8,r9,r10,r11,r12,r13,r14,r15; asm { movq rax[RBP], RAX ; @@ -2209,6 +2209,8 @@ movq rsi[RBP], RSI ; movq rdi[RBP], RDI ; movq rsp[RBP], RSP ; + movq r8[RBP], R8 ; + movq r9[RBP], R9 ; movq r10[RBP], R10 ; movq r11[RBP], R11 ; movq r12[RBP], R12 ; Index: tango/text/convert/Layout.d =================================================================== --- tango/text/convert/Layout.d (revision 4578) +++ tango/text/convert/Layout.d (working copy) @@ -660,8 +660,12 @@ case TypeCode.STRUCT: auto s = cast(TypeInfo_Struct) type; - if (s.xtoString) - return Utf.fromString8 (s.xtoString(p), result); + if (s.xtoString) { + char[] delegate() toString; + toString.ptr = p; + toString.funcptr = cast(char[] function()) s.xtoString; + return Utf.fromString8 (toString(), result); + } goto default; case TypeCode.INTERFACE: Index: tango/net/Socket.d =================================================================== --- tango/net/Socket.d (revision 4578) +++ tango/net/Socket.d (working copy) @@ -1545,10 +1545,10 @@ abstract class Address { - protected sockaddr* name(); - protected int nameLen(); - AddressFamily addressFamily(); - char[] toString(); + abstract protected sockaddr* name(); + abstract protected int nameLen(); + abstract AddressFamily addressFamily(); + abstract char[] toString(); /***********************************************************************