ghc-hetmet.git
24 years ago[project @ 2000-03-28 11:09:31 by rrt]
rrt [Tue, 28 Mar 2000 11:09:31 +0000 (11:09 +0000)]
[project @ 2000-03-28 11:09:31 by rrt]
Added SplitObjs for when -split-objs is being used. Removed -split-objs and
-odir from GhcLibHcOpts. -odir shouldn't be needed any more in any case.

Changed order of recursive makes so that recursive make happens before make
in the current directory. This helps when building hslibs as DLLs, where
the cbits DLLs need to be made before the main DLLs.

24 years ago[project @ 2000-03-28 11:07:19 by rrt]
rrt [Tue, 28 Mar 2000 11:07:19 +0000 (11:07 +0000)]
[project @ 2000-03-28 11:07:19 by rrt]
Added SplitObjs and removed -split-objs from GhcLibHcOpts.

24 years ago[project @ 2000-03-28 10:20:55 by andy]
andy [Tue, 28 Mar 2000 10:20:56 +0000 (10:20 +0000)]
[project @ 2000-03-28 10:20:55 by andy]
Restoring Hugs ability to accept the -98/+98 and -h<heap> options.

24 years ago[project @ 2000-03-28 10:10:17 by andy]
andy [Tue, 28 Mar 2000 10:10:17 +0000 (10:10 +0000)]
[project @ 2000-03-28 10:10:17 by andy]
Making STG Hugs compile again after the recent RTS checking.

24 years ago[project @ 2000-03-28 08:52:28 by simonmar]
simonmar [Tue, 28 Mar 2000 08:52:29 +0000 (08:52 +0000)]
[project @ 2000-03-28 08:52:28 by simonmar]
Replace freeze{Char,Int,Word,Float,Double}Array with freezeByteArray
(using sizeofByteArray and a foreign import of C's memcpy()).

24 years ago[project @ 2000-03-28 08:51:09 by simonmar]
simonmar [Tue, 28 Mar 2000 08:51:09 +0000 (08:51 +0000)]
[project @ 2000-03-28 08:51:09 by simonmar]
remove redundant import.

24 years ago[project @ 2000-03-28 08:49:56 by simonmar]
simonmar [Tue, 28 Mar 2000 08:49:56 +0000 (08:49 +0000)]
[project @ 2000-03-28 08:49:56 by simonmar]
We weren't releasing the memory associated with dead file objects
(including the possibly large buffer).  This commit fixes that.

24 years ago[project @ 2000-03-28 08:48:44 by simonmar]
simonmar [Tue, 28 Mar 2000 08:48:44 +0000 (08:48 +0000)]
[project @ 2000-03-28 08:48:44 by simonmar]
ANSIfy function defn

24 years ago[project @ 2000-03-27 16:22:09 by simonpj]
simonpj [Mon, 27 Mar 2000 16:22:11 +0000 (16:22 +0000)]
[project @ 2000-03-27 16:22:09 by simonpj]
Fix a bug in import listing in interface files that meant we lost track of
interface files.  This fixes the problem that led Sven to add lots of
import PprType() decls.  I've removed them all again!

24 years ago[project @ 2000-03-27 13:24:12 by simonpj]
simonpj [Mon, 27 Mar 2000 13:24:14 +0000 (13:24 +0000)]
[project @ 2000-03-27 13:24:12 by simonpj]
a) Move Unfolding and UnfoldingGuidance to CoreSyn
   As a result, remove several SOURCE imports
   Shrink CoreSyn.hi-boot considerably
   Delete CoreUnfold.hi-boot altogether

b) Add CoreUtils.exprIsConApp_maybe
   Use in PrelRules to fix a bug in the dataToTag rule

c) Fix boolean polarity error in Simplify.lhs

24 years ago[project @ 2000-03-27 13:23:49 by simonpj]
simonpj [Mon, 27 Mar 2000 13:23:50 +0000 (13:23 +0000)]
[project @ 2000-03-27 13:23:49 by simonpj]
Improve the error messages given when a definition isn't polymorphic enough.
In paticular, for this program:

    let v = runST (newSTRef True)
    in
    runST (readSTRef v)

