panne [Fri, 24 Mar 2000 11:17:31 +0000 (11:17 +0000)]
[project @ 2000-03-24 11:17:31 by panne]
Added missing import for Outputable Kind.
simonmar [Fri, 24 Mar 2000 10:43:33 +0000 (10:43 +0000)]
[project @ 2000-03-24 10:43:33 by simonmar]
fix parse error
simonpj [Fri, 24 Mar 2000 09:19:31 +0000 (09:19 +0000)]
[project @ 2000-03-24 09:19:31 by simonpj]
Add missing Literal.lhs
simonpj [Thu, 23 Mar 2000 17:46:59 +0000 (17:46 +0000)]
[project @ 2000-03-23 17:46:59 by simonpj]
Remove the .so suffixes in the foreign imports
simonpj [Thu, 23 Mar 2000 17:45:33 +0000 (17:45 +0000)]
[project @ 2000-03-23 17:45:17 by simonpj]
This utterly gigantic commit is what I've been up to in background
mode in the last couple of months. Originally the main goal
was to get rid of Con (staturated constant applications)
in the CoreExpr type, but one thing led to another, and I kept
postponing actually committing. Sorry.
Simon, 23 March 2000
I've tested it pretty thoroughly, but doubtless things will break.
Here are the highlights
* Con is gone; the CoreExpr type is simpler
* NoRepLits have gone
* Better usage info in interface files => less recompilation
* Result type signatures work
* CCall primop is tidied up
* Constant folding now done by Rules
* Lots of hackery in the simplifier
* Improvements in CPR and strictness analysis
Many bug fixes including
* Sergey's DoCon compiles OK; no loop in the strictness analyser
* Volker Wysk's programs don't crash the CPR analyser
I have not done much on measuring compilation times and binary sizes;
they could have got worse. I think performance has got significantly
better, though, in most cases.
Removing the Con form of Core expressions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The big thing is that
For every constructor C there are now *two* Ids:
C is the constructor's *wrapper*. It evaluates and unboxes arguments
before calling $wC. It has a perfectly ordinary top-level defn
in the module defining the data type.
$wC is the constructor's *worker*. It is like a primop that simply
allocates and builds the constructor value. Its arguments are the
actual representation arguments of the constructor.
Its type may be different to C, because:
- useless dict args are dropped
- strict args may be flattened
For every primop P there is *one* Id, its (curried) Id
Neither contructor worker Id nor the primop Id have a defminition anywhere.
Instead they are saturated during the core-to-STG pass, and the code generator
generates code for them directly. The STG language still has saturated
primops and constructor applications.
* The Const type disappears, along with Const.lhs. The literal part
of Const.lhs reappears as Literal.lhs. Much tidying up in here,
to bring all the range checking into this one module.
* I got rid of NoRep literals entirely. They just seem to be too much trouble.
* Because Con's don't exist any more, the funny C { args } syntax
disappears from inteface files.
Parsing
~~~~~~~
* Result type signatures now work
f :: Int -> Int = \x -> x
-- The Int->Int is the type of f
g x y :: Int = x+y
-- The Int is the type of the result of (g x y)
Recompilation checking and make
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* The .hi file for a modules is not touched if it doesn't change. (It used to
be touched regardless, forcing a chain of recompilations.) The penalty for this
is that we record exported things just as if they were mentioned in the body of
the module. And the penalty for that is that we may recompile a module when
the only things that have changed are the things it is passing on without using.
But it seems like a good trade.
* -recomp is on by default
Foreign declarations
~~~~~~~~~~~~~~~~~~~~
* If you say
foreign export zoo :: Int -> IO Int
then you get a C produre called 'zoo', not 'zzoo' as before.
I've also added a check that complains if you export (or import) a C
procedure whose name isn't legal C.
Code generation and labels
~~~~~~~~~~~~~~~~~~~~~~~~~~
* Now that constructor workers and wrappers have distinct names, there's
no need to have a Foo_static_closure and a Foo_closure for constructor Foo.
I nuked the entire StaticClosure story. This has effects in some of
the RTS headers (i.e. s/static_closure/closure/g)
Rules, constant folding
~~~~~~~~~~~~~~~~~~~~~~~
* Constant folding becomes just another rewrite rule, attached to the Id for the
PrimOp. To achieve this, there's a new form of Rule, a BuiltinRule (see CoreSyn.lhs).
The prelude rules are in prelude/PrelRules.lhs, while simplCore/ConFold.lhs has gone.
* Appending of constant strings now works, using fold/build fusion, plus
the rewrite rule
unpack "foo" c (unpack "baz" c n) = unpack "foobaz" c n
Implemented in PrelRules.lhs
* The CCall primop is tidied up quite a bit. There is now a data type CCall,
defined in PrimOp, that packages up the info needed for a particular CCall.
There is a new Id for each new ccall, with an big "occurrence name"
{__ccall "foo" gc Int# -> Int#}
In interface files, this is parsed as a single Id, which is what it is, really.
Miscellaneous
~~~~~~~~~~~~~
* There were numerous places where the host compiler's
minInt/maxInt was being used as the target machine's minInt/maxInt.
I nuked all of these; everything is localised to inIntRange and inWordRange,
in Literal.lhs
* Desugaring record updates was broken: it didn't generate correct matches when
used withe records with fancy unboxing etc. It now uses matchWrapper.
* Significant tidying up in codeGen/SMRep.lhs
* Add __word, __word64, __int64 terminals to signal the obvious types
in interface files. Add the ability to print word values in hex into
C code.
* PrimOp.lhs is no longer part of a loop. Remove PrimOp.hi-boot*
Types
~~~~~
* isProductTyCon no longer returns False for recursive products, nor
for unboxed products; you have to test for these separately.
There's no reason not to do CPR for recursive product types, for example.
Ditto splitProductType_maybe.
Simplification
~~~~~~~~~~~~~~~
* New -fno-case-of-case flag for the simplifier. We use this in the first run
of the simplifier, where it helps to stop messing up expressions that
the (subsequent) full laziness pass would otherwise find float out.
It's much more effective than previous half-baked hacks in inlining.
Actually, it turned out that there were three places in Simplify.lhs that
needed to know use this flag.
* Make the float-in pass push duplicatable bindings into the branches of
a case expression, in the hope that we never have to allocate them.
(see FloatIn.sepBindsByDropPoint)
* Arrange that top-level bottoming Ids get a NOINLINE pragma
This reduced gratuitous inlining of error messages.
But arrange that such things still get w/w'd.
* Arrange that a strict argument position is regarded as an 'interesting'
context, so that if we see
foldr k z (g x)
then we'll be inclined to inline g; this can expose a build.
* There was a missing case in CoreUtils.exprEtaExpandArity that meant
we were missing some obvious cases for eta expansion
Also improve the code when handling applications.
* Make record selectors (identifiable by their IdFlavour) into "cheap" operations.
[The change is a 2-liner in CoreUtils.exprIsCheap]
This means that record selection may be inlined into function bodies, which
greatly improves the arities of overloaded functions.
* Make a cleaner job of inlining "lone variables". There was some distributed
cunning, but I've centralised it all now in SimplUtils.analyseCont, which
analyses the context of a call to decide whether it is "interesting".
* Don't specialise very small functions in Specialise.specDefn
It's better to inline it. Rather like the worker/wrapper case.
* Be just a little more aggressive when floating out of let rhss.
See comments with Simplify.wantToExpose
A small change with an occasional big effect.
* Make the inline-size computation think that
case x of I# x -> ...
is *free*.
CPR analysis
~~~~~~~~~~~~
* Fix what was essentially a bug in CPR analysis. Consider
letrec f x = let g y = let ... in f e1
in
if ... then (a,b) else g x
g has the CPR property if f does; so when generating the final annotated
RHS for f, we must use an envt in which f is bound to its final abstract
value. This wasn't happening. Instead, f was given the CPR tag but g
wasn't; but of course the w/w pass gives rotten results in that case!!
(Because f's CPR-ness relied on g's.)
On they way I tidied up the code in CprAnalyse. It's quite a bit shorter.
The fact that some data constructors return a constructed product shows
up in their CPR info (MkId.mkDataConId) not in CprAnalyse.lhs
Strictness analysis and worker/wrapper
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* BIG THING: pass in the demand to StrictAnal.saExpr. This affects situations
like
f (let x = e1 in (x,x))
where f turns out to have strictness u(SS), say. In this case we can
mark x as demanded, and use a case expression for it.
The situation before is that we didn't "know" that there is the u(SS)
demand on the argument, so we simply computed that the body of the let
expression is lazy in x, and marked x as lazily-demanded. Then even after
f was w/w'd we got
let x = e1 in case (x,x) of (a,b) -> $wf a b
and hence
let x = e1 in $wf a b
I found a much more complicated situation in spectral/sphere/Main.shade,
which improved quite a bit with this change.
* Moved the StrictnessInfo type from IdInfo to Demand. It's the logical
place for it, and helps avoid module loops
* Do worker/wrapper for coerces even if the arity is zero. Thus:
stdout = coerce Handle (..blurg..)
==>
wibble = (...blurg...)
stdout = coerce Handle wibble
This is good because I found places where we were saying
case coerce t stdout of { MVar a ->
...
case coerce t stdout of { MVar b ->
...
and the redundant case wasn't getting eliminated because of the coerce.
simonmar [Thu, 23 Mar 2000 16:01:16 +0000 (16:01 +0000)]
[project @ 2000-03-23 16:01:16 by simonmar]
Work around the slightly deranged way we deal with thunks and
MIN_UPD_SIZE at the moment.
rrt [Thu, 23 Mar 2000 15:53:22 +0000 (15:53 +0000)]
[project @ 2000-03-23 15:53:22 by rrt]
Stopped PrelHugs being compiled into HSprel.dll, and stopped using
-split-objs when building libraries as DLLs.
sewardj [Thu, 23 Mar 2000 14:54:21 +0000 (14:54 +0000)]
[project @ 2000-03-23 14:54:20 by sewardj]
Make Hugs compile on Win32 again after recent changes. Also, rename
prelude.h to hugsbasictypes.h to avoid conflicts with includes/Prelude.h.
simonmar [Thu, 23 Mar 2000 14:30:13 +0000 (14:30 +0000)]
[project @ 2000-03-23 14:30:13 by simonmar]
Fix GCing of SEQ_FRAMES, CATCH_FRAMES and STOP_FRAMES when the closure
header size is more than one word (eg. with profiling on).
Hans: you may need to check this w.r.t. PAR & GRAN.
simonmar [Thu, 23 Mar 2000 13:13:29 +0000 (13:13 +0000)]
[project @ 2000-03-23 13:13:29 by simonmar]
Avoid loops in CCS graph.
sewardj [Thu, 23 Mar 2000 12:22:05 +0000 (12:22 +0000)]
[project @ 2000-03-23 12:22:04 by sewardj]
In interface files, don't forget to mention the names of modules imported
via hi-boot files. This is needed so that Hugs can use the import decls
in interface files to safely overestimate the dependency sets which it will
encounter when linking object code.
sewardj [Thu, 23 Mar 2000 12:19:22 +0000 (12:19 +0000)]
[project @ 2000-03-23 12:19:22 by sewardj]
Allow clients of the linker library (object.[ch]) to specify, portably,
symbols they wish to ignore in calls to ocGetNames(). Use this modification
to support ignoring the multiple occurrences of ghc_cc_ID.
simonmar [Thu, 23 Mar 2000 12:02:38 +0000 (12:02 +0000)]
[project @ 2000-03-23 12:02:38 by simonmar]
Don't wake up threads if the select() was interrupted by a signal.
sewardj [Thu, 23 Mar 2000 10:53:26 +0000 (10:53 +0000)]
[project @ 2000-03-23 10:53:26 by sewardj]
storage.h needs to see a machine-dependant file-timestamp type for
use in Module symbol table entries -- hence this file.
simonmar [Thu, 23 Mar 2000 09:33:17 +0000 (09:33 +0000)]
[project @ 2000-03-23 09:33:17 by simonmar]
update expected output
simonmar [Thu, 23 Mar 2000 09:32:36 +0000 (09:32 +0000)]
[project @ 2000-03-23 09:32:36 by simonmar]
Add a few more test cases.
simonmar [Thu, 23 Mar 2000 09:32:13 +0000 (09:32 +0000)]
[project @ 2000-03-23 09:32:13 by simonmar]
Disable some of the special cases in remInteger and quotInteger, which
turned out to be wrong.
sewardj [Wed, 22 Mar 2000 18:17:12 +0000 (18:17 +0000)]
[project @ 2000-03-22 18:17:12 by sewardj]
Zap outdated ifdeffery.
sewardj [Wed, 22 Mar 2000 18:14:23 +0000 (18:14 +0000)]
[project @ 2000-03-22 18:14:22 by sewardj]
Initial commit of major changes to module chasing and storage management:
* Total reimplementation of module chasing (see achieveTargetModules
in hugs.c). Build, maintain and use module dependency graphs
to decide what needs reloading when. The old mechanism with a
stack of scripts, etc, is gone forever. All the rest of these points
are in support of the module-chasing change:
* The result of parsing a module is now a parse tree, rather than a
half-baked parse tree and a bunch of side-effects. Hooray!
* Redo symbol tables for Names, Tycons, Classes, Instances and
Modules. They are now dynamically expandable, doubling in size
automatically when full, and use a freelist system to keep track
of available slots.
* Allow arbitrary modules to be deleted from the system. The
main honcho here is nukeModule().
* Not strictly necessary, but ... unify the address space for all
compile-time entities. See revised whatIs(). Text is part of
the unified address space. This is very convenient for debugging.
print() can now print practically anything. Generally simplify
storage management as much as possible, and zap the years of
elaborate hacks needed to make Hugs work well in 16-bit systems.
Added a load of sanity-checking support to storage.[ch].
* We don't support project files any more. They were useful for a
while, but no longer seem relevant.
* Nuked a large bunch of irrelevant options in rts/options.h.
As of this commit, the system can load and chase modules, both in
standalone and combined modes. The :l (load), :a (also), :r (refresh),
:i (info), :t (show type) and :m (set eval module) commands appear
to work. There are also several temporary limitations which will
be fixed soon:
* Anything to do with external editors, etc, doesn't work.
* The downward-closure-of-object-code (if M is object, all
modules below M must be too) is not enforced nor checked for.
It needs to be.
* Module M _must_ reside in M.hs/M.o (sigh). To be fixed.
* Error handling is probably flaky, and interrupt handling
very likely is.
* Error messages don't have line numbers. (A 5-minute fix).
* Progress messages are all at sea; needs re-thinking now that
the order in which things are done is radically different.
* Compile-time GC is temporarily disabled whilst I figure out how
to stress-test the GC.
* Freed-up symbol table entries are never re-entered on the free
lists -- a debugging measure.
* :% is given a bad type in combined mode. To be investigated.
simonmar [Wed, 22 Mar 2000 14:29:54 +0000 (14:29 +0000)]
[project @ 2000-03-22 14:29:54 by simonmar]
another -u: __init_PrelMain
simonpj [Wed, 22 Mar 2000 13:45:54 +0000 (13:45 +0000)]
[project @ 2000-03-22 13:45:54 by simonpj]
Make Enum for Ratio behave like the Report says
rrt [Wed, 22 Mar 2000 12:30:52 +0000 (12:30 +0000)]
[project @ 2000-03-22 12:30:52 by rrt]
Removed obsolete comment.
rrt [Wed, 22 Mar 2000 12:15:46 +0000 (12:15 +0000)]
[project @ 2000-03-22 12:15:46 by rrt]
Changed __init_Main to __init_PrelMain in line with changes elsewhere.
rrt [Wed, 22 Mar 2000 12:01:57 +0000 (12:01 +0000)]
[project @ 2000-03-22 12:01:57 by rrt]
Stopped PrelMain.dll_o being built with -split-objs (filter this out from
argument list)
simonmar [Tue, 21 Mar 2000 17:41:02 +0000 (17:41 +0000)]
[project @ 2000-03-21 17:41:02 by simonmar]
What happened to gcc's "uninitialised variable" warnings when I needed
them?
simonmar [Tue, 21 Mar 2000 16:01:17 +0000 (16:01 +0000)]
[project @ 2000-03-21 16:01:17 by simonmar]
not needed anymore.
simonmar [Tue, 21 Mar 2000 15:57:47 +0000 (15:57 +0000)]
[project @ 2000-03-21 15:57:47 by simonmar]
wibbles
simonmar [Tue, 21 Mar 2000 15:54:25 +0000 (15:54 +0000)]
[project @ 2000-03-21 15:54:25 by simonmar]
Fix up the tests in here. Now that threadDelay is interruptible, many
of the tests for block/unblockAsyncExceptions failed because they were
relying on exceptions being blocked during a threadDelay.
simonmar [Tue, 21 Mar 2000 14:33:18 +0000 (14:33 +0000)]
[project @ 2000-03-21 14:33:18 by simonmar]
Call __init_PrelMain instead of __initMain. PrelMain lives above Main
in the dependency tree, so this is more correct.
simonmar [Tue, 21 Mar 2000 14:26:02 +0000 (14:26 +0000)]
[project @ 2000-03-21 14:24:20 by simonmar]
MutableArray/STArray fixage.
rrt [Tue, 21 Mar 2000 11:38:43 +0000 (11:38 +0000)]
[project @ 2000-03-21 11:38:43 by rrt]
Added PrelException_BlockedOnDeadMVar_static_closure and
PrelException_NonTermination_static_closure.
rrt [Tue, 21 Mar 2000 11:33:12 +0000 (11:33 +0000)]
[project @ 2000-03-21 11:33:12 by rrt]
Made them build on mingw32 again (problems with getourtimeofday, which
shouldn't be needed under mingw anyway).
simonmar [Tue, 21 Mar 2000 11:22:35 +0000 (11:22 +0000)]
[project @ 2000-03-21 11:22:35 by simonmar]
Fix several bugs in readChunk, mainly to do with copying
already-buffered data into the user buffer.
panne [Tue, 21 Mar 2000 09:48:28 +0000 (09:48 +0000)]
[project @ 2000-03-21 09:48:28 by panne]
After Simon's last commit it suffices to mention libHS once (that was
exactly what I was trying in that second :-)
simonmar [Tue, 21 Mar 2000 09:39:46 +0000 (09:39 +0000)]
[project @ 2000-03-21 09:39:46 by simonmar]
- add BlockedOnDeadMVar to the ever-increasing list of '-u' things
- remove accidental commit (again). sigh.
panne [Mon, 20 Mar 2000 15:49:56 +0000 (15:49 +0000)]
[project @ 2000-03-20 15:49:56 by panne]
ITimer.h is really called Itimer.h. Hmmm, let's guess on what
brilliant OS this part of the RTS was developed... :-))
panne [Mon, 20 Mar 2000 15:32:10 +0000 (15:32 +0000)]
[project @ 2000-03-20 15:32:10 by panne]
Bootstrapping fix, this time for slurpFile
andy [Mon, 20 Mar 2000 09:42:50 +0000 (09:42 +0000)]
[project @ 2000-03-20 09:42:49 by andy]
Adding an alternative to the "delay" system used for
threads that are waiting for time to pass.
This works on a target time basis, eliminating the
need to use the ticky style counter.
It is only enabled under:
#if defined(INTERPRETER) && !defined(HAVE_SETITIMER)
andy [Mon, 20 Mar 2000 04:26:24 +0000 (04:26 +0000)]
[project @ 2000-03-20 04:26:23 by andy]
Second attack at supporting threads inside STG Hugs.
We now support most of the concurrency primitives.
Also a wibble in Evaluator.c, letting Hugs compile.
panne [Sun, 19 Mar 2000 13:36:59 +0000 (13:36 +0000)]
[project @ 2000-03-19 13:36:59 by panne]
*sigh* hPutBuf{,BA} versionitis again, this time for bootstrapping 4.07
panne [Sat, 18 Mar 2000 15:37:58 +0000 (15:37 +0000)]
[project @ 2000-03-18 15:37:58 by panne]
Due to PrelException_PutFullMVar_static_closure there is a circular
dependency between libHS and libHSrts, which is broken during the
linking phase by mentioning -lHS again *after* -lHSrts. Hmmm, perhaps
it would be better to mention the smaller -lHSrts twice instead? With
this patch 4.06 can build 4.07, now let's see if it bootstraps...
panne [Sat, 18 Mar 2000 13:07:04 +0000 (13:07 +0000)]
[project @ 2000-03-18 13:07:04 by panne]
Re-enable soft failure while searching .hi files
rrt [Fri, 17 Mar 2000 17:17:48 +0000 (17:17 +0000)]
[project @ 2000-03-17 17:17:48 by rrt]
Spelt HS_cbits_imp correctly in SRC_BLD_DLL_OPTS
rrt [Fri, 17 Mar 2000 17:05:27 +0000 (17:05 +0000)]
[project @ 2000-03-17 17:05:27 by rrt]
Set WAYS=$(GhcLibWays) so that DLLs can be built.
rrt [Fri, 17 Mar 2000 15:11:26 +0000 (15:11 +0000)]
[project @ 2000-03-17 15:11:26 by rrt]
Added PrelException_PutFullMVar_static_closure and __init_Prelude, and also
(rather hackily) __init_Main (until I find out how that should really be
dealt with).
simonmar [Fri, 17 Mar 2000 15:00:25 +0000 (15:00 +0000)]
[project @ 2000-03-17 15:00:25 by simonmar]
don't export non-std stuff.
simonmar [Fri, 17 Mar 2000 14:37:22 +0000 (14:37 +0000)]
[project @ 2000-03-17 14:37:21 by simonmar]
More random cleanups.
simonmar [Fri, 17 Mar 2000 13:30:24 +0000 (13:30 +0000)]
[project @ 2000-03-17 13:30:23 by simonmar]
Random cleanup: rename the TSO->whatNext field to what_next, to be a
bit more consistent.
simonmar [Fri, 17 Mar 2000 12:40:04 +0000 (12:40 +0000)]
[project @ 2000-03-17 12:40:03 by simonmar]
Add the readBlahOffAddr suite of primitives. The previous method of
using indexStuffOffAddr didn't enforce proper ordering in the I/O
monad.
The indexBlahOffAddr primops may go away in the future if/when we
figure out how to make unsafePerformIO into a no-op at the back end.
simonmar [Fri, 17 Mar 2000 10:25:16 +0000 (10:25 +0000)]
[project @ 2000-03-17 10:25:16 by simonmar]
Add test for interruptible ops.
simonmar [Fri, 17 Mar 2000 10:24:44 +0000 (10:24 +0000)]
[project @ 2000-03-17 10:24:44 by simonmar]
Support "interruptible operations": threads which are blocked on
MVars, exceptions, I/O, or sleeping are fair game for raiseInThread.
simonmar [Fri, 17 Mar 2000 10:01:29 +0000 (10:01 +0000)]
[project @ 2000-03-17 10:01:29 by simonmar]
Add test for garbage collecting threads.
simonmar [Fri, 17 Mar 2000 09:53:19 +0000 (09:53 +0000)]
[project @ 2000-03-17 09:53:19 by simonmar]
Add global_link field to the TSO structure. Forgotten in yesterday's
commit.
simonmar [Fri, 17 Mar 2000 09:48:48 +0000 (09:48 +0000)]
[project @ 2000-03-17 09:48:48 by simonmar]
Reset the itimers in the child, so it doesn't get plagued by SIGVTALRM
interrupts.
Reported by ADR,
Patch from Hannah Schroeter <uk1o@rz.uni-karlsruhe.de>.
simonmar [Thu, 16 Mar 2000 17:33:04 +0000 (17:33 +0000)]
[project @ 2000-03-16 17:33:04 by simonmar]
bug fix in previous commit - NotBlocked is a valid state to be in in
resurrectThreads().
simonmar [Thu, 16 Mar 2000 17:27:13 +0000 (17:27 +0000)]
[project @ 2000-03-16 17:27:12 by simonmar]
Raise an exception in any thread that is about to be garbage
collected.
- threads blocked on MVars that are otherwise garbage
will receive a BlockedOnDeadMVar exception.
- threads blocked on Black Holes must be in some kind
of deadlock, so we send them a NonTermination exception.
simonmar [Thu, 16 Mar 2000 17:24:08 +0000 (17:24 +0000)]
[project @ 2000-03-16 17:24:08 by simonmar]
put a lock in the right place.
simonmar [Thu, 16 Mar 2000 17:23:35 +0000 (17:23 +0000)]
[project @ 2000-03-16 17:23:35 by simonmar]
decruftification
rrt [Thu, 16 Mar 2000 16:22:15 +0000 (16:22 +0000)]
[project @ 2000-03-16 16:22:15 by rrt]
Got rid of an odir problem when building PrelMain as a DLL.
simonmar [Thu, 16 Mar 2000 12:40:40 +0000 (12:40 +0000)]
[project @ 2000-03-16 12:40:40 by simonmar]
Use Sp instead of the global init_stack for the stack pointer during
module initialisation. This should cut down the code size for module
initialisation blocks.
simonmar [Thu, 16 Mar 2000 12:37:06 +0000 (12:37 +0000)]
[project @ 2000-03-16 12:37:05 by simonmar]
Clean up the module initialisation stuff a bit, and add support for
module initialisation blocks in the native code generator.
simonmar [Thu, 16 Mar 2000 09:45:02 +0000 (09:45 +0000)]
[project @ 2000-03-16 09:45:02 by simonmar]
Add 'check' subdir for -syslib util.
simonmar [Thu, 16 Mar 2000 09:31:44 +0000 (09:31 +0000)]
[project @ 2000-03-16 09:31:44 by simonmar]
Add hslibs/tests/lang/check to -syslib util (in in-place mode).
andy [Wed, 15 Mar 2000 23:28:09 +0000 (23:28 +0000)]
[project @ 2000-03-15 23:28:09 by andy]
The prelude with assertion support. We use the same functions
in Hugs and GHC for the assert infrastructure.
andy [Wed, 15 Mar 2000 23:27:16 +0000 (23:27 +0000)]
[project @ 2000-03-15 23:27:16 by andy]
Adding in internal support for assert, that gives optional
assertion messages with file and line numbers.
Changing the default build style to stand alone.
Thinking: People building the combined system are likly to
be hackers already, so can make a one line change.
We should discuss this...
rrt [Wed, 15 Mar 2000 17:45:33 +0000 (17:45 +0000)]
[project @ 2000-03-15 17:45:33 by rrt]
Typo removed (of course we have pre-built docs in binary dists; I meant not
in source dists).
simonmar [Wed, 15 Mar 2000 17:36:02 +0000 (17:36 +0000)]
[project @ 2000-03-15 17:36:02 by simonmar]
optimise SaveThreadState/LoadThreadState slightly by caching
CurrentTSO in a local variable.
rrt [Wed, 15 Mar 2000 16:04:42 +0000 (16:04 +0000)]
[project @ 2000-03-15 16:04:42 by rrt]
Added a list of the RPMs needed for DocBook
rrt [Wed, 15 Mar 2000 15:57:26 +0000 (15:57 +0000)]
[project @ 2000-03-15 15:57:26 by rrt]
Added notes about DocBook
simonmar [Wed, 15 Mar 2000 15:31:36 +0000 (15:31 +0000)]
[project @ 2000-03-15 15:31:36 by simonmar]
Unbreak signals.
simonmar [Wed, 15 Mar 2000 15:03:20 +0000 (15:03 +0000)]
[project @ 2000-03-15 15:03:20 by simonmar]
Fix configuration/building of GMP.
simonmar [Wed, 15 Mar 2000 11:15:19 +0000 (11:15 +0000)]
[project @ 2000-03-15 11:15:19 by simonmar]
Use the slightly more standard non-standard module ST instead of the
completely non-standard MutableArray.
simonmar [Wed, 15 Mar 2000 11:11:08 +0000 (11:11 +0000)]
[project @ 2000-03-15 11:11:08 by simonmar]
sigh, add some more #ifdefs to this file (MutableArray/STArray changes).
simonmar [Wed, 15 Mar 2000 10:54:58 +0000 (10:54 +0000)]
[project @ 2000-03-15 10:54:58 by simonmar]
Undo part of last my previous commit, which was included accidentally.
andy [Wed, 15 Mar 2000 01:34:52 +0000 (01:34 +0000)]
[project @ 2000-03-15 01:34:52 by andy]
Adding GHC style Dynamic to the Prelude understanding.
sewardj [Tue, 14 Mar 2000 14:34:47 +0000 (14:34 +0000)]
[project @ 2000-03-14 14:34:47 by sewardj]
Update Hugs so as to work with the new way of referencing Prelude
symbols from the RTS. The main action is in fixupRTStoPreludeRefs()
in rts/Prelude.c.
simonmar [Tue, 14 Mar 2000 12:16:00 +0000 (12:16 +0000)]
[project @ 2000-03-14 12:16:00 by simonmar]
Simplfy the mutable array story:
- rename MutableArray to STArray (and similarly
for all operations on MutableArray, eg newArray
is now newSTArray).
- remove the extra level of indirection between
STArrays and MutableArrays.
- remove the MutableArray interface from
hslibs/lang/MutableArray. This module will go
away soon - Andy, don't bother porting it to Hugs.
simonmar [Tue, 14 Mar 2000 11:11:40 +0000 (11:11 +0000)]
[project @ 2000-03-14 11:11:40 by simonmar]
New file for RTS->Prelude dependencies.
simonmar [Tue, 14 Mar 2000 09:55:05 +0000 (09:55 +0000)]
[project @ 2000-03-14 09:55:05 by simonmar]
Handle references from the RTS to the Prelude in a more consistent
way.
- For statically-linked binaries, nothing has changed.
- For the interpreter, refs from the RTS to the Prelude
are now indirected. The indirections need to be
filled in at some point during startup by calling
fixupPreludeRefs (in Prelude.c).
- The CHARLIKE and INTLIKE tables are now handled in
the same way for both Hugs and DLLs.
Hugs will be broken for a short while until Julian sorts out the Hugs
parts of this change.
simonmar [Tue, 14 Mar 2000 09:31:48 +0000 (09:31 +0000)]
[project @ 2000-03-14 09:31:48 by simonmar]
oops, missed one instance of UnsafeThawByteArrayOp.
sof [Tue, 14 Mar 2000 01:58:19 +0000 (01:58 +0000)]
[project @ 2000-03-14 01:58:19 by sof]
Fixed recent -syslib com buglet
sof [Tue, 14 Mar 2000 01:57:18 +0000 (01:57 +0000)]
[project @ 2000-03-14 01:57:18 by sof]
mingw32: do as for cygwin platforms & default the name of the generated
binary to main.exe if -o <...> isn't given.
sof [Tue, 14 Mar 2000 01:54:06 +0000 (01:54 +0000)]
[project @ 2000-03-14 01:54:06 by sof]
Simplified prog_* externs a little
sof [Tue, 14 Mar 2000 01:52:25 +0000 (01:52 +0000)]
[project @ 2000-03-14 01:52:25 by sof]
Misc Win32 bitrot
sof [Tue, 14 Mar 2000 01:50:49 +0000 (01:50 +0000)]
[project @ 2000-03-14 01:50:49 by sof]
Don't be selective about what's exported from the RTS DLL any more,
as it requires sync'ing HSrts.def whenever the RTS offerings change.
sof [Tue, 14 Mar 2000 01:43:27 +0000 (01:43 +0000)]
[project @ 2000-03-14 01:43:27 by sof]
* 'inlined' subset of the MM protos needed to compile this module, i.e.,
don't require whoever does a 'make' in ghc/rts/ to have extended their
<windows.h>
* right Win32 proto for handle_tick()
sof [Tue, 14 Mar 2000 01:38:43 +0000 (01:38 +0000)]
[project @ 2000-03-14 01:38:43 by sof]
Support for setting target-specific CC options via AC_SUBST (and make use
of it on the mingw32 front -- 'resist' the temptation to use GMP's config/
story for this.)
sof [Tue, 14 Mar 2000 01:33:39 +0000 (01:33 +0000)]
[project @ 2000-03-14 01:33:39 by sof]
mingw32 support
sof [Tue, 14 Mar 2000 01:31:38 +0000 (01:31 +0000)]
[project @ 2000-03-14 01:31:38 by sof]
remove some Makefile debugging bits
sof [Tue, 14 Mar 2000 01:30:21 +0000 (01:30 +0000)]
[project @ 2000-03-14 01:30:21 by sof]
When booting, pass in --target to gmp/
sewardj [Mon, 13 Mar 2000 14:11:14 +0000 (14:11 +0000)]
[project @ 2000-03-13 14:11:14 by sewardj]
#include wibbles.
sewardj [Mon, 13 Mar 2000 14:10:24 +0000 (14:10 +0000)]
[project @ 2000-03-13 14:10:24 by sewardj]
Win32 wibble.
sewardj [Mon, 13 Mar 2000 13:00:00 +0000 (13:00 +0000)]
[project @ 2000-03-13 13:00:00 by sewardj]
Track recent re-homing of Prelude.h for INTERPRETER.
simonmar [Mon, 13 Mar 2000 12:11:44 +0000 (12:11 +0000)]
[project @ 2000-03-13 12:11:43 by simonmar]
Remove unsafeThawByteArray# primop (which was a no-op), and use
unsafeCoerce# instead.
simonmar [Mon, 13 Mar 2000 11:43:54 +0000 (11:43 +0000)]
[project @ 2000-03-13 11:43:54 by simonmar]
remove duplicate signal type test.
simonmar [Mon, 13 Mar 2000 11:39:22 +0000 (11:39 +0000)]
[project @ 2000-03-13 11:39:22 by simonmar]
Add PutFullMVar test
sewardj [Mon, 13 Mar 2000 11:37:17 +0000 (11:37 +0000)]
[project @ 2000-03-13 11:37:16 by sewardj]
Further cleanups of connect.h. Also, zap the Args macro. We really
don't need to support K&R C any more.
simonmar [Mon, 13 Mar 2000 11:34:00 +0000 (11:34 +0000)]
[project @ 2000-03-13 11:34:00 by simonmar]
Need to pull in PutFullMVar from PrelException.
simonmar [Mon, 13 Mar 2000 11:32:20 +0000 (11:32 +0000)]
[project @ 2000-03-13 11:32:20 by simonmar]
Disable the stuff that was supposed to lex octal & hexadecimal
literals, but which didn't work. The code in the Haskell report
doesn't attempt to lex these either.
simonmar [Mon, 13 Mar 2000 10:54:49 +0000 (10:54 +0000)]
[project @ 2000-03-13 10:54:49 by simonmar]
Add new exception: PutFullMVar for putting into an already full MVar.