[add Jhc.Prim.Rts to access properties of the RTS
John Meacham <john@repetae.net>**20120207015719
 Ignore-this: be65a8819515ab079e2ddbd28914bed7
] addfile ./lib/jhc-prim/Jhc/Prim/Array.hs
hunk ./lib/jhc-prim/Jhc/Prim/Array.hs 1
+module Jhc.Prim.Array where
+
+import Jhc.Prim.IO
+import Jhc.Prim.Bits
+
+data MutArray_ :: * -> #
+newtype Array_ m = Array_ (MutArray_ m)
+
+foreign import primitive newArray__      :: Word_ -> a -> UST s (MutArray_ a)
+foreign import primitive newBlankArray__ :: Word_ -> UST s (MutArray_ a)
+foreign import primitive copyArray__     :: Word_ -> Word_ -> Word_ -> MutArray_ a -> MutArray_ a -> UST_ s
+foreign import primitive readArray__     :: MutArray_ a -> Word_ -> UST s a
+foreign import primitive writeArray__    :: MutArray_ a -> Word_ -> a -> UST_ s
+foreign import primitive indexArray__    :: Array_ a -> Word_ -> (# a #)
addfile ./lib/jhc-prim/Jhc/Prim/Rts.hs
hunk ./lib/jhc-prim/Jhc/Prim/Rts.hs 1
+-- allowing introspection into the rts
+module Jhc.Prim.Rts where
+
+import Jhc.Prim.Bits
+
+--data Void
+
+-- A Bang_ is always in WHNF. The mnemonic is 'Bang_ Char ~ !Char'
+-- toBang_ will seq the object if needed.
+data Bang_ a :: #  -- TODO(jwm): should be '!'
+
+foreign import primitive toBang_ :: a -> Bang_ a
+foreign import primitive fromBang_ :: Bang_ a -> a
+foreign import primitive isWHNF :: a -> Bool_
+foreign import primitive isInHeap :: Bang_ a -> Bool_
+foreign import primitive bangBits :: Bang_ a -> BitsPtr_
+foreign import primitive bangPtr  :: Bang_ a -> Addr_
+
+--isWHNF   :: a -> Bool_
+--isInHeap :: Bang_ a -> Bool_
+--bangBits :: Bang_ a -> BitsPtr_
hunk ./lib/jhc-prim/jhc-prim.yaml 7
-        - Jhc.Prim.Bits
hunk ./lib/jhc-prim/jhc-prim.yaml 8
+        - Jhc.Prim.Bits
hunk ./lib/jhc-prim/jhc-prim.yaml 11
+        - Jhc.Prim.Rts
hunk ./src/E/PrimDecode.hs 47
+bang = hash
hunk ./src/E/PrimDecode.hs 68
-    , "constPeekByte"  ==> hash +> hash
hunk ./src/E/PrimDecode.hs 69
+    , "constPeekByte"  ==> hash +> hash
+    -- array operations
hunk ./src/E/PrimDecode.hs 77
+    -- accessing the rts directly
+    , "toBang_"        ==> star +> bang
+    , "fromBang_"      ==> bang +> star
+    , "isWHNF"         ==> star +> hash
+    , "isInHeap"       ==> bang +> hash
+    , "bangPtr"        ==> bang +> hash
+    , "bangBits"       ==> bang +> hash
hunk ./src/data/names.txt 6
+Bang_      Jhc.Prim.Rts.Bang_