ghc-hetmet.git
14 years agoremove Haddock-lexing/parsing/renaming from GHC
Isaac Dupree [Wed, 26 Aug 2009 14:59:24 +0000 (14:59 +0000)]
remove Haddock-lexing/parsing/renaming from GHC

14 years agoFix Trac #3403: interaction of CPR and pattern-match failure
simonpj@microsoft.com [Tue, 8 Sep 2009 13:14:00 +0000 (13:14 +0000)]
Fix Trac #3403: interaction of CPR and pattern-match failure

A fine bug report (#3403) demonstrated that we were losing the tail
call property when a complicated pattern match was involved.  After
a bit of investigation I discovered that the culprit was the failure
join-point introduced by the pattern matcher.  It was a zero-argument
thunk, which is not very CPR-friendly, and that interacted badly with
CPR worker/wrapper.

It's easy to fix, the same way that we fix other join points, by supplying
a dummy argument (that is not really passed at runtime.

14 years agoFix Trac #3468: improve checking for hs-boot interfaces
simonpj@microsoft.com [Tue, 8 Sep 2009 13:03:50 +0000 (13:03 +0000)]
Fix Trac #3468: improve checking for hs-boot interfaces

When checking the interface exported by a hs-boot file against the
Real Thing, I'd failed to check the kind of a type constructor.  If you
get it wrong, the inconsistency leads to all manner of mischief, as
'wkahl' reports in #3468.

This patch should do the job.

14 years agoAllow TH/annotations to be used with -dynamic
Simon Marlow [Tue, 8 Sep 2009 10:16:44 +0000 (10:16 +0000)]
Allow TH/annotations to be used with -dynamic

14 years agoFix warnings on 64-bit platforms; fixes validate on x86-64
Simon Marlow [Tue, 8 Sep 2009 09:26:39 +0000 (09:26 +0000)]
Fix warnings on 64-bit platforms; fixes validate on x86-64

14 years agofix -u flags (after changes for #3310)
Simon Marlow [Thu, 3 Sep 2009 07:23:18 +0000 (07:23 +0000)]
fix -u flags (after changes for #3310)

14 years agoUnify event logging and debug tracing.
Simon Marlow [Sat, 29 Aug 2009 09:47:27 +0000 (09:47 +0000)]
Unify event logging and debug tracing.

  - tracing facilities are now enabled with -DTRACING, and -DDEBUG
    additionally enables debug-tracing.  -DEVENTLOG has been
    removed.

  - -debug now implies -eventlog

  - events can be printed to stderr instead of being sent to the
    binary .eventlog file by adding +RTS -v (which is implied by the
    +RTS -Dx options).

  - -Dx debug messages can be sent to the binary .eventlog file
    by adding +RTS -l.  This should help debugging by reducing
    the impact of debug tracing on execution time.

  - Various debug messages that duplicated the information in events
    have been removed.

14 years agowaitForReturnCapability: fix logic bug
Simon Marlow [Mon, 31 Aug 2009 06:49:08 +0000 (06:49 +0000)]
waitForReturnCapability: fix logic bug
The check for whether a Capability was free was inverted, which harmed
performance for callbacks.

14 years agoHandle renames from #3310
Simon Marlow [Sun, 30 Aug 2009 15:31:23 +0000 (15:31 +0000)]
Handle renames from #3310

Also add a panic for resurrecting a thread blocked on an exception,
since it should never happen.

14 years agoadd RTS_PRIVATE attribute
Simon Marlow [Sat, 29 Aug 2009 17:17:52 +0000 (17:17 +0000)]
add RTS_PRIVATE attribute

14 years agoFix incorrectly hidden RTS symbols
Simon Marlow [Sat, 29 Aug 2009 13:28:14 +0000 (13:28 +0000)]
Fix incorrectly hidden RTS symbols

14 years agoMaintain Task/Capability invariants in performPendingThrowTos
Simon Marlow [Sat, 29 Aug 2009 09:26:07 +0000 (09:26 +0000)]
Maintain Task/Capability invariants in performPendingThrowTos
Fixes an ASSERTION failure with concprog001, -threaded -debug, +RTS -N2

14 years agoDeclare RTS-private prototypes with __attribute__((visibility("hidden")))
Simon Marlow [Wed, 5 Aug 2009 10:21:59 +0000 (10:21 +0000)]
Declare RTS-private prototypes with __attribute__((visibility("hidden")))
This has no effect with static libraries, but when the RTS is in a
shared library it does two things:

 - it prevents the function from being exposed by the shared library

 - internal calls to the function can use the faster non-PLT calls,
   because the function cannot be overriden at link time.

14 years agoConfigurable iconv header and library locations
Matthias Kilian [Wed, 26 Aug 2009 15:59:13 +0000 (15:59 +0000)]
Configurable iconv header and library locations
Should help to fix the build on OpenBSD (together with a corresponding
patch to libraries/base).

14 years agoUse -W, not -Werror, for gcc older than 3.4
Matthias Kilian [Wed, 26 Aug 2009 21:00:44 +0000 (21:00 +0000)]
Use -W, not -Werror, for gcc older than 3.4

14 years agoDon't mess up absolute INCLUDE_DIRS
Matthias Kilian [Wed, 26 Aug 2009 15:33:40 +0000 (15:33 +0000)]
Don't mess up absolute INCLUDE_DIRS
When there are some absolute include dirs, don't create arguments
like -Ilibraries/base//usr/local/include.

I need this fix for injecting the iconv include dir (which is
/usr/local/include on OpenBSD) into the build of libraries/base.

14 years agoFix #3461: protect the use of keepCAFs with #ifdef DYNAMIC
Simon Marlow [Fri, 28 Aug 2009 12:58:02 +0000 (12:58 +0000)]
Fix #3461: protect the use of keepCAFs with #ifdef DYNAMIC

14 years agofix 'darcs-all rec' (amongst other things)
Simon Marlow [Thu, 27 Aug 2009 14:15:54 +0000 (14:15 +0000)]
fix 'darcs-all rec' (amongst other things)

14 years agoREDO: Add -r option to darcs-all, and remove push-all (#3375)
Simon Marlow [Thu, 27 Aug 2009 13:57:17 +0000 (13:57 +0000)]
REDO: Add -r option to darcs-all, and remove push-all (#3375)

rolling back:

Mon Aug  3 11:44:13 BST 2009  Simon Marlow <marlowsd@gmail.com>
  UNDO: 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

    M ./darcs-all -79 +33
    A ./push-all

14 years agoAdd a link to hp2any from the profiling section.
Simon Marlow [Thu, 27 Aug 2009 11:40:50 +0000 (11:40 +0000)]
Add a link to hp2any from the profiling section.

14 years agoFix "make install"
Ian Lynagh [Wed, 26 Aug 2009 15:56:38 +0000 (15:56 +0000)]
Fix "make install"
We need to change a dependency on
    pkg-inplace
to
    pkg-$abihash
when installing

14 years ago"ghc-cabal install" now needs to know where GHC is, to get the ABI hash
Ian Lynagh [Wed, 26 Aug 2009 13:33:59 +0000 (13:33 +0000)]
"ghc-cabal install" now needs to know where GHC is, to get the ABI hash

14 years agoFix bindist creation
Ian Lynagh [Wed, 26 Aug 2009 12:29:53 +0000 (12:29 +0000)]
Fix bindist creation
We were running into problems like:
    for f in  LICENSE configure config.sub config.guess [...]
    make[2]: execvp: /bin/sh: Argument list too long
This patch moves the loop into make, rather than the shell.

14 years agoUNDO: fix the inplace runghc (it broke the installed runghc)
Simon Marlow [Wed, 26 Aug 2009 10:49:37 +0000 (10:49 +0000)]
UNDO: fix the inplace runghc (it broke the installed runghc)

14 years agoFix part of #3398: pretty-printing always goes via the I/O library encoding
Simon Marlow [Wed, 26 Aug 2009 10:40:52 +0000 (10:40 +0000)]
Fix part of #3398: pretty-printing always goes via the I/O library encoding
That is, unless we're printing in LeftMode, where we bypass encoding
for speed.  This is safe, because LeftMode is used for outputting C or
asm, where everyting is Z-encoded and hence ASCII.

Error messages and other compiler output containing Unicode will now
appear correctly according to the locale settings.

14 years agoTidy up file headers and copyrights; point to the wiki for docs
Simon Marlow [Tue, 25 Aug 2009 09:50:47 +0000 (09:50 +0000)]
Tidy up file headers and copyrights; point to the wiki for docs

I've updated the wiki page about the RTS headers
  http://hackage.haskell.org/trac/ghc/wiki/Commentary/SourceTree/Includes
to reflect the new layout and explain some of the rationale.  All the
header files now point to this page.

14 years agoFollow changes in Cabal: package -> sourcePackageId
Simon Marlow [Mon, 24 Aug 2009 16:00:20 +0000 (16:00 +0000)]
Follow changes in Cabal: package -> sourcePackageId

14 years agofix an unused-import warning
Simon Marlow [Mon, 24 Aug 2009 15:36:57 +0000 (15:36 +0000)]
fix an unused-import warning

14 years agoAdd unique package identifiers (InstalledPackageId) in the package DB
Simon Marlow [Thu, 20 Aug 2009 11:09:20 +0000 (11:09 +0000)]
Add unique package identifiers (InstalledPackageId) in the package DB
See commentary at
http://hackage.haskell.org/trac/ghc/wiki/Commentary/Packages

14 years agoMove the standalone-deriving flag test from parser to renamer
simonpj@microsoft.com [Tue, 25 Aug 2009 07:33:24 +0000 (07:33 +0000)]
Move the standalone-deriving flag test from parser to renamer

This is just a tiny refactoring.  In general, we're trying to
get rid of parser errors in favour of later, more civlised, errors.

14 years agoError message wibble
simonpj@microsoft.com [Tue, 25 Aug 2009 07:32:59 +0000 (07:32 +0000)]
Error message wibble

14 years agoFix Trac #3406 (albeit not very satisfactorily): scoped type variables
simonpj@microsoft.com [Tue, 25 Aug 2009 07:30:59 +0000 (07:30 +0000)]
Fix Trac #3406 (albeit not very satisfactorily): scoped type variables

The issue here is this:

  type ItemColID a b = Int  -- Discards a,b

  get :: ItemColID a b -> a -> ItemColID a b
  get (x :: ItemColID a b) = x :: ItemColID a b

The pattern signature for 'x' doesn't actually rigidly bind a,b.
This crashed GHC 6.10 with a 'readFilledBox' panic.  Now we fail
with an erroe message

With the new outside-in algorithm we'll be able to accept this program.

14 years agoMake FastString thread-safe.
Thomas Schilling [Mon, 24 Aug 2009 18:22:52 +0000 (18:22 +0000)]
Make FastString thread-safe.

This is needed both for per-session parallelism and for allowing
multiple concurrent sessions in the same process.  With the help of
atomicModifyIORef and unsafePerformIO it is also quite fast--an MVar
would most likely be slower.  On a full compilation of Cabal's head
branch it was about 1-2 percent slower, but then overall compilation
times varied by about 4 percent, so I think it's worth it.

14 years agoImprove docs on -XFlexibleContexts
simonpj@microsoft.com [Mon, 24 Aug 2009 11:37:22 +0000 (11:37 +0000)]
Improve docs on -XFlexibleContexts

14 years agofix do-notation warnings
Simon Marlow [Mon, 24 Aug 2009 08:04:00 +0000 (08:04 +0000)]
fix do-notation warnings

14 years agoUse explicit Word32/Int32 in place of Int in the on-disk .hi file
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.

14 years agoFix the interface-file incompatibility crash (#3435)
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.

14 years agotrim Data.Sequence import, in preparation for expanding its API
Ross Paterson [Mon, 24 Aug 2009 08:05:33 +0000 (08:05 +0000)]
trim Data.Sequence import, in preparation for expanding its API

14 years agoRemove bitrotted IA64 code in Linker.c
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.

14 years agoMake consIORef atomic.
Thomas Schilling [Sat, 22 Aug 2009 23:09:37 +0000 (23:09 +0000)]
Make consIORef atomic.

14 years agoMake updates to external package state idempotent.
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).

14 years agoFix Trac #3423: missed instantiation for newtype-derived instances
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.

14 years agoPut "dl" back in rts/package.conf if HAVE_DL is defined
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

14 years agoLink CMM objects into dynamic libraries
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.

14 years ago-fPIC -fvia-C issues a warning and ignores -fvia-C
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.

14 years agoUse allocateLocal() rather than allocate() in the interpreter
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!

14 years agoAnother tiny tidy-up to RnPat
simonpj@microsoft.com [Fri, 21 Aug 2009 10:08:26 +0000 (10:08 +0000)]
Another tiny tidy-up to RnPat

14 years agoFix Trac #3437: strictness of specialised functions
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.

14 years agoWibbles to field-label puns
simonpj@microsoft.com [Fri, 21 Aug 2009 09:06:37 +0000 (09:06 +0000)]
Wibbles to field-label puns

14 years agoFix library installation; fixes #3374
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.

14 years agoEscape some $s in makefiles for consistency
Ian Lynagh [Thu, 20 Aug 2009 16:50:33 +0000 (16:50 +0000)]
Escape some $s in makefiles for consistency

14 years agoWibble to RnPat refactoring
simonpj@microsoft.com [Thu, 20 Aug 2009 16:15:20 +0000 (16:15 +0000)]
Wibble to RnPat refactoring

14 years agoRollback: use cas() to claim the closure in copyPart(), to match copy_tag()
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.

14 years agoRelax the assumption that all objects fit in a single block (#3424)
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.

14 years agoremove a bogus assertion
Simon Marlow [Thu, 20 Aug 2009 14:33:05 +0000 (14:33 +0000)]
remove a bogus assertion

14 years agoRestore the GHC version check
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.

14 years agofix the inplace runghc
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

14 years agoAdd a case for IND (and a comment). Fixes #3424, perhaps only partially.
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.

14 years agoImprovements to record puns, wildcards
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

14 years agoMake -dppr-debug print locations in HsSyn
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

14 years agoMake -dynamic a proper way, so we read the .dyn_hi files
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.

14 years agofix warning
Simon Marlow [Thu, 20 Aug 2009 11:05:32 +0000 (11:05 +0000)]
fix warning

14 years agogeneralise the type of "on"
Simon Marlow [Thu, 20 Aug 2009 09:45:16 +0000 (09:45 +0000)]
generalise the type of "on"

14 years agoneed to check $(HADDOCK_DOCS) around contents/index generation
Simon Marlow [Thu, 20 Aug 2009 09:22:20 +0000 (09:22 +0000)]
need to check $(HADDOCK_DOCS) around contents/index generation

14 years agoWAY_dyn_LIB_TARGET is not used anywhere; kill it
Simon Marlow [Wed, 19 Aug 2009 15:59:52 +0000 (15:59 +0000)]
WAY_dyn_LIB_TARGET is not used anywhere; kill it

14 years agoRolling back: Add a kludge to fix building shared libs
Simon Marlow [Wed, 19 Aug 2009 14:55:07 +0000 (14:55 +0000)]
Rolling back: Add a kludge to fix building shared libs

14 years agorename whitehole_spin to evac_collision, and update it properly
Simon Marlow [Wed, 19 Aug 2009 14:15:18 +0000 (14:15 +0000)]
rename whitehole_spin to evac_collision, and update it properly

14 years agouse cas() to claim the closure in copyPart(), to match copy_tag()
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.

14 years agoAlways yieldCapabilty() when a bound thread blocks
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

14 years agoFIX #2767 & original problem of #3208
Manuel M T Chakravarty [Thu, 20 Aug 2009 07:26:08 +0000 (07:26 +0000)]
FIX #2767 & original problem of #3208

14 years agoImprove the "Stack space overflow" error; fixes trac #3296
Ian Lynagh [Wed, 19 Aug 2009 20:21:12 +0000 (20:21 +0000)]
Improve the "Stack space overflow" error; fixes trac #3296

14 years agoDetect C finalizer callbacks in rts_lock() instead of schedule()
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)

14 years agoBump Happy requirement from 1.15 to 1.16
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.

14 years agoRestore the entry field in StgInfoTable when !defined(TABLES_NEXT_TO_CODE)
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.

14 years agoFix warnings
Ian Lynagh [Wed, 19 Aug 2009 12:54:40 +0000 (12:54 +0000)]
Fix warnings

14 years agoPut a newtype wrapper around ModuleEnv
Ian Lynagh [Tue, 18 Aug 2009 19:29:03 +0000 (19:29 +0000)]
Put a newtype wrapper around ModuleEnv

14 years agoMake the thr_dyn RTS ways optional on GhcUnregisterised
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

14 years agofix an include
Simon Marlow [Wed, 19 Aug 2009 09:52:37 +0000 (09:52 +0000)]
fix an include

14 years agoremove some redundant declarations
Simon Marlow [Wed, 19 Aug 2009 09:43:38 +0000 (09:43 +0000)]
remove some redundant declarations

14 years agoRemove the lock around NameCache for readBinIface.
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.

14 years agoFix #3429: a tricky race condition
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).

14 years agocomment fixes (install.mk.in, not dirs.mk.in)
Simon Marlow [Mon, 17 Aug 2009 09:47:24 +0000 (09:47 +0000)]
comment fixes (install.mk.in, not dirs.mk.in)

14 years agoFix configure summary: --enable-shared has gone
Simon Marlow [Mon, 17 Aug 2009 09:12:10 +0000 (09:12 +0000)]
Fix configure summary: --enable-shared has gone

14 years agocomment fix
Simon Marlow [Mon, 17 Aug 2009 09:11:05 +0000 (09:11 +0000)]
comment fix

14 years agoremove unused file
Simon Marlow [Thu, 6 Aug 2009 11:28:59 +0000 (11:28 +0000)]
remove unused file

14 years agoFix unregisterised build
Simon Marlow [Thu, 6 Aug 2009 09:54:17 +0000 (09:54 +0000)]
Fix unregisterised build

14 years agoFIX #3405
Manuel M T Chakravarty [Tue, 18 Aug 2009 12:14:25 +0000 (12:14 +0000)]
FIX #3405

14 years agoMake the dynamic linker thread-safe.
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.

14 years agoMake access to NameCache atomic. Sometimes needs a lock.
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).

14 years agoMake updates to the Finder caches atomic. Well, almost.
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.

14 years agoMake updates to the external package state atomic.
Thomas Schilling [Sun, 16 Aug 2009 23:13:16 +0000 (23:13 +0000)]
Make updates to the external package state atomic.

14 years agoMinor documentation fixes.
Thomas Schilling [Wed, 22 Jul 2009 23:13:42 +0000 (23:13 +0000)]
Minor documentation fixes.

14 years agobindist fix
Ian Lynagh [Sun, 16 Aug 2009 20:03:26 +0000 (20:03 +0000)]
bindist fix

14 years agoBuild fixes
Ian Lynagh [Sun, 16 Aug 2009 19:00:43 +0000 (19:00 +0000)]
Build fixes

14 years agoRemove the old platform code from the bindist configure.ac
Ian Lynagh [Fri, 14 Aug 2009 22:54:31 +0000 (22:54 +0000)]
Remove the old platform code from the bindist configure.ac

14 years agoMake our install variables etc compliant with GNU standards; fixes #1924
Ian Lynagh [Fri, 14 Aug 2009 22:45:49 +0000 (22:45 +0000)]
Make our install variables etc compliant with GNU standards; fixes #1924

14 years agoImprove fix to Trac #3007
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.

14 years agoOnly look up whether a module's SOURCE-imported if it's in the current package
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.

14 years agoFix Trac #3409: type synonyms that discard their arguments
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.

14 years agoAdd support for multi-line deprecated pragmas; trac #3303
Ian Lynagh [Wed, 12 Aug 2009 18:59:12 +0000 (18:59 +0000)]
Add support for multi-line deprecated pragmas; trac #3303