13 years agoImprove newtype deriving [Sun, 2 Apr 2006 21:59:11 +0000 (21:59 +0000)] 
Improve newtype deriving

Ross Paterson pointed out a useful generalisation of GHC's
newtype-deriving mechanism.  This implements it.  The idea
is to allow
newtype Wrap m a = Wrap (m a) deriving (Monad, Eq)
where the representation type doesn't start with a type

Actually GHC already *did* implement this, but the eta-ok
check in TcDeriv missed a case, so there was a lurking bug.

This patches fixes the documentation too.  drvrun019 tests.

13 years agoadd take to the list of functions deforestable
Simon Marlow [Tue, 11 Apr 2006 09:01:31 +0000 (09:01 +0000)] 
add take to the list of functions deforestable

13 years agoavoid versionitis in Numeric.showHex (should fix tcrun007)
Simon Marlow [Tue, 11 Apr 2006 08:50:09 +0000 (08:50 +0000)] 
avoid versionitis in Numeric.showHex (should fix tcrun007)

13 years agoadd a note about full-laziness
Simon Marlow [Mon, 10 Apr 2006 09:38:24 +0000 (09:38 +0000)] 
add a note about full-laziness

13 years agorobustify the test for the top of the tree a little
Simon Marlow [Mon, 10 Apr 2006 08:22:24 +0000 (08:22 +0000)] 
robustify the test for the top of the tree a little

13 years agoMake darcs-all work without a ghc toplevel directory
Josef Svenningsson [Fri, 7 Apr 2006 16:17:38 +0000 (16:17 +0000)] 
Make darcs-all work without a ghc toplevel directory

13 years agoFix typo in darcsall warning
Josef Svenningsson [Fri, 7 Apr 2006 16:13:35 +0000 (16:13 +0000)] 
Fix typo in darcsall warning

13 years agofix source dists
Simon Marlow [Fri, 7 Apr 2006 15:00:45 +0000 (15:00 +0000)] 
fix source dists

13 years agoadd a README for binary dists
Simon Marlow [Fri, 7 Apr 2006 14:38:32 +0000 (14:38 +0000)] 
add a README for binary dists

13 years agofix binary dists
Simon Marlow [Fri, 7 Apr 2006 14:38:22 +0000 (14:38 +0000)] 
fix binary dists

13 years agoremove the last bits of the ghc/ subdir
Simon Marlow [Fri, 7 Apr 2006 08:52:19 +0000 (08:52 +0000)] 
remove the last bits of the ghc/ subdir

13 years agoFix a bug related to threads blocked on blackholes 04_07_06 07_04_06
Simon Marlow [Fri, 7 Apr 2006 10:18:39 +0000 (10:18 +0000)] 
Fix a bug related to threads blocked on blackholes
We weren't making them live early enough, with the result that
finalizable objects referred to only by a thread blocked on a black
hole could be finalized too early (see conc057 test).

13 years agoReorganisation of the source tree
Simon Marlow [Fri, 7 Apr 2006 02:05:11 +0000 (02:05 +0000)] 
Reorganisation of the source tree
Most of the other users of the fptools build system have migrated to
Cabal, and with the move to darcs we can now flatten the source tree
without losing history, so here goes.

The main change is that the ghc/ subdir is gone, and most of what it
contained is now at the top level.  The build system now makes no
pretense at being multi-project, it is just the GHC build system.

No doubt this will break many things, and there will be a period of
instability while we fix the dependencies.  A straightforward build
should work, but I haven't yet fixed binary/source distributions.
Changes to the Building Guide will follow, too.

13 years agoremove empty dir
Simon Marlow [Sat, 21 Jan 2006 18:38:28 +0000 (18:38 +0000)] 
remove empty dir

13 years agorempve some unused files
Simon Marlow [Sat, 21 Jan 2006 18:37:51 +0000 (18:37 +0000)] 
rempve some unused files

13 years agoAdd stage2/ghci to ghc-api's import list.
Lemmih [Thu, 6 Apr 2006 20:27:34 +0000 (20:27 +0000)] 
Add stage2/ghci to ghc-api's import list.

