summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/Cmm.h1
-rw-r--r--includes/rts/storage/ClosureMacros.h1
-rw-r--r--includes/rts/storage/ClosureTypes.h73
-rw-r--r--includes/stg/MiscClosures.h1
-rw-r--r--rts/CheckUnload.c1
-rw-r--r--rts/ClosureFlags.c3
-rw-r--r--rts/Interpreter.c1
-rw-r--r--rts/LdvProfile.c1
-rw-r--r--rts/Printer.c10
-rw-r--r--rts/ProfHeap.c1
-rw-r--r--rts/RetainerProfile.c3
-rw-r--r--rts/Stable.c1
-rw-r--r--rts/StgMiscClosures.cmm39
-rw-r--r--rts/sm/Compact.c1
-rw-r--r--rts/sm/Evac.c3
-rw-r--r--rts/sm/GCAux.c1
-rw-r--r--rts/sm/Sanity.c1
-rw-r--r--rts/sm/Scav.c8
-rw-r--r--utils/genapply/Main.hs4
19 files changed, 39 insertions, 115 deletions
diff --git a/includes/Cmm.h b/includes/Cmm.h
index 20d6e56228..cbd7e36ac1 100644
--- a/includes/Cmm.h
+++ b/includes/Cmm.h
@@ -288,7 +288,6 @@
(TO_W_( %INFO_TYPE(%STD_INFO(info)) )) { \
case \
IND, \
- IND_PERM, \
IND_STATIC: \
{ \
x = StgInd_indirectee(x); \
diff --git a/includes/rts/storage/ClosureMacros.h b/includes/rts/storage/ClosureMacros.h
index a914059a5c..d53487326f 100644
--- a/includes/rts/storage/ClosureMacros.h
+++ b/includes/rts/storage/ClosureMacros.h
@@ -378,7 +378,6 @@ closure_sizeW_ (StgClosure *p, StgInfoTable *info)
case PAP:
return pap_sizeW((StgPAP *)p);
case IND:
- case IND_PERM:
return sizeofW(StgInd);
case ARR_WORDS:
return arr_words_sizeW((StgArrBytes *)p);
diff --git a/includes/rts/storage/ClosureTypes.h b/includes/rts/storage/ClosureTypes.h
index 9bdddc4e0e..4f66de318b 100644
--- a/includes/rts/storage/ClosureTypes.h
+++ b/includes/rts/storage/ClosureTypes.h
@@ -47,42 +47,41 @@
#define PAP 26
#define AP_STACK 27
#define IND 28
-#define IND_PERM 29
-#define IND_STATIC 30
-#define RET_BCO 31
-#define RET_SMALL 32
-#define RET_BIG 33
-#define RET_FUN 34
-#define UPDATE_FRAME 35
-#define CATCH_FRAME 36
-#define UNDERFLOW_FRAME 37
-#define STOP_FRAME 38
-#define BLOCKING_QUEUE 39
-#define BLACKHOLE 40
-#define MVAR_CLEAN 41
-#define MVAR_DIRTY 42
-#define TVAR 43
-#define ARR_WORDS 44
-#define MUT_ARR_PTRS_CLEAN 45
-#define MUT_ARR_PTRS_DIRTY 46
-#define MUT_ARR_PTRS_FROZEN0 47
-#define MUT_ARR_PTRS_FROZEN 48
-#define MUT_VAR_CLEAN 49
-#define MUT_VAR_DIRTY 50
-#define WEAK 51
-#define PRIM 52
-#define MUT_PRIM 53
-#define TSO 54
-#define STACK 55
-#define TREC_CHUNK 56
-#define ATOMICALLY_FRAME 57
-#define CATCH_RETRY_FRAME 58
-#define CATCH_STM_FRAME 59
-#define WHITEHOLE 60
-#define SMALL_MUT_ARR_PTRS_CLEAN 61
-#define SMALL_MUT_ARR_PTRS_DIRTY 62
-#define SMALL_MUT_ARR_PTRS_FROZEN0 63
-#define SMALL_MUT_ARR_PTRS_FROZEN 64
-#define N_CLOSURE_TYPES 65
+#define IND_STATIC 29
+#define RET_BCO 30
+#define RET_SMALL 31
+#define RET_BIG 32
+#define RET_FUN 33
+#define UPDATE_FRAME 34
+#define CATCH_FRAME 35
+#define UNDERFLOW_FRAME 36
+#define STOP_FRAME 37
+#define BLOCKING_QUEUE 38
+#define BLACKHOLE 39
+#define MVAR_CLEAN 40
+#define MVAR_DIRTY 41
+#define TVAR 42
+#define ARR_WORDS 43
+#define MUT_ARR_PTRS_CLEAN 44
+#define MUT_ARR_PTRS_DIRTY 45
+#define MUT_ARR_PTRS_FROZEN0 46
+#define MUT_ARR_PTRS_FROZEN 47
+#define MUT_VAR_CLEAN 48
+#define MUT_VAR_DIRTY 49
+#define WEAK 50
+#define PRIM 51
+#define MUT_PRIM 52
+#define TSO 53
+#define STACK 54
+#define TREC_CHUNK 55
+#define ATOMICALLY_FRAME 56
+#define CATCH_RETRY_FRAME 57
+#define CATCH_STM_FRAME 58
+#define WHITEHOLE 59
+#define SMALL_MUT_ARR_PTRS_CLEAN 60
+#define SMALL_MUT_ARR_PTRS_DIRTY 61
+#define SMALL_MUT_ARR_PTRS_FROZEN0 62
+#define SMALL_MUT_ARR_PTRS_FROZEN 63
+#define N_CLOSURE_TYPES 64
#endif /* RTS_STORAGE_CLOSURETYPES_H */
diff --git a/includes/stg/MiscClosures.h b/includes/stg/MiscClosures.h
index 1236d735ff..dff129b948 100644
--- a/includes/stg/MiscClosures.h
+++ b/includes/stg/MiscClosures.h
@@ -86,7 +86,6 @@ RTS_RET(stg_apply_interp);
RTS_ENTRY(stg_IND);
RTS_ENTRY(stg_IND_direct);
RTS_ENTRY(stg_IND_STATIC);
-RTS_ENTRY(stg_IND_PERM);
RTS_ENTRY(stg_BLACKHOLE);
RTS_ENTRY(stg_CAF_BLACKHOLE);
RTS_ENTRY(__stg_EAGER_BLACKHOLE);
diff --git a/rts/CheckUnload.c b/rts/CheckUnload.c
index c75673847e..b8014a61e6 100644
--- a/rts/CheckUnload.c
+++ b/rts/CheckUnload.c
@@ -136,7 +136,6 @@ static void searchHeapBlocks (HashTable *addrs, bdescr *bd)
size = sizeW_fromITBL(info);
break;
- case IND_PERM:
case BLACKHOLE:
case BLOCKING_QUEUE:
prim = rtsTrue;
diff --git a/rts/ClosureFlags.c b/rts/ClosureFlags.c
index c43437dc04..cd2c7e1435 100644
--- a/rts/ClosureFlags.c
+++ b/rts/ClosureFlags.c
@@ -50,7 +50,6 @@ StgWord16 closure_flags[] = {
[PAP] = (_HNF| _NS ),
[AP_STACK] = ( _THU ),
[IND] = ( _NS| _IND ),
- [IND_PERM] = ( _NS| _IND ),
[IND_STATIC] = ( _NS|_STA| _IND ),
[RET_BCO] = ( 0 ),
[RET_SMALL] = ( _BTM| _SRT ),
@@ -88,6 +87,6 @@ StgWord16 closure_flags[] = {
[SMALL_MUT_ARR_PTRS_FROZEN] = (_HNF| _NS| _UPT )
};
-#if N_CLOSURE_TYPES != 65
+#if N_CLOSURE_TYPES != 64
#error Closure types changed: update ClosureFlags.c!
#endif
diff --git a/rts/Interpreter.c b/rts/Interpreter.c
index 21d7527541..0e981007a3 100644
--- a/rts/Interpreter.c
+++ b/rts/Interpreter.c
@@ -330,7 +330,6 @@ eval_obj:
switch ( get_itbl(obj)->type ) {
case IND:
- case IND_PERM:
case IND_STATIC:
{
tagged_obj = ((StgInd*)obj)->indirectee;
diff --git a/rts/LdvProfile.c b/rts/LdvProfile.c
index 29fb24dffe..2330d74bd1 100644
--- a/rts/LdvProfile.c
+++ b/rts/LdvProfile.c
@@ -109,7 +109,6 @@ processHeapClosureForDead( StgClosure *c )
case FUN_0_2:
case BLACKHOLE:
case BLOCKING_QUEUE:
- case IND_PERM:
/*
'Ingore' cases
*/
diff --git a/rts/Printer.c b/rts/Printer.c
index e2fa57c306..3b98ab4cd6 100644
--- a/rts/Printer.c
+++ b/rts/Printer.c
@@ -232,12 +232,6 @@ printClosure( StgClosure *obj )
debugBelch(")\n");
break;
- case IND_PERM:
- debugBelch("IND(");
- printPtr((StgPtr)((StgInd*)obj)->indirectee);
- debugBelch(")\n");
- break;
-
case IND_STATIC:
debugBelch("IND_STATIC(");
printPtr((StgPtr)((StgInd*)obj)->indirectee);
@@ -814,8 +808,7 @@ void prettyPrintClosure_ (StgClosure *obj)
type = get_itbl(obj)->type;
while (type == IND ||
- type == IND_STATIC ||
- type == IND_PERM)
+ type == IND_STATIC)
{
obj = ((StgInd *)obj)->indirectee;
type = get_itbl(obj)->type;
@@ -926,7 +919,6 @@ char *closure_type_names[] = {
[PAP] = "PAP",
[AP_STACK] = "AP_STACK",
[IND] = "IND",
- [IND_PERM] = "IND_PERM",
[IND_STATIC] = "IND_STATIC",
[RET_BCO] = "RET_BCO",
[RET_SMALL] = "RET_SMALL",
diff --git a/rts/ProfHeap.c b/rts/ProfHeap.c
index e7f6417014..416f5ac4b8 100644
--- a/rts/ProfHeap.c
+++ b/rts/ProfHeap.c
@@ -961,7 +961,6 @@ heapCensusChain( Census *census, bdescr *bd )
case CONSTR:
case FUN:
- case IND_PERM:
case BLACKHOLE:
case BLOCKING_QUEUE:
case FUN_1_0:
diff --git a/rts/RetainerProfile.c b/rts/RetainerProfile.c
index ba58c199f0..7a1a66185f 100644
--- a/rts/RetainerProfile.c
+++ b/rts/RetainerProfile.c
@@ -466,7 +466,6 @@ push( StgClosure *c, retainer c_child_r, StgClosure **first_child )
case THUNK_SELECTOR:
*first_child = ((StgSelector *)c)->selectee;
return;
- case IND_PERM:
case BLACKHOLE:
*first_child = ((StgInd *)c)->indirectee;
return;
@@ -934,7 +933,6 @@ pop( StgClosure **c, StgClosure **cp, retainer *r )
case MUT_VAR_CLEAN:
case MUT_VAR_DIRTY:
case THUNK_SELECTOR:
- case IND_PERM:
case CONSTR_1_1:
// cannot appear
case PAP:
@@ -1070,7 +1068,6 @@ isRetainer( StgClosure *c )
// partial applications
case PAP:
// indirection
- case IND_PERM:
// IND_STATIC used to be an error, but at the moment it can happen
// as isAlive doesn't look through IND_STATIC as it ignores static
// closures. See trac #3956 for a program that hit this error.
diff --git a/rts/Stable.c b/rts/Stable.c
index 431b7c66c1..bd09a9f7cc 100644
--- a/rts/Stable.c
+++ b/rts/Stable.c
@@ -292,7 +292,6 @@ removeIndirections (StgClosure* p)
switch (get_itbl(q)->type) {
case IND:
case IND_STATIC:
- case IND_PERM:
p = ((StgInd *)q)->indirectee;
continue;
diff --git a/rts/StgMiscClosures.cmm b/rts/StgMiscClosures.cmm
index e3be2cb697..757730e5fa 100644
--- a/rts/StgMiscClosures.cmm
+++ b/rts/StgMiscClosures.cmm
@@ -258,45 +258,6 @@ INFO_TABLE(stg_IND_STATIC,1,0,IND_STATIC,"IND_STATIC","IND_STATIC")
jump %GET_ENTRY(R1) [R1];
}
-INFO_TABLE(stg_IND_PERM,1,0,IND_PERM,"IND_PERM","IND_PERM")
- /* explicit stack */
-{
- /* Don't add INDs to granularity cost */
-
- /* Don't: TICK_ENT_STATIC_IND(Node); for ticky-ticky; this ind is
- here only to help profiling */
-
-#if defined(TICKY_TICKY) && !defined(PROFILING)
- /* TICKY_TICKY && !PROFILING means PERM_IND *replaces* an IND, rather than
- being extra */
- TICK_ENT_PERM_IND();
-#endif
-
- LDV_ENTER(R1);
-
- /* For ticky-ticky, change the perm_ind to a normal ind on first
- * entry, so the number of ent_perm_inds is the number of *thunks*
- * entered again, not the number of subsequent entries.
- *
- * Since this screws up cost centres, we die if profiling and
- * ticky_ticky are on at the same time. KSW 1999-01.
- */
-#ifdef TICKY_TICKY
-# ifdef PROFILING
-# error Profiling and ticky-ticky do not mix at present!
-# endif /* PROFILING */
- StgHeader_info(R1) = stg_IND_info;
-#endif /* TICKY_TICKY */
-
- R1 = UNTAG(StgInd_indirectee(R1));
-
-#if defined(TICKY_TICKY) && !defined(PROFILING)
- TICK_ENT_VIA_NODE();
-#endif
-
- jump %GET_ENTRY(R1) [R1];
-}
-
/* ----------------------------------------------------------------------------
Black holes.
diff --git a/rts/sm/Compact.c b/rts/sm/Compact.c
index 81bf036f83..4ded5bf92b 100644
--- a/rts/sm/Compact.c
+++ b/rts/sm/Compact.c
@@ -649,7 +649,6 @@ thread_obj (StgInfoTable *info, StgPtr p)
}
case IND:
- case IND_PERM:
thread(&((StgInd *)p)->indirectee);
return p + sizeofW(StgInd);
diff --git a/rts/sm/Evac.c b/rts/sm/Evac.c
index 579e788535..a9f112702f 100644
--- a/rts/sm/Evac.c
+++ b/rts/sm/Evac.c
@@ -601,7 +601,6 @@ loop:
return;
case FUN:
- case IND_PERM:
case CONSTR:
copy_tag_nolock(p,info,q,sizeW_fromITBL(INFO_PTR_TO_STRUCT(info)),gen_no,tag);
return;
@@ -965,7 +964,6 @@ selector_loop:
info = INFO_PTR_TO_STRUCT((StgInfoTable *)info_ptr);
switch (info->type) {
case IND:
- case IND_PERM:
case IND_STATIC:
val = ((StgInd *)val)->indirectee;
goto val_loop;
@@ -998,7 +996,6 @@ selector_loop:
}
case IND:
- case IND_PERM:
case IND_STATIC:
// Again, we might need to untag a constructor.
selectee = UNTAG_CLOSURE( ((StgInd *)selectee)->indirectee );
diff --git a/rts/sm/GCAux.c b/rts/sm/GCAux.c
index 174ddcf57e..6740cdc99c 100644
--- a/rts/sm/GCAux.c
+++ b/rts/sm/GCAux.c
@@ -88,7 +88,6 @@ isAlive(StgClosure *p)
case IND:
case IND_STATIC:
- case IND_PERM:
// follow indirections
p = ((StgInd *)q)->indirectee;
continue;
diff --git a/rts/sm/Sanity.c b/rts/sm/Sanity.c
index 2541ba15a2..7ce1183e48 100644
--- a/rts/sm/Sanity.c
+++ b/rts/sm/Sanity.c
@@ -276,7 +276,6 @@ checkClosure( StgClosure* p )
case CONSTR_1_1:
case CONSTR_0_2:
case CONSTR_2_0:
- case IND_PERM:
case BLACKHOLE:
case PRIM:
case MUT_PRIM:
diff --git a/rts/sm/Scav.c b/rts/sm/Scav.c
index a28d84226f..15d2b7b9f4 100644
--- a/rts/sm/Scav.c
+++ b/rts/sm/Scav.c
@@ -580,7 +580,6 @@ scavenge_block (bdescr *bd)
break;
}
- case IND_PERM:
case BLACKHOLE:
evacuate(&((StgInd *)p)->indirectee);
p += sizeofW(StgInd);
@@ -980,12 +979,6 @@ scavenge_mark_stack(void)
break;
}
- case IND_PERM:
- // don't need to do anything here: the only possible case
- // is that we're in a 1-space compacting collector, with
- // no "old" generation.
- break;
-
case IND:
case BLACKHOLE:
evacuate(&((StgInd *)p)->indirectee);
@@ -1295,7 +1288,6 @@ scavenge_one(StgPtr p)
case CONSTR_2_0:
case WEAK:
case PRIM:
- case IND_PERM:
{
StgPtr q, end;
diff --git a/utils/genapply/Main.hs b/utils/genapply/Main.hs
index e58a496f6a..d01b025b49 100644
--- a/utils/genapply/Main.hs
+++ b/utils/genapply/Main.hs
@@ -632,7 +632,6 @@ genApply regstatus args =
-- print " [THUNK_SELECTOR] &&thunk_lbl,"
-- print " [IND] &&ind_lbl,"
-- print " [IND_STATIC] &&ind_lbl,"
--- print " [IND_PERM] &&ind_lbl,"
-- print " };"
tickForArity (length args),
@@ -750,8 +749,7 @@ genApply regstatus args =
-- print " ind_lbl:"
-- else:
text "case IND,",
- text " IND_STATIC,",
- text " IND_PERM: {",
+ text " IND_STATIC: {",
nest 4 (vcat [
text "R1 = StgInd_indirectee(R1);",
-- An indirection node might contain a tagged pointer