projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Export blockUserSignals and unblockUserSignals (needed for #2870)
[ghc-hetmet.git]
/
rts
/
HeapStackCheck.cmm
diff --git
a/rts/HeapStackCheck.cmm
b/rts/HeapStackCheck.cmm
index
5b21ee1
..
94cec38
100644
(file)
--- a/
rts/HeapStackCheck.cmm
+++ b/
rts/HeapStackCheck.cmm
@@
-66,7
+66,7
@@
import LeaveCriticalSection;
CLOSE_NURSERY(); \
CurrentNursery = bdescr_link(CurrentNursery); \
OPEN_NURSERY(); \
CLOSE_NURSERY(); \
CurrentNursery = bdescr_link(CurrentNursery); \
OPEN_NURSERY(); \
- if (CInt[context_switch] != 0 :: CInt) { \
+ if (Capability_context_switch(MyCapability()) != 0 :: CInt) { \
R1 = ThreadYielding; \
goto sched; \
} else { \
R1 = ThreadYielding; \
goto sched; \
} else { \
@@
-114,7
+114,7
@@
import LeaveCriticalSection;
There are canned sequences for 'n' pointer values in registers.
-------------------------------------------------------------------------- */
There are canned sequences for 'n' pointer values in registers.
-------------------------------------------------------------------------- */
-INFO_TABLE_RET( stg_enter, RET_SMALL, "ptr" W_ unused)
+INFO_TABLE_RET( stg_enter, RET_SMALL, P_ unused)
{
R1 = Sp(1);
Sp_adj(2);
{
R1 = Sp(1);
Sp_adj(2);
@@
-444,7
+444,7
@@
INFO_TABLE_RET( stg_gc_void, RET_SMALL)
/*-- R1 is boxed/unpointed -------------------------------------------------- */
/*-- R1 is boxed/unpointed -------------------------------------------------- */
-INFO_TABLE_RET( stg_gc_unpt_r1, RET_SMALL, "ptr" W_ unused)
+INFO_TABLE_RET( stg_gc_unpt_r1, RET_SMALL, P_ unused)
{
R1 = Sp(1);
Sp_adj(2);
{
R1 = Sp(1);
Sp_adj(2);
@@
-531,7
+531,7
@@
stg_gc_l1
/*-- Unboxed tuple return, one pointer (unregisterised build only) ---------- */
/*-- Unboxed tuple return, one pointer (unregisterised build only) ---------- */
-INFO_TABLE_RET( stg_ut_1_0_unreg, RET_SMALL, "ptr" W_ unused )
+INFO_TABLE_RET( stg_ut_1_0_unreg, RET_SMALL, P_ unused )
{
Sp_adj(1);
// one ptr is on the stack (Sp(0))
{
Sp_adj(1);
// one ptr is on the stack (Sp(0))
@@
-816,7
+816,7
@@
stg_block_1
*
* -------------------------------------------------------------------------- */
*
* -------------------------------------------------------------------------- */
-INFO_TABLE_RET( stg_block_takemvar, RET_SMALL, "ptr" W_ unused )
+INFO_TABLE_RET( stg_block_takemvar, RET_SMALL, P_ unused )
{
R1 = Sp(1);
Sp_adj(2);
{
R1 = Sp(1);
Sp_adj(2);
@@
-827,7
+827,9
@@
INFO_TABLE_RET( stg_block_takemvar, RET_SMALL, "ptr" W_ unused )
stg_block_takemvar_finally
{
#ifdef THREADED_RTS
stg_block_takemvar_finally
{
#ifdef THREADED_RTS
- unlockClosure(R3, stg_EMPTY_MVAR_info);
+ unlockClosure(R3, stg_MVAR_DIRTY_info);
+#else
+ SET_INFO(R3, stg_MVAR_DIRTY_info);
#endif
jump StgReturn;
}
#endif
jump StgReturn;
}
@@
-841,7
+843,7
@@
stg_block_takemvar
BLOCK_BUT_FIRST(stg_block_takemvar_finally);
}
BLOCK_BUT_FIRST(stg_block_takemvar_finally);
}
-INFO_TABLE_RET( stg_block_putmvar, RET_SMALL, "ptr" W_ unused1, "ptr" W_ unused2 )
+INFO_TABLE_RET( stg_block_putmvar, RET_SMALL, P_ unused1, P_ unused2 )
{
R2 = Sp(2);
R1 = Sp(1);
{
R2 = Sp(2);
R1 = Sp(1);
@@
-853,7
+855,9
@@
INFO_TABLE_RET( stg_block_putmvar, RET_SMALL, "ptr" W_ unused1, "ptr" W_ unused2
stg_block_putmvar_finally
{
#ifdef THREADED_RTS
stg_block_putmvar_finally
{
#ifdef THREADED_RTS
- unlockClosure(R3, stg_FULL_MVAR_info);
+ unlockClosure(R3, stg_MVAR_DIRTY_info);
+#else
+ SET_INFO(R3, stg_MVAR_DIRTY_info);
#endif
jump StgReturn;
}
#endif
jump StgReturn;
}
@@
-888,7
+892,7
@@
stg_block_blackhole
BLOCK_BUT_FIRST(stg_block_blackhole_finally);
}
BLOCK_BUT_FIRST(stg_block_blackhole_finally);
}
-INFO_TABLE_RET( stg_block_throwto, RET_SMALL, "ptr" W_ unused, "ptr" W_ unused )
+INFO_TABLE_RET( stg_block_throwto, RET_SMALL, P_ unused, P_ unused )
{
R2 = Sp(2);
R1 = Sp(1);
{
R2 = Sp(2);
R1 = Sp(1);