ghc-hetmet.git
22 years ago[project @ 2002-02-06 11:19:51 by chak]
chak [Wed, 6 Feb 2002 11:19:51 +0000 (11:19 +0000)]
[project @ 2002-02-06 11:19:51 by chak]
Add Julian to the author's list as he seems to shy to do it himself ;-)

22 years ago[project @ 2002-02-06 11:13:47 by sewardj]
sewardj [Wed, 6 Feb 2002 11:13:49 +0000 (11:13 +0000)]
[project @ 2002-02-06 11:13:47 by sewardj]
Clean up the AbsC -> AbsC translation of array operations.

* MachOps MO_ReadOSBI and MO_WriteOSBI, which previously did
  array indexing, are gone.  We translate now just to plain
  memory references and explicit address computations.  This
  has the happy side effect that all MachOps now return exactly
  one result (previously it was 0 or 1), cleaning up various
  bits of code.

  As a result the Abstract C structure now contains an unneccessary
  restriction, which is that the result of a MachOp can only be
  assigned to a temporary.  This made sense when MachOps had variable
  numbers of results (0, 1 or 2, originally), but is no longer needed.
  MachOps applied to args could now be allowed to appear as
  arbitrary nodes in expression trees, but so far they are not.

* Get rid of CAddrMode constructor CMem, since it is a special case of
  CVal with a RegRelative of CIndex.

AbstractC is inconsistent and non-orthogonal.  The StixStmt + StixExpr
combination expresses a large part of what AbstractC does in a cleaner
and simpler way, IMO.

22 years ago[project @ 2002-02-06 11:00:58 by simonmar]
simonmar [Wed, 6 Feb 2002 11:00:58 +0000 (11:00 +0000)]
[project @ 2002-02-06 11:00:58 by simonmar]
Import lookupModuleEnv inside #ifdef GHCI

22 years ago[project @ 2002-02-06 01:29:27 by sof]
sof [Wed, 6 Feb 2002 01:29:27 +0000 (01:29 +0000)]
[project @ 2002-02-06 01:29:27 by sof]
- use task manager API to keep track of the number
  of tasks that are blocked waiting on the RTS lock.
- comment updates/additions.

22 years ago[project @ 2002-02-06 01:26:14 by sof]
sof [Wed, 6 Feb 2002 01:26:14 +0000 (01:26 +0000)]
[project @ 2002-02-06 01:26:14 by sof]
- in the threaded case, keep track of the number of
  tasks/threads that are currently waiting to enter
  the RTS.
- taskStart():
     + only start up a new thread/task if there aren't
       any already waiting to gain RTS access.
     + honour thread/task limits (if any).

22 years ago[project @ 2002-02-06 01:21:40 by sof]
sof [Wed, 6 Feb 2002 01:21:41 +0000 (01:21 +0000)]
[project @ 2002-02-06 01:21:40 by sof]
make stat_getElapsedTime(), SMP-only again

22 years ago[project @ 2002-02-05 16:56:38 by sewardj]
sewardj [Tue, 5 Feb 2002 16:56:39 +0000 (16:56 +0000)]
[project @ 2002-02-05 16:56:38 by sewardj]
[non-code-change] complaint --> compliant

22 years ago[project @ 2002-02-05 16:44:37 by keithw]
keithw [Tue, 5 Feb 2002 16:44:37 +0000 (16:44 +0000)]
[project @ 2002-02-05 16:44:37 by keithw]
Generalise types of minusUFM and intersectUFM_C (this was applied long
ago to FiniteMap, IIRC).

Untested: I haven't got a build tree handy, so please shoot me if this
2-line change to two type signatures is type-incorrect.  Sorry!

22 years ago[project @ 2002-02-05 15:42:04 by simonpj]
simonpj [Tue, 5 Feb 2002 15:42:11 +0000 (15:42 +0000)]
[project @ 2002-02-05 15:42:04 by simonpj]
---------
Main.main
---------

A bunch of related fixes concerning 'main'

* Arrange that 'main' doesn't need to be defined in module Main;
  it can be imported.

* The typechecker now injects a binding
Main.$main = PrelTopHandler.runMain main

  So the runtime system now calls Main.$main, not PrelMain.main.
  With z-encoding, this look like
Main_zdmain_closure

* The function
   PrelTopHandler.runMain :: IO a -> IO ()
  wraps the programmer's 'main' in an exception-cacthing wrapper.

* PrelMain.hs and Main.hi-boot are both removed from lib/std, along
  with multiple lines of special case handling in lib/std/Makefile.
  This is a worthwhile cleanup.

* Since we now pick up whatever 'main' is in scope, the ranamer gets
  in on the act (RnRnv.checkMain).  There is a little more info to
  get from the renamer to the typechecker, so I've defined a new type
  Rename.RnResult (c.f. TcModule.TcResult)

* With GHCi, it's now a warning, not an error, to omit the binding
  of main (RnEnv.checkMain)

