panne [Sat, 16 Apr 2005 19:39:25 +0000 (19:39 +0000)]
[project @ 2005-04-16 19:39:25 by panne]
And yesterday's "I messed up DocBook XML, too!" award goes to...
*drum roll*
... Simon Peyton-Jones!
Congratulations! :-)
ross [Sat, 16 Apr 2005 16:05:53 +0000 (16:05 +0000)]
[project @ 2005-04-16 16:05:52 by ross]
Rejig handling of environments in arrow notation: instead of the
proc_level stuff, we just record the environment of the proc, and
use that on the left side of -< and the head of (|...|).
This also makes the arrow1 test yield a compile error, as it should,
but the error message is uninformative.
sof [Fri, 15 Apr 2005 21:51:28 +0000 (21:51 +0000)]
[project @ 2005-04-15 21:51:28 by sof]
back out Directory.hs:1.14 and directory.c:1.7; neither meant for HEAD
sof [Fri, 15 Apr 2005 18:13:34 +0000 (18:13 +0000)]
[project @ 2005-04-15 18:13:34 by sof]
LIBRARY, GHCI_LIBRARY: permit settings of these to be overridden in Makefiles; Merge to STABLE
simonpj [Fri, 15 Apr 2005 14:33:49 +0000 (14:33 +0000)]
[project @ 2005-04-15 14:33:49 by simonpj]
Update the CgCmmBranch (ghc directory) up to the HEAD ghc-6-4-branch-point
simonpj [Fri, 15 Apr 2005 14:26:39 +0000 (14:26 +0000)]
[project @ 2005-04-15 14:26:39 by simonpj]
Be consistent about quotes in error messages; MERGE TO STABLE
simonpj [Fri, 15 Apr 2005 07:13:08 +0000 (07:13 +0000)]
[project @ 2005-04-15 07:13:08 by simonpj]
Update comments on hslibs to make it clear that that they are (a) deprecated,
and (b) not required for building GHC.
Merge to STABLE
wolfgang [Fri, 15 Apr 2005 05:29:49 +0000 (05:29 +0000)]
[project @ 2005-04-15 05:29:48 by wolfgang]
Initialise foreign exports from GNU C __attribute__((constructor)) functions
in the stub C file, rather than from __stginit_ functions.
For non-profiling ways, leave out __stginit_ alltogether.
sof [Thu, 14 Apr 2005 23:41:25 +0000 (23:41 +0000)]
[project @ 2005-04-14 23:41:25 by sof]
Better reporting of WAIT_FAILEDs from WaitFor*Object() calls.
Merge to STABLE.
ross [Thu, 14 Apr 2005 18:07:05 +0000 (18:07 +0000)]
[project @ 2005-04-14 18:07:05 by ross]
fix typo (Sourceforge bug #1183229)
(for STABLE)
simonpj [Thu, 14 Apr 2005 15:19:29 +0000 (15:19 +0000)]
[project @ 2005-04-14 15:19:29 by simonpj]
Fix TH handling of guards
wolfgang [Thu, 14 Apr 2005 14:06:25 +0000 (14:06 +0000)]
[project @ 2005-04-14 14:06:25 by wolfgang]
Fix previous commit
dons [Thu, 14 Apr 2005 04:32:29 +0000 (04:32 +0000)]
[project @ 2005-04-14 04:32:29 by dons]
Typo in comment only.
wolfgang [Wed, 13 Apr 2005 21:42:17 +0000 (21:42 +0000)]
[project @ 2005-04-13 21:42:17 by wolfgang]
Make the status messages from ghc --make display the number of modules
to be compiled, as in:
[3 of 9] Compiling Foo.hs ( Foo.hs, Foo.o )
simonmar [Wed, 13 Apr 2005 15:07:20 +0000 (15:07 +0000)]
[project @ 2005-04-13 15:07:20 by simonmar]
Fix breakage in i386 floating-pt comparisons
simonmar [Wed, 13 Apr 2005 14:44:51 +0000 (14:44 +0000)]
[project @ 2005-04-13 14:44:51 by simonmar]
preprocessFile: return the source filename rather than "<buffer>"
simonmar [Wed, 13 Apr 2005 14:02:17 +0000 (14:02 +0000)]
[project @ 2005-04-13 14:02:17 by simonmar]
stopTaskManager: don't complain too loudly if we can't stop all the
tasks. The IO manager thread turns out to be an offender here;
perhaps we should start sending signals to threads if they don't stop
when they're told to.
simonmar [Wed, 13 Apr 2005 13:30:42 +0000 (13:30 +0000)]
[project @ 2005-04-13 13:30:42 by simonmar]
Add :
loadMsg :: Session -> LoadHowMuch
-> (Messages-> IO ()) -> IO SuccessFlag
ie. just like load, except it takes a message callback and plumbs it
down to hscMain. checkModule now uses loadMsgs. Better name
suggestions welcome.
simonmar [Wed, 13 Apr 2005 13:17:35 +0000 (13:17 +0000)]
[project @ 2005-04-13 13:17:35 by simonmar]
- checkModule is back, and now returns a ModuleInfo
- added:
modInfoTopLevelScope :: [Name]
modInfoExports :: [Name]
- in order to implement modInfoExports, ModDetails now contains
md_exports::NameSet.
simonmar [Wed, 13 Apr 2005 11:11:31 +0000 (11:11 +0000)]
[project @ 2005-04-13 11:11:31 by simonmar]
Fix assertion
sof [Tue, 12 Apr 2005 23:14:32 +0000 (23:14 +0000)]
[project @ 2005-04-12 23:14:32 by sof]
tidy up prev commit; mingw doesn't support these two symbols
wolfgang [Tue, 12 Apr 2005 19:58:57 +0000 (19:58 +0000)]
[project @ 2005-04-12 19:58:56 by wolfgang]
Dynamic Linking:
On non-Win32, we can store cross-dylib pointers in static data, so disable
a Win32-specific hack on the other platforms, to prevent code bloat.
krasimir [Tue, 12 Apr 2005 16:49:31 +0000 (16:49 +0000)]
[project @ 2005-04-12 16:49:31 by krasimir]
Few changes to GHC API:
* The Instance type is removed. Each instance is represented as dictonary Id.
Now there is:
isDictonaryId :: Id -> Bool
predicate which allows to distinguish them.
* The full list of all available predicates of type (Id -> Bool) is exported
* Few predicates for TyCon are exported
* checkModule is removed. It isn't used anymore. Instead the full load is made.
The hook API will be required at some time in order to make available the
parsed/typechecked source.
sof [Tue, 12 Apr 2005 16:46:41 +0000 (16:46 +0000)]
[project @ 2005-04-12 16:46:41 by sof]
make 'mkdependC' happy
krasimir [Tue, 12 Apr 2005 16:40:16 +0000 (16:40 +0000)]
[project @ 2005-04-12 16:40:16 by krasimir]
initDynLinker is invoked from unload now. This makes safe to call it even when
then linker is still not initialized.
simonmar [Tue, 12 Apr 2005 12:24:44 +0000 (12:24 +0000)]
[project @ 2005-04-12 12:24:44 by simonmar]
cleanup
simonmar [Tue, 12 Apr 2005 12:24:27 +0000 (12:24 +0000)]
[project @ 2005-04-12 12:24:27 by simonmar]
- emit a debug message when we're yielding at shut down time
simonmar [Tue, 12 Apr 2005 12:21:22 +0000 (12:21 +0000)]
[project @ 2005-04-12 12:21:22 by simonmar]
thread friendliness: remove some global variables
simonmar [Tue, 12 Apr 2005 10:07:56 +0000 (10:07 +0000)]
[project @ 2005-04-12 10:07:56 by simonmar]
- prevent multiple threads from trying to do GC (deadlocks)
- change the startWorkerThread flag to an integer, prevents
spurious extra tasks from being started at startup time
simonmar [Tue, 12 Apr 2005 09:17:48 +0000 (09:17 +0000)]
[project @ 2005-04-12 09:17:47 by simonmar]
The in_haskell sanity check should be per-Capability rather than global.
I just ran a Haskell program in 8 pthreads simultaneously :-)
simonmar [Tue, 12 Apr 2005 09:04:24 +0000 (09:04 +0000)]
[project @ 2005-04-12 09:04:23 by simonmar]
Per-task nurseries for SMP. This was kind-of implemented before, but
it's much cleaner now. There is now one *step* per capability, so we
have somewhere to hang the block count. So for SMP, there are simply
multiple instances of generation 0 step 0. The rNursery entry in the
register table now points to the step rather than the head block of
the nurersy.
simonmar [Tue, 12 Apr 2005 08:25:25 +0000 (08:25 +0000)]
[project @ 2005-04-12 08:25:25 by simonmar]
Remove -fasm from porting instructions
simonmar [Tue, 12 Apr 2005 07:46:08 +0000 (07:46 +0000)]
[project @ 2005-04-12 07:46:08 by simonmar]
Add missing symbols
simonmar [Mon, 11 Apr 2005 14:43:06 +0000 (14:43 +0000)]
[project @ 2005-04-11 14:43:06 by simonmar]
Set the default minAllocAreaSize to 512k. Caches are bigger these
days.
simonmar [Mon, 11 Apr 2005 13:51:45 +0000 (13:51 +0000)]
[project @ 2005-04-11 13:51:45 by simonmar]
Fix register allocation bug: at a branch destination we weren't
setting the free register set correctly. This may have resulted in
poor code in some cases; worst case it causes a Prelude.head: empty list.
simonmar [Mon, 11 Apr 2005 09:50:18 +0000 (09:50 +0000)]
[project @ 2005-04-11 09:50:18 by simonmar]
Fix i386 breakage
simonmar [Mon, 11 Apr 2005 08:53:39 +0000 (08:53 +0000)]
[project @ 2005-04-11 08:53:39 by simonmar]
A couple of optimisations to float code
simonmar [Mon, 11 Apr 2005 08:52:47 +0000 (08:52 +0000)]
[project @ 2005-04-11 08:52:47 by simonmar]
Add a Todo
simonmar [Mon, 11 Apr 2005 08:52:29 +0000 (08:52 +0000)]
[project @ 2005-04-11 08:52:29 by simonmar]
When generating a switch for:
case e of
0 -> A
1 -> B
instead of generating
if (e < 1) then goto A
B
generate
if (e >= 1) then goto B
A
because this helps the NCG to generate better code. In particular, if
e is a comparison, then we don't need to reverse the sense of the
comparison to eliminate the comparse against 1 (the NCG does try to
reverse the comparison, but floating-point comparisons can't be
reversed).
simonmar [Sun, 10 Apr 2005 21:44:10 +0000 (21:44 +0000)]
[project @ 2005-04-10 21:44:10 by simonmar]
Fix for Storage.c assertion failure
simonpj [Fri, 8 Apr 2005 16:48:49 +0000 (16:48 +0000)]
[project @ 2005-04-08 16:48:49 by simonpj]
Wibble to ghci
simonmar [Fri, 8 Apr 2005 14:51:48 +0000 (14:51 +0000)]
[project @ 2005-04-08 14:51:48 by simonmar]
GHC API work:
- add parseName :: Session -> String -> IO [Name]
- make lookupName look up in the global type environment
- add data ModuleInfo
- add a few ModuleInfo-related functions
- add getModuleInfo :: Session -> Module -> IO ModuleInfo
simonmar [Fri, 8 Apr 2005 13:40:55 +0000 (13:40 +0000)]
[project @ 2005-04-08 13:40:55 by simonmar]
Refine the imports a bit
simonmar [Fri, 8 Apr 2005 13:39:11 +0000 (13:39 +0000)]
[project @ 2005-04-08 13:39:11 by simonmar]
- add initPackages
- add showGhcException
- tidy up the export list a bit
simonmar [Fri, 8 Apr 2005 13:33:24 +0000 (13:33 +0000)]
[project @ 2005-04-08 13:33:24 by simonmar]
Haddock comment on initPackages
krasimir [Fri, 8 Apr 2005 10:51:37 +0000 (10:51 +0000)]
[project @ 2005-04-08 10:51:37 by krasimir]
Replace hPutStrLn stderr with debugTraceMsg
simonmar [Fri, 8 Apr 2005 10:15:38 +0000 (10:15 +0000)]
[project @ 2005-04-08 10:15:38 by simonmar]
Tell the C backend that BaseReg has a "strange type" (this forces it
to cast it to StgWord before doing arithmetic)
simonmar [Fri, 8 Apr 2005 10:07:00 +0000 (10:07 +0000)]
[project @ 2005-04-08 10:07:00 by simonmar]
Fix i386 breakage
simonmar [Fri, 8 Apr 2005 10:04:26 +0000 (10:04 +0000)]
[project @ 2005-04-08 10:04:26 by simonmar]
fix breakage in i386 native codegen
simonmar [Fri, 8 Apr 2005 09:54:54 +0000 (09:54 +0000)]
[project @ 2005-04-08 09:54:54 by simonmar]
x86_64 hacking:
- use %rip-relative addressing in a couple of places
- floating-point comparisons handle NaN properly
I believe the x86_64 NCG is now ready for prime time. It is
successfully bootstrapping the compiler, and I think this fixes the
last of the test failures.
simonmar [Thu, 7 Apr 2005 21:27:10 +0000 (21:27 +0000)]
[project @ 2005-04-07 21:27:10 by simonmar]
Fix compiling for way p
simonmar [Thu, 7 Apr 2005 15:56:34 +0000 (15:56 +0000)]
[project @ 2005-04-07 15:56:34 by simonmar]
A much simpler way of stopping all the other threads to do a GC in SMP
mode: the thread that wants to do GC just acquires all the
capabilities, and releases them after doing the GC.
simonmar [Thu, 7 Apr 2005 15:53:01 +0000 (15:53 +0000)]
[project @ 2005-04-07 15:53:01 by simonmar]
resetNurseries: tidy up
simonmar [Thu, 7 Apr 2005 14:33:32 +0000 (14:33 +0000)]
[project @ 2005-04-07 14:33:30 by simonmar]
Support handling signals in the threaded RTS by passing the signal
number down the pipe to the IO manager. This avoids needing
synchronisation in the signal handler.
Signals should now work with -threaded. Since this is a bugfix, I'll
merge the changes into the 6.4 branch.
simonmar [Thu, 7 Apr 2005 12:40:33 +0000 (12:40 +0000)]
[project @ 2005-04-07 12:40:33 by simonmar]
Allow use of BaseReg
simonmar [Thu, 7 Apr 2005 12:39:56 +0000 (12:39 +0000)]
[project @ 2005-04-07 12:39:56 by simonmar]
The arg to suspendThread should have a "ptr" hint
simonmar [Thu, 7 Apr 2005 11:35:48 +0000 (11:35 +0000)]
[project @ 2005-04-07 11:35:48 by simonmar]
Add the -hide-all-packages flag.
wolfgang [Thu, 7 Apr 2005 06:25:54 +0000 (06:25 +0000)]
[project @ 2005-04-07 06:25:54 by wolfgang]
Mac OS X: Work around a subtle bug/strangeness/"feature" in Apple's toolchain
that affects machoInitSymbolsWithoutUnderscore().
(The symbolsWithoutUnderscore symbol must be .globl, otherwise incorrect code
will be generated to refer to it)
This has already been MERGED TO STABLE as part of the previous commit.
wolfgang [Thu, 7 Apr 2005 05:27:17 +0000 (05:27 +0000)]
[project @ 2005-04-07 05:27:16 by wolfgang]
Set the keepCAFs flag (required for GHCi with dynamic libraries) from an
__attribute__((constructor)) function linked to stage 2 ghc if GhcBuildDylibs
is set in mk/build.mk.
The previous hack (setting it from addDLL) didn't work, because a few CAFs
from libHSbase_dyn were evaluated before the Linker was first invoked by
GHCi.
MERGE TO STABLE
simonmar [Wed, 6 Apr 2005 21:51:17 +0000 (21:51 +0000)]
[project @ 2005-04-06 21:51:17 by simonmar]
way fix
simonmar [Wed, 6 Apr 2005 15:27:06 +0000 (15:27 +0000)]
[project @ 2005-04-06 15:27:06 by simonmar]
Revamp the Task API: now we use the same implementation for threaded
and SMP. We also keep per-task timing stats in the threaded RTS now,
which makes the output of +RTS -sstderr more useful.
simonmar [Wed, 6 Apr 2005 15:24:28 +0000 (15:24 +0000)]
[project @ 2005-04-06 15:24:28 by simonmar]
complain if $(way) is not a member of $(WAYS). This will help stop me
shooting myself in the foot by building things for nonexistent ways.
simonmar [Wed, 6 Apr 2005 10:13:35 +0000 (10:13 +0000)]
[project @ 2005-04-06 10:13:35 by simonmar]
fix build on non-x86_64
simonmar [Wed, 6 Apr 2005 10:04:43 +0000 (10:04 +0000)]
[project @ 2005-04-06 10:04:43 by simonmar]
x86_64: support for the basic relocation records. Unfortunately this
isn't enough, we need to create a PLT for far jumps too.
simonmar [Wed, 6 Apr 2005 09:42:45 +0000 (09:42 +0000)]
[project @ 2005-04-06 09:42:45 by simonmar]
Update building-guide link
sof [Wed, 6 Apr 2005 00:59:11 +0000 (00:59 +0000)]
[project @ 2005-04-06 00:59:11 by sof]
RTS_MINGW_ONLY_SYMBOLS: added _imp___osver global (needed by HsBase.h:__hscore_get_osver())
simonmar [Tue, 5 Apr 2005 21:27:54 +0000 (21:27 +0000)]
[project @ 2005-04-05 21:27:54 by simonmar]
wibble
simonmar [Tue, 5 Apr 2005 21:26:11 +0000 (21:26 +0000)]
[project @ 2005-04-05 21:26:11 by simonmar]
unreg wibble
simonmar [Tue, 5 Apr 2005 21:24:53 +0000 (21:24 +0000)]
[project @ 2005-04-05 21:24:53 by simonmar]
wibble to fix the unreg way
simonmar [Tue, 5 Apr 2005 15:51:26 +0000 (15:51 +0000)]
[project @ 2005-04-05 15:51:26 by simonmar]
x86_64: fix brainos in implementation of fl. pt. negation
simonmar [Tue, 5 Apr 2005 15:38:01 +0000 (15:38 +0000)]
[project @ 2005-04-05 15:38:01 by simonmar]
Instead of gathering a set of 'candidates' in the occurrence
analyser, use the isLocalId predicate to identify things
for which occurrence information is required. By defn
isLocalId is true of Ids (whether top level or not) defined
in this module, and that is exactly what we want.
The 'candidates set' predated the LocalId invariant, I think.
simonmar [Tue, 5 Apr 2005 14:41:37 +0000 (14:41 +0000)]
[project @ 2005-04-05 14:41:37 by simonmar]
Implement the out-of-line floating-point MachOps
simonmar [Tue, 5 Apr 2005 14:39:13 +0000 (14:39 +0000)]
[project @ 2005-04-05 14:39:13 by simonmar]
blackhole updates
simonmar [Tue, 5 Apr 2005 14:31:17 +0000 (14:31 +0000)]
[project @ 2005-04-05 14:31:17 by simonmar]
wibble
simonmar [Tue, 5 Apr 2005 14:23:35 +0000 (14:23 +0000)]
[project @ 2005-04-05 14:23:35 by simonmar]
Catch up with InfoTable changes
simonmar [Tue, 5 Apr 2005 12:19:57 +0000 (12:19 +0000)]
[project @ 2005-04-05 12:19:54 by simonmar]
Some multi-processor hackery, including
- Don't hang blocked threads off BLACKHOLEs any more, instead keep
them all on a separate queue which is checked periodically for
threads to wake up.
This is good because (a) we don't have to worry about locking the
closure in SMP mode when we want to block on it, and (b) it means
the standard update code doesn't need to wake up any threads or
check for a BLACKHOLE_BQ, simplifying the update code.
The downside is that if there are lots of threads blocked on
BLACKHOLEs, we might have to do a lot of repeated list traversal.
We don't expect this to be common, though. conc023 goes slower
with this change, but we expect most programs to benefit from the
shorter update code.
- Fixing up the Capability code to handle multiple capabilities (SMP
mode), and related changes to get the SMP mode at least building.
simonmar [Tue, 5 Apr 2005 09:45:06 +0000 (09:45 +0000)]
[project @ 2005-04-05 09:45:06 by simonmar]
x86_64: generate 32-bit relative offset plus 32-bit padding instead of
a 64-bit relative offset. This is probably not the best place to do
it, but it'll do for now.
Also reinstate some changes that accidentally got spammed yesterday.
simonmar [Tue, 5 Apr 2005 09:42:48 +0000 (09:42 +0000)]
[project @ 2005-04-05 09:42:48 by simonmar]
GHC package: set $(GhcLibHcOpts) to empty; we want $(GhcStage2HcOpts)
to take precedence here.
simonmar [Tue, 5 Apr 2005 09:38:01 +0000 (09:38 +0000)]
[project @ 2005-04-05 09:38:00 by simonmar]
Main x86_64 hacking: we have a problem on this arch where binutils
can't generate 64-bit relative relocations (R_X86_64_PC64), which many
of our info-table fields are. So far we've been hacking around it by
putting everything in the text section, but I've decided to adopt
another approach: we'll use explicit 32-bit offset fields on this
platform instead. This is safe in the default "small" memory model
where all symbols are guaranteed to be in the lower 2Gb of the address
space.
NCG changes coming; mangler changes are probably required too.
simonmar [Tue, 5 Apr 2005 09:31:27 +0000 (09:31 +0000)]
[project @ 2005-04-05 09:31:27 by simonmar]
print format type fixup
simonmar [Tue, 5 Apr 2005 09:30:11 +0000 (09:30 +0000)]
[project @ 2005-04-05 09:30:11 by simonmar]
printf format type fixup
simonmar [Tue, 5 Apr 2005 09:28:32 +0000 (09:28 +0000)]
[project @ 2005-04-05 09:28:32 by simonmar]
type fixups
simonmar [Tue, 5 Apr 2005 09:23:12 +0000 (09:23 +0000)]
[project @ 2005-04-05 09:22:27 by simonmar]
type fixup
krasimir [Tue, 5 Apr 2005 09:06:37 +0000 (09:06 +0000)]
[project @ 2005-04-05 09:06:36 by krasimir]
In many places there was a common pattern
when (verbose >= n) $ putMsg "..."
It is now replaced with
debutTraceMsg dflags n "..."
In few places hPutStrLn stderr or putStrLn was used instead of putMsg in
the above pattern. They are replaced too. Now putMsg is used only in places
where the verbosity flag was not checked.
simonpj [Tue, 5 Apr 2005 08:25:07 +0000 (08:25 +0000)]
[project @ 2005-04-05 08:25:06 by simonpj]
Final wibbles, I hope
simonpj [Mon, 4 Apr 2005 16:49:42 +0000 (16:49 +0000)]
[project @ 2005-04-04 16:49:42 by simonpj]
One more stage2 wibble
simonpj [Mon, 4 Apr 2005 16:15:04 +0000 (16:15 +0000)]
[project @ 2005-04-04 16:15:04 by simonpj]
More stage2 wibbles
simonpj [Mon, 4 Apr 2005 15:54:50 +0000 (15:54 +0000)]
[project @ 2005-04-04 15:54:50 by simonpj]
More wibbles to HsSyn changes
simonmar [Mon, 4 Apr 2005 15:54:18 +0000 (15:54 +0000)]
[project @ 2005-04-04 15:54:18 by simonmar]
Use the imul instruction natively, rather than the braindead wrapper
around it. The register allocator has been able to handle the fixed
register usage of imul for a while now. Also, the wrapper was broken
on x86_64.
simonmar [Mon, 4 Apr 2005 15:51:45 +0000 (15:51 +0000)]
[project @ 2005-04-04 15:51:45 by simonmar]
wibble
simonpj [Mon, 4 Apr 2005 15:22:25 +0000 (15:22 +0000)]
[project @ 2005-04-04 15:22:25 by simonpj]
Further HsSyn wibbles
simonpj [Mon, 4 Apr 2005 14:11:29 +0000 (14:11 +0000)]
[project @ 2005-04-04 14:11:29 by simonpj]
Wibbles arising from HsSyn changes
simonmar [Mon, 4 Apr 2005 13:51:26 +0000 (13:51 +0000)]
[project @ 2005-04-04 13:51:26 by simonmar]
Big cleanup of the scheduler.
The main idea here was to extract as much stuff as possible from the
scheduler loop into seprate functions, so as to better expose the
control structure of the scheduler. Now, the scheduler loop is down
to some 300+ lines; there's some more code that could be extracted,
but I think it looks pretty good now.
This work is partly due to an initial cleanup by the GRAN/PAR folks,
heavily re-worked by me.
simonpj [Mon, 4 Apr 2005 13:30:58 +0000 (13:30 +0000)]
[project @ 2005-04-04 13:30:58 by simonpj]
Update hs-boot file
simonpj [Mon, 4 Apr 2005 13:26:59 +0000 (13:26 +0000)]
[project @ 2005-04-04 13:26:59 by simonpj]
Wibble: invert sense of test
simonpj [Mon, 4 Apr 2005 13:16:09 +0000 (13:16 +0000)]
[project @ 2005-04-04 13:16:09 by simonpj]
Documentation for rebindable syntax
simonpj [Mon, 4 Apr 2005 11:55:17 +0000 (11:55 +0000)]
[project @ 2005-04-04 11:55:11 by simonpj]
This commit combines three overlapping things:
1. Make rebindable syntax work for do-notation. The idea
here is that, in particular, (>>=) can have a type that
has class constraints on its argument types, e.g.
(>>=) :: (Foo m, Baz a) => m a -> (a -> m b) -> m b
The consequence is that a BindStmt and ExprStmt must have
individual evidence attached -- previously it was one
batch of evidence for the entire Do
Sadly, we can't do this for MDo, because we use bind at
a polymorphic type (to tie the knot), so we still use one
blob of evidence (now in the HsStmtContext) for MDo.
For arrow syntax, the evidence is in the HsCmd.
For list comprehensions, it's all built-in anyway.
So the evidence on a BindStmt is only used for ordinary
do-notation.
2. Tidy up HsSyn. In particular:
- Eliminate a few "Out" forms, which we can manage
without (e.g.
- It ought to be the case that the type checker only
decorates the syntax tree, but doesn't change one
construct into another. That wasn't true for NPat,
LitPat, NPlusKPat, so I've fixed that.
- Eliminate ResultStmts from Stmt. They always had
to be the last Stmt, which led to awkward pattern
matching in some places; and the benefits didn't seem
to outweigh the costs. Now each construct that uses
[Stmt] has a result expression too (e.g. GRHS).
3. Make 'deriving( Ix )' generate a binding for unsafeIndex,
rather than for index. This is loads more efficient.
(This item only affects TcGenDeriv, but some of point (2)
also affects TcGenDeriv, so it has to be in one commit.)
simonmar [Mon, 4 Apr 2005 10:55:38 +0000 (10:55 +0000)]
[project @ 2005-04-04 10:55:38 by simonmar]
comment out parts of the Win32 DLLs section, specifically those that
don't apply to current Windows distributions.
simonmar [Mon, 4 Apr 2005 10:39:23 +0000 (10:39 +0000)]
[project @ 2005-04-04 10:39:23 by simonmar]
Give prototypes for getAllocations and revertCAFs.
simonmar [Sun, 3 Apr 2005 22:06:15 +0000 (22:06 +0000)]
[project @ 2005-04-03 22:06:15 by simonmar]
x86_64: some small optimisations to instruction selection, taking
advantage of automatic zero-extension of 32-bit results.