import CgHeapery ( mkVirtHeapOffsets )
import FastString ( FastString(..) )
import Util ( lengthIs, listLengthCmp )
+import Outputable
import Foreign
import Foreign.C
import GHC.Ptr ( Ptr(..) )
import GHC.Prim
-import Outputable
+import Debug.Trace
+import Text.Printf
\end{code}
%************************************************************************
itblCode (ItblPtr ptr)
= (castPtr ptr)
#ifdef GHCI_TABLES_NEXT_TO_CODE
- `plusPtr` (3 * wORD_SIZE)
+ `plusPtr` conInfoTableSizeB
#endif
+-- XXX bogus
+conInfoTableSizeB = 3 * wORD_SIZE
+
type ItblEnv = NameEnv (Name, ItblPtr)
-- We need the Name in the range so we know which
-- elements to filter out when unloading a module
, code = code
#endif
}
- qNameCString <- newCString $ dataConIdentity dcon
+ qNameCString <- newArray0 0 $ dataConIdentity dcon
let conInfoTbl = StgConInfoTable {
conDesc = qNameCString,
infoTable = itbl
#endif
data StgConInfoTable = StgConInfoTable {
- conDesc :: CString,
+ conDesc :: Ptr Word8,
infoTable :: StgInfoTable
}
StgConInfoTable
{
#ifdef GHCI_TABLES_NEXT_TO_CODE
- conDesc = castPtr $ ptr `plusPtr` wORD_SIZE `plusPtr` desc
+ conDesc = castPtr $ ptr `plusPtr` conInfoTableSizeB `plusPtr` desc
#else
conDesc = desc
#endif
poke ptr itbl
= runState (castPtr ptr) $ do
#ifdef GHCI_TABLES_NEXT_TO_CODE
- store (conDesc itbl `minusPtr` (ptr `plusPtr` wORD_SIZE))
+ store (conDesc itbl `minusPtr` (ptr `plusPtr` conInfoTableSizeB))
#endif
store (infoTable itbl)
#ifndef GHCI_TABLES_NEXT_TO_CODE