* It would be easy to add a flag "-main-is foo"; the place to use
  that information is in RnEnv.checkMain.

-------

On the way I made a new type,
type HscTypes.FixityEnv = NameEnv Fixity
and used it in various places I'd tripped over

22 years ago[project @ 2002-02-05 15:37:01 by simonpj]
simonpj [Tue, 5 Feb 2002 15:37:01 +0000 (15:37 +0000)]
[project @ 2002-02-05 15:37:01 by simonpj]
add renamer stuff

22 years ago[project @ 2002-02-05 15:34:32 by simonpj]
simonpj [Tue, 5 Feb 2002 15:34:32 +0000 (15:34 +0000)]
[project @ 2002-02-05 15:34:32 by simonpj]
Add a bit of renamer documentation

22 years ago[project @ 2002-02-05 15:02:23 by simonpj]
simonpj [Tue, 5 Feb 2002 15:02:24 +0000 (15:02 +0000)]
[project @ 2002-02-05 15:02:23 by simonpj]
Imports only

22 years ago[project @ 2002-02-05 14:46:26 by simonpj]
simonpj [Tue, 5 Feb 2002 14:46:27 +0000 (14:46 +0000)]
[project @ 2002-02-05 14:46:26 by simonpj]
Imports only

22 years ago[project @ 2002-02-05 14:43:35 by simonpj]
simonpj [Tue, 5 Feb 2002 14:43:35 +0000 (14:43 +0000)]
[project @ 2002-02-05 14:43:35 by simonpj]
Imports and comments only

22 years ago[project @ 2002-02-05 14:39:24 by simonpj]
simonpj [Tue, 5 Feb 2002 14:42:08 +0000 (14:42 +0000)]
[project @ 2002-02-05 14:39:24 by simonpj]
Imports only

22 years ago[project @ 2002-02-05 10:06:24 by simonmar]
simonmar [Tue, 5 Feb 2002 10:06:24 +0000 (10:06 +0000)]
[project @ 2002-02-05 10:06:24 by simonmar]
Fix bad bugs in deleteAllThreds: we were looping through the thread
queues calling deleteThread() on each thread as we go, but calling
deleteThread() has the side effect of removing the thread from the
relevant queue, so we would end up breaking out of the loop after
processing only a single thread.

This may fix problems like "resurrectThreads: thread blocked in a
strange way" seen after pressing ^C.

Aside: we really shouldn't be using deleteThread() at all, since it
doesn't give the thread a chance to clean up & release locks.  To be
well-behaved a program has to catch ^C itself at the moment.

22 years ago[project @ 2002-02-04 22:17:50 by sof]
sof [Mon, 4 Feb 2002 22:17:50 +0000 (22:17 +0000)]
[project @ 2002-02-04 22:17:50 by sof]
.y/.ly handling: patsubst'ery broke when HAPPY_SRCS suddenly contained two file extensions; now fixed.

22 years ago[project @ 2002-02-04 20:56:53 by sof]
sof [Mon, 4 Feb 2002 20:56:53 +0000 (20:56 +0000)]
[project @ 2002-02-04 20:56:53 by sof]
resumeThread: ifdef threads-specific code

22 years ago[project @ 2002-02-04 20:40:36 by sof]
sof [Mon, 4 Feb 2002 20:40:37 +0000 (20:40 +0000)]
[project @ 2002-02-04 20:40:36 by sof]
Snapshot of 'native thread'-friendly extension:
- call-outs now work, i.e., a Concurrent Haskell thread which
  makes an external (C) call no longer stop other CH threads
  dead in their tracks. [More testing and tightening up of
  invariants reqd, this is just a snapshot].
- separated task handling into sep. module.

22 years ago[project @ 2002-02-04 20:26:25 by sof]
sof [Mon, 4 Feb 2002 20:26:25 +0000 (20:26 +0000)]
[project @ 2002-02-04 20:26:25 by sof]
wibble

22 years ago[project @ 2002-02-04 20:25:39 by sof]
sof [Mon, 4 Feb 2002 20:25:39 +0000 (20:25 +0000)]
[project @ 2002-02-04 20:25:39 by sof]
startupHaskell: Scheduler startup now handles task creation

22 years ago[project @ 2002-02-04 20:24:14 by sof]
sof [Mon, 4 Feb 2002 20:24:14 +0000 (20:24 +0000)]
[project @ 2002-02-04 20:24:14 by sof]
Factor out the task handling into separate 'module'.
[Tasks represent native threads that execute STG code, with this
 module providing the API which the Scheduler uses to control
 their creation and destruction.]

22 years ago[project @ 2002-02-04 20:21:16 by sof]
sof [Mon, 4 Feb 2002 20:21:22 +0000 (20:21 +0000)]
[project @ 2002-02-04 20:21:16 by sof]
- sm_mutex is now a Mutex (not a pthread_mutex_t).
- sm_mutex lock/unlocks are only done for SMP builds.

