97202ee3b7
Moved all the shell fixes to fix-builder.sh, which is now always invoked. Added aterm to the list of packages provided by mingw.nix svn path=/nixpkgs/trunk/; revision=6152
270 lines
7.0 KiB
Diff
270 lines
7.0 KiB
Diff
diff -urN aterm-2.4.2-old/aterm/gc.c aterm-2.4.2/aterm/gc.c
|
|
--- aterm-2.4.2-old/aterm/gc.c 2004-06-01 10:29:02.000000000 +0200
|
|
+++ aterm-2.4.2/aterm/gc.c 2006-08-17 15:17:28.000000000 +0200
|
|
@@ -230,71 +230,17 @@
|
|
AFun oddSym;
|
|
#endif
|
|
|
|
-#ifdef WIN32
|
|
-
|
|
- unsigned int r_eax, r_ebx, r_ecx, r_edx, \
|
|
- r_esi, r_edi, r_esp, r_ebp;
|
|
- ATerm reg[8], *real_term;
|
|
-
|
|
- __asm {
|
|
- /* Get the registers into local variables to check them
|
|
- for aterms later. */
|
|
- mov r_eax, eax
|
|
- mov r_ebx, ebx
|
|
- mov r_ecx, ecx
|
|
- mov r_edx, edx
|
|
- mov r_esi, esi
|
|
- mov r_edi, edi
|
|
- mov r_esp, esp
|
|
- mov r_ebp, ebp
|
|
- }
|
|
- /* Put the register-values into an array */
|
|
- reg[0] = (ATerm) r_eax;
|
|
- reg[1] = (ATerm) r_ebx;
|
|
- reg[2] = (ATerm) r_ecx;
|
|
- reg[3] = (ATerm) r_edx;
|
|
- reg[4] = (ATerm) r_esi;
|
|
- reg[5] = (ATerm) r_edi;
|
|
- reg[6] = (ATerm) r_esp;
|
|
- reg[7] = (ATerm) r_ebp;
|
|
-
|
|
- for(i=0; i<8; i++) {
|
|
- real_term = AT_isInsideValidTerm(reg[i]);
|
|
- if (real_term != NULL) {
|
|
- AT_markTerm(real_term);
|
|
- }
|
|
- if (AT_isValidSymbol((Symbol)reg[i])) {
|
|
- AT_markSymbol((Symbol)reg[i]);
|
|
- }
|
|
- }
|
|
-
|
|
- /* The register variables are on the stack aswell
|
|
- I set them to zero so they won't be processed again when
|
|
- the stack is traversed. The reg-array is also in the stack
|
|
- but that will be adjusted later */
|
|
- r_eax = 0;
|
|
- r_ebx = 0;
|
|
- r_ecx = 0;
|
|
- r_edx = 0;
|
|
- r_esi = 0;
|
|
- r_edi = 0;
|
|
- r_esp = 0;
|
|
- r_ebp = 0;
|
|
-
|
|
-#else
|
|
- sigjmp_buf env;
|
|
+ jmp_buf env;
|
|
|
|
/* Traverse possible register variables */
|
|
- sigsetjmp(env,0);
|
|
+ setjmp(env);
|
|
|
|
start = (ATerm *)env;
|
|
- stop = ((ATerm *)(((char *)env) + sizeof(sigjmp_buf)));
|
|
+ stop = ((ATerm *)(((char *)env) + sizeof(jmp_buf)));
|
|
mark_memory(start, stop);
|
|
-#endif
|
|
|
|
stackTop = stack_top();
|
|
|
|
-
|
|
start = MIN(stackTop, stackBot);
|
|
stop = MAX(stackTop, stackBot);
|
|
|
|
@@ -343,67 +289,14 @@
|
|
AFun oddSym;
|
|
#endif
|
|
|
|
-#ifdef WIN32
|
|
-
|
|
- unsigned int r_eax, r_ebx, r_ecx, r_edx, \
|
|
- r_esi, r_edi, r_esp, r_ebp;
|
|
- ATerm reg[8], *real_term;
|
|
-
|
|
- __asm {
|
|
- /* Get the registers into local variables to check them
|
|
- for aterms later. */
|
|
- mov r_eax, eax
|
|
- mov r_ebx, ebx
|
|
- mov r_ecx, ecx
|
|
- mov r_edx, edx
|
|
- mov r_esi, esi
|
|
- mov r_edi, edi
|
|
- mov r_esp, esp
|
|
- mov r_ebp, ebp
|
|
- }
|
|
- /* Put the register-values into an array */
|
|
- reg[0] = (ATerm) r_eax;
|
|
- reg[1] = (ATerm) r_ebx;
|
|
- reg[2] = (ATerm) r_ecx;
|
|
- reg[3] = (ATerm) r_edx;
|
|
- reg[4] = (ATerm) r_esi;
|
|
- reg[5] = (ATerm) r_edi;
|
|
- reg[6] = (ATerm) r_esp;
|
|
- reg[7] = (ATerm) r_ebp;
|
|
-
|
|
- for(i=0; i<8; i++) {
|
|
- real_term = AT_isInsideValidTerm(reg[i]);
|
|
- if (real_term != NULL) {
|
|
- AT_markTerm_young(real_term);
|
|
- }
|
|
- if (AT_isValidSymbol((Symbol)reg[i])) {
|
|
- AT_markSymbol_young((Symbol)reg[i]);
|
|
- }
|
|
- }
|
|
-
|
|
- /* The register variables are on the stack aswell
|
|
- I set them to zero so they won't be processed again when
|
|
- the stack is traversed. The reg-array is also in the stack
|
|
- but that will be adjusted later */
|
|
- r_eax = 0;
|
|
- r_ebx = 0;
|
|
- r_ecx = 0;
|
|
- r_edx = 0;
|
|
- r_esi = 0;
|
|
- r_edi = 0;
|
|
- r_esp = 0;
|
|
- r_ebp = 0;
|
|
-
|
|
-#else
|
|
- sigjmp_buf env;
|
|
+ jmp_buf env;
|
|
|
|
/* Traverse possible register variables */
|
|
- sigsetjmp(env,0);
|
|
+ setjmp(env);
|
|
|
|
start = (ATerm *)env;
|
|
- stop = ((ATerm *)(((char *)env) + sizeof(sigjmp_buf)));
|
|
+ stop = ((ATerm *)(((char *)env) + sizeof(jmp_buf)));
|
|
mark_memory_young(start, stop);
|
|
-#endif
|
|
|
|
stackTop = stack_top();
|
|
start = MIN(stackTop, stackBot);
|
|
diff -urN aterm-2.4.2-old/test/randgen.c aterm-2.4.2/test/randgen.c
|
|
--- aterm-2.4.2-old/test/randgen.c 2002-06-06 10:16:29.000000000 +0200
|
|
+++ aterm-2.4.2/test/randgen.c 2006-08-17 16:09:47.000000000 +0200
|
|
@@ -14,8 +14,13 @@
|
|
#if HAVE_LRAND48 && HAVE_SRAND48
|
|
/* Use the rand48() suite */
|
|
#else
|
|
-#define lrand48() random()
|
|
-#define srand48(s) srandom(s)
|
|
+# ifdef WIN32
|
|
+# define lrand48() rand()
|
|
+# define srand48(s) srand(s)
|
|
+# else
|
|
+# define lrand48() random()
|
|
+# define srand48(s) srandom(s)
|
|
+# endif
|
|
#endif
|
|
|
|
/*}}} */
|
|
diff -urN aterm-2.4.2-old/test/termstats.c aterm-2.4.2/test/termstats.c
|
|
--- aterm-2.4.2-old/test/termstats.c 2001-10-09 16:35:21.000000000 +0200
|
|
+++ aterm-2.4.2/test/termstats.c 2006-08-17 17:15:53.000000000 +0200
|
|
@@ -1,7 +1,9 @@
|
|
#include <stdio.h>
|
|
#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
+#ifndef WIN32
|
|
#include <sys/times.h>
|
|
+#endif
|
|
#include <time.h>
|
|
#include <limits.h>
|
|
|
|
@@ -14,7 +16,9 @@
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
+#ifndef WIN32
|
|
struct tms start, end;
|
|
+#endif
|
|
ATerm top = NULL;
|
|
ATerm t, t2;
|
|
ATbool dobafsize = ATfalse;
|
|
@@ -29,16 +33,24 @@
|
|
|
|
ATinit(argc, argv, &top);
|
|
|
|
+#ifndef WIN32
|
|
times(&start);
|
|
+#endif
|
|
t = ATreadFromFile(stdin);
|
|
+#ifndef WIN32
|
|
times(&end);
|
|
textread = end.tms_utime-start.tms_utime;
|
|
+#endif
|
|
|
|
tmp_file = tmpfile();
|
|
+#ifndef WIN32
|
|
times(&start);
|
|
+#endif
|
|
ATwriteToTextFile(t, tmp_file);
|
|
+#ifndef WIN32
|
|
times(&end);
|
|
textwrite = end.tms_utime-start.tms_utime;
|
|
+#endif
|
|
|
|
subterms = AT_calcSubterms(t);
|
|
symbols = AT_calcUniqueSymbols(t);
|
|
@@ -56,37 +68,52 @@
|
|
printf(" bytes p/node : %8.2f\n", ((double)incore)/((double)subterms));
|
|
printf("text size : %8d\n",textsize);
|
|
printf(" bytes p/node : %8.2f\n", ((double)textsize)/((double)subterms));
|
|
+
|
|
+#ifndef WIN32
|
|
printf("text read time : %8.2fs\n", ((double)textread)/((double)CLK_TCK));
|
|
printf(" per node : %8.2fus\n", ((double)textread*1000000.0/subterms)/((double)CLK_TCK));
|
|
printf("text write time : %8.2fs\n", ((double)textwrite)/((double)CLK_TCK));
|
|
printf(" per node : %8.2fus\n", ((double)textwrite*1000000.0/subterms)/((double)CLK_TCK));
|
|
+#endif
|
|
|
|
if(dobafsize) {
|
|
struct stat stats;
|
|
+#ifndef WIN32
|
|
clock_t bafread, bafwrite;
|
|
+#endif
|
|
FILE *file = fopen("/tmp/test.baf", "wb+");
|
|
int fd = fileno(file);
|
|
|
|
+#ifndef WIN32
|
|
times(&start);
|
|
+#endif
|
|
ATwriteToBinaryFile(t, file);
|
|
+#ifndef WIN32
|
|
times(&end);
|
|
bafwrite = end.tms_utime-start.tms_utime;
|
|
+#endif
|
|
fflush(file);
|
|
fstat(fd, &stats);
|
|
bafsize = (int)stats.st_size;
|
|
fseek(file, 0, SEEK_SET);
|
|
+#ifndef WIN32
|
|
times(&start);
|
|
+#endif
|
|
t2 = ATreadFromBinaryFile(file);
|
|
+#ifndef WIN32
|
|
times(&end);
|
|
bafread = end.tms_utime-start.tms_utime;
|
|
+#endif
|
|
printf("baf size : %8d\n", bafsize);
|
|
printf(" bytes p/node : %8.2f\n", ((double)bafsize)/((double)subterms));
|
|
printf(" bits p/node : %8.2f\n", ((double)bafsize*8)/((double)subterms));
|
|
printf(" comp.wrs.text : %8.2f%%\n", 100.0-((double)bafsize*100)/((textsize)));
|
|
+#ifndef WIN32
|
|
printf("baf write time : %8.2fs\n", ((double)bafwrite)/((double)CLK_TCK));
|
|
printf(" per node : %8.2fus\n", ((double)bafwrite*1000000.0/subterms)/((double)CLK_TCK));
|
|
printf("baf read time : %8.2fs\n", ((double)bafread)/((double)CLK_TCK));
|
|
printf(" per node : %8.2fus\n", ((double)bafread*1000000.0/subterms)/((double)CLK_TCK));
|
|
+#endif
|
|
fclose(file);
|
|
}
|
|
|