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);
 }
 
 /***************************************