22 years ago[project @ 2002-02-04 20:18:26 by sof]
sof [Mon, 4 Feb 2002 20:18:26 +0000 (20:18 +0000)]
[project @ 2002-02-04 20:18:26 by sof]
- renamed MutexVar to Mutex, CondVar to Condition.
- added yieldThread().
- simplified/specialised type of entry point to new (native) threads;
  now takes no args & returns no result.

22 years ago[project @ 2002-02-04 20:14:56 by sof]
sof [Mon, 4 Feb 2002 20:14:56 +0000 (20:14 +0000)]
[project @ 2002-02-04 20:14:56 by sof]
simplified startup of this 'sub-system', initCapabilities() takes care of it all

22 years ago[project @ 2002-02-04 20:12:08 by sof]
sof [Mon, 4 Feb 2002 20:12:09 +0000 (20:12 +0000)]
[project @ 2002-02-04 20:12:08 by sof]
stat_getElapsedTime(): now visible when RTS_SUPPORTS_THREADS is defined (was: SMP only)

22 years ago[project @ 2002-02-04 20:10:47 by sof]
sof [Mon, 4 Feb 2002 20:10:47 +0000 (20:10 +0000)]
[project @ 2002-02-04 20:10:47 by sof]
moved {ACQUIRE,RELEASE}_LOCK to OSThreads.h

22 years ago[project @ 2002-02-04 17:09:02 by sewardj]
sewardj [Mon, 4 Feb 2002 17:09:02 +0000 (17:09 +0000)]
[project @ 2002-02-04 17:09:02 by sewardj]
Also implement MO_32U_to_8U for sparc.  sigh.

22 years ago[project @ 2002-02-04 16:47:47 by sewardj]
sewardj [Mon, 4 Feb 2002 16:47:47 +0000 (16:47 +0000)]
[project @ 2002-02-04 16:47:47 by sewardj]
Implement missing MachOp, MO_8U_to_32U, for sparc.  (duh!)

22 years ago[project @ 2002-02-04 16:30:20 by sewardj]
sewardj [Mon, 4 Feb 2002 16:30:20 +0000 (16:30 +0000)]
[project @ 2002-02-04 16:30:20 by sewardj]
Adding section descriptions, for ELF: don't record sections satisfying

   size == 0
   ||
   kind `notElem` [SECTIONKIND_CODE_OR_RODATA, SECTIONKIND_RWDATA]

The latter condition is really an optimisation based on knowledge of
what queries will be made of the table.  Still, seems to work, and
reduces the number of sections in the list by about a factor of 3,
so hopefully will improve GC performance in GHCi.

If you get wierd GC problems in GHCi ... this may be to blame.

22 years ago[project @ 2002-02-04 13:59:48 by simonmar]
simonmar [Mon, 4 Feb 2002 13:59:48 +0000 (13:59 +0000)]
[project @ 2002-02-04 13:59:48 by simonmar]
wibble

22 years ago[project @ 2002-02-04 13:54:53 by sewardj]
sewardj [Mon, 4 Feb 2002 13:54:53 +0000 (13:54 +0000)]
[project @ 2002-02-04 13:54:53 by sewardj]
Expand out use of modifyIORef because 4.08.2 doesn't have that.

22 years ago[project @ 2002-02-04 12:23:02 by simonmar]
simonmar [Mon, 4 Feb 2002 12:23:02 +0000 (12:23 +0000)]
[project @ 2002-02-04 12:23:02 by simonmar]
HC_OPTS is now used in both .c and .hc compilations (again).

22 years ago[project @ 2002-02-04 12:22:33 by simonmar]
simonmar [Mon, 4 Feb 2002 12:22:33 +0000 (12:22 +0000)]
[project @ 2002-02-04 12:22:33 by simonmar]
GhcRtsHcOpts is included in both .c and .hc compilations (again).

22 years ago[project @ 2002-02-04 12:21:45 by simonmar]
simonmar [Mon, 4 Feb 2002 12:21:45 +0000 (12:21 +0000)]
[project @ 2002-02-04 12:21:45 by simonmar]
GHC_CC_OPTS should include HC_OPTS

22 years ago[project @ 2002-02-04 12:15:39 by sewardj]
sewardj [Mon, 4 Feb 2002 12:15:39 +0000 (12:15 +0000)]
[project @ 2002-02-04 12:15:39 by sewardj]
Start to record some stuff about GHCi.

22 years ago[project @ 2002-02-04 12:14:50 by simonpj]
simonpj [Mon, 4 Feb 2002 12:14:50 +0000 (12:14 +0000)]
[project @ 2002-02-04 12:14:50 by simonpj]
Add a bit of documentation on implicit params

22 years ago[project @ 2002-02-04 12:09:44 by simonmar]
simonmar [Mon, 4 Feb 2002 12:09:44 +0000 (12:09 +0000)]
[project @ 2002-02-04 12:09:44 by simonmar]
oops, fix HC_OBJS for non-normal ways.

