- continuationToProc' :: CLabel -> [(CLabel, StackFormat)] -> BrokenBlock
- -> CmmBasicBlock
- continuationToProc' curr_ident formats (BrokenBlock ident entry stmts _ exit) =
+ gc = Nothing -- Generated continuations never need a stack check
+ -- TODO prof: this is the same as the current implementation
+ -- but I think it could be improved
+ prof = ProfilingInfo zeroCLit zeroCLit
+ tag = if stack_frame_size format > mAX_SMALL_BITMAP_SIZE
+ then rET_BIG
+ else rET_SMALL
+ format = maybe unknown_block id $ lookup label formats
+ unknown_block = panic "unknown BlockId in applyStackFormat"
+
+-----------------------------------------------------------------------------
+continuationToProc :: (WordOff, [(CLabel, StackFormat)])
+ -> Continuation CmmInfo
+ -> CmmTop
+continuationToProc (max_stack, formats)
+ (Continuation info label formals blocks) =
+ CmmProc info label formals (map continuationToProc' blocks)
+ where
+ curr_format = maybe unknown_block id $ lookup label formats
+ unknown_block = panic "unknown BlockId in continuationToProc"
+
+ continuationToProc' :: BrokenBlock -> CmmBasicBlock
+ continuationToProc' (BrokenBlock ident entry stmts _ exit) =