- 28 Jun, 2007 2 commits
-
-
Michael D. Adams authored
-
Michael D. Adams authored
-
- 27 Jun, 2007 7 commits
-
-
Michael D. Adams authored
-
Michael D. Adams authored
-
Michael D. Adams authored
-
Michael D. Adams authored
This eliminates one of the panics introduced by the previous patch: 'First pass at implementing info tables for CPS' The other panic introduced by that patch still remains. It was due to the need to convert from a ContinuationInfo to a CmmInfo. (codeGen/CgInfoTbls.hs:emitClosureCodeAndInfoTable) (codeGen/CgInfoTbls.hs:emitReturnTarget)
-
Michael D. Adams authored
This is a fairly complete implementation, however two 'panic's have been placed in the critical path where the implementation is still a bit lacking so do not expect it to run quite yet. One call to panic is because we still need to create a GC block for procedures that don't have them yet. (cmm/CmmCPS.hs:continuationToProc) The other is due to the need to convert from a ContinuationInfo to a CmmInfo. (codeGen/CgInfoTbls.hs:emitClosureCodeAndInfoTable) (codeGen/CgInfoTbls.hs:emitReturnTarget)
-
Michael D. Adams authored
-
Michael D. Adams authored
This version should compile but is still incomplete as it introduces potential bugs at the places marked 'TODO FIXME NOW'. It is being recorded to help keep track of changes.
-
- 26 Jun, 2007 1 commit
-
-
Michael D. Adams authored
The return values were getting put in a LocalReg but that LocalReg needed to be stored into the enclosing expression's return register (e.g. R1).
-
- 21 Jun, 2007 1 commit
-
-
Michael D. Adams authored
-
- 19 Jun, 2007 1 commit
-
-
Michael D. Adams authored
-
- 13 Jun, 2007 1 commit
-
-
Michael D. Adams authored
-
- 06 Jun, 2007 2 commits
-
-
Michael D. Adams authored
This patch is incomplete and will probably not compile by itself but it is being recorded to help keep track of later changes.
-
Michael D. Adams authored
-
- 29 May, 2007 4 commits
-
-
Michael D. Adams authored
-
Michael D. Adams authored
-
Michael D. Adams authored
-
Michael D. Adams authored
-
- 25 May, 2007 3 commits
-
-
Michael D. Adams authored
-
Michael D. Adams authored
This frees the Cmm data type from keeping a list of live global registers in CmmCall which helps prepare for the CPS conversion phase. CPS conversion does its own liveness analysis and takes input that should not directly refer to parameter registers (e.g. R1, F5, D3, L2). Since these are the only things which could occur in the live global register list, CPS conversion makes that field of the CmmCall constructor obsolite. Once the CPS conversion pass is fully implemented, global register saving will move from codeGen into the CPS pass. Until then, this patch is worth scrutinizing and testing to ensure it doesn't cause any performance or correctness problems as the code passed to the backends by the CPS converting will look very similar to the code that this patch makes codeGen pass to the backend.
-
Michael D. Adams authored
-
- 24 May, 2007 2 commits
-
-
Michael D. Adams authored
-
Michael D. Adams authored
-
- 23 May, 2007 7 commits
-
-
Michael D. Adams authored
-
Michael D. Adams authored
-
Michael D. Adams authored
-
Michael D. Adams authored
-
Michael D. Adams authored
-
Michael D. Adams authored
-
Michael D. Adams authored
-
- 22 May, 2007 3 commits
-
-
Michael D. Adams authored
-
Michael D. Adams authored
Since a CmmCall returns CmmFormals which may include global registers (and indeed one place in the code returns the results of a CmmCall into BaseReg) and since CPS conversion will change those return slots into formal arguments for the continuation of the call, CmmProc has to have CmmFormals for the formal arguments. Oddly, the old code never made use of procedure arguments so this change only effects the types and not any of the code. (Because [] is both of type [LocalReg] and CmmFormals.)
-
Michael D. Adams authored
-
- 21 May, 2007 3 commits
-
-
Michael D. Adams authored
-
Michael D. Adams authored
-
Michael D. Adams authored
-
- 18 May, 2007 3 commits
-
-
Michael D. Adams authored
-
Michael D. Adams authored
The function listSplitUniqSupply :: UniqSupply -> [UniqSupply] splits a UniqSupply into an infinite list of supplies. It is a generalization of splitUniqSupply.
-
Michael D. Adams authored
This is a safety check-in, before I begin a cleanup.
-