- 14 May, 2003 4 commits
-
-
simonmar authored
Change the way SRTs are represented: Previously, the SRT associated with a function or thunk would be a sub-list of the enclosing top-level function's SRT. But this approach can lead to lots of duplication: if a CAF is referenced in several different thunks, then it may appear several times in the SRT. Let-no-escapes compound the problem, because the occurrence of a let-no-escape-bound variable would expand to all the CAFs referred to by the let-no-escape. The new way is to describe the SRT associated with a function or thunk as a (pointer+offset,bitmap) pair, where the pointer+offset points into some SRT table (the enclosing function's SRT), and the bitmap indicates which entries in this table are "live" for this closure. The bitmap is stored in the 16 bits previously used for the length field, but this rarely overflows. When it does overflow, we store the bitmap externally in a new "SRT descriptor". Now the enclosing SRT can be a set, hence eliminating the duplicates. Also, we now have one SRT per top-level function in a recursive group, where previously we used to have one SRT for the whole group. This helps keep the size of SRTs down. Bottom line: very little difference most of the time. GHC itself got slightly smaller. One bad case of a module in GHC which had a huge SRT has gone away. While I was in the area: - Several parts of the back-end require bitmaps. Functions for creating bitmaps are now centralised in the Bitmap module. - We were trying to be independent of word-size in a couple of places in the back end, but we've now abandoned that strategy so I simplified things a bit.
-
simonmar authored
Comments only
-
simonmar authored
Calling mmap() with a size > 3Gig results in EINVAL on Linux. Catch this case and report it as an out of memory condition instead of a panic.
-
simonmar authored
Comment only
-
- 13 May, 2003 2 commits
- 12 May, 2003 2 commits
-
-
simonmar authored
Another bugfix to tryM, this time for GHC 5.00--5.04
-
simonmar authored
Updates: - Loading module Main without a main binding is no longer an error. - Clarify the section on libraries to note that it means object-code libraries, not source code. - Update the section on packages now that most packages are auto-loaded.
-
- 07 May, 2003 4 commits
- 06 May, 2003 7 commits
-
-
simonpj authored
Note about context in data type decls
-
simonmar authored
Update: we now follow Haskell 98 w.r.t. exports from module Main.
-
simonpj authored
------------------------------------- Implement deriving( Data ) ------------------------------------- Implements deriving( Data ), where the Data class is defined in Data.Generics; its the "scrap your boilerplate" Term class. Ralf is still converging on the exact definition of the Data class, so the details may change.
-
simonpj authored
Import wibbles
-
simonpj authored
------------------------------------- Main module exports ------------------------------------- Make it so that module Main where .... exports everything defined in Main, as the report says it should.
-
simonpj authored
Formatting only
-
simonpj authored
Comments about eta expansion
-
- 04 May, 2003 1 commit
-
-
igloo authored
Add support for unboxed Ints, Floats and Doubles to Template Haskell.
-
- 01 May, 2003 3 commits
-
-
ross authored
Make -t option to the script override the template file, just as -c overrides the compiler, as the the documentation implies. (Formerly -t added an extra template file, which is not so useful.)
-
simonmar authored
Use the DocBook 4.1 DTD instead of 3.1. Seems to work fine...
-
simonmar authored
Remove special cases for the setting of $(libdir) and $(datadir) on mingw32, after discussion with Sigbjorn.
-
- 29 Apr, 2003 2 commits
- 28 Apr, 2003 3 commits
-
-
simonmar authored
Add a compile-time sanity check that RESERVED_STACK_WORDS is right.
-
simonmar authored
Comments to note the relationship between the RET_DYN stack frame size and RESERVED_STACK_WORDS.
-
simonmar authored
Following the recent change to the layout of the StgRetDyn frame, we now need to bump RESERVED_STACK_WORDS because this governs the amount of room which is guaranteed to be available on the stack in the event of a stack check failure. This accounts for at least one cause of recent crashes in the HEAD.
-
- 27 Apr, 2003 2 commits
- 25 Apr, 2003 2 commits
- 23 Apr, 2003 2 commits
- 22 Apr, 2003 4 commits
-
-
igloo authored
Order declarations in reifications in order of source line number. The bugs still there but it bites less often now... Also remove the type parameterisation and do some type renaming as discussed on the template-haskell list.
-
simonmar authored
Fix an obscure bug: the most general kind of heap check, HEAP_CHECK_GEN(), is supposed to save the contents of *every* register known to the STG machine (used in cases where we either can't figure out which ones are live, or doing so would be too much hassle). The problem is that it wasn't saving the L1 register. A slight complication arose in that saving the L1 register pushed the size of the frame over the 16 words allowed for the size of the bitmap stored in the frame, so I changed the layout of the frame a bit. Describing all the registers using a single bitmap is overkill when only 8 of them can actually be pointers, so now the bitmap is only 8 bits long and we always skip over a fixed number of non-ptr words to account for all the non-ptr regs. This is all described in StgMacros.h.
-
simonpj authored
Fix the context for derived Typeable instances
-
simonpj authored
Stage-2 wibbles to the Expected type changes
-
- 21 Apr, 2003 1 commit
-
-
sof authored
drop curious *_debug_opts_prefix tables; no longer used
-
- 18 Apr, 2003 1 commit
-
-
simonmar authored
Add a comment about the entry convention to stg_ap_* and why it's done this way (thanks to Andy Moran for the prodding).
-