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