Changeset 662:88e23f8c2354
- Timestamp:
- 10/06/08 15:40:33
(2 months ago)
- Author:
- Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
- branch:
- default
- Message:
Applied downs' latest Phobos patch
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r476 |
r662 |
|
| 6 | 6 | rm -f ../lib/*.bc |
|---|
| 7 | 7 | |
|---|
| 8 | | LLVMDCFLAGS="-c -odobj -oq -gc -noasm" |
|---|
| 9 | | LLVMDCFLAGS_ASM="-c -odobj -oq -gc" |
|---|
| | 8 | LLVMDCFLAGS_ASM="-c -oq -release" |
|---|
| | 9 | LLVMDCFLAGS="$LLVMDCFLAGS_ASM -noasm" |
|---|
| 10 | 10 | |
|---|
| 11 | 11 | echo "compiling contract runtime" |
|---|
| … | … | |
| 17 | 17 | internal/critical.d \ |
|---|
| 18 | 18 | internal/dmain2.d \ |
|---|
| | 19 | internal/inv.d \ |
|---|
| 19 | 20 | $LLVMDCFLAGS_ASM || exit 1 |
|---|
| 20 | 21 | mv *.bc obj |
|---|
| | 22 | llvm-link -f -o=../lib/llvmdcore.bc obj/internal.*.bc ../lib/llvmdcore.bc |
|---|
| 21 | 23 | |
|---|
| 22 | 24 | echo "compiling typeinfo 1" |
|---|
| … | … | |
| 48 | 50 | |
|---|
| 49 | 51 | echo "compiling array runtime support" |
|---|
| 50 | | llvmdc internal/qsort2.d $LLVMDCFLAGS || exit 1 |
|---|
| | 52 | llvmdc internal/qsort2.d internal/adi.d internal/aaA.d $LLVMDCFLAGS || exit 1 |
|---|
| 51 | 53 | mv *.bc obj |
|---|
| 52 | | llvm-link -f -o=../lib/llvmdcore.bc obj/qsort2.bc ../lib/llvmdcore.bc || exit 1 |
|---|
| 53 | | llvmdc internal/adi.d $LLVMDCFLAGS || exit 1 |
|---|
| 54 | | mv *.bc obj |
|---|
| 55 | | llvm-link -f -o=../lib/llvmdcore.bc obj/adi.bc ../lib/llvmdcore.bc || exit 1 |
|---|
| 56 | | llvmdc internal/aaA.d $LLVMDCFLAGS || exit 1 |
|---|
| 57 | | mv *.bc obj |
|---|
| 58 | | llvm-link -f -o=../lib/llvmdcore.bc obj/aaA.bc ../lib/llvmdcore.bc || exit 1 |
|---|
| | 54 | llvm-link -f -o=../lib/llvmdcore.bc obj/qsort2.bc obj/adi.bc obj/aaA.bc ../lib/llvmdcore.bc || exit 1 |
|---|
| 59 | 55 | |
|---|
| 60 | 56 | echo "compiling object implementation" |
|---|
| 61 | | llvmdc internal/objectimpl.d -c -odobj -g || exit 1 |
|---|
| | 57 | llvmdc internal/objectimpl.d $LLVMDCFLAGS || exit 1 |
|---|
| | 58 | mv object.bc objectimpl.bc |
|---|
| | 59 | mv *.bc obj |
|---|
| 62 | 60 | llvm-link -f -o=../lib/llvmdcore.bc obj/objectimpl.bc ../lib/llvmdcore.bc || exit 1 |
|---|
| 63 | 61 | |
|---|
| | 62 | echo "compiling crc32" |
|---|
| | 63 | llvmdc crc32.d $LLVMDCFLAGS || exit 1 |
|---|
| | 64 | mv *.bc obj |
|---|
| | 65 | llvm-link -f -o=../lib/llvmdcore.bc ../lib/llvmdcore.bc obj/crc32.bc || exit 1 |
|---|
| | 66 | |
|---|
| 64 | 67 | echo "compiling llvm runtime support" |
|---|
| 65 | | ./llvmdc-build llvmsupport.d $LLVMDCFLAGS || exit 1 |
|---|
| | 68 | # ./llvmdc-build llvmsupport.d $LLVMDCFLAGS || exit 1 |
|---|
| | 69 | llvmdc llvmsupport.d -oq -c || exit 1 |
|---|
| 66 | 70 | mv *.bc obj |
|---|
| 67 | | llvm-link -f -o=../lib/llvmdcore.bc `ls obj/llvm.*.bc` ../lib/llvmdcore.bc || exit 1 |
|---|
| | 71 | llvm-link -f -o=../lib/llvmdcore.bc `ls obj/llvm*.bc` ../lib/llvmdcore.bc || exit 1 |
|---|
| 68 | 72 | |
|---|
| 69 | 73 | echo "compiling garbage collector" |
|---|
| … | … | |
| 73 | 77 | # llvmdc gcx.d $LLVMDCFLAGS -I.. || exit 1 |
|---|
| 74 | 78 | # llvmdc gcbits.d $LLVMDCFLAGS -I.. || exit 1 |
|---|
| 75 | | # llvmdc gc.d $LLVMDCFLAGS -I.. || exit 1 |
|---|
| 76 | | mv std.gc.bc gc.bc |
|---|
| | 79 | # llvmdc gc.d -oq -c -I.. || exit 1 |
|---|
| | 80 | mv std.gc.bc std_gc.bc |
|---|
| 77 | 81 | mv *.bc ../obj |
|---|
| | 82 | # mv -v obj/*.bc ../obj |
|---|
| 78 | 83 | cd .. |
|---|
| 79 | | llvm-link -f -o=../lib/llvmdcore.bc obj/gclinux.bc obj/gcx.bc obj/gcbits.bc obj/gc.bc ../lib/llvmdcore.bc || exit 1 |
|---|
| | 84 | llvm-link -f -o=../lib/llvmdcore.bc obj/gclinux.bc obj/gcx.bc obj/gcbits.bc obj/std_gc.bc ../lib/llvmdcore.bc || exit 1 |
|---|
| 80 | 85 | |
|---|
| 81 | 86 | echo "compiling phobos" |
|---|
| … | … | |
| 83 | 88 | mv *.bc obj |
|---|
| 84 | 89 | echo "linking phobos" |
|---|
| 85 | | llvm-link -f -o=../lib/llvmdcore.bc `ls obj/std.*.bc` ../lib/llvmdcore.bc || exit 1 |
|---|
| | 90 | # llvm-link -f -o=../lib/llvmdcore.bc `ls obj/std.*.bc` ../lib/llvmdcore.bc || exit 1 |
|---|
| | 91 | for i in $(ls obj/std.*.bc); do |
|---|
| | 92 | echo $i |
|---|
| | 93 | llvm-link -f -o=../lib/llvmdcore.bc ../lib/llvmdcore.bc $i || exit 1 |
|---|
| | 94 | done |
|---|
| 86 | 95 | |
|---|
| 87 | 96 | echo "Compiling auxiliary" |
|---|
| … | … | |
| 91 | 100 | |
|---|
| 92 | 101 | echo "optimizing" |
|---|
| 93 | | opt -stats -p -f -std-compile-opts -disable-inlining -o=../lib/llvmdcore.bc ../lib/llvmdcore.bc || exit 1 |
|---|
| 94 | | |
|---|
| | 102 | opt -stats -p -f -std-compile-opts -o=../lib/llvmdcore.bc ../lib/llvmdcore.bc || exit 1 |
|---|
| 95 | 103 | |
|---|
| 96 | 104 | echo "SUCCESS" |
|---|
| r473 |
r662 |
|
| 277 | 277 | } |
|---|
| 278 | 278 | |
|---|
| | 279 | void* _d_newarrayvT(TypeInfo ti, size_t length) { |
|---|
| | 280 | return _d_newarrayT(ti, length); |
|---|
| | 281 | } |
|---|
| | 282 | |
|---|
| 279 | 283 | /* For when the array has a non-zero initializer. |
|---|
| 280 | 284 | */ |
|---|
| … | … | |
| 1027 | 1031 | }*/ |
|---|
| 1028 | 1032 | |
|---|
| 1029 | | extern(C) void* _d_allocmemoryT(size_t foo) { return malloc(foo).ptr; } |
|---|
| | 1033 | extern(C) void* _d_allocmemoryT(TypeInfo ti) { |
|---|
| | 1034 | return malloc(ti.tsize).ptr; // Tit size :) |
|---|
| | 1035 | } |
|---|
| r473 |
r662 |
|
| 245 | 245 | { |
|---|
| 246 | 246 | //version (Win32) |
|---|
| 247 | | tmp = cast(byte*) alloca(szelem); |
|---|
| | 247 | //tmp = cast(byte*) alloca(szelem); |
|---|
| 248 | 248 | //else |
|---|
| 249 | | //tmp = new byte[szelem]; |
|---|
| | 249 | tmp = (new byte[szelem]).ptr; |
|---|
| 250 | 250 | } |
|---|
| 251 | 251 | |
|---|
| r473 |
r662 |
|
| 288 | 288 | } |
|---|
| 289 | 289 | |
|---|
| 290 | | printf("Assertion failure ;_;\n"); |
|---|
| 291 | | assert(false); |
|---|
| | 290 | /*printf("Assertion failure ;_;\n"); |
|---|
| | 291 | assert(false);*/ |
|---|
| 292 | 292 | } |
|---|
| 293 | 293 | |
|---|
| … | … | |
| 354 | 354 | } // end of x86 Linux specific implementation |
|---|
| 355 | 355 | |
|---|
| | 356 | extern(C) void* malloc(size_t size); |
|---|
| 356 | 357 | |
|---|
| 357 | 358 | extern(C) void _d_throw_exception(Object e) |
|---|
| … | … | |
| 359 | 360 | if (e !is null) |
|---|
| 360 | 361 | { |
|---|
| 361 | | _d_exception* exc_struct = new _d_exception; |
|---|
| | 362 | // _d_exception* exc_struct = new _d_exception; |
|---|
| | 363 | auto exc_struct = cast(_d_exception*)malloc(_d_exception.sizeof); |
|---|
| 362 | 364 | exc_struct.unwind_info.exception_class[] = _d_exception_class; |
|---|
| 363 | 365 | exc_struct.exception_object = e; |
|---|
| r476 |
r662 |
|
| 2 | 2 | [Environment] |
|---|
| 3 | 3 | |
|---|
| 4 | | DFLAGS=-I%@P%/../lphobos -I%@P%/../import -L-L%@P%/../lib -R%@P%/../lib |
|---|
| | 4 | DFLAGS=-I%@P%/../lphobos -I%@P%/../import -L-L%@P%/../lib |
|---|
| | 5 | # -R%@P%/../lib |
|---|
| r473 |
r662 |
|
| 82 | 82 | } |
|---|
| 83 | 83 | |
|---|
| | 84 | pragma(no_typeinfo) |
|---|
| 84 | 85 | class TypeInfo_Typedef : TypeInfo |
|---|
| 85 | 86 | { |
|---|
| … | … | |
| 206 | 207 | this(string msg, Error next); |
|---|
| 207 | 208 | } |
|---|
| | 209 | |
|---|
| r473 |
r662 |
|
| 49 | 49 | |
|---|
| 50 | 50 | //version (Win32) |
|---|
| 51 | | buffer = (cast(char *)alloca(s.length))[0 .. s.length]; |
|---|
| | 51 | buffer = (cast(char *)/*alloca*/malloc(s.length))[0 .. s.length]; |
|---|
| 52 | 52 | //else |
|---|
| 53 | 53 | //buffer = new char[s.length]; |
|---|
| r473 |
r662 |
|
| 43 | 43 | private import std.regexp; |
|---|
| 44 | 44 | private import std.gc; |
|---|
| | 45 | |
|---|
| | 46 | version(linux) version = Unix; |
|---|
| 45 | 47 | |
|---|
| 46 | 48 | /* =========================== Win32 ======================= */ |
|---|
| r131 |
r662 |
|
| 569 | 569 | break; |
|---|
| 570 | 570 | sl = fbuf.length * 2; |
|---|
| 571 | | fbuf = (cast(char*)alloca(sl * char.sizeof))[0 .. sl]; |
|---|
| | 571 | fbuf = (cast(char*)/*alloca*/malloc(sl * char.sizeof))[0 .. sl]; |
|---|
| 572 | 572 | } |
|---|
| 573 | 573 | putstr(fbuf[0 .. sl]); |
|---|
| … | … | |
| 614 | 614 | else |
|---|
| 615 | 615 | sl = n + 1; |
|---|
| 616 | | fbuf = (cast(char*)alloca(sl * char.sizeof))[0 .. sl]; |
|---|
| | 616 | fbuf = (cast(char*)/*alloca*/malloc(sl * char.sizeof))[0 .. sl]; |
|---|
| 617 | 617 | } |
|---|
| 618 | 618 | putstr(fbuf[0 .. sl]); |
|---|
| r473 |
r662 |
|
| 39 | 39 | private import std.c.stdlib; |
|---|
| 40 | 40 | private import std.string; |
|---|
| | 41 | |
|---|
| | 42 | version(linux) version = Unix; |
|---|
| 41 | 43 | |
|---|
| 42 | 44 | //debug = MMFILE; |
|---|
| r473 |
r662 |
|
| 269 | 269 | break; |
|---|
| 270 | 270 | psize *= 2; |
|---|
| 271 | | p = cast(char *) alloca(psize); // buffer too small, try again with larger size |
|---|
| | 271 | p = cast(char *) /*alloca*/malloc(psize); // buffer too small, try again with larger size |
|---|
| 272 | 272 | } |
|---|
| 273 | 273 | else version(GNU) { |
|---|
| … | … | |
| 279 | 279 | else |
|---|
| 280 | 280 | break; |
|---|
| 281 | | p = cast(char *) alloca(psize); // buffer too small, try again with larger size |
|---|
| | 281 | p = cast(char *) /*alloca*/std.gc.malloc(psize); // buffer too small, try again with larger size |
|---|
| 282 | 282 | } |
|---|
| 283 | 283 | else version(linux) |
|---|
| … | … | |
| 295 | 295 | p = (char *) c.stdlib.malloc(psize); // buffer too small, try again with larger size |
|---|
| 296 | 296 | +/ |
|---|
| 297 | | p = cast(char *) alloca(psize); // buffer too small, try again with larger size |
|---|
| | 297 | p = cast(char *) /*alloca*/std.gc.malloc(psize); // buffer too small, try again with larger size |
|---|
| 298 | 298 | } |
|---|
| 299 | 299 | } |
|---|
| r89 |
r662 |
|
| 34 | 34 | extern (C) void _d_OutOfMemory() |
|---|
| 35 | 35 | { |
|---|
| 36 | | assert(0); |
|---|
| 37 | | /*throw cast(OutOfMemoryException) |
|---|
| | 36 | printf("Out of memory!\n"); |
|---|
| | 37 | *(cast(int*) 0) = 0; |
|---|
| | 38 | throw cast(OutOfMemoryException) |
|---|
| 38 | 39 | cast(void *) |
|---|
| 39 | | OutOfMemoryException.classinfo.init;*/ |
|---|
| | 40 | OutOfMemoryException.classinfo.init; |
|---|
| 40 | 41 | } |
|---|
| 41 | 42 | |
|---|
| r473 |
r662 |
|
| 29 | 29 | |
|---|
| 30 | 30 | import std.string; |
|---|
| | 31 | |
|---|
| | 32 | version(linux) version = Unix; |
|---|
| 31 | 33 | |
|---|
| 32 | 34 | version(Unix) |
|---|
| r473 |
r662 |
|
| 43 | 43 | private import std.string; |
|---|
| 44 | 44 | private import std.c.process; |
|---|
| | 45 | |
|---|
| | 46 | version(linux) version = Unix; |
|---|
| 45 | 47 | |
|---|
| 46 | 48 | /** |
|---|
| r473 |
r662 |
|
| 17 | 17 | // Segments of the code in this file Copyright (c) 1997 by Rick Booth |
|---|
| 18 | 18 | // From "Inner Loops" by Rick Booth, Addison-Wesley |
|---|
| | 19 | |
|---|
| | 20 | version(linux) version = Unix; |
|---|
| 19 | 21 | |
|---|
| 20 | 22 | version (Win32) |
|---|
| r473 |
r662 |
|
| 1821 | 1821 | { |
|---|
| 1822 | 1822 | //version (Win32) |
|---|
| 1823 | | psave = cast(regmatch_t *)alloca((re_nsub + 1) * regmatch_t.sizeof); |
|---|
| | 1823 | psave = cast(regmatch_t *)/*alloca*/malloc((re_nsub + 1) * regmatch_t.sizeof); |
|---|
| 1824 | 1824 | //else |
|---|
| 1825 | 1825 | //psave = new regmatch_t[re_nsub + 1]; |
|---|
| r473 |
r662 |
|
| 45 | 45 | private import std.string, std.stdint, std.c.string, std.c.stdlib; |
|---|
| 46 | 46 | |
|---|
| 47 | | |
|---|
| | 47 | version(linux) version = Unix; |
|---|
| 48 | 48 | version(Unix) version = BsdSockets; |
|---|
| 49 | 49 | |
|---|
| r473 |
r662 |
|
| 1140 | 1140 | break; |
|---|
| 1141 | 1141 | psize *= 2; |
|---|
| 1142 | | p = cast(char*) alloca(psize); |
|---|
| | 1142 | p = cast(char*) /*alloca*/malloc(psize); |
|---|
| 1143 | 1143 | } else version (Unix) { |
|---|
| 1144 | 1144 | count = vsnprintf(p, psize, f, args_copy); |
|---|
| … | … | |
| 1149 | 1149 | else |
|---|
| 1150 | 1150 | break; |
|---|
| 1151 | | p = cast(char*) alloca(psize); |
|---|
| | 1151 | p = cast(char*) /*alloca*/malloc(psize); |
|---|
| 1152 | 1152 | } else |
|---|
| 1153 | 1153 | throw new Exception("unsupported platform"); |
|---|
| … | … | |
| 1779 | 1779 | Append = 10 // includes FileMode.Out |
|---|
| 1780 | 1780 | } |
|---|
| | 1781 | |
|---|
| | 1782 | version(linux) version = Unix; |
|---|
| 1781 | 1783 | |
|---|
| 1782 | 1784 | version (Win32) { |
|---|
| … | … | |
| 2233 | 2235 | * kept in sync with the EndianStream if only non-getc functions are called. |
|---|
| 2234 | 2236 | */ |
|---|
| 2235 | | class EndianStream : FilterStream { |
|---|
| | 2237 | /// This causes a crash in -O2 |
|---|
| | 2238 | /+class EndianStream : FilterStream { |
|---|
| 2236 | 2239 | |
|---|
| 2237 | 2240 | Endian endian; /// Endianness property of the source stream. |
|---|
| … | … | |
| 2511 | 2514 | } |
|---|
| 2512 | 2515 | } |
|---|
| | 2516 | +/ |
|---|
| 2513 | 2517 | |
|---|
| 2514 | 2518 | /*** |
|---|