13 years agoDon't build GHC with breakpoint support by default.
Lemmih [Thu, 6 Apr 2006 18:27:24 +0000 (18:27 +0000)] 
Don't build GHC with breakpoint support by default.

13 years agoGHC.Base.breakpoint isn't vaporware anymore.
Lemmih [Thu, 6 Apr 2006 17:57:53 +0000 (17:57 +0000)] 
GHC.Base.breakpoint isn't vaporware anymore.

-fignore-breakpoints can be used to ignore breakpoints.

13 years agoAdd SA_RESTART flag to the timer signal handler.
Simon Marlow [Thu, 6 Apr 2006 14:48:36 +0000 (14:48 +0000)] 
Add SA_RESTART flag to the timer signal handler.
This seems to be necessary to prevent readline being confused by our
SIGALRM handler.

13 years agoBetter messages from HscTypes.showModMsg.
Lemmih [Thu, 6 Apr 2006 11:22:20 +0000 (11:22 +0000)] 
Better messages from HscTypes.showModMsg.

13 years agoTurn the "too many hs_exit()s" fatal error into a warning
Simon Marlow [Wed, 5 Apr 2006 14:53:16 +0000 (14:53 +0000)] 
Turn the "too many hs_exit()s" fatal error into a warning

13 years agoadd freeStorage() prototype
Simon Marlow [Wed, 5 Apr 2006 14:51:26 +0000 (14:51 +0000)] 
add freeStorage() prototype

13 years agoadd support for x86_64; foreign import is now supported in GHCi on x86_64
Simon Marlow [Wed, 5 Apr 2006 13:33:44 +0000 (13:33 +0000)] 
add support for x86_64; foreign import is now supported in GHCi on x86_64

13 years agoCorrect spelling mistake: GhcState1HcOpts -> GhcStage1HcOpts
Duncan Coutts [Thu, 30 Mar 2006 21:23:21 +0000 (21:23 +0000)] 
Correct spelling mistake: GhcState1HcOpts -> GhcStage1HcOpts

13 years agooops, undo accidental patch
Simon Marlow [Thu, 30 Mar 2006 13:44:51 +0000 (13:44 +0000)] 
oops, undo accidental patch

13 years agofix profiling on Win32
Simon Marlow [Thu, 30 Mar 2006 13:41:58 +0000 (13:41 +0000)] 
fix profiling on Win32
The recent patch to free memory in hs_exit() on Win32 unfortunately broke
profiling, because it freed the memory slightly too early.

13 years agofix for GHC >= 6.5 again
Simon Marlow [Wed, 29 Mar 2006 12:02:39 +0000 (12:02 +0000)] 
fix for GHC >= 6.5 again

13 years agoin stage1, we should get isPrint and isUpper from Compat.Unicode, not Data.Char
Simon Marlow [Wed, 29 Mar 2006 11:59:13 +0000 (11:59 +0000)] 
in stage1, we should get isPrint and isUpper from Compat.Unicode, not Data.Char

13 years agoDarwin/x86: correct stack alignment in ByteCodeFFI [Wed, 29 Mar 2006 03:53:16 +0000 (03:53 +0000)] 
Darwin/x86: correct stack alignment in ByteCodeFFI

13 years agoDeal with non-executable memory on Darwin (only an issue on Darwin/x86 so far) [Thu, 23 Mar 2006 06:17:45 +0000 (06:17 +0000)] 
Deal with non-executable memory on Darwin (only an issue on Darwin/x86 so far)

13 years agoadd forkOnzh_fast symbol
Simon Marlow [Tue, 28 Mar 2006 09:39:23 +0000 (09:39 +0000)] 
add forkOnzh_fast symbol

13 years agoAdd a new primitive forkOn#, for forking a thread on a specific Capability
Simon Marlow [Mon, 27 Mar 2006 12:41:51 +0000 (12:41 +0000)] 
Add a new primitive forkOn#, for forking a thread on a specific Capability

This gives some control over affinity, while we figure out the best
way to automatically schedule threads to make best use of the
available parallelism.

In addition to the primitive, there is also:

  GHC.Conc.forkOnIO :: Int -> IO () -> IO ThreadId

