X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fghci%2FByteCodeAsm.lhs;h=9da0e34107efb5fad57fd2b6ccc9d8e9f2e0e61a;hb=a4d1f3a5a560ee8f4cbf32e2d6a9e9d158c8d8ee;hp=31cbd251cb5bb36c9de7cc8319b5e3b2cf41a68f;hpb=cdce647711c0f46f5799b24de087622cb77e647f;p=ghc-hetmet.git diff --git a/compiler/ghci/ByteCodeAsm.lhs b/compiler/ghci/ByteCodeAsm.lhs index 31cbd25..9da0e34 100644 --- a/compiler/ghci/ByteCodeAsm.lhs +++ b/compiler/ghci/ByteCodeAsm.lhs @@ -7,6 +7,13 @@ ByteCodeLink: Bytecode assembler and linker \begin{code} {-# OPTIONS -optc-DNON_POSIX_SOURCE #-} +{-# OPTIONS -w #-} +-- The above warning supression flag is a temporary kludge. +-- While working on this module you are encouraged to remove it and fix +-- any warnings in the module. See +-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings +-- for details + module ByteCodeAsm ( assembleBCOs, assembleBCO, @@ -155,10 +162,10 @@ assembleBCO (ProtoBCO nm instrs bitmap bsize arity origin malloced) insns_arr | n_insns > 65535 = panic "linkBCO: >= 64k insns in BCO" | otherwise = mkInstrArray n_insns asm_insns - insns_barr = case insns_arr of UArray _lo _hi barr -> barr + insns_barr = case insns_arr of UArray _lo _hi _n barr -> barr bitmap_arr = mkBitmapArray bsize bitmap - bitmap_barr = case bitmap_arr of UArray _lo _hi barr -> barr + bitmap_barr = case bitmap_arr of UArray _lo _hi _n barr -> barr let ul_bco = UnlinkedBCO nm arity insns_barr bitmap_barr final_lits final_ptrs @@ -168,9 +175,9 @@ assembleBCO (ProtoBCO nm instrs bitmap bsize arity origin malloced) -- when (notNull malloced) (addFinalizer ul_bco (mapM_ zonk malloced)) return ul_bco - where - zonk ptr = do -- putStrLn ("freeing malloc'd block at " ++ show (A# a#)) - free ptr + -- where + -- zonk ptr = do -- putStrLn ("freeing malloc'd block at " ++ show (A# a#)) + -- free ptr mkBitmapArray :: Int -> [StgWord] -> UArray Int StgWord mkBitmapArray bsize bitmap @@ -271,6 +278,7 @@ mkBits findLabel st proto_insns SLIDE n by -> instr3 st bci_SLIDE n by ALLOC_AP n -> instr2 st bci_ALLOC_AP n + ALLOC_AP_NOUPD n -> instr2 st bci_ALLOC_AP_NOUPD n ALLOC_PAP arity n -> instr3 st bci_ALLOC_PAP arity n MKAP off sz -> instr3 st bci_MKAP off sz MKPAP off sz -> instr3 st bci_MKPAP off sz @@ -304,7 +312,6 @@ mkBits findLabel st proto_insns (p1, st2) <- ptr st (BCOPtrArray array) (p2, st3) <- ptr st2 (BCOPtrBreakInfo info) instr4 st3 bci_BRK_FUN p1 index p2 - PUSH_LLL o1 o2 o3 -> instr4 st bci_PUSH_LLL o1 o2 o3 i2s :: Int -> Word16 i2s = fromIntegral @@ -433,6 +440,7 @@ instrSize16s instr PUSH_APPLY_PPPPPP{} -> 1 SLIDE{} -> 3 ALLOC_AP{} -> 2 + ALLOC_AP_NOUPD{} -> 2 ALLOC_PAP{} -> 3 MKAP{} -> 3 MKPAP{} -> 3