projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Big tidy-up of deriving code
[ghc-hetmet.git]
/
compiler
/
ghci
/
ByteCodeLink.lhs
diff --git
a/compiler/ghci/ByteCodeLink.lhs
b/compiler/ghci/ByteCodeLink.lhs
index
fd66545
..
c58ae87
100644
(file)
--- a/
compiler/ghci/ByteCodeLink.lhs
+++ b/
compiler/ghci/ByteCodeLink.lhs
@@
-10,6
+10,7
@@
module ByteCodeLink (
HValue,
ClosureEnv, emptyClosureEnv, extendClosureEnv,
linkBCO, lookupStaticPtr
HValue,
ClosureEnv, emptyClosureEnv, extendClosureEnv,
linkBCO, lookupStaticPtr
+ ,lookupIE
) where
#include "HsVersions.h"
) where
#include "HsVersions.h"
@@
-26,6
+27,7
@@
import Module
import PackageConfig
import FastString
import Panic
import PackageConfig
import FastString
import Panic
+import Breakpoints
#ifdef DEBUG
import Outputable
#ifdef DEBUG
import Outputable
@@
-46,7
+48,7
@@
import GHC.Exts ( BCO#, newBCO#, unsafeCoerce#, Int#,
import GHC.Arr ( Array(..) )
import GHC.IOBase ( IO(..) )
import GHC.Arr ( Array(..) )
import GHC.IOBase ( IO(..) )
-import GHC.Ptr ( Ptr(..) )
+import GHC.Ptr ( Ptr(..), castPtr )
import GHC.Base ( writeArray#, RealWorld, Int(..) )
\end{code}
import GHC.Base ( writeArray#, RealWorld, Int(..) )
\end{code}
@@
-124,7
+126,7
@@
linkBCO' ie ce (UnlinkedBCO nm arity insns_barr bitmap literalsSS ptrsSS itblsSS
ptrs_parr = case ptrs_arr of Array lo hi parr -> parr
itbls_arr = listArray (0, n_itbls-1) linked_itbls
ptrs_parr = case ptrs_arr of Array lo hi parr -> parr
itbls_arr = listArray (0, n_itbls-1) linked_itbls
- :: UArray Int ItblPtr
+
itbls_barr = case itbls_arr of UArray lo hi barr -> barr
literals_arr = listArray (0, n_literals-1) linked_literals
itbls_barr = case itbls_arr of UArray lo hi barr -> barr
literals_arr = listArray (0, n_literals-1) linked_literals
@@
-210,6
+212,8
@@
lookupName :: ClosureEnv -> Name -> IO HValue
lookupName ce nm
= case lookupNameEnv ce nm of
Just (_,aa) -> return aa
lookupName ce nm
= case lookupNameEnv ce nm of
Just (_,aa) -> return aa
+ Nothing | Just bk <- lookupBogusBreakpointVal nm
+ -> return bk
Nothing
-> ASSERT2(isExternalName nm, ppr nm)
do let sym_to_find = nameToCLabel nm "closure"
Nothing
-> ASSERT2(isExternalName nm, ppr nm)
do let sym_to_find = nameToCLabel nm "closure"
@@
-222,7
+226,7
@@
lookupName ce nm
lookupIE :: ItblEnv -> Name -> IO (Ptr a)
lookupIE ie con_nm
= case lookupNameEnv ie con_nm of
lookupIE :: ItblEnv -> Name -> IO (Ptr a)
lookupIE ie con_nm
= case lookupNameEnv ie con_nm of
- Just (_, Ptr a) -> return (Ptr a)
+ Just (_, a) -> return (castPtr (itblCode a))
Nothing
-> do -- try looking up in the object files.
let sym_to_find1 = nameToCLabel con_nm "con_info"
Nothing
-> do -- try looking up in the object files.
let sym_to_find1 = nameToCLabel con_nm "con_info"