diff options
author | Ian Lynagh <igloo@earth.li> | 2012-02-26 01:46:06 +0000 |
---|---|---|
committer | Ian Lynagh <igloo@earth.li> | 2012-02-26 13:04:44 +0000 |
commit | ae04bd43a2640e17a9035f170d76dae356082f88 (patch) | |
tree | f17b95d0840f4ee66ee622c03da1a96058ade347 /compiler/codeGen | |
parent | 9065bdbf5299097263c35f6e389b018806f6753e (diff) | |
download | haskell-ae04bd43a2640e17a9035f170d76dae356082f88.tar.gz |
Implement "value" imports with the CAPI
This allows us to import values (i.e. non-functions) with the CAPI.
This means we can access values even if (on some or all platforms)
they are simple #defines.
Diffstat (limited to 'compiler/codeGen')
-rw-r--r-- | compiler/codeGen/CgForeignCall.hs | 4 | ||||
-rw-r--r-- | compiler/codeGen/StgCmmForeign.hs | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/compiler/codeGen/CgForeignCall.hs b/compiler/codeGen/CgForeignCall.hs index 09636bc6b2..16e77eca35 100644 --- a/compiler/codeGen/CgForeignCall.hs +++ b/compiler/codeGen/CgForeignCall.hs @@ -78,9 +78,11 @@ emitForeignCall results (CCall (CCallSpec target cconv safety)) args live where (call_args, cmm_target) = case target of + StaticTarget _ _ False -> + panic "emitForeignCall: unexpected FFI value import" -- If the packageId is Nothing then the label is taken to be in the -- package currently being compiled. - StaticTarget lbl mPkgId + StaticTarget lbl mPkgId True -> let labelSource = case mPkgId of Nothing -> ForeignLabelInThisPackage diff --git a/compiler/codeGen/StgCmmForeign.hs b/compiler/codeGen/StgCmmForeign.hs index af88ba848a..c41832a0ab 100644 --- a/compiler/codeGen/StgCmmForeign.hs +++ b/compiler/codeGen/StgCmmForeign.hs @@ -56,7 +56,9 @@ cgForeignCall results result_hints (CCall (CCallSpec target cconv safety)) stg_a = do { cmm_args <- getFCallArgs stg_args ; let ((call_args, arg_hints), cmm_target) = case target of - StaticTarget lbl mPkgId + StaticTarget _ _ False -> + panic "cgForeignCall: unexpected FFI value import" + StaticTarget lbl mPkgId True -> let labelSource = case mPkgId of Nothing -> ForeignLabelInThisPackage |