New patches:
[Follow Array changes (adding numElements field)
Ian Lynagh **20070810141614] {
hunk ./compiler/ghci/ByteCodeAsm.lhs 158
- insns_barr = case insns_arr of UArray _lo _hi barr -> barr
+ insns_barr = case insns_arr of UArray _lo _hi _n barr -> barr
hunk ./compiler/ghci/ByteCodeAsm.lhs 161
- bitmap_barr = case bitmap_arr of UArray _lo _hi barr -> barr
+ bitmap_barr = case bitmap_arr of UArray _lo _hi _n barr -> barr
hunk ./compiler/ghci/ByteCodeLink.lhs 120
- ptrs_parr = case ptrs_arr of Array lo hi parr -> parr
+ ptrs_parr = case ptrs_arr of Array _lo _hi _n parr -> parr
hunk ./compiler/ghci/ByteCodeLink.lhs 124
- literals_barr = case literals_arr of UArray lo hi barr -> barr
+ literals_barr = case literals_arr of UArray _lo _hi _n barr -> barr
hunk ./compiler/ghci/ByteCodeLink.lhs 156
+ getNumElements (IOArray marr) = stToIO $ getNumElements marr
hunk ./compiler/ghci/ByteCodeLink.lhs 166
-writeArrayBCO (IOArray (STArray _ _ marr#)) (I# i#) bco# = IO $ \s# ->
+writeArrayBCO (IOArray (STArray _ _ _ marr#)) (I# i#) bco# = IO $ \s# ->
hunk ./compiler/ghci/RtClosureInspect.hs 166
- elems = BCI.ptrs itbl
- ptrsList = Array 0 ((fromIntegral elems) - 1) ptrs
+ elems = fromIntegral (BCI.ptrs itbl)
+ ptrsList = Array 0 (elems - 1) elems ptrs
hunk ./compiler/ghci/RtClosureInspect.hs 209
-amap' f (Array i0 i arr#) = map (\(I# i#) -> case indexArray# arr# i# of
- (# e #) -> f e)
- [0 .. i - i0]
+amap' f (Array i0 i _ arr#) = map g [0 .. i - i0]
+ where g (I# i#) = case indexArray# arr# i# of
+ (# e #) -> f e
hunk ./compiler/ghci/RtClosureInspect.hs 730
-appArr f a@(Array _ _ ptrs#) i@(I# i#) = ASSERT (i < length(elems a))
- case indexArray# ptrs# i# of
- (# e #) -> f e
+appArr f a@(Array _ _ _ ptrs#) i@(I# i#)
+ = ASSERT (i < length(elems a))
+ case indexArray# ptrs# i# of
+ (# e #) -> f e
hunk ./compiler/simplCore/SimplMonad.lhs 48
-import GHC.Arr ( Array(..) )
-
-import Array ( array, (//) )
+import Data.Array
+import Data.Array.Base (unsafeAt)
hunk ./compiler/simplCore/SimplMonad.lhs 471
- case sw_tbl of { Array _ _ stuff ->
- \ switch ->
- case (indexArray# stuff (tagOf_SimplSwitch switch)) of
- (# v #) -> v
- }
+ \ switch -> unsafeAt sw_tbl $ iBox (tagOf_SimplSwitch switch)
hunk ./compiler/utils/FastString.lhs 81
-import GHC.Arr ( STArray(..), newSTArray )
+import GHC.ST
hunk ./compiler/utils/FastString.lhs 85
-#define hASH_TBL_SIZE 4091
+#define hASH_TBL_SIZE 4091
+#define hASH_TBL_SIZE_UNBOXED 4091#
hunk ./compiler/utils/FastString.lhs 169
- (STArray _ _ arr#) case newArray# hASH_TBL_SIZE_UNBOXED [] s1# of
+ (# s2#, arr# #) ->
+ (# s2#, FastStringTable 0 arr# #)
+ newIORef tab
}
Context:
[Cabal depends on -package unix when GHC <= 6.2
Simon Marlow **20070809100139]
[joinToTargets to emit fixup code even when movement graph contains cycles
Clemens Fruhwirth **20070714083241
First, cycles can only start of with registers and their destination
must involve a register location. This is because memory locations are
allocated exclusively for a virtual register and hence can never cause
a conflict in the assignment, hence need no fixup code. Therefore, we
only have to deal with InReg -> InReg, or InReg -> InReg/InMem
movements.
The strategy is to take the first cycle element, which is guaranteed
to start with a register, spill it to a fresh memory location, compute
the fixup for the rest, and restore from the spill slot to its
destinations. The "rest" will degenerate into an acyclic scc, so we do
not need take care of the empty list case in CyclicScc.
***END OF DESCRIPTION***
Place the long patch description above the ***END OF DESCRIPTION*** marker.
The first line of this file will be the patch name.
This patch contains the following changes:
M ./compiler/nativeGen/RegisterAlloc.hs -6 +27
]
[Make SpecConstr specialise for constant arguments again
simonpj@microsoft.com**20070805220335
Consider
lvl = Just True
foo :: Maybe Bool -> Int -> Int
foo (Just True) i = i
foo _ i = foo lvl i
SpecConstr should specialise foo, but it wasn't doing so (spotted
by Roman).
Reason: lvl's unfolding wasn't in the cloned version of lvl.
Solution: extend the value environment to record top-level bindings too
At the same time I made it work if 'lvl' is a lambda, in which case it
is again worth specialisg. This meant renaming ConEnv to ValueEnv,
and adding a case for 'LambdaVal'.
(To make specialisation on lambdas work properly, we have to do lambda
lifting as well, but this gets part of the way, and fixes a bug too.)
]
[Comments only: explain why StgConApp is still useful
simonpj@microsoft.com**20070805214404]
[Add missing case to sizeofPrimRep
simonpj@microsoft.com**20070804174759]
[Fix Trac #1037
simonpj@microsoft.com**20070804174420
It makes *sense* for a foreign import to have a zero-sized return, thus
foreign import ccall foo :: Int -> State# RealWorld
but it's not clear that it's useful, and it requires some back-end (a
Hint for void types) to make it go right through. It's not clear that
we really want this facility, so rather than fixing the code
generator, I'm just making the construct illegal for now.
]
[In GHCi, filter instances by what is in scope, not just by what is in scope unqualified
simonpj@microsoft.com**20070804173539
Trac #1581 was doing too much filtering; it even filtered out intances
defined in this very module! The new rule shows more instances, but
hopefully not to many.
Furthermore I have moved the filtering out of TcRnDriver (where it does
not belong) to InteractiveEval. And I've added a note to the documentation.
]
[Improve pretty-printing of 'foreign' declarations
simonpj@microsoft.com**20070804172151]
[FIX read030 (error message wibble)
Simon Marlow **20070809085817]
[Fix the use of emptyCopyFlags
Ian Lynagh **20070808231620]
[Removed a dependency on Cabal that caused a build failure when Cabal changed
Magnus Jonsson **20070808221029]
[remove gratuitous usage of Double in favor of Rational
Isaac Dupree **20070807122234]
[Warning police: eliminate all defaulting within stage1
Isaac Dupree **20070807121454
Defaulting makes compilation of multiple modules more complicated (re: #1405)
Although it was all locally within functions, not because of the module
monomorphism-restriction... but it's better to be clear what's meant, anyway.
I changed some that were defaulting to Integer, to explicit Int, where Int
seemed appropriate rather than Integer.
]
[NOINLINE the global FastString.string_table
Isaac Dupree **20070807002859]
[comment FastMutInt possibilities
Isaac Dupree **20070806211914]
[Add blurb in the user guide re stdout buffering differing between GHC and GHCi
Ian Lynagh **20070807193139]
[Use emptyRegisterFlags and emptyCopyFlags for reduced fragility
Duncan Coutts **20070806152824
So we will inherit default values for any new flags that get added,
so things should not break if new flags are added.
]
[Follow Cabal changes
Ian Lynagh **20070805175116]
[Add a --supported-languages flag
Ian Lynagh **20070805153341
Print the list of strings that are accepted in a LANGUAGE pragma,
or as a -XFoo flag. (No can be prepended to any of the strings).
]
[Whitespace
Ian Lynagh **20070805150302]
[Add Distribution.System to compat
Ian Lynagh **20070805132856]
[Canonicalise flags in error message
Ian Lynagh **20070804211415]
[Canonicalise the flag format in the user guide
Ian Lynagh **20070804210145]
[We now need to pass a version to extensionsToGHCFlag
Ian Lynagh **20070804192431]
[Fix -fallow* flags
Ian Lynagh **20070804164930]
[Add more of Cabal to compat
Ian Lynagh **20070804162241]
[Rename Opt_Allow* to Opt_* to match the language names
Ian Lynagh **20070804155425]
[Rename Opt_TH to Opt_TemplateHaskell to match the language name
Ian Lynagh **20070804154805]
[Add -fparr deprecated flag, and change -XParr to -XPArr
Ian Lynagh **20070804154505
-fparr did exist before, it just wasn't documented.
]
[Rename Opt_FFI to Opt_ForeignFunctionInterface to match the language name
Ian Lynagh **20070804154234]
[Remove many of the new flag variants permitted
Ian Lynagh **20070804153412
Now we only allow -XFooBar syntax, not alternate case, hyphens or -f.
There are some deprecated -f flags accordingly.
]
[Add a comment about when maybePrefixMatch can be removed
Ian Lynagh **20070804153333]
[Typo in a comment
Ian Lynagh **20070804020156]
[FIX -ddump-cmm by temporarily disabling the gc_target part (#1582)
Simon Marlow **20070803102143
]
[FIX part of #1372, improvements to the recompilation checker
Simon Marlow **20070803102045
This patch adds a check that each imported module is listed in
the dependencies from the previous interface. It catches the
following cases and forces recompilation:
- an exposed package has been upgraded
- we are compiling with different package flags
- a home module that was shadowing a package module has been removed
- a new home module has been added that shadows a package module
I haven't yet added the package timestamping as described in #1372.
]
[mkLiveness: when calculating the size of a parameter, round up not down.
Simon Marlow **20070803093229
Fixes read002 on x86_64 (and maybe others). The stg_ap_f_info info
table had the wrong liveness on it, because the float had been treated
as having zero size.
]
[Add PA dfuns to VectInfo
Roman Leshchinskiy **20070803020936]
[Update the boring file
Ian Lynagh **20070803183835]
[Catch exceptions on Windows, to stop it popping up dialog boxes
Ian Lynagh **20070803183229
Adaptated from code from Sigbjorn Finne
]
[Add a --ignore-failure flag to push-all script
Ian Lynagh **20070802213300]
[Dump renamer output with -ddump-rn for command-line entry in ghci
simonpj@microsoft.com**20070802165110]
[Fix Trac #1525
simonpj@microsoft.com**20070802111204
A Name used to have a Parent, but no longer has. When we want to
print info about data type T and data constructor MkT, the info about
T already describes MkT so we want to discard the latter. Now that
Names don't have a Parent, we must do that in a different way,
using implicitTyThings
Test is ghci011
]
[Wibbble to last fix to generalisation (again!); fixes Trac #1575
simonpj@microsoft.com**20070802085136]
[Small error-message change
simonpj@microsoft.com**20070801141339]
[Vectorise DataCon workers
Roman Leshchinskiy **20070802043712]
[Include original tycon in PAInstance
Roman Leshchinskiy **20070802042938]
[More refactoring
Roman Leshchinskiy **20070802022859]
[Refactoring
Roman Leshchinskiy **20070802022840]
[Thread lifting context implicitly in the vectorisation monad
Roman Leshchinskiy **20070802022503]
[Fix calls to replicatePA
Roman Leshchinskiy **20070801045656]
[Trace vectorisation failures
Roman Leshchinskiy **20070801045640]
[Reuse the lifting context Var
Roman Leshchinskiy **20070801042441]
[Move code
Roman Leshchinskiy **20070801042404]
[Nicer names for hoisted functions
Roman Leshchinskiy **20070801041322]
[Improve closure generation for functions with multiple parameters
Roman Leshchinskiy **20070801034119]
[Rename functions
Roman Leshchinskiy **20070801014056]
[Use new closure generation code in vectorisation
Roman Leshchinskiy **20070801013728]
[More vectorisation-related smart constructors
Roman Leshchinskiy **20070731065024]
[Use VectCore stuff in vectorisation
Roman Leshchinskiy **20070731063448]
[Move vectorisation-related smart constructors into a separate module
Roman Leshchinskiy **20070731062711]
[Use a Var instead of a CoreExpr as the lifting context during vectorisation
Roman Leshchinskiy **20070731061610]
[Simplify handling of variables during vectorisation
Roman Leshchinskiy **20070731060917]
[Simplify closure generation code
Roman Leshchinskiy **20070731055419]
[New closure generation code
Roman Leshchinskiy **20070731044029]
[Refactoring
Roman Leshchinskiy **20070731040621]
[Optimise parallel arrays of products
Roman Leshchinskiy **20070726071308]
[FIX recent PPC crashes introduced by the pointer-tagging patch (I hope)
Simon Marlow **20070801140231
There was an accidental endian-dependency in changes related to RET_FUN.
The changes in question weren't strictly necessary - they were left
over from the original workaround for the compacting GC problems, so
I've just reverted those changes in this patch, which should hopefully
fix the PPC problems.
]
[revert accidental modification of version number
Simon Marlow **20070801133938]
[Fix a knot-tying bug with ghc --make
simonpj@microsoft.com**20070801124907
This bug showed up when I touched Data.Generics.Schemes, and then said
make build.library.base
This compiles the base library with --make, and I got an assertion failure
in TcIface. The explanation is in Note [Tying the knot] in TcIface.
As well as fixing the bug, I also impoved the assertion message.
This might fix or improve other knot-tying problems with --make
]
[Spelling error
simonpj@microsoft.com**20070801124852]
[Clarify comments
simonpj@microsoft.com**20070706094836]
[Fix generalisation during type inference (again); fixes Trac #1564
simonpj@microsoft.com**20070801072612
Figuring out which type variables to generalise when inferring the type
of a let-bound function is always trickier than I think! This patch
fixes a bug (related, inevitably, to functional depenencies) found by
iampure, Trac #1564. I'll add a test shortly.
]
[Only add -rpath to linker invocation when -dynamic
Clemens Fruhwirth **20070801092429]
[fix the hardtop test for ghc-6.2.x, and make it notice failure earlier
Simon Marlow **20070801083257]
[compile the -inplace programs using $(HC), not $(GHC)
Simon Marlow **20070731114925
$(UseStage1) modifies $(HC) rather than $(GHC)
]
[Change the strategy to determine dynamic data access
Clemens Fruhwirth **20070731095953
Instead of attaching the information whether a Label is going to be
accessed dynamically or not (distinction between IdLabel/DynLabel and
additional flags in ModuleInitLabel and PlainModuleInitLabel), we hand
dflags through the CmmOpt monad and the NatM monad. Before calling
labelDynamic in PositionIndependentCode, we extract thisPackage from
dflags and supply the current package to labelDynamic, so it can take
this information into account instead of extracting it from the labels
itself. This simplifies a lot of code in codeGen that just hands
through this_pkg.
]
[Translate dyn in GhcLibWays into --enable-shared for Cabal
Clemens Fruhwirth **20070723134124]
[Add proper header so that cygwin recognizes this file as executable
Clemens Fruhwirth **20070722082050]
[Add hardwire-lib-paths option and make it default for inplace invocations
Clemens Fruhwirth **20070717192622]
[Add import facility to cmm parser
Clemens Fruhwirth **20070713210845
The cmm parser classified all unknown variables as imported. This
behaviour is not changed with this patch. Explicitly imported
variables get a different internal label type, namely ForeignLabel
instead of RtsLabel. In PIC compilation, the NCG creates dynamic
access for ForeignLabel, while RtsLabel are not treated as PIC when
-package rts. Hence, putting explicit imports into cmm files enables
the NCG to distinguish between RTS-external and RTS-internal symbols,
and create the appropriate code.
]
[Fix the knot-tying in loopDecls to actually do what its comment tells: provide access to global declarations
Clemens Fruhwirth **20070713210355]
[windres to use the gcc given as --with-cc.
Clemens Fruhwirth **20070703145653]
[Change package name mangling when linking against DSOs
Clemens Fruhwirth **20070628105831]
[Allow access via manually generated SymbolPtrs. Generalize pprImportedSymbol for 64 bit archs.
Clemens Fruhwirth **20070620142023]
[FIX compacting GC (bug1010, and other failures)
Simon Marlow **20070730153959
Compacting GC interacts badly with the new pointer-tagging feature, as
it also uses the low bits of a pointer to encode some information
during a collection. My original workaround didn't work, this more
elaborate fix should be better.
]
[Make lndir work on Windows (by copying)
Ian Lynagh **20070730223152]
[Make lndir whitespace consistent
Ian Lynagh **20070730193012]
[Set hardtop_plat to hardtop to find out what, if anything, breaks
Ian Lynagh **20070730192513]
[Use our own (Haskell) pwd to find the tree root
Ian Lynagh **20070730190808]
[#1559 is worked around elsewhere, so validate no longer needs to
Ian Lynagh **20070730182806]
[FIX #1559, #1560. Rearrange the way we do ifBuildable...
Simon Marlow **20070730134346
ifBuildable now returns an exit code, with 1 indicating an unbuildable
non-core package, and 0 otherwise. Hence we can now invoke the
recursive make from the shell, sidestepping the problems in #1559 and
#1560.
]
[* ghc-asm: Finally did away with $* in a way that works with Perl 5.6~5.10+, by appending /m to all regexes.
audreyt@audreyt.org**20070730122216]
[Pointer Tagging
Simon Marlow **20070727104157
This patch implements pointer tagging as per our ICFP'07 paper "Faster
laziness using dynamic pointer tagging". It improves performance by
10-15% for most workloads, including GHC itself.
The original patches were by Alexey Rodriguez Yakushev
, with additions and improvements by me. I've
re-recorded the development as a single patch.
The basic idea is this: we use the low 2 bits of a pointer to a heap
object (3 bits on a 64-bit architecture) to encode some information
about the object pointed to. For a constructor, we encode the "tag"
of the constructor (e.g. True vs. False), for a function closure its
arity. This enables some decisions to be made without dereferencing
the pointer, which speeds up some common operations. In particular it
enables us to avoid costly indirect jumps in many cases.
More information in the commentary:
http://hackage.haskell.org/trac/ghc/wiki/Commentary/Rts/HaskellExecution/PointerTagging
]
[Documentation updates for #1177
Simon Marlow **20070726094030
We now have a section that describes what hs_exit() does (including
the "wait for foreign calls to return" behaviour), and more
documentation on creating libraries of Haskell code. I also imported
the section "Beware of DllMain()!" from the haskell.org wiki, with
some minor editing.
]
[Mark PA dictionaries as __inline_me
Roman Leshchinskiy **20070726053001]
[Add missing coercion
Roman Leshchinskiy **20070726052830]
[Make sure DEFAULT always comes first in generated PA dictionaries
Roman Leshchinskiy **20070726052239]
[Fix generation of lengthPA
Roman Leshchinskiy **20070726052108]
[Modify generation of PA dictionaries to match GHC's usual behaviour
Roman Leshchinskiy **20070726044101]
[Use the right dictionary when calling lengthPA
Roman Leshchinskiy **20070726031247]
[Automatically derive PA for vectorised tycons
Roman Leshchinskiy **20070726031238]
[PA instance generation code (not used yet)
Roman Leshchinskiy **20070726024551]
[Create exported names in vectorisation monads
Roman Leshchinskiy **20070726024144]
[Add vectorisation-related OccName derivation scheme
Roman Leshchinskiy **20070726024111]
[PA dictionary generation
Roman Leshchinskiy **20070725041242]
[Move code
Roman Leshchinskiy **20070725034813]
[Generate replicatePA
Roman Leshchinskiy **20070725034354]
[Generate lengthPA method
Roman Leshchinskiy **20070725034346]
[Use emptyPA in vectorisation
Roman Leshchinskiy **20070725033530]
[Add emptyPA to PrelNames
Roman Leshchinskiy **20070725030209]
[More refactoring
Roman Leshchinskiy **20070725023017]
[Refactoring
Roman Leshchinskiy **20070725022441]
[make validate work on Windows
Simon Marlow **20070725135751
This includes automatically adding --build=i386-unknown-mingw32 and
--with-gcc to ./configure, and disabling -j2 (see #1559).
Also: you can now say
CPUS=3 ./validate
and the script will pass -jN to make (where N = $CPUS + 1). In the
future, when we fix #1558, it can pass THREADS=N to the testsuite, too.
]
[FIX #1177, partially at least.
Simon Marlow **20070725135504
Now we don't wait for outstanding IO requests when shutting down at
program exit time, but we still wait when shutting down a DLL (via
hs_exit()). There ought to be a better way to do this, but
terminating the threads forcibly is not a good idea (it never is: the
thread might be holding a mutex when it dies, for example).
I plan to add some docs to the user guide to describe how to shut
down a DLL properly.
]
[hs_exit()/shutdownHaskell(): wait for outstanding foreign calls to complete before returning
Simon Marlow **20070724153057
This is pertinent to #1177. When shutting down a DLL, we need to be
sure that there are no OS threads that can return to the code that we
are about to unload, and previously the threaded RTS was unsafe in
this respect.
When exiting a standalone program we don't have to be quite so
paranoid: all the code will disappear at the same time as any running
threads. Happily exiting a program happens via a different path:
shutdownHaskellAndExit(). If we're about to exit(), then there's no
need to wait for foreign calls to complete.
]
[Use "set -e" in validate, so "sh validate" still has it set
Ian Lynagh **20070729131809]
[Follow cabal configurations changes
Ian Lynagh **20070729110711]
[Fix building the HEAD with itself
Ian Lynagh **20070726181622]
[Link with hpc even if GhcWithInterpreter is not set
Ian Lynagh **20070726164201]
[FIX #1215: GHC fails to respect the maximal munch rule while lexing "qualified reservedids"
Simon Marlow **20070724130417
I didn't actually fix this to respect Haskell 98, instead I changed it
to follow the proposal for Haskell':
http://hackage.haskell.org/cgi-bin/haskell-prime/trac.cgi/wiki/QualifiedIdentifiers
Rationale:
- We didn't respect Haskell 98 with respect to qualified symbols either
- The Haskell' change makes things much cleaner
- Obeying the Haskell 98 spec literally has some unintended
consequences (e.g. M.where must lex as "M.wher" "e")
- Any programs that compiled before this change and do not compile
after it were illegal according to Haskell 98 anyway.
]
[FIX #1555: Remove "exp -> pat" production in stmts
Simon Marlow **20070723141023
It looks like this was an experiment that accidentally got committed,
somewhere between 6.0 and 6.2.
]
[in hpc-tools, removing the use of %error, to allow happy 1.15 to be used.
andy@galois.com**20070721000621]
[hpc-tools: improving flag processing and help messages, small bug fixes.
andy@galois.com**20070720235703]
[Add unreg/tables-next-code output to +RTS --info
Ian Lynagh **20070723100135]
[Add a +RTS --info flag print various info; partially fixes trac #1517
Ian Lynagh **20070722170042]
[Document the new -X flags in the flag reference
Ian Lynagh **20070722151934]
[Check for framework failures and unexpected passes in validate
Ian Lynagh **20070722135623]
[Use CLEANUP=1 when running the testsuite from validate
Ian Lynagh **20070722125431]
[Hack: copy ld.exe to compiler/gcc-lib so Cabal can find it
Ian Lynagh **20070721200043]
[Fix the Windows build
Ian Lynagh **20070721011817]
[Fix -split-obj on Mac OS via -fasm
Clemens Fruhwirth **20070706112449
The problem of the splitter was that it re-emitted section directives
for every dynamic label found. The following was torn apart
.symbol_stubs
.indirect
L_$stub:
jmp *...
L_$stub_binder:
..somebinding code..
into
.symbol_stubs
.indirect_symbol
L_$stub:
jmp *...
.symbol_stubs $stub_binder:
..somebinding code..
This is incorrect as the Mac OS assembler enforces that every new code
section that goes into .symbol_stubs is associated with the linker
directive .indirect_symbol. This sanity check is obviously violated
when we reemit .symbol_stub in the splitter. The solution is to ignore
everything that ends with $stub_binder as new label, and chuck it into
a single label for $stub.
Also the splitter has to recognize .section __DATA... for the lazy_ptr
indirection symbol. Adds a reminder to PositionIndependentCode.hs to
take care of the splitter when the code generation is changed.
This should not affect -fvia-c as the code generated by the C compiler
is entirely different.
]
[Made the label generation in the Cmm parser more direct
Michael D. Adams **20070718203300]
[Typo fix in comment
Michael D. Adams **20070716182906]
[Default tick interval was 50ms, change it to 20ms
Simon Marlow **20070718112652
I think 50ms was accidental, prior to 6.6 it used to be 20ms
]
[remove unused TICK_FREQUENCY
Simon Marlow **20070718110655]
[wakeUpSleepingThreads: fix off by one
Simon Marlow **20070718092754
The symptom of this bug is after the time of a threadDelay has
expired, the RTS does a whole slew of extra select() calls.
This should help with #1523, but it's not the whole story.
]
[Refactoring
Roman Leshchinskiy **20070718045553]
[Better names for PArray instance coercions
Roman Leshchinskiy **20070718045051]
[Add generated PArray instances to instance environments
Roman Leshchinskiy **20070718044433]
[Nicer names for generated PArray instances
Roman Leshchinskiy **20070718041411]
[Generate PArray instances of vectorised tycons
Roman Leshchinskiy **20070718040828]
[Generation of DataCons for implicit PArray instances
Roman Leshchinskiy **20070718025235]
[Fix two typos
Roman Leshchinskiy **20070718025224]
[More vectorisation-related OccNames
Roman Leshchinskiy **20070718025159]
[darcs-all: allow relative path for repo in local fs
Manuel M T Chakravarty **20070718034511]
[When registering base during installation, don't hide GHC.Prim
Ian Lynagh **20070719163920]
[Create .hi-boot and .o-boot files in --make mode; fixes trac #1322
Ian Lynagh **20070719112736
We were recompiling the .hs-boot files each time, as we were never
writing out the compilation results.
]
[Fixes for the unreg build
Ian Lynagh **20070718111751
* Fix code output order when printing C so things are defined before
they are used.
* Generate _ret rather than _entry functions for INFO_TABLE_RET.
* Use "ASSIGN_BaseReg" rather than "BaseReg =".
]
[Factor 'callerSaveVolatileRegs' out of the NCG and into CgUtil
Michael D. Adams **20070717014257
This is needed because CgForeign and parts of the CPS pass now use
'callerSaveVolatileRegs' and not all platforms have access to the NCG.
]
[Implement the RTS side of GHC.Environment.getFullArgs
Ian Lynagh **20070717142050]
[Adding pushing of hpc translation status through hi files.
andy@galois.com**20070717073510
Now, if a single module *anywhere* on the module tree is built with
-fhpc, the binary will enable reading/writing of .tix.
Previously, you needed to compile Main to allow coverage to operate.
This changes the file format for .hi files; you will need to recompile every library.
]
[Handle unlifted tycons and tuples correctly during vectorisation
Roman Leshchinskiy **20070717064816]
[Initialise global vectorisation environment properly
Roman Leshchinskiy **20070717064233]
[Vectorise type declarations
Roman Leshchinskiy **20070717063309]
[Vectorisation of data declarations (incomplete)
Roman Leshchinskiy **20070717061306]
[Add vectorisation environment transformers
Roman Leshchinskiy **20070717054943]
[Refactor
Roman Leshchinskiy **20070717052835]
[Remove mapping from tycons to PA dictionaries from vect environment
Roman Leshchinskiy **20070717052323]
[Add datacons to vectorisation environment
Roman Leshchinskiy **20070717052239]
[Add fixV
Roman Leshchinskiy **20070717051527]
[Classification of tycons for vectorisation
Roman Leshchinskiy **20070717050337]
[Clean up
Roman Leshchinskiy **20070717041957]
[Move type vectorisation code to a separate module
Roman Leshchinskiy **20070717041645]
[Pass correct dictionary to lengthPA for single-element environments
Roman Leshchinskiy **20070716110819]
[Abstract over all in-scope type variables when creating closures
Roman Leshchinskiy **20070716105847]
[Pass PA dictionaries after all type arguments
Roman Leshchinskiy **20070716105619
This makes the code slightly simpler but only works because we do not support
rank-n types.
]
[Fix bug in lifted environment inspection code
Roman Leshchinskiy **20070716072338]
[Lifting contexts have type Int#
Roman Leshchinskiy **20070716065155
This tracks the corresponding change in package ndp. With this patch, we
finally can vectorise something (f x = x).
]
[Fix bug in vectorisation
Roman Leshchinskiy **20070716063548]
[Fix bad bug in type vectorisation
Roman Leshchinskiy **20070716062833]
[Make vectorisation part of the optimiser pipeline
Roman Leshchinskiy **20070716061900]
[Get NDP prelnames from the right modules
Roman Leshchinskiy **20070716061816]
[Vectorise top-level bindings of a module
Roman Leshchinskiy **20070716052406]
[Vectorisation of top-level bindings
Roman Leshchinskiy **20070716051139]
[Store hoisted bindings in the global environment during vectorisation
Roman Leshchinskiy **20070716050019]
[Add support for name cloning to vectorisation monad
Roman Leshchinskiy **20070716044826]
[Refactoring
Roman Leshchinskiy **20070716044801]
[Adapt interface file code for vectorisation
Roman Leshchinskiy **20070716035739
For the most part, this patch simply renames functions which had been used
for closure conversion and hence have CC in their name. It also changes the
OccNames generated by vectorisation.
]
[Collect hoisted vectorised functions
Roman Leshchinskiy **20070716021151]
[First incomplete version of closure vectorisation
Roman Leshchinskiy **20070713073318]
[Refactor slightly
Roman Leshchinskiy **20070713073304]
[Add utility function for vectorisation
Roman Leshchinskiy **20070713073227]
[Add closedV
Roman Leshchinskiy **20070713072843]
[Export wrapFamInstBody and unwrapFamInstScrut
Roman Leshchinskiy **20070712045434]
[Refactoring
Roman Leshchinskiy **20070711044820]
[Add whitespace
Roman Leshchinskiy **20070711035839]
[Only vectorise rank-1 expressions
Roman Leshchinskiy **20070711035616]
[Move some vectorisation utility functions
Roman Leshchinskiy **20070710140934]
[Modify PA dictionary computation to work with the class-based scheme
Roman Leshchinskiy **20070710140221]
[Clean up handling of PA dictionaries
Roman Leshchinskiy **20070710133124]
[FIX problem with not using the compat lib for Set in hpc tools.
andy@galois.com**20070715213602]
[Properly parse GC blocks for functions with info tables
Michael D. Adams **20070715204116]
[Removed 'allow_header_set' argument from 'pack_continuation'.
Michael D. Adams **20070715202235
Because branches might now go to continuations and become calls to
continuations, 'allow_header_set' isn't always correct.
Removing that parameter makes the conservative approximation.
A better approximation might save one memory store is some cases.
]
[Fixed conditional branches to proc points
Michael D. Adams **20070715202033
These could occur due to GC checks.
]
[Removed unused variable from compiler/cmm/CmmCPS.hs
Michael D. Adams **20070715201717]
[Removed unused import from compiler/cmm/CmmCPS.hs
Michael D. Adams **20070715201638]
[Keep the CPS pass from creating proc points due to unreachable parents.
Michael D. Adams **20070715162003
The parser/flattener will generate an extra block after an if/else
statement even if both branches exit the function. So it is possible
for the input to the CPS pass to have dead/unreachable blocks.
If a dead block goes to a live block then the live block would
have more parents than the dead block and prior to this patch
the live block would then be identified as a proc point.
This is fixed by adding a check to see if the parent
has at least one owner.
]
[Fixed CPS to account for info tables not being next to code
Michael D. Adams **20070715011141]
[Fix the CPS pass to pack the continuation with correct label form.
Michael D. Adams **20070714184955
It was using the return point label before; now it uses the info label.
]
[Typo
Ian Lynagh **20070716235635]
[Corrections for warnings in the user guide
Ian Lynagh **20070716231741]
[Sync the UG entries for -Wall, -w etc with reality
Ian Lynagh **20070716221943]
[-w should turn off /all/ options, not just the -Wall ones
Ian Lynagh **20070716221442]
[Implement -fwarn-dodgy-imports
Ian Lynagh **20070716220635
You used to only be able to enable Opt_WarnDodgyImports with -W or -Wall.
This patch adds the flag to en/disable it by name.
(DodgyImports == importing T(..) when only T is exported).
]
[Doc tweaks
Ian Lynagh **20070716212813]
[Remove note that -E behaviour has changed (6.0 has the same note)
Ian Lynagh **20070716183624]
[Doc tweaks
Ian Lynagh **20070716183540]
[User guide tweaks
Ian Lynagh **20070716180352]
[Doc tweak
Ian Lynagh **20070716174735]
[Doc tweak
Ian Lynagh **20070716174428]
[Correct user guide on when .ghci is read
Ian Lynagh **20070716172448]
[Tweak punctuation in the user guide
Ian Lynagh **20070716171550]
[ghci command docs tweaks
Ian Lynagh **20070716170601]
[Fix alphabetical ordering in :? output
Ian Lynagh **20070716165149]
[Fix alphabetical ordering in user guide
Ian Lynagh **20070716155544]
[Typo
Ian Lynagh **20070716153413]
[Remove another instance of the banner from the user guide
Ian Lynagh **20070715221444]
[In user guide, don't claim that ghci never generates .hi files
Ian Lynagh **20070715221119
With -fobject-code it now can do.
]
[ghci debugger documentation tweaks
Ian Lynagh **20070715220517]
[Fix typo
Ian Lynagh **20070715122229]
[ghci doc tweaks
Ian Lynagh **20070715122128]
[Fix for print022 (round up when dividing type size by word size)
Ian Lynagh **20070714223940
From Pepe Iborra (mnislaih)
]
[Automatic RTTI for ghci bindings
Pepe Iborra **20070714114946
With this patch, ghci runs rtti (bounded in the term treewith a max. depth of 10)
automatically after evaluating any expression in the interactive env.
In addition, a rtti step is performed on the local bindings in a breakpoint,
before returning control to the user
Let's see how well this works in practice
]
[Teach :print to not panic when the DataCon for a closure is not exposed by the .hi file
Pepe Iborra **20070712174323
Previously the behaviour was to panic.
Now it will print an approximated representation,
using the names (enclosed in keys, i.e. "")
and the pointed subterms. Non pointed subterms cannot
be included in this representation:
Prelude> let se = Data.Sequence.fromList (map Just "abc")
Prelude> :eval se
()
Prelude> :p se
se = ( (_t1::t)) () ( (_t2::t) (_t3::t))
Prelude> :eval _t2
()
Prelude> :p se
se = ( (_t4::t1)) () ( (Just 'b') (_t5::t1))
Prelude>
This patch also includes some fixes in the pretty printer
for the Term datatype
]
[Fix an array indexing bug in getClosureData (used by :print)
Pepe Iborra **20070712163012]
[remove some leftovers of the first ghci debugger prototype
Pepe Iborra **20070711234514]
[Fix imports & add missing type signatures
Pepe Iborra **20070711101749]
[Ask for a HscEnv instead of a Session in InteractiveEval.obtainTerm
Pepe Iborra **20070711095421
This does a better job of showing that obtainTerm does not alter the Session
]
[Add a max depth bound to the bfs implementation in cvReconstructType,
Pepe Iborra **20070711092006
to avoid looping when reconstructing insufficiently evaluated, circular structures
]
[FIX panic from the GHC API
David Waern **20070714124743
In hscFileCheck, initialize md_vect_info with noVectInfo instead of
a panic value, since this is a strict field.
]
[init mg_inst_env when reading ext core
Manuel M T Chakravarty **20070713073729]
[Warning Police: No newline at end of file
Michael D. Adams **20070713204028]
[Warning Police: Unused imports
Michael D. Adams **20070713201913]
[Added libraries/parallel to .darcs-boring
Michael D. Adams **20070713182117]
[Adding draft and show to hpc
andy@galois.com**20070712194200
we now have
hpc draft
This drafts up a candidate overlay for 100% coverage.
and
hpc show
This show verbose details about a tix file; mainly for debugging.
]
[Fixing Hpc SrcSpan usage; rejecting SrcSpans that are not in the source file
andy@galois.com**20070712171646
Now, if you #include a file, you do not get any hpc-info from the included file.
Previously, you got wrong information.
Thanks to Neil Mitchell for pointing out the problem.
]
[Revert the $* patch for earlier Perls as it breaks the build. Sorry. :/
audreyt@audreyt.org**20070712054351]
[In mangler, lift the multiline-match pragma to toplevel and document it better.
audreyt@audreyt.org**20070711210449]
[* Evil Mangler broke under Perl 5.9+ because $* is gone; this fixes it.
audreyt@audreyt.org**20070711182430
Perl 4's special variable $* controls multi-line matching; it's been
deprecated from Perl 5's inception, and is finally removed in Perl
versions 5.9 (soon to be 5.10).
Since GHC depends on Perl 5.6+ anyway, this patch introduces an
equivalent effect to $* without using that special variable, by
hooking into Perl's regex parsing process to add the /m flag.
]
[Remove import
David Waern **20070711194005]
[Remove comment
David Waern **20070711193504]
[* Future-proof autoconf's Perl version test.
audreyt@audreyt.org**20070711165851
GHC only works with Perl versions 5.6 and later; however
the current test greps in a rather non-future-proof way
(explicitly against 5.6 and 5.8).
We instead exploit the "v-string" change in 5.6, which
displays the version string as "v5.x.y", rather than
the earlier format "version 5.xxx_yyy". Hence grepping
against "v5" will make it future proof for a while.
(At least until Perl 6 is installed as the system perl.)
]
[Fix putting hsicon.ico into the Windows installer; fixes #1515
Ian Lynagh **20070714161312
It was done in a bit of the Makefile that was if'ed out for Windows.
]
[Update the ghci "loading" section of the user guide
Ian Lynagh **20070714001346]
[Don't show the ghci :? output in the user guide
Ian Lynagh **20070713223017
The ghci command list is now much larger than it used to be, and it
tends to go out of sync with the docs anyway.
]
[User guide tweaks
Ian Lynagh **20070713222656]
[User guide tweaks
Ian Lynagh **20070713221258]
[Tweak Windows installation instructions in the user guide
Ian Lynagh **20070713220628]
[Update the contents of the library directy in the user guide
Ian Lynagh **20070713214004]
[User guide tweaks
Ian Lynagh **20070713210049]
[Don't talk about nfib from the user guide now that we no longer ship it
Ian Lynagh **20070713200442]
[Remove "What bundles there are" now we only have the standard one
Ian Lynagh **20070713195341]
[Update bundle installation instructions
Ian Lynagh **20070713194424]
[In the users guide, talk about configure flags
Ian Lynagh **20070712021759
(rather than talking about tweaking the Makefile(-vars) by hand)
]
[Remove "install in-place" blurb from the docs as it no longer works
Ian Lynagh **20070712015440]
[doc tweak
Ian Lynagh **20070712015340]
[Remove outdated bundle-contents description
Ian Lynagh **20070712015216]
[Merge *UnboxedTuples flags
Ian Lynagh **20070712011254
Merge
ExpressionSignaturesUnboxedTuples
TypeSynonymUnboxedTuples
into
UnboxedTuples
]
[Adding hpcError, that improves error messages with usage
andy@galois.com**20070711072454]
[Adding support for packages into hpc tools
andy@galois.com**20070711072349]
[Adding tick boxes to the interface syntax; fixes #1510
andy@galois.com**20070711072002]
[calling pprPanic rather than error when something goes wrong
andy@galois.com**20070711071935]
[Adding better support for HsSyn
andy@galois.com**20070711071842]
[Adding support for package names into hpc outputed code
andy@galois.com**20070711070555
We store .mix files in
.hpc//.mix
The package main the empty package (aka other naming passes),
so Main just is stored in
.hpc/Main.tix
This change in backwards compatable.
]
[Stoping constant folding of calls to chr# that are invalid
andy@galois.com**20070711063520
import GHC.Exts
main = print (C# (chr# 0xffffffff#))
This crashed at compile time (with or without hpc)
Tickled by pending cross-module hpc inlining patch.
]
[PA is now a class instead of a record
Roman Leshchinskiy **20070710113822]
[Add dsLookupClass
Roman Leshchinskiy **20070710113543]
[Lookup of class and family instances in vectorisation monad
Manuel M T Chakravarty