we get the message

    Inferred type is less polymorphic than expected
Quantified type variable `s' escapes
It is reachable from the type variable(s) `a'
  which are free in the signature
    Signature type:     forall s. ST s a
    Type to generalise: ST s (STRef s Bool)
    When checking an expression type signature
    In the first argument of `runST', namely `(newSTRef True)'
    In the right-hand side of a pattern binding: runST (newSTRef True)

24 years ago[project @ 2000-03-27 08:58:37 by simonpj]
simonpj [Mon, 27 Mar 2000 08:58:37 +0000 (08:58 +0000)]
[project @ 2000-03-27 08:58:37 by simonpj]
Fix sig for guard in module header

24 years ago[project @ 2000-03-27 08:50:15 by simonmar]
simonmar [Mon, 27 Mar 2000 08:50:15 +0000 (08:50 +0000)]
[project @ 2000-03-27 08:50:15 by simonmar]
Don't treat 'ccall' and 'stdcall' as reserved words.  This fixes
another problem with bootstrapping.

24 years ago[project @ 2000-03-27 08:46:15 by simonmar]
simonmar [Mon, 27 Mar 2000 08:46:15 +0000 (08:46 +0000)]
[project @ 2000-03-27 08:46:15 by simonmar]
rearrange tokens to be in roughly the same order as everywhere else.