where 'forkOnIO i m' creates a thread on Capability (i `rem` N), where
N is the number of available Capabilities set by +RTS -N.

Threads forked by forkOnIO do not automatically migrate when there are
free Capabilities, like normal threads do.  Still, if you're using
forkOnIO exclusively, it's a good idea to do +RTS -qm to disable work
pushing anyway (work pushing takes too much time when the run queues
are large, this is something we need to fix).

13 years agoeliminate a warning
Simon Marlow [Mon, 27 Mar 2006 12:23:23 +0000 (12:23 +0000)] 
eliminate a warning

13 years agoelimiante a couple of warnings
Simon Marlow [Mon, 27 Mar 2006 11:24:48 +0000 (11:24 +0000)] 
elimiante a couple of warnings

13 years agofix a warning
Simon Marlow [Fri, 24 Mar 2006 16:45:41 +0000 (16:45 +0000)] 
fix a warning

13 years agoAdd some more flexibility to the multiproc scheduler
Simon Marlow [Fri, 24 Mar 2006 16:45:32 +0000 (16:45 +0000)] 
Add some more flexibility to the multiproc scheduler

There are two new options in the -threaded RTS:

  -qm       Don't automatically migrate threads between CPUs
  -qw       Migrate a thread to the current CPU when it is woken up

previously both of these were effectively off, i.e. threads were
migrated between CPUs willy-milly, and threads were always migrated to
the current CPU when woken up.  This is the first step in tweaking the
scheduling for more effective work balancing, there will no doubt be
more to come.

13 years agomkDerivedConstants.c depends on ghcplatform.h
Duncan Coutts [Fri, 24 Mar 2006 13:26:13 +0000 (13:26 +0000)] 
mkDerivedConstants.c depends on ghcplatform.h
I think this missing dep is what broke my parallel build
I used make -j2 with ghc- and got:

==fptools== make boot -wr --jobserver-fds=3,11 -j;
in /var/tmp/portage/ghc-6.4.2_pre20060323/work/ghc-
Creating ghcplatform.h...
gcc -O -O2 -march=k8 -pipe -Wa,--noexecstack    -c mkDerivedConstants.c -o mkDerivedConstants.o
In file included from ghcconfig.h:5,
                 from Stg.h:42,
                 from Rts.h:19,
                 from mkDerivedConstants.c:20:
ghcplatform.h:1:1: unterminated #ifndef

With this patch applied I can no longer repoduce this build bug.
So I think this patch should be applied to the cvs ghc-6-4-branch too.

13 years agosmall updates
Simon Marlow [Mon, 27 Mar 2006 09:46:39 +0000 (09:46 +0000)] 
small updates

13 years agoAllow users of the GHC library to specify which packages have already been loaded.
Lemmih [Mon, 27 Mar 2006 03:09:50 +0000 (03:09 +0000)] 
Allow users of the GHC library to specify which packages have already been loaded.

This is pretty important when using the linker/bytecode-compiler from binaries
other than GHCi.

13 years agoFix Darwin/x86 stack alignment [Sat, 25 Mar 2006 22:21:00 +0000 (22:21 +0000)] 
Fix Darwin/x86 stack alignment
... again.
For now, I've added a TODO comment, but sooner or later this will have to
be made gcc-version-independent.

13 years agoRanlib is required on Darwin/x86, too [Wed, 8 Mar 2006 17:48:41 +0000 (17:48 +0000)] 
Ranlib is required on Darwin/x86, too

13 years agoDarwin Mangler: include alignment statements for symbol stubs [Fri, 24 Mar 2006 18:13:05 +0000 (18:13 +0000)] 
Darwin Mangler: include alignment statements for symbol stubs

13 years agomark recordMutableCap() with [R1] to avoid saving all regs across it
Simon Marlow [Fri, 24 Mar 2006 11:39:00 +0000 (11:39 +0000)] 
mark recordMutableCap() with [R1] to avoid saving all regs across it

13 years agoomit the __DISCARD__() call if unregisterised
Simon Marlow [Fri, 24 Mar 2006 09:34:43 +0000 (09:34 +0000)] 
omit the __DISCARD__() call if unregisterised

