Commit f3a1b28e authored by Edward Z. Yang's avatar Edward Z. Yang

Bake in ByteOff to ParamLocation, and remove ArgumentFormat synonym.

Signed-off-by: Edward Z. Yang's avatarEdward Z. Yang <ezyang@mit.edu>
parent 8b3bfb2e
module CmmCallConv ( module CmmCallConv (
ParamLocation(..), ParamLocation(..),
ArgumentFormat,
assignArgumentsPos assignArgumentsPos
) where ) where
...@@ -19,21 +18,19 @@ import Outputable ...@@ -19,21 +18,19 @@ import Outputable
-- Calculate the 'GlobalReg' or stack locations for function call -- Calculate the 'GlobalReg' or stack locations for function call
-- parameters as used by the Cmm calling convention. -- parameters as used by the Cmm calling convention.
data ParamLocation a data ParamLocation
= RegisterParam GlobalReg = RegisterParam GlobalReg
| StackParam a | StackParam ByteOff
instance (Outputable a) => Outputable (ParamLocation a) where instance Outputable ParamLocation where
ppr (RegisterParam g) = ppr g ppr (RegisterParam g) = ppr g
ppr (StackParam p) = ppr p ppr (StackParam p) = ppr p
type ArgumentFormat a b = [(a, ParamLocation b)]
-- | JD: For the new stack story, I want arguments passed on the stack to manifest as -- | JD: For the new stack story, I want arguments passed on the stack to manifest as
-- positive offsets in a CallArea, not negative offsets from the stack pointer. -- positive offsets in a CallArea, not negative offsets from the stack pointer.
-- Also, I want byte offsets, not word offsets. -- Also, I want byte offsets, not word offsets.
assignArgumentsPos :: (Outputable a) => Convention -> (a -> CmmType) -> [a] -> assignArgumentsPos :: Convention -> (a -> CmmType) -> [a] ->
ArgumentFormat a ByteOff [(a, ParamLocation)]
-- Given a list of arguments, and a function that tells their types, -- Given a list of arguments, and a function that tells their types,
-- return a list showing where each argument is passed -- return a list showing where each argument is passed
assignArgumentsPos conv arg_ty reps = assignments assignArgumentsPos conv arg_ty reps = assignments
......
...@@ -355,7 +355,7 @@ copyOutOflow conv transfer area@(CallArea a) actuals updfr_off ...@@ -355,7 +355,7 @@ copyOutOflow conv transfer area@(CallArea a) actuals updfr_off
else ([], 0) else ([], 0)
Old -> ([], updfr_off) Old -> ([], updfr_off)
args :: [(CmmExpr, ParamLocation ByteOff)] -- The argument and where to put it args :: [(CmmExpr, ParamLocation)] -- The argument and where to put it
args = assignArgumentsPos conv cmmExprType actuals args = assignArgumentsPos conv cmmExprType actuals
args' = foldl adjust setRA args args' = foldl adjust setRA args
......
More notes (June 11) More notes (June 11)
~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~
* Bake in ByteOff to ParamLocation and ArgumentFormat * CmmActuals -> [CmmActual] similary CmmFormals
CmmActuals -> [CmmActual] similary CmmFormals
* Possible refactoring: Nuke AGraph in favour of * Possible refactoring: Nuke AGraph in favour of
mkIfThenElse :: Expr -> Graph -> Graph -> FCode Graph mkIfThenElse :: Expr -> Graph -> Graph -> FCode Graph
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment