ghc-hetmet.git
25 years ago[project @ 1999-11-02 17:19:15 by simonmar]
simonmar [Tue, 2 Nov 1999 17:19:17 +0000 (17:19 +0000)]
[project @ 1999-11-02 17:19:15 by simonmar]
Time the shutdown code as well as the initialisation code.  This
figure is sometimes significant for SMP, because the tasks are all
killed by a signal (at the moment) and it might take a while for the
signal to be delivered.

25 years ago[project @ 1999-11-02 17:17:47 by simonmar]
simonmar [Tue, 2 Nov 1999 17:17:47 +0000 (17:17 +0000)]
[project @ 1999-11-02 17:17:47 by simonmar]
Fix CAF_BLACKHOLE and BLACKHOLE_BQ entry code for SMP case (it was
going into a busy locking state through comparing against the wrong
info pointer)

25 years ago[project @ 1999-11-02 17:08:28 by simonmar]
simonmar [Tue, 2 Nov 1999 17:08:28 +0000 (17:08 +0000)]
[project @ 1999-11-02 17:08:28 by simonmar]
Remove accidental wibble that made it in with the last commit

25 years ago[project @ 1999-11-02 17:04:28 by simonmar]
simonmar [Tue, 2 Nov 1999 17:04:28 +0000 (17:04 +0000)]
[project @ 1999-11-02 17:04:28 by simonmar]
make the prototypes of suspendThread and resumeThread available to the RTS.

25 years ago[project @ 1999-11-02 15:05:38 by simonmar]
simonmar [Tue, 2 Nov 1999 15:06:05 +0000 (15:06 +0000)]
[project @ 1999-11-02 15:05:38 by simonmar]
This commit adds in the current state of our SMP support.  Notably,
this allows the new way 's' to be built, providing support for running
multiple Haskell threads simultaneously on top of any pthreads
implementation, the idea being to take advantage of commodity SMP
boxes.

Don't expect to get much of a speedup yet; due to the excessive
locking required to synchronise access to mutable heap objects, you'll
see a slowdown in most cases, even on a UP machine.  The best I've
seen is a 1.6-1.7 speedup on an example that did no locking (two
optimised nfibs in parallel).

- new RTS -N flag specifies how many pthreads to start.

- new driver -smp flag, tells the driver to use way 's'.

- new compiler -fsmp option (not for user comsumption)
  tells the compiler not to generate direct jumps to
  thunk entry code.

- largely rewritten scheduler

- _ccall_GC is now done by handing back a "token" to the
  RTS before executing the ccall; it should now be possible
  to execute blocking ccalls in the current thread while
  allowing the RTS to continue running Haskell threads as
  normal.

- you can only call thread-safe C libraries from a way 's'
  build, of course.

Pthread support is still incomplete, and weird things (including
deadlocks) are likely to happen.

25 years ago[project @ 1999-11-02 13:58:57 by sof]
sof [Tue, 2 Nov 1999 13:58:57 +0000 (13:58 +0000)]
[project @ 1999-11-02 13:58:57 by sof]
expected output

25 years ago[project @ 1999-11-02 11:57:15 by simonmar]
simonmar [Tue, 2 Nov 1999 11:57:16 +0000 (11:57 +0000)]
[project @ 1999-11-02 11:57:15 by simonmar]
Add simple "raw" style callback example (i.e. not using the FFI).  Just
for testing _ccall_GC really.

25 years ago[project @ 1999-11-02 11:55:02 by sof]
sof [Tue, 2 Nov 1999 11:55:02 +0000 (11:55 +0000)]
[project @ 1999-11-02 11:55:02 by sof]
Simple example of callback'ery in action

25 years ago[project @ 1999-11-02 11:25:42 by sof]
sof [Tue, 2 Nov 1999 11:25:42 +0000 (11:25 +0000)]
[project @ 1999-11-02 11:25:42 by sof]
updated with expected-output files

25 years ago[project @ 1999-11-02 10:31:54 by simonpj]
simonpj [Tue, 2 Nov 1999 10:31:54 +0000 (10:31 +0000)]
[project @ 1999-11-02 10:31:54 by simonpj]
Fix bug in instance Dynamic (Either a b)

25 years ago[project @ 1999-11-01 18:19:39 by sewardj]
sewardj [Mon, 1 Nov 1999 18:19:41 +0000 (18:19 +0000)]
[project @ 1999-11-01 18:19:39 by sewardj]
Computation of max-stack-use during BCO generation was completely bogus.
Fix it.  Also, add a i_STK_CHECK_big insn with 16-bit opcode.

25 years ago[project @ 1999-11-01 18:17:45 by sewardj]
sewardj [Mon, 1 Nov 1999 18:17:45 +0000 (18:17 +0000)]
[project @ 1999-11-01 18:17:45 by sewardj]
Correctly evacuate BCOs on the large object list.  Was causing
okeefe_neural to fail.