13 years agoAccept amd64-*-freebsd architecture
Volker Stolz [Thu, 23 Mar 2006 13:45:59 +0000 (13:45 +0000)] 
Accept amd64-*-freebsd architecture

13 years agogcc is getting smarter, so we need to hit it with a bigger stick
Simon Marlow [Thu, 23 Mar 2006 13:36:39 +0000 (13:36 +0000)] 
gcc is getting smarter, so we need to hit it with a bigger stick
On x86_64 we are using C argument registers for global registers in
the STG machine.  This is always going to be problematic when it comes
to making C calls from STG and compiling via C.  Prior to GCC 4.1.0
(approx) it was possible to just assign the argument expressions to
temporaries to avoid a clash.  Now, we need to add an extra dummy
function call as a barrier between the temporary assignments and the
actual call.  The dummy call is removed by the mangler.

13 years ago-fno-code shouldn't be a mode.
Lemmih [Sat, 18 Mar 2006 17:17:28 +0000 (17:17 +0000)] 
-fno-code shouldn't be a mode.

I've removed -fno-code from Main to make it work
equally well with --make and -c.
I've also allowed it not to write hi files unless
-fwrite-iface is given.

13 years agoDon't generate stub files when -fno-code is given.
Lemmih [Sat, 18 Mar 2006 17:18:48 +0000 (17:18 +0000)] 
Don't generate stub files when -fno-code is given.

13 years agoDocumentation for -fno-code and -fwrite-iface.
Lemmih [Sat, 18 Mar 2006 17:30:34 +0000 (17:30 +0000)] 
Documentation for -fno-code and -fwrite-iface.

13 years agoon second thoughts, revert the ppc/darwin part of the previous patch
Simon Marlow [Wed, 22 Mar 2006 10:27:11 +0000 (10:27 +0000)] 
on second thoughts, revert the ppc/darwin part of the previous patch

13 years agofix for gcc 4.1.x
Simon Marlow [Wed, 22 Mar 2006 10:17:46 +0000 (10:17 +0000)] 
fix for gcc 4.1.x
We need to use GNUC3_ATTRIBUTE(used) to force gcc to keep the
definition of StgRunIsImplementedInAssembler() around.  In some cases
we had already made this function external rather than static to get
around the problem, but GNUC3_ATTRIBUTE(used) is a better fix.

13 years agosupport for STM objects in the retainer profiler
Simon Marlow [Tue, 21 Mar 2006 11:28:20 +0000 (11:28 +0000)] 
support for STM objects in the retainer profiler
addresses #492

13 years agosmall changes to fix retainer profiling on HEAD
Simon Marlow [Tue, 21 Mar 2006 11:27:33 +0000 (11:27 +0000)] 
small changes to fix retainer profiling on HEAD

13 years agotiny cleanup
Simon Marlow [Tue, 21 Mar 2006 11:27:02 +0000 (11:27 +0000)] 
tiny cleanup

13 years agopowerpc64 does not support GHCi right now
Simon Marlow [Tue, 21 Mar 2006 10:17:50 +0000 (10:17 +0000)] 
powerpc64 does not support GHCi right now

13 years agooops, remove temporary testing code
Simon Marlow [Tue, 21 Mar 2006 08:41:03 +0000 (08:41 +0000)] 
oops, remove temporary testing code

13 years agostopTicker(): wait for the timer thread to exit
Simon Marlow [Mon, 20 Mar 2006 16:34:39 +0000 (16:34 +0000)] 
stopTicker(): wait for the timer thread to exit

13 years agofix Win32 build
Simon Marlow [Mon, 20 Mar 2006 09:11:23 +0000 (09:11 +0000)] 
fix Win32 build

13 years agoDocumentation for -fno-code and -fwrite-iface.
Lemmih [Sat, 18 Mar 2006 17:30:34 +0000 (17:30 +0000)] 
Documentation for -fno-code and -fwrite-iface.

13 years agoDon't generate stub files when -fno-code is given.
Lemmih [Sat, 18 Mar 2006 17:18:48 +0000 (17:18 +0000)] 
Don't generate stub files when -fno-code is given.