22 years ago[project @ 2002-02-04 11:59:55 by simonpj]
simonpj [Mon, 4 Feb 2002 11:59:55 +0000 (11:59 +0000)]
[project @ 2002-02-04 11:59:55 by simonpj]
-----------------------------
Improve type validity checking
-----------------------------

Two main effects here

a) Type synonyms can be unboxed tuples
tupe T = (# Int, Int #)

f :: Int -> T

b) Hoisting works for implicit parameters

f :: Int -> (?x::Int) => Int

22 years ago[project @ 2002-02-04 11:58:30 by simonpj]
simonpj [Mon, 4 Feb 2002 11:58:30 +0000 (11:58 +0000)]
[project @ 2002-02-04 11:58:30 by simonpj]
Correct assertion

22 years ago[project @ 2002-02-04 11:57:58 by simonpj]
simonpj [Mon, 4 Feb 2002 11:57:58 +0000 (11:57 +0000)]
[project @ 2002-02-04 11:57:58 by simonpj]
Document hoisting and implicit quantification

22 years ago[project @ 2002-02-04 11:49:33 by simonmar]
simonmar [Mon, 4 Feb 2002 11:49:33 +0000 (11:49 +0000)]
[project @ 2002-02-04 11:49:33 by simonmar]
Tighten up syntax w.r.t. Haskell 98; this is disallowed:

(a `op` b) = ...

since a parenthesised lhs must be followed by at least one parameter.

22 years ago[project @ 2002-02-04 10:48:11 by sewardj]
sewardj [Mon, 4 Feb 2002 10:48:11 +0000 (10:48 +0000)]
[project @ 2002-02-04 10:48:11 by sewardj]
Clarify explaination about problems with x87 FPU stack invalid exceptions.

22 years ago[project @ 2002-02-04 09:05:45 by chak]
chak [Mon, 4 Feb 2002 09:05:46 +0000 (09:05 +0000)]
[project @ 2002-02-04 09:05:45 by chak]
Conformed the FFI libraries to meet the FFI Addendum 1.0 specification (except
hs_init() and friends).

22 years ago[project @ 2002-02-04 03:40:31 by chak]
chak [Mon, 4 Feb 2002 03:40:33 +0000 (03:40 +0000)]
[project @ 2002-02-04 03:40:31 by chak]
Foreign import/export declarations now conform to FFI Addendum Version 1.0

* The old form of foreign declarations is still supported, but generates
  deprecation warnings.

* There are some rather exotic old-style declarations which have become
  invalid as they are interpreted differently under the new scheme and there
  is no (easy) way to determine which style the programmer had in mind (eg,
  importing a C function with the name `wrapper' where the external name is
  explicitly given will not work in some situations - depends on whether an
  `unsafe' was specified and similar things).

* Some "new" old-style forms have been introduced to make parsing a little bit
  easier (ie, avoid shift/reduce conflicts between new-style and old-style
  grammar rules), but they are few, arcane, and don't really hurt (and I won't
  tell what they are, you need to find that out by yourself ;-)

* The FFI Addendum doesn't specify whether a header file that is requested for
  inclusion by multiple foreign declarations should be included only once or
  multiple times.  GHC at the moment includes an header as often as it appears
  in a foreign declaration.  For properly written headers, it doesn't make a
  difference anyway...

* Library object specifications are currently silently ignored.  The feature
  was mainly requested for external calls in .NET (ie, calls which invoke C
  routines when Haskell is compiled to ILX), but those don't seem to be
  supported yet.

* Foreign label declarations are currently broken, but they were already
  broken before I started messing with the stuff.

The code is moderately tested.  All modules in lib/std/ and hslibs/lang/
(using old-style declarations) still compile fine and I have run a couple of
tests on the different forms of new-style declarations.

22 years ago[project @ 2002-02-03 17:08:55 by sof]
sof [Sun, 3 Feb 2002 17:08:55 +0000 (17:08 +0000)]
[project @ 2002-02-03 17:08:55 by sof]
document the environment variable expansion done in input package specifications

22 years ago[project @ 2002-02-03 17:06:12 by sof]
sof [Sun, 3 Feb 2002 17:06:12 +0000 (17:06 +0000)]
[project @ 2002-02-03 17:06:12 by sof]
Provide support for authors that want to distribute packages, by
expanding occurrences of "${foo}" in an input package spec with
the value of the 'foo' environment variable. This permits easy
configuration at install-time, e.g.,

  $ libdir=/opt/haskell/packages/lib ghc-pkg -a < NewPackage.pkg

[Clearly, a separate preprocessing pass using some other tool could
 provide identical functionality. However, the benefits to the
 package author of not having to depend on such a tool being present
 on a user's box was considered more important.
]