25 years ago[project @ 1999-11-01 17:09:54 by simonpj]
simonpj [Mon, 1 Nov 1999 17:10:57 +0000 (17:10 +0000)]
[project @ 1999-11-01 17:09:54 by simonpj]
A regrettably-gigantic commit that puts in place what Simon PJ
has been up to for the last month or so, on and off.

The basic idea was to restore unfoldings to *occurrences* of
variables without introducing a space leak.  I wanted to make
sure things improved relative to 4.04, and that proved depressingly
hard.  On the way I discovered several quite serious bugs in the
simplifier.

Here's a summary of what's gone on.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* No commas between for-alls in RULES.  This makes the for-alls have
  the same syntax as in types.

* Arrange that simplConArgs works in one less pass than before.
  This exposed a bug: a bogus call to completeBeta.

* Add a top-level flag in CoreUnfolding, used in callSiteInline

* Extend w/w to use etaExpandArity, so it does eta/coerce expansion

* Implement inline phases.   The meaning of the inline pragmas is
  described in CoreUnfold.lhs.  You can say things like
{#- INLINE 2 build #-}
  to mean "inline build in phase 2"

* Don't float anything out of an INLINE.
  Don't float things to top level unless they also escape a value lambda.
[see comments with SetLevels.lvlMFE
  Without at least one of these changes, I found that
{-# INLINE concat #-}
concat = __inline (/\a -> foldr (++) [])
  was getting floated to
concat = __inline( /\a -> lvl a )
lvl = ...inlined version of foldr...

  Subsequently I found that not floating constants out of an INLINE
  gave really bad code like
__inline (let x = e in \y -> ...)
  so I now let things float out of INLINE

* Implement the "reverse-mapping" idea for CSE; actually it turned out to be easier
  to implement it in SetLevels, and may benefit full laziness too.

* It's a good idea to inline inRange. Consider

index (l,h) i = case inRange (l,h) i of
     True ->  l+i
  False -> error
  inRange itself isn't strict in h, but if it't inlined then 'index'
  *does* become strict in h.  Interesting!

* Big change to the way unfoldings and occurrence info is propagated in the simplifier
  The plan is described in Subst.lhs with the Subst type
  Occurrence info is now in a separate IdInfo field than user pragmas

* I found that
(coerce T (coerce S (\x.e))) y
  didn't simplify in one round. First we get to
(\x.e) y
  and only then do the beta. Solution: cancel the coerces in the continuation

* Amazingly, CoreUnfold wasn't counting the cost of a function an application.

* Disable rules in initial simplifier run.  Otherwise full laziness
  doesn't get a chance to lift out a MFE before a rule (e.g. fusion)
  zaps it.  queens is a case in point

* Improve float-out stuff significantly.  The big change is that if we have

\x -> ... /\a -> ...let p = ..a.. in let q = ...p...

  where p's rhs doesn't x, we abstract a from p, so that we can get p past x.
  (We did that before.)  But we also substitute (p a) for p in q, and then
  we can do the same thing for q.  (We didn't do that, so q got stuck.)
  This is much better.  It involves doing a substitution "as we go" in SetLevels,
  though.

25 years ago[project @ 1999-11-01 16:07:48 by simonpj]
simonpj [Mon, 1 Nov 1999 16:07:56 +0000 (16:07 +0000)]
[project @ 1999-11-01 16:07:48 by simonpj]
fromInt stuff and other wibbles

25 years ago[project @ 1999-11-01 16:06:34 by simonpj]
simonpj [Mon, 1 Nov 1999 16:06:35 +0000 (16:06 +0000)]
[project @ 1999-11-01 16:06:34 by simonpj]
Minor tweaks to intro, and description of RULES

25 years ago[project @ 1999-11-01 14:20:18 by sof]
sof [Mon, 1 Nov 1999 14:20:18 +0000 (14:20 +0000)]
[project @ 1999-11-01 14:20:18 by sof]
ppr change that should have been included with prev absCSyn/ commit

25 years ago[project @ 1999-11-01 12:12:58 by sewardj]
sewardj [Mon, 1 Nov 1999 12:12:58 +0000 (12:12 +0000)]
[project @ 1999-11-01 12:12:58 by sewardj]
Increase NUM_TEXT to 100000 so okeefe_neural will parse.

25 years ago[project @ 1999-11-01 11:07:07 by sewardj]
sewardj [Mon, 1 Nov 1999 11:07:07 +0000 (11:07 +0000)]
[project @ 1999-11-01 11:07:07 by sewardj]
Nuke #if OVERLOADED_CONSTANTS, since H98 requires it by default.

25 years ago[project @ 1999-11-01 11:01:11 by sewardj]
sewardj [Mon, 1 Nov 1999 11:01:13 +0000 (11:01 +0000)]
[project @ 1999-11-01 11:01:11 by sewardj]
Fix codegen bug causing cg028.hs to fail.  namePmDouble was not bound
to anything, which caused translations of patterns containing doubles
to contain NILs.  Also bound namePmInteger since it didn't seem to be
bound to anything.

25 years ago[project @ 1999-11-01 10:16:43 by sof]
sof [Mon, 1 Nov 1999 10:16:43 +0000 (10:16 +0000)]
[project @ 1999-11-01 10:16:43 by sof]
updated

25 years ago[project @ 1999-11-01 10:16:03 by sof]
sof [Mon, 1 Nov 1999 10:16:03 +0000 (10:16 +0000)]
[project @ 1999-11-01 10:16:03 by sof]
formatRealFloat: Fixed some e==0 confusion in the default case for FFExponent

25 years ago[project @ 1999-11-01 04:17:37 by andy]
andy [Mon, 1 Nov 1999 04:17:38 +0000 (04:17 +0000)]
[project @ 1999-11-01 04:17:37 by andy]
wibble in derive.c

Changing stdout's buffering. fflush in the program does not flush
the dll's private buffer space on Win32.

25 years ago[project @ 1999-11-01 02:41:04 by andy]
andy [Mon, 1 Nov 1999 02:41:04 +0000 (02:41 +0000)]
[project @ 1999-11-01 02:41:04 by andy]
Adding commands to generate the std H98 libs for STG Hugs.

25 years ago[project @ 1999-11-01 02:38:31 by andy]
andy [Mon, 1 Nov 1999 02:38:33 +0000 (02:38 +0000)]
[project @ 1999-11-01 02:38:31 by andy]
minor tweaks to do with H98 (like sequence => sequence_, etc)
Removing the lib/*hs standard libs to make way for the automatically
generated ones.

25 years ago[project @ 1999-11-01 02:04:31 by andy]
andy [Mon, 1 Nov 1999 02:04:31 +0000 (02:04 +0000)]
[project @ 1999-11-01 02:04:31 by andy]
Changing to use the new IO primitives.
Addr is no longer a synonym of Int.

25 years ago[project @ 1999-11-01 01:16:18 by andy]
andy [Mon, 1 Nov 1999 01:16:18 +0000 (01:16 +0000)]
[project @ 1999-11-01 01:16:18 by andy]
Adding type signature to main.

25 years ago[project @ 1999-10-31 15:35:32 by sof]
sof [Sun, 31 Oct 1999 15:35:32 +0000 (15:35 +0000)]
[project @ 1999-10-31 15:35:32 by sof]
To workaround gcc/egcs bugs re: handling of non-toplevel "extern" decls,
lift them out to the top. i.e., extend mechanism by which "typedefs"
are lifted out to the toplevel (for the same reasons) to also encompass
"extern"s.

Note: the default is not to emit an "extern" decl for every _ccall_,
as this runs the chance of (trivially) conflicting with header file
includes. So, to enable, use -optC-femit-extern-decls.

25 years ago[project @ 1999-10-29 14:34:25 by sewardj]
sewardj [Fri, 29 Oct 1999 14:34:25 +0000 (14:34 +0000)]
[project @ 1999-10-29 14:34:25 by sewardj]
#include wibble

25 years ago[project @ 1999-10-29 14:33:57 by sewardj]
sewardj [Fri, 29 Oct 1999 14:33:57 +0000 (14:33 +0000)]
[project @ 1999-10-29 14:33:57 by sewardj]
portability wibble

25 years ago[project @ 1999-10-29 14:18:20 by sewardj]
sewardj [Fri, 29 Oct 1999 14:18:21 +0000 (14:18 +0000)]
[project @ 1999-10-29 14:18:20 by sewardj]
Minor efficiency improvements to Prelude I/O functions.

25 years ago[project @ 1999-10-29 14:01:53 by sof]
sof [Fri, 29 Oct 1999 14:01:53 +0000 (14:01 +0000)]
[project @ 1999-10-29 14:01:53 by sof]
Pure Win32 builds doesn't support non-blocking IO

25 years ago[project @ 1999-10-29 13:59:52 by sof]
sof [Fri, 29 Oct 1999 13:59:52 +0000 (13:59 +0000)]
[project @ 1999-10-29 13:59:52 by sof]
wibble

25 years ago[project @ 1999-10-29 13:55:40 by sof]
sof [Fri, 29 Oct 1999 13:57:53 +0000 (13:57 +0000)]
[project @ 1999-10-29 13:55:40 by sof]
attach version info

25 years ago[project @ 1999-10-29 13:54:42 by sof]
sof [Fri, 29 Oct 1999 13:54:42 +0000 (13:54 +0000)]
[project @ 1999-10-29 13:54:42 by sof]
s/TargetPlatform/TARGETPLATFORM/g

25 years ago[project @ 1999-10-29 13:53:37 by sof]
sof [Fri, 29 Oct 1999 13:53:37 +0000 (13:53 +0000)]
[project @ 1999-10-29 13:53:37 by sof]
Support for baking version info into the gen'ed Prelude DLL

25 years ago[project @ 1999-10-29 13:52:30 by sof]
sof [Fri, 29 Oct 1999 13:52:30 +0000 (13:52 +0000)]
[project @ 1999-10-29 13:52:30 by sof]
cbits/ is now also built in a DLL way, if needs be.

25 years ago[project @ 1999-10-29 13:50:16 by sof]
sof [Fri, 29 Oct 1999 13:50:16 +0000 (13:50 +0000)]
[project @ 1999-10-29 13:50:16 by sof]
INSTALL_* tweaks

25 years ago[project @ 1999-10-29 13:41:23 by sewardj]
sewardj [Fri, 29 Oct 1999 13:41:29 +0000 (13:41 +0000)]
[project @ 1999-10-29 13:41:23 by sewardj]
Make foreign import and thus the Prelude work on cygwin.

25 years ago[project @ 1999-10-29 11:41:04 by sewardj]
sewardj [Fri, 29 Oct 1999 11:41:12 +0000 (11:41 +0000)]
[project @ 1999-10-29 11:41:04 by sewardj]
Basic #ifdeffery to make StgHugs compile out of the box on cygwin.

25 years ago[project @ 1999-10-29 01:16:48 by andy]
andy [Fri, 29 Oct 1999 01:16:50 +0000 (01:16 +0000)]
[project @ 1999-10-29 01:16:48 by andy]
Adding in the modified versions of the Standard Haskell 98 libraries.
These should compile under both Hugs and GHC.

use the flags  -D__HUGS__ -DUSE_REPORT_PRELUDE to extract the Hugs src.

25 years ago[project @ 1999-10-29 00:53:25 by andy]
andy [Fri, 29 Oct 1999 00:53:25 +0000 (00:53 +0000)]
[project @ 1999-10-29 00:53:25 by andy]
Fixing bug with derived Read/Show of labeled fields.
(showField and readField were undefined).

25 years ago[project @ 1999-10-28 22:37:27 by andy]
andy [Thu, 28 Oct 1999 22:37:27 +0000 (22:37 +0000)]
[project @ 1999-10-28 22:37:27 by andy]
Wibble in printing of type contexts.

25 years ago[project @ 1999-10-28 18:11:05 by sof]
sof [Thu, 28 Oct 1999 18:11:05 +0000 (18:11 +0000)]
[project @ 1999-10-28 18:11:05 by sof]
When generating C stubs, honour -osuf <x> option

25 years ago[project @ 1999-10-28 16:41:39 by sof]
sof [Thu, 28 Oct 1999 16:41:39 +0000 (16:41 +0000)]
[project @ 1999-10-28 16:41:39 by sof]
More {-# OPTIONS .. #-} tweaks: handle -#include "..." (where
'handle' == 'ignore'.)

25 years ago[project @ 1999-10-28 14:32:06 by sewardj]
sewardj [Thu, 28 Oct 1999 14:32:08 +0000 (14:32 +0000)]
[project @ 1999-10-28 14:32:06 by sewardj]
Make platform-specific dynamic loaders add ".so", ".dll" etc to
library names, so that f-i decls can be written without them.
Modify Prelude accordingly.

Remove unused functionality in dynamic.c and make err msgs a bit
better.

25 years ago[project @ 1999-10-28 08:21:15 by sof]
sof [Thu, 28 Oct 1999 08:21:15 +0000 (08:21 +0000)]
[project @ 1999-10-28 08:21:15 by sof]
Don't warn user of unrecognised options when processing
{-# OPTIONS .. #-} pragmas.

25 years ago[project @ 1999-10-28 07:53:13 by simonpj]
simonpj [Thu, 28 Oct 1999 07:53:13 +0000 (07:53 +0000)]
[project @ 1999-10-28 07:53:13 by simonpj]
More RULES documentation

25 years ago[project @ 1999-10-27 15:29:37 by simonmar]
simonmar [Wed, 27 Oct 1999 15:29:37 +0000 (15:29 +0000)]
[project @ 1999-10-27 15:29:37 by simonmar]
Use C-style comments instead of assembler comments - the '#' confuses
cpp when mkdependC'ing.

25 years ago[project @ 1999-10-27 14:05:27 by sof]
sof [Wed, 27 Oct 1999 14:05:27 +0000 (14:05 +0000)]
[project @ 1999-10-27 14:05:27 by sof]
Support for "{-# OPTIONS <opts> #-}" in headers of (de-litted)
source files. Currently, only -syslib <foo> and "-fglasgow-exts"
settings are picked up from within <opts>.

Mildly tested; give it a twirl.

25 years ago[project @ 1999-10-27 11:57:32 by sewardj]
sewardj [Wed, 27 Oct 1999 11:57:32 +0000 (11:57 +0000)]
[project @ 1999-10-27 11:57:32 by sewardj]
remove debug printing -- wibble

25 years ago[project @ 1999-10-27 11:55:51 by sewardj]
sewardj [Wed, 27 Oct 1999 11:55:51 +0000 (11:55 +0000)]
[project @ 1999-10-27 11:55:51 by sewardj]
Dot-ify local labels.

25 years ago[project @ 1999-10-27 11:11:11 by sewardj]
sewardj [Wed, 27 Oct 1999 11:11:11 +0000 (11:11 +0000)]
[project @ 1999-10-27 11:11:11 by sewardj]
universal_call_c_x86_stdcall: assume *I* have been ccall'd, not
stdcall'd, so don't clear my own args on return.

25 years ago[project @ 1999-10-27 09:58:36 by simonmar]
simonmar [Wed, 27 Oct 1999 09:58:36 +0000 (09:58 +0000)]
[project @ 1999-10-27 09:58:36 by simonmar]
reduce block size to 4k

25 years ago[project @ 1999-10-27 09:57:48 by simonmar]
simonmar [Wed, 27 Oct 1999 09:57:48 +0000 (09:57 +0000)]
[project @ 1999-10-27 09:57:48 by simonmar]
small cleanup; reduce amount of conditionally-compiled stuff

25 years ago[project @ 1999-10-27 09:45:49 by simonmar]
simonmar [Wed, 27 Oct 1999 09:45:50 +0000 (09:45 +0000)]
[project @ 1999-10-27 09:45:49 by simonmar]
Add way 's', for SMP/PThreads

25 years ago[project @ 1999-10-27 09:43:25 by simonmar]
simonmar [Wed, 27 Oct 1999 09:43:25 +0000 (09:43 +0000)]
[project @ 1999-10-27 09:43:25 by simonmar]
Junk removal

25 years ago[project @ 1999-10-27 08:54:16 by simonmar]
simonmar [Wed, 27 Oct 1999 08:54:16 +0000 (08:54 +0000)]
[project @ 1999-10-27 08:54:16 by simonmar]
Fix crashes in re_search.  Several other functions in this file need
fixing too.

25 years ago[project @ 1999-10-26 17:27:25 by sewardj]
sewardj [Tue, 26 Oct 1999 17:27:54 +0000 (17:27 +0000)]
[project @ 1999-10-26 17:27:25 by sewardj]
Add foreign import/export implementations for x86 stdcall convention.

Make parser notice calling conventions on f-i and f-x declarations,
check they are supported on the platform Hugs is compiled on.  Pass
them all the way through the code generator to the interpreter.

Allow f-i/f-x decls to omit the calling convention, in which case
ccall is used.  Remove calling convention from all such decls
in the Prelude so it will work on any platform.

25 years ago[project @ 1999-10-26 17:15:39 by sewardj]
sewardj [Tue, 26 Oct 1999 17:15:39 +0000 (17:15 +0000)]
[project @ 1999-10-26 17:15:39 by sewardj]
markStablePtrTable: correctly handle case when one stable ptr refers
to an indirection to an item referred to directly by a second
stable ptr (I think!).

25 years ago[project @ 1999-10-26 09:34:09 by sof]
sof [Tue, 26 Oct 1999 09:34:09 +0000 (09:34 +0000)]
[project @ 1999-10-26 09:34:09 by sof]
wibble

25 years ago[project @ 1999-10-26 08:41:54 by sof]
sof [Tue, 26 Oct 1999 08:41:54 +0000 (08:41 +0000)]
[project @ 1999-10-26 08:41:54 by sof]
Foreign imports that use ByteArrays now need to be marked as being 'unsafe.'

25 years ago[project @ 1999-10-26 08:30:31 by simonmar]
simonmar [Tue, 26 Oct 1999 08:30:31 +0000 (08:30 +0000)]
[project @ 1999-10-26 08:30:31 by simonmar]
Fix documentation installing in a binary dist.

25 years ago[project @ 1999-10-25 13:20:57 by sof]
sof [Mon, 25 Oct 1999 13:21:16 +0000 (13:21 +0000)]
[project @ 1999-10-25 13:20:57 by sof]
FFI wibble:

* disallow the use of {Mutable}ByteArrays in 'safe' foreign imports.
* ensure that ForeignObjs live across a _ccall_GC_.

25 years ago[project @ 1999-10-25 05:19:22 by andy]
andy [Mon, 25 Oct 1999 05:19:22 +0000 (05:19 +0000)]
[project @ 1999-10-25 05:19:22 by andy]
Adding a axiomatic testing framework library to help test Hugs and GHC
libraries.

Here is the example for the test of concat.

test_concat = testRules "concat" [
do (xss :: [[ALPHA]]) <- var "xss"
   concat xss <==> foldr (++) [] xss
]

xss here ranges over various rendering of list of list,
including bottom and lists containing bottom.

<==> uses a small piece of compiler/interpreter specifics to
allow testing for

error "" ... <==> ... error "" ===> Pass

25 years ago[project @ 1999-10-22 15:58:21 by sewardj]
sewardj [Fri, 22 Oct 1999 15:58:26 +0000 (15:58 +0000)]
[project @ 1999-10-22 15:58:21 by sewardj]
* Completion of foreign import and foreign export for x86 ccall
  convention.  f-i's and f-x's can pass and return
  Char Int Word Addr StablePtr Float and Double.

* Significant cleanups and infrastructure improvements.
  Characterise functions by (instruction set, calling convention)
  pair where necessary, since that's what counts.

  Moved foreign export code into rts/ForeignCall.c.
  Should now be in a good position to implement x86 stdcall
  convention.

25 years ago[project @ 1999-10-22 10:00:19 by sewardj]
sewardj [Fri, 22 Oct 1999 10:00:19 +0000 (10:00 +0000)]
[project @ 1999-10-22 10:00:19 by sewardj]
wibble

25 years ago[project @ 1999-10-22 09:59:28 by sewardj]
sewardj [Fri, 22 Oct 1999 09:59:34 +0000 (09:59 +0000)]
[project @ 1999-10-22 09:59:28 by sewardj]
Cleanup of the foreign import code.  Also allow StablePtrs
to be passed back and forth.

25 years ago[project @ 1999-10-22 08:47:39 by sof]
sof [Fri, 22 Oct 1999 08:47:39 +0000 (08:47 +0000)]
[project @ 1999-10-22 08:47:39 by sof]
made writeErrString__ f.i. unsafe

25 years ago[project @ 1999-10-22 08:40:25 by sof]
sof [Fri, 22 Oct 1999 08:40:25 +0000 (08:40 +0000)]
[project @ 1999-10-22 08:40:25 by sof]
Dotted the i's

25 years ago[project @ 1999-10-21 09:18:02 by simonmar]
simonmar [Thu, 21 Oct 1999 09:18:02 +0000 (09:18 +0000)]
[project @ 1999-10-21 09:18:02 by simonmar]
Add some missing ticky macros.

25 years ago[project @ 1999-10-21 08:23:56 by simonmar]
simonmar [Thu, 21 Oct 1999 08:23:56 +0000 (08:23 +0000)]
[project @ 1999-10-21 08:23:56 by simonmar]
Eliminate those annoying "unexpected lazy BHing required" messages
during ticky-ticky profiling.

25 years ago[project @ 1999-10-20 10:14:47 by simonmar]
simonmar [Wed, 20 Oct 1999 10:14:47 +0000 (10:14 +0000)]
[project @ 1999-10-20 10:14:47 by simonmar]
Micro-optimisation: don't need to test for an empty queue in a
BLACKHOLE_BQ, now that we're distinguishing BLACKHOLE and
BLACKHOLE_BQ.  Shortens the update code by a couple of instructions.

25 years ago[project @ 1999-10-20 10:08:33 by sof]
sof [Wed, 20 Oct 1999 10:08:33 +0000 (10:08 +0000)]
[project @ 1999-10-20 10:08:33 by sof]
Back out prev. commit which POSIXified getClockTime() - non-POSIX calls
really are superior (better resolution.)

25 years ago[project @ 1999-10-20 02:15:56 by andy]
andy [Wed, 20 Oct 1999 02:16:05 +0000 (02:16 +0000)]
[project @ 1999-10-20 02:15:56 by andy]
Adding final diffs between Hugs98 (Jan99) and Hugs98 (Sep99)
manually to STG Hugs.

25 years ago[project @ 1999-10-19 23:51:57 by andy]
andy [Tue, 19 Oct 1999 23:52:02 +0000 (23:52 +0000)]
[project @ 1999-10-19 23:51:57 by andy]
Adding a generic version of universal call that
only works for specific argument patterns.

It allows ports to work on the Hugs Prelude immeduately,
even if univeral_call_c_<os/specific> is not ported.

Also, commented out (longstanding?) bug with incorrect call
to setCurrModule.

25 years ago[project @ 1999-10-19 15:41:18 by simonmar]
simonmar [Tue, 19 Oct 1999 15:41:18 +0000 (15:41 +0000)]
[project @ 1999-10-19 15:41:18 by simonmar]
use PUSH_ON_RUN_QUEUE macro instead of (slightly less efficient)
inline version.

25 years ago[project @ 1999-10-19 15:39:08 by simonmar]
simonmar [Tue, 19 Oct 1999 15:39:08 +0000 (15:39 +0000)]
[project @ 1999-10-19 15:39:08 by simonmar]
ASSERT that the tso link field is empty before pushing it on the end
of a queue.

25 years ago[project @ 1999-10-19 15:11:31 by sewardj]
sewardj [Tue, 19 Oct 1999 15:11:31 +0000 (15:11 +0000)]
[project @ 1999-10-19 15:11:31 by sewardj]
Increase default cutoff limit from 16 to 60.  nofib/real/anna
won't compile even with this value set to 50.  Presumably the
same problem afflicts Hugs98-Sept98 ?

25 years ago[project @ 1999-10-19 15:09:40 by sewardj]
sewardj [Tue, 19 Oct 1999 15:09:40 +0000 (15:09 +0000)]
[project @ 1999-10-19 15:09:40 by sewardj]
Remove debugging export of ST(..), which causes failures in nofib.

25 years ago[project @ 1999-10-19 12:11:05 by sewardj]
sewardj [Tue, 19 Oct 1999 12:11:05 +0000 (12:11 +0000)]
[project @ 1999-10-19 12:11:05 by sewardj]
Wibble.

25 years ago[project @ 1999-10-19 12:05:27 by sewardj]
sewardj [Tue, 19 Oct 1999 12:05:27 +0000 (12:05 +0000)]
[project @ 1999-10-19 12:05:27 by sewardj]
Make typeVarsIn non-static since interface.c needs to see it.

25 years ago[project @ 1999-10-19 11:41:35 by sewardj]
sewardj [Tue, 19 Oct 1999 11:41:35 +0000 (11:41 +0000)]
[project @ 1999-10-19 11:41:35 by sewardj]
Change CFunDescriptor to match new foreign import implementation.

25 years ago[project @ 1999-10-19 11:01:24 by sewardj]
sewardj [Tue, 19 Oct 1999 11:03:39 +0000 (11:03 +0000)]
[project @ 1999-10-19 11:01:24 by sewardj]
Reimplement back-end for foreign import (calling out).

Return to a cleaned-up version of Alastair's callfun.S,
wherein an architecture and calling-convention specific
piece of assembly code is used to construct arguments and
then call the specified function, under the direction of
a type descriptor string.

Defined an interface to this function (universal_call_c)
which I hope will work regardless of 32-or-64 bitness,
endianness and calling convention.

Current implementation is for x86-linux only.

25 years ago[project @ 1999-10-18 11:49:47 by sof]
sof [Mon, 18 Oct 1999 11:49:47 +0000 (11:49 +0000)]
[project @ 1999-10-18 11:49:47 by sof]
* Time.CalendarTime.ctMonth's type should be Month (was Int.)
* fixed Time.addToClockTime - the original implementation was
  completely wrong (thanks to George Russell for indirectly
  reporting the bug.)
* Added the non-std Time.noTimeDiff, handy when you want to do
  calendar calculations, e.g.,

            ct <- getClockTime
            print (toUTCTime (addToClockTime noTimeDiff{tdMonth=1} ct))

* many 'foreign import' decls were not marked as unsafe, even though they
  were passing out MutableByteArray and ByteArray vals. Fixed.

25 years ago[project @ 1999-10-18 11:44:20 by kglynn]
kglynn [Mon, 18 Oct 1999 11:44:20 +0000 (11:44 +0000)]
[project @ 1999-10-18 11:44:20 by kglynn]
The fix to ignore error() cases when doing CPR analysis exposed a
problem with the Void type.  A function that always constructs a void
result was converted to w/w, but the worker was producing an unboxed
tuple with 0 components.  Not good.

Fixed so that constructing a void gives CPR value Top.  This is OK
because we won't really be constructing a void each time, we will be
returning a pointer to a shared void cell.

25 years ago[project @ 1999-10-16 02:17:25 by andy]
andy [Sat, 16 Oct 1999 02:17:32 +0000 (02:17 +0000)]
[project @ 1999-10-16 02:17:25 by andy]
Adding diffs between Hugs98 (Jan99) and Hugs98 (Sep99)
manually to STG Hugs.

Brings in large change to typechecking sub-system.

25 years ago[project @ 1999-10-15 23:52:00 by andy]
andy [Fri, 15 Oct 1999 23:52:01 +0000 (23:52 +0000)]
[project @ 1999-10-15 23:52:00 by andy]
Adding diffs between Hugs98 (Jan99) and Hugs98 (Sep99)
manually to STG Hugs.

These are the changes to input.c, with minor tweeks to
connect.h and parser.y to make this work.

25 years ago[project @ 1999-10-15 22:35:04 by andy]
andy [Fri, 15 Oct 1999 22:35:05 +0000 (22:35 +0000)]
[project @ 1999-10-15 22:35:04 by andy]
Adding diffs between Hugs98 (Jan99) and Hugs98 (Sep99) manually to STG Hugs.

25 years ago[project @ 1999-10-15 21:40:49 by andy]
andy [Fri, 15 Oct 1999 21:41:05 +0000 (21:41 +0000)]
[project @ 1999-10-15 21:40:49 by andy]
Updating all copyright messages to the same as Hugs98.

25 years ago[project @ 1999-10-15 19:11:54 by andy]
andy [Fri, 15 Oct 1999 19:11:55 +0000 (19:11 +0000)]
[project @ 1999-10-15 19:11:54 by andy]
Changing order of check for use of DLL for dynamic linking.
(Under cygwin, we still want to use DLL's).

25 years ago[project @ 1999-10-15 11:02:06 by sewardj]
sewardj [Fri, 15 Oct 1999 11:03:10 +0000 (11:03 +0000)]
[project @ 1999-10-15 11:02:06 by sewardj]
Added basic support for foreign export dynamic.

Many aspects of it are still broken:
* Only supports x86-linux.
* The range of allowable types is small: Char Int Float Double
  Addr and Word.
* Adjustor thunks are never freed.
* Returning Doubles or Floats doesn't work at all.

I expect to fix some of these shortly.  foreign import also
needs redoing, so it can accept any number of arguments of
any type.

Also:
* Fixed setRtsFlags in Evaluator.c to make it endian-independent.
* Fixed raisePrim in Evaluator.c so things like division by zero,
  array index errors, etc, throw an exception instead of
  terminating StgHugs.  raisePrim is renamed makeErrorCall.

25 years ago[project @ 1999-10-15 09:50:22 by simonmar]
simonmar [Fri, 15 Oct 1999 09:50:22 +0000 (09:50 +0000)]
[project @ 1999-10-15 09:50:22 by simonmar]
Add macros for two-register call/return convention, for experimentation.

25 years ago[project @ 1999-10-15 08:56:46 by simonmar]
simonmar [Fri, 15 Oct 1999 08:56:46 +0000 (08:56 +0000)]
[project @ 1999-10-15 08:56:46 by simonmar]
set $(HC) to the inplace ghc driver script.

25 years ago[project @ 1999-10-14 13:44:55 by simonpj]
simonpj [Thu, 14 Oct 1999 13:44:55 +0000 (13:44 +0000)]
[project @ 1999-10-14 13:44:55 by simonpj]
Swap ticky column order

25 years ago[project @ 1999-10-14 13:33:19 by simonmar]
simonmar [Thu, 14 Oct 1999 13:33:19 +0000 (13:33 +0000)]
[project @ 1999-10-14 13:33:19 by simonmar]
Allow unboxed tuples with zero components in unfoldings, CPR seems to
generate them occasionally (perhaps it shouldn't - there is very
little difference between returning () and (# #)).

25 years ago[project @ 1999-10-14 13:12:22 by simonmar]
simonmar [Thu, 14 Oct 1999 13:12:22 +0000 (13:12 +0000)]
[project @ 1999-10-14 13:12:22 by simonmar]
oops: unbreak non-ticky compiles

25 years ago[project @ 1999-10-14 07:23:10 by simonpj]
simonpj [Thu, 14 Oct 1999 07:23:10 +0000 (07:23 +0000)]
[project @ 1999-10-14 07:23:10 by simonpj]
Add a test for scoped type variables

25 years ago[project @ 1999-10-13 16:39:10 by simonmar]
simonmar [Wed, 13 Oct 1999 16:39:24 +0000 (16:39 +0000)]
[project @ 1999-10-13 16:39:10 by simonmar]
Crude allocation-counting extension to ticky-ticky profiling.

Allocations are counted against the closest lexically enclosing
function closure, so you need to map the output back to the STG code.

25 years ago[project @ 1999-10-13 10:43:15 by simonmar]
simonmar [Wed, 13 Oct 1999 10:43:15 +0000 (10:43 +0000)]
[project @ 1999-10-13 10:43:15 by simonmar]
typo

25 years ago[project @ 1999-10-13 10:09:03 by simonmar]
simonmar [Wed, 13 Oct 1999 10:13:15 +0000 (10:13 +0000)]
[project @ 1999-10-13 10:09:03 by simonmar]
#ifdefs for bootstrapping