13 years ago-fno-code shouldn't be a mode.
Lemmih [Sat, 18 Mar 2006 17:17:28 +0000 (17:17 +0000)] 
-fno-code shouldn't be a mode.

I've removed -fno-code from Main to make it work
equally well with --make and -c.
I've also allowed it not to write hi files unless
-fwrite-iface is given.

13 years agoCleanup after the OPTIONS parsing was moved.
Lemmih [Sun, 12 Mar 2006 13:23:28 +0000 (13:23 +0000)] 
Cleanup after the OPTIONS parsing was moved.

13 years agofix build for certain picky versions of gcc
Simon Marlow [Fri, 17 Mar 2006 15:47:34 +0000 (15:47 +0000)] 
fix build for certain picky versions of gcc

13 years agoforkProcess(): watch out for ThreadRelocated
Simon Marlow [Fri, 17 Mar 2006 15:07:52 +0000 (15:07 +0000)] 
forkProcess(): watch out for ThreadRelocated

13 years agoMake -fliberate-case work for GADTs [Fri, 17 Mar 2006 12:52:41 +0000 (12:52 +0000)] 
Make -fliberate-case work for GADTs

13 years agoturn on unregisterised by default for alpha, hppa
Simon Marlow [Thu, 16 Mar 2006 16:59:09 +0000 (16:59 +0000)] 
turn on unregisterised by default for alpha, hppa

13 years agoremove accidental extra in previous patch
Simon Marlow [Thu, 16 Mar 2006 16:03:22 +0000 (16:03 +0000)] 
remove accidental extra in previous patch

13 years agofix a warning
Simon Marlow [Thu, 16 Mar 2006 14:49:14 +0000 (14:49 +0000)] 
fix a warning

13 years agofix up Win32 build
Simon Marlow [Thu, 16 Mar 2006 14:48:56 +0000 (14:48 +0000)] 
fix up Win32 build

13 years agosanity checking: make sure we don't mix registerised and unreg'd code
Simon Marlow [Thu, 16 Mar 2006 14:27:27 +0000 (14:27 +0000)] 
sanity checking: make sure we don't mix registerised and unreg'd code

13 years agofix non-threaded way
Simon Marlow [Thu, 16 Mar 2006 13:58:09 +0000 (13:58 +0000)] 
fix non-threaded way

13 years agoFree all memory when shutting down. XXX not implemented for Posix. [Thu, 2 Mar 2006 21:07:24 +0000 (21:07 +0000)] 
Free all memory when shutting down.  XXX not implemented for Posix.

13 years agoImprovements to forkProcess()
Simon Marlow [Thu, 16 Mar 2006 12:55:38 +0000 (12:55 +0000)] 
Improvements to forkProcess()
fixes failures in yesterday's testsuite run

13 years agodiscardTask(): reset task->tso to avoid confusion later
Simon Marlow [Thu, 16 Mar 2006 12:52:56 +0000 (12:52 +0000)] 
discardTask(): reset task->tso to avoid confusion later

13 years agoImprovements to shutting down of the runtime
Simon Marlow [Wed, 15 Mar 2006 14:50:41 +0000 (14:50 +0000)] 
Improvements to shutting down of the runtime
Yet another attempt at shutdown & interruption.  This one appears to
work better; ^C is more responsive in multi threaded / SMP, and I
fixed one case where the runtime wasn't responding to ^C at all.

13 years agoimprove panic messages a bit, with the GHC version and platform
Simon Marlow [Tue, 14 Mar 2006 17:08:13 +0000 (17:08 +0000)] 
improve panic messages a bit, with the GHC version and platform

13 years agoBug fixes in my refactored RnNames code.
Lemmih [Tue, 14 Mar 2006 16:00:26 +0000 (16:00 +0000)] 
Bug fixes in my refactored RnNames code.