22 years ago[project @ 2002-02-03 04:44:07 by sof]
sof [Sun, 3 Feb 2002 04:44:07 +0000 (04:44 +0000)]
[project @ 2002-02-03 04:44:07 by sof]
recognize .ly as a happy extension

22 years ago[project @ 2002-02-02 06:47:38 by sof]
sof [Sat, 2 Feb 2002 06:47:38 +0000 (06:47 +0000)]
[project @ 2002-02-02 06:47:38 by sof]
pprFCall: avoid/reduce name-capture problem (as was, safe calling
the C function id() would break.)

22 years ago[project @ 2002-02-01 17:40:11 by sewardj]
sewardj [Fri, 1 Feb 2002 17:40:11 +0000 (17:40 +0000)]
[project @ 2002-02-01 17:40:11 by sewardj]
Add details clarifying the precise treatment of MagicIds in Stix.

22 years ago[project @ 2002-02-01 16:32:33 by sewardj]
sewardj [Fri, 1 Feb 2002 16:32:33 +0000 (16:32 +0000)]
[project @ 2002-02-01 16:32:33 by sewardj]
Some stuff I forgot.

22 years ago[project @ 2002-02-01 16:18:33 by sewardj]
sewardj [Fri, 1 Feb 2002 16:18:33 +0000 (16:18 +0000)]
[project @ 2002-02-01 16:18:33 by sewardj]
Finish off the NCG documentation.

22 years ago[project @ 2002-02-01 15:18:18 by simonmar]
simonmar [Fri, 1 Feb 2002 15:18:19 +0000 (15:18 +0000)]
[project @ 2002-02-01 15:18:18 by simonmar]
Include the patchlevel in the hi version number.

22 years ago[project @ 2002-02-01 11:38:32 by simonpj]
simonpj [Fri, 1 Feb 2002 11:38:33 +0000 (11:38 +0000)]
[project @ 2002-02-01 11:38:32 by simonpj]
More wibbles on deriving with -fallow-undecidable-instances

22 years ago[project @ 2002-02-01 11:31:27 by simonmar]
simonmar [Fri, 1 Feb 2002 11:31:27 +0000 (11:31 +0000)]
[project @ 2002-02-01 11:31:27 by simonmar]
Move showHex, showOct, showBin and showIntAtBase from NumExts to
Numeric as per recent changes to Haskell 98.

22 years ago[project @ 2002-02-01 10:50:35 by simonmar]
simonmar [Fri, 1 Feb 2002 10:50:35 +0000 (10:50 +0000)]
[project @ 2002-02-01 10:50:35 by simonmar]
When distinguishing between code & data pointers, rather than testing
for membership of the text section, test for not membership of one of
the data sections.

The reason for this change is that testing for membership of the text
section was fragile:  we could only test whether a value was smaller
than the end address, because there doesn't appear to be a portable
way to find the beginning of the text section.  Indeed, the test
breaks on very recent Linux kernels which mmap() memory below the
program text.

In fact, the reversed test may be faster because the expected common
case is when the pointer is into the dynamic heap, and we eliminate
these case immediately in the new test.  A quick test shows no
measurable performance difference with the change.

MERGE TO STABLE

22 years ago[project @ 2002-02-01 02:05:52 by sof]
sof [Fri, 1 Feb 2002 02:05:52 +0000 (02:05 +0000)]
[project @ 2002-02-01 02:05:52 by sof]
Add URLs and other pointers to resources on the PE COFF format.

22 years ago[project @ 2002-01-31 23:04:15 by sof]
sof [Thu, 31 Jan 2002 23:04:30 +0000 (23:04 +0000)]
[project @ 2002-01-31 23:04:15 by sof]
Win32 implementation, first pass.

22 years ago[project @ 2002-01-31 18:01:34 by sewardj]
sewardj [Thu, 31 Jan 2002 18:01:34 +0000 (18:01 +0000)]
[project @ 2002-01-31 18:01:34 by sewardj]
Make a quite-large start on native code generator documentation.

22 years ago[project @ 2002-01-31 17:48:26 by simonpj]
simonpj [Thu, 31 Jan 2002 17:48:27 +0000 (17:48 +0000)]
[project @ 2002-01-31 17:48:26 by simonpj]
Wibbles to yesterdays changes

22 years ago[project @ 2002-01-31 14:32:04 by simonmar]
simonmar [Thu, 31 Jan 2002 14:32:04 +0000 (14:32 +0000)]
[project @ 2002-01-31 14:32:04 by simonmar]
Update the building guide w.r.t. the enhanced source-file-searching
mechanisms now in fptools/mk/paths.mk.

Also, add a small section on Makefile debugging while I'm here,
mentioning in particular 'make show'.

22 years ago[project @ 2002-01-31 13:46:38 by simonmar]
simonmar [Thu, 31 Jan 2002 13:46:38 +0000 (13:46 +0000)]
[project @ 2002-01-31 13:46:38 by simonmar]
Add test for GHCi w/ Happy-generated parsers.

