Simon Marlow [Fri, 21 Aug 2009 15:50:28 +0000 (15:50 +0000)]
Use explicit Word32/Int32 in place of Int in the on-disk .hi file
For: FastStrings, Names, and Bin values. This makes .hi files smaller
on 64-bit platforms, while also making the format a bit more robust.
Simon Marlow [Fri, 21 Aug 2009 15:47:37 +0000 (15:47 +0000)]
Fix the interface-file incompatibility crash (#3435)
We now have a dummy 32/64-bit field near the beginning of a .hi file
for backward-compatibility reasons; see comments (Note [dummy iface
field]) in BinIface.hs.
Ross Paterson [Mon, 24 Aug 2009 08:05:33 +0000 (08:05 +0000)]
trim Data.Sequence import, in preparation for expanding its API
Ian Lynagh [Sun, 23 Aug 2009 15:16:00 +0000 (15:16 +0000)]
Remove bitrotted IA64 code in Linker.c
It breaks the unregisterised build on IA64.
Thomas Schilling [Sat, 22 Aug 2009 23:09:37 +0000 (23:09 +0000)]
Make consIORef atomic.
Thomas Schilling [Fri, 21 Aug 2009 23:53:55 +0000 (23:53 +0000)]
Make updates to external package state idempotent.
Without this, concurrent updates to the EPS could introduce
overlapping instances (even though they came from the same module).
simonpj@microsoft.com [Fri, 21 Aug 2009 21:07:00 +0000 (21:07 +0000)]
Fix Trac #3423: missed instantiation for newtype-derived instances
Somehow I'd forgotten to instantiate the coercion that is stored in a
'NewtypeDerived' constructor in an InstInfo. The necessary code is
in TcInstDcls.tc_inst_decl2.
The result was ghc: panic! (the 'impossible' happened)
(GHC version 6.10.3 for x86_64-unknown-linux):
No match in record selector Var.tcTyVarDetails
because we were looking at an (uninstantiated) TyVar instead of
an (instantiated) TcTyVar.
Ian Lynagh [Fri, 21 Aug 2009 14:54:23 +0000 (14:54 +0000)]
Put "dl" back in rts/package.conf if HAVE_DL is defined
Fixes linking with -dynamic
Ian Lynagh [Fri, 21 Aug 2009 13:28:09 +0000 (13:28 +0000)]
Link CMM objects into dynamic libraries
This fixes linking hello world with -dynamic. I've also added some more
variables, so there is less duplication between the different ways of
linking.
Simon Marlow [Fri, 21 Aug 2009 14:45:44 +0000 (14:45 +0000)]
-fPIC -fvia-C issues a warning and ignores -fvia-C
Also, -fPIC causes an error if the target is registerised and has no
native code generator.
Simon Marlow [Thu, 20 Aug 2009 15:23:25 +0000 (15:23 +0000)]
Use allocateLocal() rather than allocate() in the interpreter
This gives about a 15% performance boost in GHCi for me. nice!
simonpj@microsoft.com [Fri, 21 Aug 2009 10:08:26 +0000 (10:08 +0000)]
Another tiny tidy-up to RnPat
simonpj@microsoft.com [Fri, 21 Aug 2009 09:52:51 +0000 (09:52 +0000)]
Fix Trac #3437: strictness of specialised functions
'lilac' helpful pin-pointed a space leak that was due to a specialised
function being insufficiently strict. Here's the new comment in SpecConstr:
Note [Transfer strictness]
~~~~~~~~~~~~~~~~~~~~~~~~~~
We must transfer strictness information from the original function to
the specialised one. Suppose, for example
f has strictness SS
and a RULE f (a:as) b = f_spec a as b
Now we want f_spec to have strictess LLS, otherwise we'll use call-by-need
when calling f_spec instead of call-by-value. And that can result in
unbounded worsening in space (cf the classic foldl vs foldl')
See Trac #3437 for a good example.
The function calcSpecStrictness performs the calculation.
simonpj@microsoft.com [Fri, 21 Aug 2009 09:06:37 +0000 (09:06 +0000)]
Wibbles to field-label puns
Ian Lynagh [Thu, 20 Aug 2009 17:37:07 +0000 (17:37 +0000)]
Fix library installation; fixes #3374
When configuring packages, enable library profiling and shared libraries
based on the ways in GhcLibWays.
Ian Lynagh [Thu, 20 Aug 2009 16:50:33 +0000 (16:50 +0000)]
Escape some $s in makefiles for consistency
simonpj@microsoft.com [Thu, 20 Aug 2009 16:15:20 +0000 (16:15 +0000)]
Wibble to RnPat refactoring
Simon Marlow [Thu, 20 Aug 2009 15:58:33 +0000 (15:58 +0000)]
Rollback: use cas() to claim the closure in copyPart(), to match copy_tag()
rolling back:
* use cas() to claim the closure in copyPart(), to match copy_tag()
* rename whitehole_spin to evac_collision, and update it properly
This introduced a new failure in parallel GC. I'll rollback for now
until I've fixed it.
Simon Marlow [Thu, 20 Aug 2009 14:43:08 +0000 (14:43 +0000)]
Relax the assumption that all objects fit in a single block (#3424)
It is possible for the program to allocate single object larger than a
block, without going through the normal large-object mechanisms that
we have for arrays and threads and so on.
The GC was assuming that no object was larger than a block, but #3424
contains a program that breaks the assumption. This patch removes the
assumption. The objects in question will still be copied, that is
they don't get the normal large-object treatment, but this case is
unlikely to occur often in practice.
In the future we may improve things by generating code to allocate
them as large objects in the first place.
Simon Marlow [Thu, 20 Aug 2009 14:33:05 +0000 (14:33 +0000)]
remove a bogus assertion
Simon Marlow [Thu, 20 Aug 2009 13:42:34 +0000 (13:42 +0000)]
Restore the GHC version check
I'm not sure what happened here, but the ordering of tests was messed
up, with the result that the GHC version check was being omitted.
Simon Marlow [Thu, 20 Aug 2009 12:25:38 +0000 (12:25 +0000)]
fix the inplace runghc
It was invoking $(TOP)/inplace/bin/ghc rather than
$(TOP)/inplace/bin/ghc-stage2
Simon Marlow [Thu, 20 Aug 2009 13:15:37 +0000 (13:15 +0000)]
Add a case for IND (and a comment). Fixes #3424, perhaps only partially.
simonpj@microsoft.com [Thu, 20 Aug 2009 12:34:43 +0000 (12:34 +0000)]
Improvements to record puns, wildcards
* Make C { A.a } work with punning, expanding to C { A.a = a }
* Make it so that, with -fwarn-unused-matches,
f (C {..}) = x
does not complain about the bindings introduced by the "..".
* Make -XRecordWildCards implies -XDisambiguateRecordFields.
* Overall refactoring of RnPat, which had become very crufty.
In particular, there is now a monad, CpsRn, private to RnPat,
which deals with the cps-style plumbing. This is why so many
lines of RnPat have changed.
* Refactor the treatment of renaming of record fields into two passes
- rnHsRecFields1, used both for patterns and expressions,
which expands puns, wild-cards
- a local renamer in RnPat for fields in patterns
- a local renamer in RnExpr for fields in construction and update
This make it all MUCH easier to understand
* Improve documentation of record puns, wildcards, and disambiguation
simonpj@microsoft.com [Thu, 20 Aug 2009 12:32:45 +0000 (12:32 +0000)]
Make -dppr-debug print locations in HsSyn
Show SrcSpans for Located things might be overkill, but it's sometimes
useful.
I also added
ppWhen, ppUnless :: Bool -> SDoc -> SDoc
to Outputable
Simon Marlow [Thu, 20 Aug 2009 12:12:08 +0000 (12:12 +0000)]
Make -dynamic a proper way, so we read the .dyn_hi files
Also, I cleaned up some of the way-related infrastructure, removing
two global variables.
There's more that could be done here, but it's a start. The way flags
probably don't need to be static any more.
Simon Marlow [Thu, 20 Aug 2009 11:05:32 +0000 (11:05 +0000)]
fix warning
Simon Marlow [Thu, 20 Aug 2009 09:45:16 +0000 (09:45 +0000)]
generalise the type of "on"
Simon Marlow [Thu, 20 Aug 2009 09:22:20 +0000 (09:22 +0000)]
need to check $(HADDOCK_DOCS) around contents/index generation
Simon Marlow [Wed, 19 Aug 2009 15:59:52 +0000 (15:59 +0000)]
WAY_dyn_LIB_TARGET is not used anywhere; kill it
Simon Marlow [Wed, 19 Aug 2009 14:55:07 +0000 (14:55 +0000)]
Rolling back: Add a kludge to fix building shared libs
Simon Marlow [Wed, 19 Aug 2009 14:15:18 +0000 (14:15 +0000)]
rename whitehole_spin to evac_collision, and update it properly
Simon Marlow [Wed, 19 Aug 2009 14:11:06 +0000 (14:11 +0000)]
use cas() to claim the closure in copyPart(), to match copy_tag()
copyPart() was still using the old WHITEHOLE mechanism for locking the
closure. I don't think this fixes any actual bugs, but it removes a
gratuitous difference between two functions that should look similar.
Simon Marlow [Wed, 19 Aug 2009 13:08:56 +0000 (13:08 +0000)]
Always yieldCapabilty() when a bound thread blocks
Fixes crash in concprog002(threaded2_qw), and possibly other problems
Manuel M T Chakravarty [Thu, 20 Aug 2009 07:26:08 +0000 (07:26 +0000)]
FIX #2767 & original problem of #3208
Ian Lynagh [Wed, 19 Aug 2009 20:21:12 +0000 (20:21 +0000)]
Improve the "Stack space overflow" error; fixes trac #3296
Simon Marlow [Wed, 19 Aug 2009 12:32:08 +0000 (12:32 +0000)]
Detect C finalizer callbacks in rts_lock() instead of schedule()
Otherwise, finalizer callbacks cause a deadlock in the threaded RTS
(including GHCi)
Simon Marlow [Wed, 19 Aug 2009 09:39:29 +0000 (09:39 +0000)]
Bump Happy requirement from 1.15 to 1.16
Now that the haskell98 dependency of GHC has been removed, the
Happy-generated parsers must import Data.Array rather than Array, and
that change was made in Happy 1.16.
Simon Marlow [Wed, 19 Aug 2009 11:35:50 +0000 (11:35 +0000)]
Restore the entry field in StgInfoTable when !defined(TABLES_NEXT_TO_CODE)
Somehow this got lost, probably in the recent RTS tidy-up.
Fixes segfaults in unregisterised compilation.
Ian Lynagh [Wed, 19 Aug 2009 12:54:40 +0000 (12:54 +0000)]
Fix warnings
Ian Lynagh [Tue, 18 Aug 2009 19:29:03 +0000 (19:29 +0000)]
Put a newtype wrapper around ModuleEnv
Simon Marlow [Wed, 19 Aug 2009 09:55:38 +0000 (09:55 +0000)]
Make the thr_dyn RTS ways optional on GhcUnregisterised
Fixes this failure in the unreigsterised build:
/usr/bin/ld: cannot find -lHSrts_thr
Simon Marlow [Wed, 19 Aug 2009 09:52:37 +0000 (09:52 +0000)]
fix an include
Simon Marlow [Wed, 19 Aug 2009 09:43:38 +0000 (09:43 +0000)]
remove some redundant declarations
Thomas Schilling [Tue, 18 Aug 2009 21:32:43 +0000 (21:32 +0000)]
Remove the lock around NameCache for readBinIface.
Turns out using atomic update instead of a full-blown lock was easier
than I thought. It should also be safe in the case where we
concurrently read the same interface file. Whichever thread loses the
race will simply find that all of the names are already defined and
will have no effect on the name cache.
Simon Marlow [Tue, 18 Aug 2009 11:29:42 +0000 (11:29 +0000)]
Fix #3429: a tricky race condition
There were two bugs, and had it not been for the first one we would
not have noticed the second one, so this is quite fortunate.
The first bug is in stg_unblockAsyncExceptionszh_ret, when we found a
pending exception to raise, but don't end up raising it, there was a
missing adjustment to the stack pointer.
The second bug was that this case was actually happening at all: it
ought to be incredibly rare, because the pending exception thread
would have to be killed between us finding it and attempting to raise
the exception. This made me suspicious. It turned out that there was
a race condition on the tso->flags field; multiple threads were
updating this bitmask field non-atomically (one of the bits is the
dirty-bit for the generational GC). The fix is to move the dirty bit
into its own field of the TSO, making the TSO one word larger (sadly).
Simon Marlow [Mon, 17 Aug 2009 09:47:24 +0000 (09:47 +0000)]
comment fixes (install.mk.in, not dirs.mk.in)
Simon Marlow [Mon, 17 Aug 2009 09:12:10 +0000 (09:12 +0000)]
Fix configure summary: --enable-shared has gone
Simon Marlow [Mon, 17 Aug 2009 09:11:05 +0000 (09:11 +0000)]
comment fix
Simon Marlow [Thu, 6 Aug 2009 11:28:59 +0000 (11:28 +0000)]
remove unused file
Simon Marlow [Thu, 6 Aug 2009 09:54:17 +0000 (09:54 +0000)]
Fix unregisterised build
Manuel M T Chakravarty [Tue, 18 Aug 2009 12:14:25 +0000 (12:14 +0000)]
FIX #3405
Thomas Schilling [Mon, 17 Aug 2009 14:23:52 +0000 (14:23 +0000)]
Make the dynamic linker thread-safe.
The current implementation is rather pessimistic. The persistent
linker state is now an MVar and all exported Linker functions are
wrapped in modifyMVar calls. This is serves as a big lock around all
linker functions.
There might be a chance for more concurrency in a few places. E.g.,
extending the closure environment and loading packages might be
independent in some cases. But for now it's better to be on the safe
side.
Thomas Schilling [Mon, 17 Aug 2009 00:48:19 +0000 (00:48 +0000)]
Make access to NameCache atomic. Sometimes needs a lock.
'readBinIface' updates the name cache in a way that is hard to use
with atomicModifyIORef, so this patch introduces a lock for this case.
All other updates use atomicModifyIORef.
Having a single lock is quite pessimistic, so it remains to be seen
whether this will become a problem. In principle we only need to make
sure that we do not load the same file concurrently (or that it's
idempotent). In practice we also need to ensure that concurrent reads
do not cancel each other out (since the new NameCache may be based on
an outdated version).
Thomas Schilling [Sun, 16 Aug 2009 23:19:20 +0000 (23:19 +0000)]
Make updates to the Finder caches atomic. Well, almost.
Flushing and uncaching a single module is not completely atomic since
both caches a cleared separately. However, flushing is only done when
changing the working directory which shouldn't be done concurrently to
other threads. Uncaching is only done in 'summariseModule' which
requires some more work to become thread-safe anyway.
Thomas Schilling [Sun, 16 Aug 2009 23:13:16 +0000 (23:13 +0000)]
Make updates to the external package state atomic.
Thomas Schilling [Wed, 22 Jul 2009 23:13:42 +0000 (23:13 +0000)]
Minor documentation fixes.
Ian Lynagh [Sun, 16 Aug 2009 20:03:26 +0000 (20:03 +0000)]
bindist fix
Ian Lynagh [Sun, 16 Aug 2009 19:00:43 +0000 (19:00 +0000)]
Build fixes
Ian Lynagh [Fri, 14 Aug 2009 22:54:31 +0000 (22:54 +0000)]
Remove the old platform code from the bindist configure.ac
Ian Lynagh [Fri, 14 Aug 2009 22:45:49 +0000 (22:45 +0000)]
Make our install variables etc compliant with GNU standards; fixes #1924
simonpj@microsoft.com [Fri, 14 Aug 2009 11:02:14 +0000 (11:02 +0000)]
Improve fix to Trac #3007
This patch tides up Ian's fix a little. In particular, if if you
{-# SOURCE #-} import a module from a different package, you now
get a much more civlised error message.
Ian Lynagh [Thu, 13 Aug 2009 16:24:35 +0000 (16:24 +0000)]
Only look up whether a module's SOURCE-imported if it's in the current package
Suppose we import anotherPackage:M, which exports things from
anotherPackage:Internal. Then GHC will want to read
anotherPackage:Internal.hi.
However, if we have also SOURCE-imported thisPackage:Internal then
we don't want GHC to try to read anotherPackage:Internal.hi-boot
instead.
The mapping that tells us whether a module is SOURCE-imported uses just
the module name for the key, so we have to check the package ID before
looking it up.
Fixes #3007.
simonpj@microsoft.com [Thu, 13 Aug 2009 16:11:54 +0000 (16:11 +0000)]
Fix Trac #3409: type synonyms that discard their arguments
Type synonyms that don't mention one of their type parameters on the
RHS are a pain in the neck. This patch fixes a long-standing bug (that
simply has not appeared before) in that exprType could return a type
mentioning an existentially-quantified variable (in one of those ignored
argument positions).
See CoreUtils Note [Existential variables and silly type synonyms]
The fix is not entirely beautiful, but it works, and is very localised.
Ian Lynagh [Wed, 12 Aug 2009 18:59:12 +0000 (18:59 +0000)]
Add support for multi-line deprecated pragmas; trac #3303
Ian Lynagh [Wed, 12 Aug 2009 13:38:17 +0000 (13:38 +0000)]
Fix a sanity check; fixes #3089
Ian Lynagh [Tue, 11 Aug 2009 22:01:46 +0000 (22:01 +0000)]
Skip "Cabal check" for certain packages that we know will fail
Ian Lynagh [Tue, 11 Aug 2009 21:58:39 +0000 (21:58 +0000)]
Fix "Cabal check" warnings
Ian Lynagh [Tue, 11 Aug 2009 21:25:59 +0000 (21:25 +0000)]
Check Cabal packages when validating
This checks that hackage would accept the packages.
Currently warnings are printed, but don't result in failure.
Ian Lynagh [Tue, 11 Aug 2009 14:53:00 +0000 (14:53 +0000)]
Include a pointer to GHC.Exts in the generated GHC.Prim docs
simonpj@microsoft.com [Tue, 11 Aug 2009 14:36:55 +0000 (14:36 +0000)]
Refactor, and improve error messages (cf Trac #3395)
The Convert stuff should not panic if the programmer hands over an
invalid TH term; instead it should give a graceful error message.
Largely this had been done, but not for do-blocks, so this patch
fixes that problem.
Moreover, I did some refactoring and tidying up, which is why
so many lines of code have changed
simonpj@microsoft.com [Mon, 10 Aug 2009 16:43:20 +0000 (16:43 +0000)]
Fix Trac #3421: a typo in TysPrim
This is just a blatant typo, where Any1 :: *->* was getting mixed
up with Any :: *.
simonpj@microsoft.com [Mon, 10 Aug 2009 14:11:58 +0000 (14:11 +0000)]
Improve the recent changes to overlap-checking for view patters
The previous patch simply gave up for view patterns; this version
instead treats them like n+k patterns and gives signficantly better
results.
Less code, too.
Max Bolingbroke [Fri, 17 Jul 2009 22:49:03 +0000 (22:49 +0000)]
Turn group into a special_id when TransformListComp is on
Ian Lynagh [Sun, 9 Aug 2009 18:07:01 +0000 (18:07 +0000)]
Make Constants shareable with the base package
Ian Lynagh [Sun, 9 Aug 2009 15:42:58 +0000 (15:42 +0000)]
Minor refactoring
Alexander Dunlap [Fri, 7 Aug 2009 18:48:41 +0000 (18:48 +0000)]
FIX #2395 (ViewPatterns trigger bad Check errors)
Ian Lynagh [Sat, 8 Aug 2009 22:25:37 +0000 (22:25 +0000)]
Pass -m32 to gcc on i386 and ppc OS X
This makes GHC work even if you are actually running it in 64bit mode,
e.g. on OS X 10.6 Snow.
Ian Lynagh [Sat, 8 Aug 2009 18:44:07 +0000 (18:44 +0000)]
Fix bindist creation
This is a bit kludgy. We've hit the maximum number of arguments you can
have in the for loop for adding files to the bindist list, so this just
splits the list in 2.
Ian Lynagh [Sat, 8 Aug 2009 17:57:56 +0000 (17:57 +0000)]
Put the library haddock docs in the html subdirectory of docdir
Ian Lynagh [Sat, 8 Aug 2009 11:20:34 +0000 (11:20 +0000)]
Install the main doc index page, and also put it in bindists
Alexander Dunlap [Sat, 1 Aug 2009 01:23:35 +0000 (01:23 +0000)]
FIX BUILD: Remove harmful dnls and identifier typo in aclocal.m4
Ian Lynagh [Fri, 7 Aug 2009 15:21:51 +0000 (15:21 +0000)]
Fix the build on OS X
Simon Marlow [Mon, 3 Aug 2009 10:44:13 +0000 (10:44 +0000)]
Add -r option to darcs-all, and remove push-all (#3375)
Contributed by: seliopou@gmail.com
This patch modifies darcs-all to have feature parity with push-all by
recognizing two new options.
* -i, equivalent to --ignore-failure in push-all
* -r <repo>, specifies the remote repository darcs commands will use
Some example commands:
Get the libraries from a repository of your choosing. This is useful
when working with a git mirror:
$ ./darcs-all -r http://darcs.haskell.org get
Pull changes. Used to be:
$ ./push-all --pull http://darcs.haskell.org
Is now:
$ ./darcs-all -r http://darcs.haskell.org pull
Or to use the default remote of the ghc repository:
$ ./darcs-all pull
Ian Lynagh [Fri, 7 Aug 2009 13:07:31 +0000 (13:07 +0000)]
Add a kludge to fix building shared libs
The .dyn_hi files currently depend on the .dyn_hi files of modules that
they import. But they actually want the .hi files of modules from
another package.This we make the .dyn_hi files depend on the .hi files
so we are sure that they exist and are up-to-date.
Ian Lynagh [Fri, 7 Aug 2009 00:54:45 +0000 (00:54 +0000)]
Leave dyn in GhcLibWays when validating
Ian Lynagh [Thu, 6 Aug 2009 16:43:20 +0000 (16:43 +0000)]
Build shared library support by default on platforms that support it
Ian Lynagh [Thu, 6 Aug 2009 14:13:59 +0000 (14:13 +0000)]
Update the libffi filenames to follow the new version number
Stops make going into an infinite rebuilding loop
Simon Marlow [Thu, 6 Aug 2009 09:30:21 +0000 (09:30 +0000)]
Fix ticky build
Simon Marlow [Thu, 6 Aug 2009 08:17:47 +0000 (08:17 +0000)]
add #include <sys/types.h> (hopefully fixes OS X build)
Simon Marlow [Wed, 5 Aug 2009 10:22:17 +0000 (10:22 +0000)]
profiling build fix
Simon Marlow [Wed, 5 Aug 2009 09:35:39 +0000 (09:35 +0000)]
profiling build fixes
Simon Marlow [Wed, 5 Aug 2009 09:25:37 +0000 (09:25 +0000)]
#include fix
Simon Marlow [Mon, 3 Aug 2009 21:45:45 +0000 (21:45 +0000)]
use C99-style array initialisers
Simon Marlow [Mon, 3 Aug 2009 21:09:48 +0000 (21:09 +0000)]
use C99-style array initialisers
Simon Marlow [Mon, 3 Aug 2009 21:03:04 +0000 (21:03 +0000)]
move termios prototypes into a public header
Simon Marlow [Mon, 3 Aug 2009 21:02:29 +0000 (21:02 +0000)]
move StgEntCounter type into its own header
Simon Marlow [Mon, 3 Aug 2009 20:32:52 +0000 (20:32 +0000)]
Common up two closure type -> string tables
Also, use C99-style array initialisers
Simon Marlow [Mon, 3 Aug 2009 20:29:40 +0000 (20:29 +0000)]
Rename primops from foozh_fast to stg_foozh
For consistency with other RTS exported symbols
Simon Marlow [Mon, 3 Aug 2009 20:21:51 +0000 (20:21 +0000)]
remove the GUM closure types