summaryrefslogtreecommitdiff
path: root/rts
diff options
context:
space:
mode:
authordias@eecs.harvard.edu <unknown>2008-08-14 12:40:27 +0000
committerdias@eecs.harvard.edu <unknown>2008-08-14 12:40:27 +0000
commit176fa33f17dd78355cc572e006d2ab26898e2c69 (patch)
tree54f951a515eac57626f8f15d57f7bc75f1096a7a /rts
parente06951a75a1f519e8f015880c363a8dedc08ff9c (diff)
downloadhaskell-176fa33f17dd78355cc572e006d2ab26898e2c69.tar.gz
Merging in the new codegen branch
This merge does not turn on the new codegen (which only compiles a select few programs at this point), but it does introduce some changes to the old code generator. The high bits: 1. The Rep Swamp patch is finally here. The highlight is that the representation of types at the machine level has changed. Consequently, this patch contains updates across several back ends. 2. The new Stg -> Cmm path is here, although it appears to have a fair number of bugs lurking. 3. Many improvements along the CmmCPSZ path, including: o stack layout o some code for infotables, half of which is right and half wrong o proc-point splitting
Diffstat (limited to 'rts')
-rw-r--r--rts/Exception.cmm4
-rw-r--r--rts/HeapStackCheck.cmm12
-rw-r--r--rts/PrimOps.cmm8
-rw-r--r--rts/Updates.cmm4
4 files changed, 14 insertions, 14 deletions
diff --git a/rts/Exception.cmm b/rts/Exception.cmm
index 479c9c9427..43f53c7ad3 100644
--- a/rts/Exception.cmm
+++ b/rts/Exception.cmm
@@ -253,7 +253,7 @@ INFO_TABLE_RET(stg_catch_frame, CATCH_FRAME,
#if defined(PROFILING)
W_ unused1, W_ unused2,
#endif
- W_ unused3, "ptr" W_ unused4)
+ W_ unused3, P_ unused4)
{
Sp = Sp + SIZEOF_StgCatchFrame;
jump %ENTRY_CODE(Sp(SP_OFF));
@@ -315,7 +315,7 @@ section "data" {
no_break_on_exception: W_[1];
}
-INFO_TABLE_RET(stg_raise_ret, RET_SMALL, "ptr" W_ arg1)
+INFO_TABLE_RET(stg_raise_ret, RET_SMALL, P_ arg1)
{
R1 = Sp(1);
Sp = Sp + WDS(2);
diff --git a/rts/HeapStackCheck.cmm b/rts/HeapStackCheck.cmm
index 3980ca2dd1..94cec387cc 100644
--- a/rts/HeapStackCheck.cmm
+++ b/rts/HeapStackCheck.cmm
@@ -114,7 +114,7 @@ import LeaveCriticalSection;
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);
@@ -444,7 +444,7 @@ INFO_TABLE_RET( stg_gc_void, RET_SMALL)
/*-- 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);
@@ -531,7 +531,7 @@ stg_gc_l1
/*-- 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))
@@ -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);
@@ -843,7 +843,7 @@ stg_block_takemvar
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);
@@ -892,7 +892,7 @@ stg_block_blackhole
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);
diff --git a/rts/PrimOps.cmm b/rts/PrimOps.cmm
index 72090c8fb0..f75b8aaf16 100644
--- a/rts/PrimOps.cmm
+++ b/rts/PrimOps.cmm
@@ -1084,7 +1084,7 @@ INFO_TABLE_RET(stg_catch_retry_frame, CATCH_RETRY_FRAME,
#if defined(PROFILING)
W_ unused1, W_ unused2,
#endif
- W_ unused3, "ptr" W_ unused4, "ptr" W_ unused5)
+ W_ unused3, P_ unused4, P_ unused5)
{
W_ r, frame, trec, outer;
@@ -1118,7 +1118,7 @@ INFO_TABLE_RET(stg_atomically_frame, ATOMICALLY_FRAME,
#if defined(PROFILING)
W_ unused1, W_ unused2,
#endif
- "ptr" W_ unused3, "ptr" W_ unused4)
+ P_ unused3, P_ unused4)
{
W_ frame, trec, valid, next_invariant, q, outer;
@@ -1180,7 +1180,7 @@ INFO_TABLE_RET(stg_atomically_waiting_frame, ATOMICALLY_FRAME,
#if defined(PROFILING)
W_ unused1, W_ unused2,
#endif
- "ptr" W_ unused3, "ptr" W_ unused4)
+ P_ unused3, P_ unused4)
{
W_ frame, trec, valid;
@@ -1214,7 +1214,7 @@ INFO_TABLE_RET(stg_catch_stm_frame, CATCH_STM_FRAME,
#if defined(PROFILING)
W_ unused1, W_ unused2,
#endif
- "ptr" W_ unused3, "ptr" W_ unused4)
+ P_ unused3, P_ unused4)
{
W_ r, frame, trec, outer;
frame = Sp;
diff --git a/rts/Updates.cmm b/rts/Updates.cmm
index 7ebade0aea..4043da05a5 100644
--- a/rts/Updates.cmm
+++ b/rts/Updates.cmm
@@ -45,9 +45,9 @@
}
#if defined(PROFILING)
-#define UPD_FRAME_PARAMS W_ unused1, W_ unused2, "ptr" W_ unused3
+#define UPD_FRAME_PARAMS W_ unused1, W_ unused2, P_ unused3
#else
-#define UPD_FRAME_PARAMS "ptr" W_ unused1
+#define UPD_FRAME_PARAMS P_ unused1
#endif
/* this bitmap indicates that the first word of an update frame is a