22 years ago[project @ 2002-01-31 13:42:20 by simonmar]
simonmar [Thu, 31 Jan 2002 13:42:20 +0000 (13:42 +0000)]
[project @ 2002-01-31 13:42:20 by simonmar]
Fix a classic bug: copying a Haskell string with one of the C string
functions (in this case strncpy()) is wrong when the string contains
'\0' characters.

The symptom in this case is that Happy parsers created with -ag don't
work in GHCi, because the state tables are encoded as strings
containing lots of '\0' elements.

22 years ago[project @ 2002-01-31 12:20:13 by sewardj]
sewardj [Thu, 31 Jan 2002 12:20:13 +0000 (12:20 +0000)]
[project @ 2002-01-31 12:20:13 by sewardj]
fix markup bug

22 years ago[project @ 2002-01-31 11:18:06 by sof]
sof [Thu, 31 Jan 2002 11:18:07 +0000 (11:18 +0000)]
[project @ 2002-01-31 11:18:06 by sof]
First steps towards implementing better interop between
Concurrent Haskell and native threads.

- factored out Capability handling into a separate source file
  (only the SMP build uses multiple capabilities tho).
- factored out OS/native threads handling into a separate
  source file, OSThreads.{c,h}. Currently, just a pthreads-based
  implementation; Win32 version to follow.
- scheduler code now distinguishes between multi-task threaded
  code (SMP) and single-task threaded code ('threaded RTS'),
  but sharing code between these two modes whenever poss.

i.e., just a first snapshot; the bulk of the transitioning code
remains to be implemented.

22 years ago[project @ 2002-01-31 10:48:55 by sof]
sof [Thu, 31 Jan 2002 10:48:55 +0000 (10:48 +0000)]
[project @ 2002-01-31 10:48:55 by sof]
new define, RTS_SUPPORTS_THREADS - defined in SMP and 'threaded' modes of operation

22 years ago[project @ 2002-01-31 10:47:47 by sof]
sof [Thu, 31 Jan 2002 10:47:47 +0000 (10:47 +0000)]
[project @ 2002-01-31 10:47:47 by sof]
Pass -lpthread to linker when using a 'threaded' RTS

22 years ago[project @ 2002-01-31 10:42:27 by sof]
sof [Thu, 31 Jan 2002 10:42:28 +0000 (10:42 +0000)]
[project @ 2002-01-31 10:42:27 by sof]
- new option --enable-threaded-rts, which turns on
  RTS support for better interop with native threads.
- check for pthread.h
- new config.mk variable, GhcRtsThreaded (={YES,NO})

22 years ago[project @ 2002-01-31 07:04:27 by sof]
sof [Thu, 31 Jan 2002 07:04:27 +0000 (07:04 +0000)]
[project @ 2002-01-31 07:04:27 by sof]
got tired of seeing gcc trigraph warning

22 years ago[project @ 2002-01-30 17:19:15 by simonmar]
simonmar [Wed, 30 Jan 2002 17:19:15 +0000 (17:19 +0000)]
[project @ 2002-01-30 17:19:15 by simonmar]
Add a short section on modules & packages.

22 years ago[project @ 2002-01-30 17:16:36 by simonpj]
simonpj [Wed, 30 Jan 2002 17:16:37 +0000 (17:16 +0000)]
[project @ 2002-01-30 17:16:36 by simonpj]
-----------------------------
Tidy up the top level of TcModule
-----------------------------

This commit started life as sorting out the TcInstDcls thing that
we got wrong a few weeks back, but it spiraled out of control.

However, the result is a nice tidy up of TcModule.

typecheckModule/tcModule compiles a module from source code
typecheckIface/tcIface   compiles a module from its interface file
typecheckStmt  compiles a Stmt
typecheckExpr  compiles a Expr

tcExtraDecls is used by typecheckStmt/typecheckExpr
to compile interface-file decls.
It is just a wrapper for:

tcIfaceImports, which is used by tcExtraDecls and tcIface
to compile interface file-file decls.

tcImports, is similar to tcIfaceImports, but is used only by tcModule

tcIfaceImports is used when compiling an interface, and can
therefore be quite a bit simpler

22 years ago[project @ 2002-01-30 17:16:04 by simonpj]
simonpj [Wed, 30 Jan 2002 17:16:04 +0000 (17:16 +0000)]
[project @ 2002-01-30 17:16:04 by simonpj]
Improved printing

22 years ago[project @ 2002-01-30 16:54:18 by simonmar]
simonmar [Wed, 30 Jan 2002 16:54:18 +0000 (16:54 +0000)]
[project @ 2002-01-30 16:54:18 by simonmar]
Fix markup bug.

22 years ago[project @ 2002-01-30 16:37:59 by simonmar]
simonmar [Wed, 30 Jan 2002 16:37:59 +0000 (16:37 +0000)]
[project @ 2002-01-30 16:37:59 by simonmar]
comsetic only: shorten some lines.

