X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fghci%2FByteCodeAsm.lhs;h=3958753b691923d56bfa3d2d5f337552bd0a0117;hb=423d477bfecd490de1449c59325c8776f91d7aac;hp=928d5e3fddeae65e20236436497de27a3faca843;hpb=98688c6e8fd33f31c51218cf93cbf03fe3a5e73d;p=ghc-hetmet.git diff --git a/ghc/compiler/ghci/ByteCodeAsm.lhs b/ghc/compiler/ghci/ByteCodeAsm.lhs index 928d5e3..3958753 100644 --- a/ghc/compiler/ghci/ByteCodeAsm.lhs +++ b/ghc/compiler/ghci/ByteCodeAsm.lhs @@ -26,10 +26,9 @@ import FiniteMap ( addToFM, lookupFM, emptyFM ) import Literal ( Literal(..) ) import TyCon ( TyCon ) import PrimOp ( PrimOp ) -import PrimRep ( PrimRep(..), isFollowableRep, is64BitRep ) import Constants ( wORD_SIZE ) import FastString ( FastString(..) ) -import SMRep ( StgWord ) +import SMRep ( CgRep(..), StgWord ) import FiniteMap import Outputable @@ -43,6 +42,7 @@ import Data.Array.Base ( UArray(..) ) import Data.Array.ST ( castSTUArray ) import Foreign ( Word16, free ) import Data.Int ( Int64 ) +import Data.Char ( ord ) import GHC.Base ( ByteArray# ) import GHC.IOBase ( IO(..) ) @@ -349,33 +349,25 @@ mkBits findLabel st proto_insns literal st (MachInt j) = int st (fromIntegral j) literal st (MachFloat r) = float st (fromRational r) literal st (MachDouble r) = double st (fromRational r) - literal st (MachChar c) = int st c + literal st (MachChar c) = int st (ord c) literal st (MachInt64 ii) = int64 st (fromIntegral ii) literal st (MachWord64 ii) = int64 st (fromIntegral ii) literal st other = pprPanic "ByteCodeLink.literal" (ppr other) -push_alts WordRep = bci_PUSH_ALTS_N -push_alts IntRep = bci_PUSH_ALTS_N -push_alts AddrRep = bci_PUSH_ALTS_N -push_alts CharRep = bci_PUSH_ALTS_N -push_alts FloatRep = bci_PUSH_ALTS_F -push_alts DoubleRep = bci_PUSH_ALTS_D -push_alts VoidRep = bci_PUSH_ALTS_V -push_alts pk - | is64BitRep pk = bci_PUSH_ALTS_L - | isFollowableRep pk = bci_PUSH_ALTS_P - -return_ubx WordRep = bci_RETURN_N -return_ubx IntRep = bci_RETURN_N -return_ubx AddrRep = bci_RETURN_N -return_ubx CharRep = bci_RETURN_N -return_ubx FloatRep = bci_RETURN_F -return_ubx DoubleRep = bci_RETURN_D -return_ubx VoidRep = bci_RETURN_V -return_ubx pk - | is64BitRep pk = bci_RETURN_L - | isFollowableRep pk = bci_RETURN_P +push_alts NonPtrArg = bci_PUSH_ALTS_N +push_alts FloatArg = bci_PUSH_ALTS_F +push_alts DoubleArg = bci_PUSH_ALTS_D +push_alts VoidArg = bci_PUSH_ALTS_V +push_alts LongArg = bci_PUSH_ALTS_L +push_alts PtrArg = bci_PUSH_ALTS_P + +return_ubx NonPtrArg = bci_RETURN_N +return_ubx FloatArg = bci_RETURN_F +return_ubx DoubleArg = bci_RETURN_D +return_ubx VoidArg = bci_RETURN_V +return_ubx LongArg = bci_RETURN_L +return_ubx PtrArg = bci_RETURN_P -- The size in 16-bit entities of an instruction.