24 years ago[project @ 2000-03-25 12:38:40 by panne]
panne [Sat, 25 Mar 2000 12:38:41 +0000 (12:38 +0000)]
[project @ 2000-03-25 12:38:40 by panne]
Adding a bunch of `import PprType ()' to make 4.07 compile itself.
Strangely enough, compilation with 4.06 worked without these, so
this is probably only fighting the symptoms of something deeper,
and somebody should have a look at it. But for now, I simply need
a bootstrapping 4.07...

24 years ago[project @ 2000-03-24 17:49:29 by simonpj]
simonpj [Fri, 24 Mar 2000 17:49:31 +0000 (17:49 +0000)]
[project @ 2000-03-24 17:49:29 by simonpj]
a) Small wibbles to do with inlining and floating

b) Implement Ralf's request, so that one can write

type F = forall a. a -> a

f :: Int -> F
f = ...

   The for-alls inside F are hoisted out to the top of
   the type signature for f.  This applies uniformly to
   all user-written types

24 years ago[project @ 2000-03-24 15:19:29 by sewardj]
sewardj [Fri, 24 Mar 2000 15:19:29 +0000 (15:19 +0000)]
[project @ 2000-03-24 15:19:29 by sewardj]
For INTERPRETER, track recent changes of _static_closure ==> _closure.

24 years ago[project @ 2000-03-24 14:51:50 by sewardj]
sewardj [Fri, 24 Mar 2000 14:51:50 +0000 (14:51 +0000)]
[project @ 2000-03-24 14:51:50 by sewardj]
Win32 signal wibbles.

24 years ago[project @ 2000-03-24 14:32:03 by sewardj]
sewardj [Fri, 24 Mar 2000 14:32:03 +0000 (14:32 +0000)]
[project @ 2000-03-24 14:32:03 by sewardj]
Reimplement interrupt handling in a way compatible with the
revised module chaser, etc.

24 years ago[project @ 2000-03-24 12:36:43 by sewardj]
sewardj [Fri, 24 Mar 2000 12:36:43 +0000 (12:36 +0000)]
[project @ 2000-03-24 12:36:43 by sewardj]
Fix various bugs with module chasing and reloading.

24 years ago[project @ 2000-03-24 11:54:28 by panne]
panne [Fri, 24 Mar 2000 11:54:28 +0000 (11:54 +0000)]
[project @ 2000-03-24 11:54:28 by panne]
Once again a missing import for Outputable, this time for Type.

24 years ago[project @ 2000-03-24 11:17:31 by panne]
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.

24 years ago[project @ 2000-03-24 10:43:33 by simonmar]
simonmar [Fri, 24 Mar 2000 10:43:33 +0000 (10:43 +0000)]
[project @ 2000-03-24 10:43:33 by simonmar]
fix parse error

24 years ago[project @ 2000-03-24 09:19:31 by simonpj]
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

24 years ago[project @ 2000-03-23 17:46:59 by simonpj]
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

24 years ago[project @ 2000-03-23 17:45:17 by simonpj]
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.

24 years ago[project @ 2000-03-23 16:01:16 by simonmar]
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.

24 years ago[project @ 2000-03-23 15:53:22 by rrt]
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.

24 years ago[project @ 2000-03-23 14:54:20 by sewardj]
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.

24 years ago[project @ 2000-03-23 14:30:13 by simonmar]
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.

24 years ago[project @ 2000-03-23 13:13:29 by simonmar]
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.

24 years ago[project @ 2000-03-23 12:22:04 by sewardj]
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.

24 years ago[project @ 2000-03-23 12:19:22 by sewardj]
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.

24 years ago[project @ 2000-03-23 12:02:38 by simonmar]
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.

24 years ago[project @ 2000-03-23 10:53:26 by sewardj]
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.

24 years ago[project @ 2000-03-23 09:33:17 by simonmar]
simonmar [Thu, 23 Mar 2000 09:33:17 +0000 (09:33 +0000)]
[project @ 2000-03-23 09:33:17 by simonmar]
update expected output

24 years ago[project @ 2000-03-23 09:32:36 by simonmar]
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.

24 years ago[project @ 2000-03-23 09:32:13 by simonmar]
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.

24 years ago[project @ 2000-03-22 18:17:12 by sewardj]
sewardj [Wed, 22 Mar 2000 18:17:12 +0000 (18:17 +0000)]
[project @ 2000-03-22 18:17:12 by sewardj]
Zap outdated ifdeffery.

24 years ago[project @ 2000-03-22 18:14:22 by sewardj]
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.

24 years ago[project @ 2000-03-22 14:29:54 by simonmar]
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

24 years ago[project @ 2000-03-22 13:45:54 by simonpj]
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

24 years ago[project @ 2000-03-22 12:30:52 by rrt]
rrt [Wed, 22 Mar 2000 12:30:52 +0000 (12:30 +0000)]
[project @ 2000-03-22 12:30:52 by rrt]
Removed obsolete comment.

24 years ago[project @ 2000-03-22 12:15:46 by rrt]
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.

24 years ago[project @ 2000-03-22 12:01:57 by rrt]
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)

24 years ago[project @ 2000-03-21 17:41:02 by simonmar]
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?

24 years ago[project @ 2000-03-21 16:01:17 by simonmar]
simonmar [Tue, 21 Mar 2000 16:01:17 +0000 (16:01 +0000)]
[project @ 2000-03-21 16:01:17 by simonmar]
not needed anymore.

24 years ago[project @ 2000-03-21 15:57:47 by simonmar]
simonmar [Tue, 21 Mar 2000 15:57:47 +0000 (15:57 +0000)]
[project @ 2000-03-21 15:57:47 by simonmar]
wibbles

24 years ago[project @ 2000-03-21 15:54:25 by simonmar]
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.

24 years ago[project @ 2000-03-21 14:33:18 by simonmar]
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.

24 years ago[project @ 2000-03-21 14:24:20 by simonmar]
simonmar [Tue, 21 Mar 2000 14:26:02 +0000 (14:26 +0000)]
[project @ 2000-03-21 14:24:20 by simonmar]
MutableArray/STArray fixage.

24 years ago[project @ 2000-03-21 11:38:43 by rrt]
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.

24 years ago[project @ 2000-03-21 11:33:12 by rrt]
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).

24 years ago[project @ 2000-03-21 11:22:35 by simonmar]
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.

24 years ago[project @ 2000-03-21 09:48:28 by panne]
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 :-)

24 years ago[project @ 2000-03-21 09:39:46 by simonmar]
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.

24 years ago[project @ 2000-03-20 15:49:56 by panne]
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...  :-))

24 years ago[project @ 2000-03-20 15:32:10 by panne]
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

24 years ago[project @ 2000-03-20 09:42:49 by andy]
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)

24 years ago[project @ 2000-03-20 04:26:23 by andy]
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.

24 years ago[project @ 2000-03-19 13:36:59 by panne]
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

24 years ago[project @ 2000-03-18 15:37:58 by panne]
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...

24 years ago[project @ 2000-03-18 13:07:04 by panne]
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

24 years ago[project @ 2000-03-17 17:17:48 by rrt]
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

24 years ago[project @ 2000-03-17 17:05:27 by rrt]
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.

24 years ago[project @ 2000-03-17 15:11:26 by rrt]
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).

24 years ago[project @ 2000-03-17 15:00:25 by simonmar]
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.

24 years ago[project @ 2000-03-17 14:37:21 by simonmar]
simonmar [Fri, 17 Mar 2000 14:37:22 +0000 (14:37 +0000)]
[project @ 2000-03-17 14:37:21 by simonmar]
More random cleanups.

24 years ago[project @ 2000-03-17 13:30:23 by simonmar]
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.

24 years ago[project @ 2000-03-17 12:40:03 by simonmar]
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.

24 years ago[project @ 2000-03-17 10:25:16 by simonmar]
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.

24 years ago[project @ 2000-03-17 10:24:44 by simonmar]
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.

24 years ago[project @ 2000-03-17 10:01:29 by simonmar]
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.

24 years ago[project @ 2000-03-17 09:53:19 by simonmar]
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.

24 years ago[project @ 2000-03-17 09:48:48 by simonmar]
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>.

24 years ago[project @ 2000-03-16 17:33:04 by simonmar]
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().

24 years ago[project @ 2000-03-16 17:27:12 by simonmar]
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.

24 years ago[project @ 2000-03-16 17:24:08 by simonmar]
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.

24 years ago[project @ 2000-03-16 17:23:35 by simonmar]
simonmar [Thu, 16 Mar 2000 17:23:35 +0000 (17:23 +0000)]
[project @ 2000-03-16 17:23:35 by simonmar]
decruftification

24 years ago[project @ 2000-03-16 16:22:15 by rrt]
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.

24 years ago[project @ 2000-03-16 12:40:40 by simonmar]
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.

24 years ago[project @ 2000-03-16 12:37:05 by simonmar]
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.

24 years ago[project @ 2000-03-16 09:45:02 by simonmar]
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.

24 years ago[project @ 2000-03-16 09:31:44 by simonmar]
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).

24 years ago[project @ 2000-03-15 23:28:09 by andy]
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.

24 years ago[project @ 2000-03-15 23:27:16 by andy]
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...

24 years ago[project @ 2000-03-15 17:45:33 by rrt]
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).

24 years ago[project @ 2000-03-15 17:36:02 by simonmar]
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.

24 years ago[project @ 2000-03-15 16:04:42 by rrt]
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

24 years ago[project @ 2000-03-15 15:57:26 by rrt]
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

24 years ago[project @ 2000-03-15 15:31:36 by simonmar]
simonmar [Wed, 15 Mar 2000 15:31:36 +0000 (15:31 +0000)]
[project @ 2000-03-15 15:31:36 by simonmar]
Unbreak signals.

24 years ago[project @ 2000-03-15 15:03:20 by simonmar]
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.

24 years ago[project @ 2000-03-15 11:15:19 by simonmar]
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.

24 years ago[project @ 2000-03-15 11:11:08 by simonmar]
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).

24 years ago[project @ 2000-03-15 10:54:58 by simonmar]
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.

24 years ago[project @ 2000-03-15 01:34:52 by andy]
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.

24 years ago[project @ 2000-03-14 14:34:47 by sewardj]
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.

24 years ago[project @ 2000-03-14 12:16:00 by simonmar]
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.

24 years ago[project @ 2000-03-14 11:11:40 by simonmar]
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.

24 years ago[project @ 2000-03-14 09:55:05 by simonmar]
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.