Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/921ccf7cc0a346999073076017af1d4bc82e888c

>---------------------------------------------------------------

commit 921ccf7cc0a346999073076017af1d4bc82e888c
Author: Edward Z. Yang <[email protected]>
Date:   Fri Jan 20 17:17:24 2012 -0500

    Port "Add new primtypes 'ArrayArray#' and 'MutableArrayArray#'" to new 
codegen.
    
    021a0dd265ff34c1e292813c06185eff1d6b5c1c appears to have only
    partially added the new primops associated with ArrayArray#
    and MutableArrayArray#
    
    Signed-off-by: Edward Z. Yang <[email protected]>

>---------------------------------------------------------------

 compiler/codeGen/StgCmmPrim.hs |   24 ++++++++++++++++++++++--
 1 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/compiler/codeGen/StgCmmPrim.hs b/compiler/codeGen/StgCmmPrim.hs
index 1d5a5b3..6518c5b 100644
--- a/compiler/codeGen/StgCmmPrim.hs
+++ b/compiler/codeGen/StgCmmPrim.hs
@@ -333,16 +333,36 @@ emitPrimOp [res] FreezeArrayOp [src,src_off,n] =
 emitPrimOp [res] ThawArrayOp [src,src_off,n] =
     emitCloneArray mkMAP_DIRTY_infoLabel res src src_off n
 
+emitPrimOp [] CopyArrayArrayOp [src,src_off,dst,dst_off,n] =
+    doCopyArrayOp src src_off dst dst_off n
+emitPrimOp [] CopyMutableArrayArrayOp [src,src_off,dst,dst_off,n] =
+    doCopyMutableArrayOp src src_off dst dst_off n
+
 -- Reading/writing pointer arrays
 
-emitPrimOp [r] ReadArrayOp  [obj,ix]    = doReadPtrArrayOp r obj ix
-emitPrimOp [r] IndexArrayOp [obj,ix]    = doReadPtrArrayOp r obj ix
+emitPrimOp [res] ReadArrayOp  [obj,ix]    = doReadPtrArrayOp res obj ix
+emitPrimOp [res] IndexArrayOp [obj,ix]    = doReadPtrArrayOp res obj ix
 emitPrimOp []  WriteArrayOp [obj,ix,v]  = doWritePtrArrayOp obj ix v
 
+emitPrimOp [res] IndexArrayArrayOp_ByteArray         [obj,ix]   = 
doReadPtrArrayOp res obj ix
+emitPrimOp [res] IndexArrayArrayOp_ArrayArray        [obj,ix]   = 
doReadPtrArrayOp res obj ix
+emitPrimOp [res] ReadArrayArrayOp_ByteArray          [obj,ix]   = 
doReadPtrArrayOp res obj ix
+emitPrimOp [res] ReadArrayArrayOp_MutableByteArray   [obj,ix]   = 
doReadPtrArrayOp res obj ix
+emitPrimOp [res] ReadArrayArrayOp_ArrayArray         [obj,ix]   = 
doReadPtrArrayOp res obj ix
+emitPrimOp [res] ReadArrayArrayOp_MutableArrayArray  [obj,ix]   = 
doReadPtrArrayOp res obj ix
+emitPrimOp []  WriteArrayArrayOp_ByteArray         [obj,ix,v] = 
doWritePtrArrayOp obj ix v
+emitPrimOp []  WriteArrayArrayOp_MutableByteArray  [obj,ix,v] = 
doWritePtrArrayOp obj ix v
+emitPrimOp []  WriteArrayArrayOp_ArrayArray        [obj,ix,v] = 
doWritePtrArrayOp obj ix v
+emitPrimOp []  WriteArrayArrayOp_MutableArrayArray [obj,ix,v] = 
doWritePtrArrayOp obj ix v
+
 emitPrimOp [res] SizeofArrayOp [arg]
    = emit $    mkAssign (CmmLocal res) (cmmLoadIndexW arg (fixedHdrSize + 
oFFSET_StgMutArrPtrs_ptrs) bWord)
 emitPrimOp [res] SizeofMutableArrayOp [arg]
    = emitPrimOp [res] SizeofArrayOp [arg]
+emitPrimOp [res] SizeofArrayArrayOp [arg]
+   = emitPrimOp [res] SizeofArrayOp [arg]
+emitPrimOp [res] SizeofMutableArrayArrayOp [arg]
+   = emitPrimOp [res] SizeofArrayOp [arg]
 
 -- IndexXXXoffAddr
 



_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to