Mercurial > projects > ldc
diff tango/lib/compiler/llvmdc/adi.d @ 240:0db62b770a49 trunk
[svn r257] Fixed: array .sort and .reverse runtime code was incorrect.
Fixed: most runtime calls did not get correct param attrs.
author | lindquist |
---|---|
date | Mon, 09 Jun 2008 00:01:10 +0200 |
parents | a168a2c3ea48 |
children | 068cb3c60afb |
line wrap: on
line diff
--- a/tango/lib/compiler/llvmdc/adi.d Sun Jun 08 22:07:10 2008 +0200 +++ b/tango/lib/compiler/llvmdc/adi.d Mon Jun 09 00:01:10 2008 +0200 @@ -67,7 +67,7 @@ * reversed. */ -extern (C) long _adReverseChar(char[] a) +extern (C) Array _adReverseChar(char[] a) { if (a.length > 1) { @@ -127,7 +127,7 @@ hi = hi - 1 + (stridehi - stridelo); } } - return *cast(long*)(&a); + return Array(a.length, a.ptr); } unittest @@ -162,7 +162,7 @@ * reversed. */ -extern (C) long _adReverseWchar(wchar[] a) +extern (C) Array _adReverseWchar(wchar[] a) { if (a.length > 1) { @@ -220,7 +220,7 @@ hi = hi - 1 + (stridehi - stridelo); } } - return *cast(long*)(&a); + return Array(a.length, a.ptr); } unittest @@ -245,10 +245,10 @@ * Support for array.reverse property. */ -extern (C) long _adReverse(Array a, size_t szelem) +extern (C) Array _adReverse(Array a, size_t szelem) out (result) { - assert(result is *cast(long*)(&a)); + assert(result.ptr is a.ptr); } body { @@ -287,7 +287,7 @@ //gc_free(tmp); } } - return *cast(long*)(&a); + return Array(a.length, a.ptr); } unittest @@ -331,7 +331,7 @@ * Sort array of chars. */ -extern (C) long _adSortChar(char[] a) +extern (C) Array _adSortChar(char[] a) { if (a.length > 1) { @@ -346,14 +346,14 @@ } delete da; } - return *cast(long*)(&a); + return Array(a.length, a.ptr); } /********************************************** * Sort array of wchars. */ -extern (C) long _adSortWchar(wchar[] a) +extern (C) Array _adSortWchar(wchar[] a) { if (a.length > 1) { @@ -368,7 +368,7 @@ } delete da; } - return *cast(long*)(&a); + return Array(a.length, a.ptr); } /***************************************