22 years ago[project @ 2002-01-30 16:37:14 by simonmar]
simonmar [Wed, 30 Jan 2002 16:37:18 +0000 (16:37 +0000)]
[project @ 2002-01-30 16:37:14 by simonmar]
Simplify the package story inside the compiler.  The new story is
this:

  The Finder no longer determines a module's package based on its
  filesystem location.  The filesystem location indicates only whether
  a given module is in the current package or not (i.e. found along
  the -i path ==> current package, found along the package path ==>
  other package).

  Hence a Module no longer contains a package name.  Instead it just
  contains PackageInfo, which is either ThisPackage or AnotherPackage.
  The compiler uses this information for generating cross-DLL calls
  and omitting certain version information from .hi files.

  The interface still contains the package name.  This isn't used for
  anything right now, but in the future (when we have hierarchical
  libraries) we might use it to automatically determine which packages
  a binary should be linked against.  When building a package, you
  should still use -package-name, but it won't be fatal if you don't.

The warning/error about package name mismatches has gone away.

22 years ago[project @ 2002-01-30 16:27:34 by simonmar]
simonmar [Wed, 30 Jan 2002 16:27:34 +0000 (16:27 +0000)]
[project @ 2002-01-30 16:27:34 by simonmar]
Set $(HC) *after* including boilerplate.mk, which re-defines it.

22 years ago[project @ 2002-01-30 16:25:20 by simonmar]
simonmar [Wed, 30 Jan 2002 16:25:20 +0000 (16:25 +0000)]
[project @ 2002-01-30 16:25:20 by simonmar]
Don't use :: rules for building HSstd.o, they cause it to be rebuilt
every time.  According to the GNU make manual, :: rules are vary
rarely actually useful, and I'm sure we use them too much.

22 years ago[project @ 2002-01-30 14:05:36 by simonmar]
simonmar [Wed, 30 Jan 2002 14:05:36 +0000 (14:05 +0000)]
[project @ 2002-01-30 14:05:36 by simonmar]
Minor cleanups.

22 years ago[project @ 2002-01-30 14:05:01 by simonmar]
simonmar [Wed, 30 Jan 2002 14:05:01 +0000 (14:05 +0000)]
[project @ 2002-01-30 14:05:01 by simonmar]
Cleanup sweep, we can now use more of the std fptools build system
machinery in here.

22 years ago[project @ 2002-01-30 14:01:29 by simonmar]
simonmar [Wed, 30 Jan 2002 14:01:29 +0000 (14:01 +0000)]
[project @ 2002-01-30 14:01:29 by simonmar]
- .hsc sources can generate .hc files too
- Fix the sense of a conditional

22 years ago[project @ 2002-01-30 13:23:25 by sewardj]
sewardj [Wed, 30 Jan 2002 13:23:25 +0000 (13:23 +0000)]
[project @ 2002-01-30 13:23:25 by sewardj]
Fix debug build.

22 years ago[project @ 2002-01-30 13:13:55 by simonmar]
simonmar [Wed, 30 Jan 2002 13:13:55 +0000 (13:13 +0000)]
[project @ 2002-01-30 13:13:55 by simonmar]
Oops, better not pre-compute PRE_SRCS in paths.mk, because ALL_DIRS is
not set yet.  Instead, defer it until we include target.mk.

22 years ago[project @ 2002-01-30 12:17:21 by simonmar]
simonmar [Wed, 30 Jan 2002 12:17:21 +0000 (12:17 +0000)]
[project @ 2002-01-30 12:17:21 by simonmar]
Clean up this Makefile:

  - Use the enhanced automatic source-finding machinery from
    paths.mk rather than rolling our own,

  - Turn on UseGhcForCc to get our C files compiled with GHC.
    This fixes some obscure bugs caused by the fact that we
    were re-initializing $(CC_OPTS) in this Makefile using
    :=, when it had previously already been set with = (apparently
    different versions of GNU make behave differently presented
    with this kind of mixed assigment).

22 years ago[project @ 2002-01-30 12:13:59 by simonmar]
simonmar [Wed, 30 Jan 2002 12:13:59 +0000 (12:13 +0000)]
[project @ 2002-01-30 12:13:59 by simonmar]
GHC_CC_OPTS is a derived version of CC_OPTS with -optc prepended to
each option.  This is used when $(UseGhcForCc) = "YES" (see suffix.mk).

22 years ago[project @ 2002-01-30 12:13:11 by simonmar]
simonmar [Wed, 30 Jan 2002 12:13:11 +0000 (12:13 +0000)]
[project @ 2002-01-30 12:13:11 by simonmar]
Introduce a new tweakable $(UseGhcForCc) which if set to "YES" enables
a different set of suffix rules which build C-ish files using $(HC)
instead of $(CC).  We'll use this to clean up the ghc/rts Makefile.

