projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[project @ 2000-10-17 15:57:57 by sewardj]
[ghc-hetmet.git]
/
ghc
/
interpreter
/
storage.c
diff --git
a/ghc/interpreter/storage.c
b/ghc/interpreter/storage.c
index
c773541
..
9d743bf
100644
(file)
--- a/
ghc/interpreter/storage.c
+++ b/
ghc/interpreter/storage.c
@@
-9,8
+9,8
@@
* included in the distribution.
*
* $RCSfile: storage.c,v $
* included in the distribution.
*
* $RCSfile: storage.c,v $
- * $Revision: 1.75 $
- * $Date: 2000/05/09 17:38:19 $
+ * $Revision: 1.78 $
+ * $Date: 2000/06/23 13:13:10 $
* ------------------------------------------------------------------------*/
#include "hugsbasictypes.h"
* ------------------------------------------------------------------------*/
#include "hugsbasictypes.h"
@@
-21,6
+21,13
@@
#include <setjmp.h>
#include "Stg.h"
#include <setjmp.h>
#include "Stg.h"
+/* #include "Storage.h"
+ We'd like to, but Storage.h and storage.h look the same under
+ Cygwin, alas, causing compilation chaos. So just copy what
+ we need to know, which is ...
+*/
+extern StgClosure* MarkRoot ( StgClosure* );
+
/*#define DEBUG_SHOWUSE*/
/* --------------------------------------------------------------------------
/*#define DEBUG_SHOWUSE*/
/* --------------------------------------------------------------------------
@@
-1914,15
+1921,18
@@
OSectionKind lookupSection ( void* ad )
ObjectCode* oc;
OSectionKind sect;
ObjectCode* oc;
OSectionKind sect;
+ /* speedup hack */
+ if (!combined) return HUGS_SECTIONKIND_OTHER;
+
for (m = MODULE_BASE_ADDR;
m < MODULE_BASE_ADDR+tabModuleSz; m++) {
if (tabModule[m-MODULE_BASE_ADDR].inUse) {
for (m = MODULE_BASE_ADDR;
m < MODULE_BASE_ADDR+tabModuleSz; m++) {
if (tabModule[m-MODULE_BASE_ADDR].inUse) {
- if (module(m).object) {
- sect = ocLookupSection ( module(m).object, ad );
+ if (tabModule[m-MODULE_BASE_ADDR].object) {
+ sect = ocLookupSection ( tabModule[m-MODULE_BASE_ADDR].object, ad );
if (sect != HUGS_SECTIONKIND_NOINFOAVAIL)
return sect;
}
if (sect != HUGS_SECTIONKIND_NOINFOAVAIL)
return sect;
}
- for (oc = module(m).objectExtras; oc; oc=oc->next) {
+ for (oc = tabModule[m-MODULE_BASE_ADDR].objectExtras; oc; oc=oc->next) {
sect = ocLookupSection ( oc, ad );
if (sect != HUGS_SECTIONKIND_NOINFOAVAIL)
return sect;
sect = ocLookupSection ( oc, ad );
if (sect != HUGS_SECTIONKIND_NOINFOAVAIL)
return sect;
@@
-1944,7
+1954,7
@@
void markHugsObjects( void )
for ( nm = NAME_BASE_ADDR;
nm < NAME_BASE_ADDR+tabNameSz; ++nm ) {
if (tabName[nm-NAME_BASE_ADDR].inUse) {
for ( nm = NAME_BASE_ADDR;
nm < NAME_BASE_ADDR+tabNameSz; ++nm ) {
if (tabName[nm-NAME_BASE_ADDR].inUse) {
- Cell cl = name(nm).closure;
+ Cell cl = tabName[nm-NAME_BASE_ADDR].closure;
if (nonNull(cl)) {
assert(isCPtr(cl));
snd(cl) = (Cell)MarkRoot ( (StgClosure*)(snd(cl)) );
if (nonNull(cl)) {
assert(isCPtr(cl));
snd(cl) = (Cell)MarkRoot ( (StgClosure*)(snd(cl)) );
@@
-1955,14
+1965,13
@@
void markHugsObjects( void )
for ( tc = TYCON_BASE_ADDR;
tc < TYCON_BASE_ADDR+tabTyconSz; ++tc ) {
if (tabTycon[tc-TYCON_BASE_ADDR].inUse) {
for ( tc = TYCON_BASE_ADDR;
tc < TYCON_BASE_ADDR+tabTyconSz; ++tc ) {
if (tabTycon[tc-TYCON_BASE_ADDR].inUse) {
- Cell cl = tycon(tc).closure;
+ Cell cl = tabTycon[tc-TYCON_BASE_ADDR].closure;
if (nonNull(cl)) {
assert(isCPtr(cl));
snd(cl) = (Cell)MarkRoot ( (StgClosure*)(snd(cl)) );
}
}
}
if (nonNull(cl)) {
assert(isCPtr(cl));
snd(cl) = (Cell)MarkRoot ( (StgClosure*)(snd(cl)) );
}
}
}
-
}
}