From: panne Date: Mon, 1 May 2000 14:35:17 +0000 (+0000) Subject: [project @ 2000-05-01 14:35:17 by panne] X-Git-Tag: Approximately_9120_patches~4569 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=5860a370374e1612fbb58468364a48bcde602a1d;p=ghc-hetmet.git [project @ 2000-05-01 14:35:17 by panne] Handle sameMutVar#, sameMVar#, writeForeignObj# --- diff --git a/ghc/compiler/nativeGen/StixPrim.lhs b/ghc/compiler/nativeGen/StixPrim.lhs index 9d694b9..08a6356 100644 --- a/ghc/compiler/nativeGen/StixPrim.lhs +++ b/ghc/compiler/nativeGen/StixPrim.lhs @@ -91,6 +91,12 @@ primCode [res] SameMutableArrayOp args primCode res@[_] SameMutableByteArrayOp args = primCode res SameMutableArrayOp args + +primCode res@[_] SameMutVarOp args + = primCode res SameMutableArrayOp args + +primCode res@[_] SameMVarOp args + = primCode res SameMutableArrayOp args \end{code} Freezing an array of pointers is a double assignment. We fix the @@ -195,7 +201,7 @@ primCode [lhs] (IndexOffForeignObjOp pk) [obj, ix] lhs' = amodeToStix lhs obj' = amodeToStix obj ix' = amodeToStix ix - obj'' = StIndex PtrRep obj' fixedHS + obj'' = StIndex AddrRep obj' fixedHS assign = StAssign pk lhs' (StInd pk (StIndex pk obj'' ix')) in returnUs (\xs -> assign : xs) @@ -218,6 +224,15 @@ primCode [] (WriteByteArrayOp pk) [obj, ix, v] assign = StAssign pk (StInd pk (StIndex pk base ix')) v' in returnUs (\xs -> assign : xs) + +primCode [] WriteForeignObjOp [obj, v] + = let + obj' = amodeToStix obj + v' = amodeToStix v + obj'' = StIndex AddrRep obj' (StInt 4711) -- fixedHS + assign = StAssign AddrRep (StInd AddrRep obj'') v' + in + returnUs (\xs -> assign : xs) \end{code} \begin{code}