13 years agoENTER(): avoid re-reading the info pointer of the closure when entering it
Simon Marlow [Tue, 14 Mar 2006 11:41:53 +0000 (11:41 +0000)] 
ENTER(): avoid re-reading the info pointer of the closure when entering it
This fixes another instance of a subtle SMP bug (see patch "really
nasty bug in SMP").

13 years agosmall improvements to the debug printer
Simon Marlow [Tue, 14 Mar 2006 11:26:04 +0000 (11:26 +0000)] 
small improvements to the debug printer

13 years agoMake it a fatal error to try to enter a PAP
Simon Marlow [Tue, 14 Mar 2006 11:25:50 +0000 (11:25 +0000)] 
Make it a fatal error to try to enter a PAP
This is just an assertion, in effect: we should never enter a PAP, but
for convenience we previously attached the PAP apply code to the PAP
info table.  The problem with this was that it makes it harder to track
down bugs that result in entering a PAP...

13 years agoFix a really nasty bug in SMP
Simon Marlow [Tue, 14 Mar 2006 11:21:19 +0000 (11:21 +0000)] 
Fix a really nasty bug in SMP
In SMP mode a THUNK can change to an IND at any time.  The generic
apply code (stg_ap_p etc.) examines a closure to determine how to
apply it to its arguments, if it is a THUNK it must enter it first in
order to evaluate it.  The problem was that in order to enter the
THUNK, we were re-reading the info pointer, and possibly ending up
with an IND instead of the original THUNK.  It isn't safe to enter the
IND, because it points to a function (functions are never "entered",
only applied).  Solution: we must not re-read the info pointer.

13 years agofix bug in previous patch to this file
Simon Marlow [Mon, 13 Mar 2006 15:53:47 +0000 (15:53 +0000)] 
fix bug in previous patch to this file

13 years agoadd another SMP assertion
Simon Marlow [Mon, 13 Mar 2006 15:41:02 +0000 (15:41 +0000)] 
add another SMP assertion

13 years agofix a rather subtle SMP bug in anyWorkForMe()
Simon Marlow [Mon, 13 Mar 2006 15:40:44 +0000 (15:40 +0000)] 
fix a rather subtle SMP bug in anyWorkForMe()

13 years agoEnable shortcutting of stack squeezing
Simon Marlow [Fri, 10 Mar 2006 20:44:49 +0000 (20:44 +0000)] 
Enable shortcutting of stack squeezing
Not sure why it was disabled, probably by accident.

13 years agoextra sanity checking: call checkTSO() in resumeThread()
Simon Marlow [Fri, 10 Mar 2006 20:43:43 +0000 (20:43 +0000)] 
extra sanity checking: call checkTSO() in resumeThread()

13 years agoGive WHITEHOLE the BLACKHOLE closure type, instead of INVALID_OBJECT
Simon Marlow [Fri, 10 Mar 2006 20:42:56 +0000 (20:42 +0000)] 
Give WHITEHOLE the BLACKHOLE closure type, instead of INVALID_OBJECT
Just to keep sanity checking happy, and so we don't need a completely
new closure type.

13 years agoLook for a package.conf.d directory containing per-package .conf files
Simon Marlow [Mon, 13 Mar 2006 13:32:11 +0000 (13:32 +0000)] 
Look for a package.conf.d directory containing per-package .conf files
Contributed by Duncan Coutts, with changes to merge into the HEAD.
This isn't the full deal, ghc-pkg still modifies files only, but it's
enough to help the Gentoo folk along.

13 years agoMove the very broad "i[[3456]]86-*-gnu*" HostPlatform pattern to the end.
Ian Lynagh [Tue, 7 Mar 2006 16:11:40 +0000 (16:11 +0000)] 
Move the very broad "i[[3456]]86-*-gnu*" HostPlatform pattern to the end.

13 years agofix the build with GHC 6.4 (not 6.4.1)
Simon Marlow [Fri, 10 Mar 2006 11:04:09 +0000 (11:04 +0000)] 
fix the build with GHC 6.4 (not 6.4.1)

13 years agoWibble in HscMain.
Lemmih [Fri, 10 Mar 2006 02:14:42 +0000 (02:14 +0000)] 
Wibble in HscMain.

13 years agoInitial foundation for quickcheck tests.
Lemmih [Fri, 10 Mar 2006 02:05:14 +0000 (02:05 +0000)] 
Initial foundation for quickcheck tests.

I have no idea how to use the testsuite so I'll start
making QuickCheck tests instead.
I've included tests for 'HeaderInfo.getOptions'.

13 years agoParse OPTIONS properly and cache the result.
Lemmih [Fri, 10 Mar 2006 01:10:35 +0000 (01:10 +0000)] 
Parse OPTIONS properly and cache the result.

Use the lexer to parse OPTIONS, LANGUAGE and INCLUDE pragmas.
This gives us greater flexibility and far better error
messages. However, I had to make a few quirks:
  * The token parser is written manually since Happy doesn't
    like lexer errors (we need to extract options before the
    buffer is passed through 'cpp'). Still better than
    manually parsing a String, though.
  * The StringBuffer API has been extended so files can be
    read in blocks.
I also made a new field in ModSummary called ms_hspp_opts
which stores the updated DynFlags. Oh, and I took the liberty
of moving 'getImports' into HeaderInfo together with

13 years agoFix -ddump-if-trace
Lemmih [Wed, 8 Mar 2006 17:52:10 +0000 (17:52 +0000)] 
Fix -ddump-if-trace

13 years agoBug fix in the new HscMain code.
Lemmih [Wed, 8 Mar 2006 17:50:36 +0000 (17:50 +0000)] 
Bug fix in the new HscMain code.

I'm not sure what really happens here but this is how it's
done in the old HscMain code and it appears to work.

13 years agofix one #ifdef SMP that didn't get turned into #ifdef THREADED_RTS
Simon Marlow [Tue, 7 Mar 2006 09:59:49 +0000 (09:59 +0000)] 
fix one #ifdef SMP that didn't get turned into #ifdef THREADED_RTS

13 years agox86_64: add -fno-builtin to gcc command line for .hc files.
Simon Marlow [Tue, 7 Mar 2006 09:38:00 +0000 (09:38 +0000)] 
x86_64: add -fno-builtin to gcc command line for .hc files.
This seems to be required now that we're stealing more registers.

13 years agoMore work thrown at HscMain.
Lemmih [Tue, 7 Mar 2006 07:37:36 +0000 (07:37 +0000)] 
More work thrown at HscMain.

MkIface.writeIfaceFile doesn't check GhcMode anymore. All it does
is what the name say: write an interface to disk.
I've refactored HscMain so the logic is easier to manage. That means
we can avoid running the simplifier when typechecking (: And best of
all, HscMain doesn't use GhcMode at all, anymore!

The new HscMain intro looks like this:

It's the task of the compilation proper to compile Haskell, hs-boot and
core files to either byte-code, hard-code (C, asm, Java, ect) or to
nothing at all (the module is still parsed and type-checked. This
feature is mostly used by IDE's and the likes).
Compilation can happen in either 'one-shot', 'batch', 'nothing',
or 'interactive' mode. 'One-shot' mode targets hard-code, 'batch' mode
targets hard-code, 'nothing' mode targets nothing and 'interactive' mode
targets byte-code.
The modes are kept separate because of their different types and meanings.
In 'one-shot' mode, we're only compiling a single file and can therefore
discard the new ModIface and ModDetails. This is also the reason it only
targets hard-code; compiling to byte-code or nothing doesn't make sense
when we discard the result.
'Batch' mode is like 'one-shot' except that we keep the resulting ModIface
and ModDetails. 'Batch' mode doesn't target byte-code since that require
us to return the newly compiled byte-code.
'Nothing' mode has exactly the same type as 'batch' mode but they're still
kept separate. This is because compiling to nothing is fairly special: We
don't output any interface files, we don't run the simplifier and we don't
generate any code.
'Interactive' mode is similar to 'batch' mode except that we return the
compiled byte-code together with the ModIface and ModDetails.

13 years agoMake it clear when the symbols are using by the interpreter.
Lemmih [Mon, 6 Mar 2006 03:34:26 +0000 (03:34 +0000)] 
Make it clear when the symbols are using by the interpreter.

13 years agoUse Darwin-compatible x86 assembly syntax in SMP.h (lock/cmpxchg with a slash) [Mon, 6 Mar 2006 03:48:20 +0000 (03:48 +0000)] 
Use Darwin-compatible x86 assembly syntax in SMP.h (lock/cmpxchg with a slash)