1. 09 Feb, 2000 2 commits
    • lewie's avatar
      [project @ 2000-02-09 18:32:09 by lewie] · 461f1fb5
      lewie authored
      Misc. fixes to implicit parameters support.
    • sewardj's avatar
      [project @ 2000-02-09 14:50:19 by sewardj] · 0198d561
      sewardj authored
      More bug fixes resulting from trying to load small programs into Hugs
      using the GHC Prelude:
      -- Better handling of kinds on class method types.  It's still a kludge
         (I reckon) but works well enough to correctly handle methods in
         Monad and Functor.  See comment in startGHCClass() in interface.c.
      -- Add hugsprimReadField and hugsprimShowField.
      -- Make error be exported from the Prelude.  For some reason, PrelErr.hi
         doesn't give a signature for error, so we have to fake it by copying
         that of hugsprimError.
      -- Handle fixity declarations read from interfaces.
      -- Set nameListMonad so that list comprehensions can be translated.
  2. 08 Feb, 2000 3 commits
  3. 07 Feb, 2000 1 commit
    • simonmar's avatar
      [project @ 2000-02-07 20:57:58 by simonmar] · 4d12e452
      simonmar authored
      I'm utterly bemused, but it seems that someone called simonpj disabled
      the virtual timer in rev 1.25:
      	+ #if 0 /* tmp--SDM */
      	+ #endif
      and tried to blame it on me by putting my name in the comment :-)
      (Simon - perhaps you copied this file out of my working tree and
      committed it by mistake or something?)
  4. 04 Feb, 2000 6 commits
    • sewardj's avatar
      [project @ 2000-02-04 17:29:24 by sewardj] · 719ed067
      sewardj authored
      Remove various -fvia-Cs, leaving the minimal required set (4 of them).
    • sewardj's avatar
      [project @ 2000-02-04 17:26:58 by sewardj] · 1f1e6297
      sewardj authored
      GSQRT, GSIN, GCOS, GTAN: if result size is float (as opposed to double),
      truncate the result to that length by writing it into memory and
      getting it back again (duh!), since that's what gcc does.
    • lewie's avatar
      [project @ 2000-02-04 17:02:11 by lewie] · e02a4c6f
      lewie authored
      Fix a subtle bug in overlapping instances where a generic instance is sometimes
      chosen rather than a more specific one.  See discussion at top of InstEnv
      for details.
    • sewardj's avatar
      [project @ 2000-02-04 13:41:00 by sewardj] · 60a8cc4c
      sewardj authored
      startGHCClass(): set the .dsels (superclass dsels) field.
    • simonmar's avatar
      [project @ 2000-02-04 11:18:05 by simonmar] · 7a463ddd
      simonmar authored
      Fix bug #2 in unregisterised RTS:
      forceIO had the same problem as catch#.  This bug has been here for a
      long time, not sure why we haven't noticed it before.
      Jules: that should get you back on the road.
    • simonmar's avatar
      [project @ 2000-02-04 11:15:04 by simonmar] · fcc9fa26
      simonmar authored
      Fix bug #1 in the unregisterised RTS:
      Now that catch# is a fully-fledged IO operation, it has to respect the
      return convention for IO, in particular if we don't have an R1
      (eg. when unregisterised) then the return value goes on the stack.
      The return convention could be better, after all we use R1 when
      returning normal values, but I'll just fix it for now.
  5. 03 Feb, 2000 4 commits
  6. 02 Feb, 2000 1 commit
    • sewardj's avatar
      [project @ 2000-02-02 11:40:33 by sewardj] · a040ea4a
      sewardj authored
      trivialCode on x86 is the heart of instruction selection for
      expressions.  It is definitely a non-trivial in complexity.
      To generate correct code it needs to observe preserve several
      delicate invariants, but didn't.
      -- Recorded in MachCode.lhs the "Rules of the Game"; ie what I think
         the required invariants are.
      -- Completely rewrote trivialCode (also shift_code).  I think it should
         handle all cases correctly, and has special treatment for literal
      -- Updated NOTES file to record issues which need to be resolved
         before x86 nativeGen can be considered ready for public use.
  7. 01 Feb, 2000 4 commits
  8. 31 Jan, 2000 5 commits
  9. 30 Jan, 2000 5 commits
    • simonmar's avatar
      [project @ 2000-01-30 10:25:27 by simonmar] · ca2ab438
      simonmar authored
      Change the type of catch# to
      	catch# :: (W# -> (# W#, a #))
      	       -> (b -> W# -> (# W#, a #))
      	       -> W# -> (# W# , a #)
      where W# == State# RealWorld.  In other words, make it explicit that
      catch# is an IO operation and takes IO operations as arguments.  The
      previous type was too general, and resulted in catch# having the wrong
      arity which could cause mis-optimisations.
      The down side is that we now have to pass the state token around
      inside the primop instead of doing it in the Haskell wrapper, and
      raiseAsync() also has to build a PAP(handler,exception,realworld)
      instead of just a PAP(handler,exception) when it invokes a handler as
      a result of an async exception.
      I also added some optimisations to (un)?blockAsyncException to not
      grow the stack if it can be avoided, such as when we're about to block
      async exceptions and there's a blockAsyncExceptions_ret stack frame on
      the top of the stack.
    • simonmar's avatar
      [project @ 2000-01-30 10:17:44 by simonmar] · 11a43a34
      simonmar authored
      The bd->free field of a block descriptor is supposed to be set to -1
      for free blocks, if we're #ifdef DEBUGging.  It wasn't sometimes.
    • simonmar's avatar
      [project @ 2000-01-30 10:16:09 by simonmar] · f195b5de
      simonmar authored
      Deal with ThreadRelocated in checkTSO().
    • simonmar's avatar
      [project @ 2000-01-30 10:11:32 by simonmar] · 84ccb85d
      simonmar authored
      Add notes about where the IO representation is wired in to various
      parts of the source tree, since I'm about to add some more.
    • simonmar's avatar
      [project @ 2000-01-30 10:08:27 by simonmar] · 3427092e
      simonmar authored
      comment fixup
  10. 28 Jan, 2000 5 commits
    • lewie's avatar
      [project @ 2000-01-28 20:52:37 by lewie] · 266fadd9
      lewie authored
      First pass at implicit parameters.  Honest, I didn't really go in *intending*
      to modify every file in the typechecker... ;-)  The breadth of the change
      is partly due to generalizing contexts so that they are not hardwired to
      be (Class, [Type]) pairs.  See types/Type.lhs for details (look for PredType).
    • sewardj's avatar
      [project @ 2000-01-28 18:07:55 by sewardj] · c39373f1
      sewardj authored
      Modifications to make x86 register spilling to work reasonably.  It
      should work ok most of the time, although there is still a remote
      possibility that the allocator simply will be unable to complete
      spilling, and will just give up.
      -- Incrementally try with 0, 1, 2 and 3 spill regs, so as not to
         unduly restrict the supply of regs in code which doesn't need spilling.
      -- Remove the use of %ecx for shift values, so it is always available
         as the first-choice spill temporary.  For code which doesn't do
         int division, make %edx and %eax available for spilling too.
         Shifts by a non-constant amount (very rare) are now done by
         a short test-and-jump sequence, so that %ecx is not tied up.
      -- x86 FP: do sin, cos, tan in-line so we get the same answers as gcc.
      -- Moved a little code around to remove recursive dependencies.
      -- Fix a subtle bug in x86 regUsage, which could cause underestimation
         of live ranges.
    • simonmar's avatar
      [project @ 2000-01-28 16:36:03 by simonmar] · f1553c47
      simonmar authored
      bump version to 4.07 on the main trunk.
    • simonmar's avatar
      [project @ 2000-01-28 14:14:01 by simonmar] · 4d139998
      simonmar authored
      don't use ^ in patterns, Solaris sh barfs on it.
    • sewardj's avatar
      [project @ 2000-01-28 09:40:05 by sewardj] · 8252a068
      sewardj authored
      Commit all changes prior to addressing the x86 spilling situation in
      the register allocator.
      -- Fix nonsensical x86 addressing mode hacks in mangleIndexTree
         and getAmode.
      -- Make char-sized loads work properly, using MOVZBL.
      -- In assignIntCode, use primRep on the assign node to determine
         the size of data transfer, not the size of the source.
      -- Redo Integer primitives to be in line with current representation
         of Integers.
  11. 27 Jan, 2000 1 commit
  12. 26 Jan, 2000 3 commits