22 years ago[project @ 2002-01-30 12:11:35 by simonmar]
simonmar [Wed, 30 Jan 2002 12:11:35 +0000 (12:11 +0000)]
[project @ 2002-01-30 12:11:35 by simonmar]
- Consider .hc files as real sources unless they are derived from
  .hs/.lhs sources (using the existing "derived sources" mechanism").

- Set PRE_SRCS using := rather than =, to avoid re-expanding the
  $(wildcard) multiple times.  In a simple test I did, this can save
  a 1/4 second (depending on the size of the directores involved) per
  make!

22 years ago[project @ 2002-01-30 10:52:38 by sewardj]
sewardj [Wed, 30 Jan 2002 10:52:38 +0000 (10:52 +0000)]
[project @ 2002-01-30 10:52:38 by sewardj]
Fix syntax error in printing indirect calls in sparc assembly.

22 years ago[project @ 2002-01-30 10:30:34 by simonmar]
simonmar [Wed, 30 Jan 2002 10:30:34 +0000 (10:30 +0000)]
[project @ 2002-01-30 10:30:34 by simonmar]
- Allow sources from multiple subdirectories to be selected, by
  setting $(ALL_DIRS).

- Automatically detect Happy sources in the same way as other kinds
  of sources.

22 years ago[project @ 2002-01-30 01:06:14 by sof]
sof [Wed, 30 Jan 2002 01:06:15 +0000 (01:06 +0000)]
[project @ 2002-01-30 01:06:14 by sof]
cope with the fact that StgTickyHeader is no more

22 years ago[project @ 2002-01-29 19:26:38 by krasimir]
krasimir [Tue, 29 Jan 2002 19:26:38 +0000 (19:26 +0000)]
[project @ 2002-01-29 19:26:38 by krasimir]
Add ObjectIO to standard packages

22 years ago[project @ 2002-01-29 18:50:28 by sof]
sof [Tue, 29 Jan 2002 18:50:28 +0000 (18:50 +0000)]
[project @ 2002-01-29 18:50:28 by sof]
Add ProjectPatchLevel

22 years ago[project @ 2002-01-29 18:32:18 by sof]
sof [Tue, 29 Jan 2002 18:32:18 +0000 (18:32 +0000)]
[project @ 2002-01-29 18:32:18 by sof]
StgParHeader&StgTickyHeader vestige removal

22 years ago[project @ 2002-01-29 18:28:49 by sof]
sof [Tue, 29 Jan 2002 18:28:49 +0000 (18:28 +0000)]
[project @ 2002-01-29 18:28:49 by sof]
sigh, steer clear of mingw backquoting issues

22 years ago[project @ 2002-01-29 17:12:53 by simonmar]
simonmar [Tue, 29 Jan 2002 17:12:53 +0000 (17:12 +0000)]
[project @ 2002-01-29 17:12:53 by simonmar]
Add instance Eq Exception (and hence instance Eq IOError).

22 years ago[project @ 2002-01-29 16:54:41 by sewardj]
sewardj [Tue, 29 Jan 2002 16:54:41 +0000 (16:54 +0000)]
[project @ 2002-01-29 16:54:41 by sewardj]
x86 only: remove special ccall support for calling PerformGC_wrapper
using dodgy-looking calling convention.  PerformGC_wrapper was last
seen alive in GHC 3.X, AFAIK.

22 years ago[project @ 2002-01-29 16:52:46 by simonmar]
simonmar [Tue, 29 Jan 2002 16:52:46 +0000 (16:52 +0000)]
[project @ 2002-01-29 16:52:46 by simonmar]
Remove some empty structs that weren't used.  Apparently empty structs
are illegal C.

22 years ago[project @ 2002-01-29 16:52:25 by sewardj]
sewardj [Tue, 29 Jan 2002 16:52:32 +0000 (16:52 +0000)]
[project @ 2002-01-29 16:52:25 by sewardj]
sparc NCG fixes for f-i-dynamic.

22 years ago[project @ 2002-01-29 16:50:08 by simonmar]
simonmar [Tue, 29 Jan 2002 16:50:08 +0000 (16:50 +0000)]
[project @ 2002-01-29 16:50:08 by simonmar]
Remove StgParInfo - not used anywhere.

22 years ago[project @ 2002-01-29 16:49:42 by simonmar]
simonmar [Tue, 29 Jan 2002 16:49:42 +0000 (16:49 +0000)]
[project @ 2002-01-29 16:49:42 by simonmar]
Remove PAR_ITBL_SIZE - not used anywhere.

22 years ago[project @ 2002-01-29 16:24:08 by simonmar]
simonmar [Tue, 29 Jan 2002 16:24:08 +0000 (16:24 +0000)]
[project @ 2002-01-29 16:24:08 by simonmar]
Inline mpz_cmp_si() into cmpIntegerInt#, and mpz_cmp() into cmpInteger#
to offset recent performance degradation caused by outlining of these
primitives.

Also remove heap checks in these primitives: they don't do any
allocation, so no heap check is necessary.