1. 17 Mar, 1999 3 commits
    • simonpj's avatar
      [project @ 1999-03-17 10:06:21 by simonpj] · fc7b70af
      simonpj authored
      Make it so that Local (i.e. non-top-level) names record
      whether they originally came from an interface file.  This
      means that when unifying two type variables we can readily
      choose one that occurred in the source, rather than one
      imported from an interface file.  That in turn improves 
      compiler error messages.  E.g.
        rd :: (RealFloat a, RealFrac b) => b -> Transformation a
        rd degrees  = r ((degrees / 180.0) * pi)
      used to say
          Could not deduce `Floating a'
      	(arising from use of `pi' at Foo.hs:11)
      	from the context: (RealFloat a1, RealFrac a)
          Probable cause: missing `Floating a' in type signature for `rd'
      [here the 'a' came from the signature for 'pi' in PrelBase;
       the 'a1' is a renamed version of the 'a' in the source pgm]
      but now says
          Could not deduce `Floating b'
      	(arising from use of `pi' at Foo.hs:11)
      	from the context: (RealFloat a, RealFrac b)
          Probable cause: missing `Floating b' in type signature for `rd'
    • simonm's avatar
      [project @ 1999-03-17 09:50:08 by simonm] · 32e46064
      simonm authored
      When resizing a stack, set the Sp and Su of the old, dead, TSO to be just
      beyond the end of its stack so we don't attempt to scavenge any part of
      the stack in case we come across this TSO during GC.
    • simonpj's avatar
      [project @ 1999-03-17 08:26:30 by simonpj] · 41d098e3
      simonpj authored
      Complete the hack that lets us give 'error' the type
      	error :: forall a:?. String -> a
      The kind '?' (also known as 'Type AnyBox') means that
      error can be applied to unboxed types too.  unsafeCoerce is
      similar.  But the 'real' type of error is:
      	error :: forall bv. forall a:Type bv. String -> a
      That is, it's really polymorphic in the boxity of a; that's
      different to saying that the type bound to 'a' must have
      kind '?'.  
      The fix was in TcType.inst_tyvar, where we look for the kind '?'
      and generate a boxity variable instead.  Sigh.
  2. 16 Mar, 1999 4 commits
    • simonm's avatar
      [project @ 1999-03-16 17:07:21 by simonm] · e1a83341
      simonm authored
      - Document the pragmas we support
      - Fix some lies in the vs. Haskell section.
    • simonm's avatar
      [project @ 1999-03-16 13:20:07 by simonm] · 456eca73
      simonm authored
      Improvements to the threading model.
         - asynchronous exceptions supported.
      	- killThread# can now raise an exception in the specified
      	  thread.  It's new type is
      		killThread# :: ThreadId# -> Exception -> IO ()
      	  High-level versions:
      		killThread :: ThreadId -> IO ()
      		raiseInThread :: ThreadId -> Exception -> IO ()
      	  (killThread raises a 'ThreadKilled' exception in the
      	   specified thread).
      	  If the thread has no exception handler, it is killed
      	  as before.  Otherwise, the exception is passed to
      	  the innermost CATCH_FRAME and the thread is woken up
      	  if it was blocked.  The current computation is
      	  suspended, instead of being replaced by the exception
      	  (as is the case with throw).
      	  Sending an exception to the current thread works too.
         - new primitive: myThreadId# :: IO ThreadId# and corresponding
           high-level version myThreadId :: IO ThreadId.
         - new primitive: yield# :: IO (), and yield :: IO ().
         - the TSO now contains a pointer to the resource currently blocked
           on (MVAR or BLACKHOLE_BQ).
        - Add a giant comment to TSO.h about what the various link fields
          are supposed to do, and invariants etc.
    • simonpj's avatar
      [project @ 1999-03-16 12:36:15 by simonpj] · 8306cc58
      simonpj authored
      Bring up to 4.02 interface file syntax
    • simonpj's avatar
      [project @ 1999-03-16 12:31:55 by simonpj] · 831297f1
      simonpj authored
      Make it only a warning if you have a type like this:
      	forall a. Int -> Int
      These show up in interface files occasionally, just because
      the simplifier is a bit blase about adding type arguments.
      But it's an error to have
      	forall a. Eq a => Int -> Int
      The flag -fwarn-unused-matches reports a warning for these
      redundant for-alls.
  3. 15 Mar, 1999 6 commits
    • simonm's avatar
      [project @ 1999-03-15 17:11:27 by simonm] · ce55bf9c
      simonm authored
      Remove a couple of stgcasts.
    • simonm's avatar
      [project @ 1999-03-15 16:53:10 by simonm] · 2349db9a
      simonm authored
      Specialise STATIC_LINK() for {FUN,THUNK,IND}_STATIC.
    • simonm's avatar
      [project @ 1999-03-15 16:31:02 by simonm] · e18e743b
      simonm authored
      Reduce alignment for info tables on x86 to 1 word.  It was previously
      4 words, which meant that the entry code was wrongly aligned all the
      time (because info tables are either 2 or 3 words).  At least this way
      we've got a 1 in 4 chance of being properly aligned.
    • simonm's avatar
      [project @ 1999-03-15 16:30:24 by simonm] · 030a1217
      simonm authored
      Remove flags field from info tables; create a separate table of flags
      indexed by the closure type in the RTS.
    • simonpj's avatar
      [project @ 1999-03-15 15:11:03 by simonpj] · 42a51e93
      simonpj authored
      Make clear in HsType whether a for-all is explicit
      in the source program or not.  Implicit for-alls now
      look like 
      	HsForAllTy Nothing ctxt ty
      while explicit ones look like
      	HsForAllTy (Just tvs) ctxt ty
      Before this, the scope analysis stuff in RnSource was
      actually wrong (not that anyone had noticed), but Alex Ferguson
      did notice a bogus (sort-of-duplicate) error message on types
      	f :: Eq a => Int -> Int
      which led me to spot the deeper problem.  Anyway, it's all 
      cool now.
    • simonm's avatar
      [project @ 1999-03-15 13:25:04 by simonm] · 1c52a209
      simonm authored
      Move mkdependHS to lib.
  4. 11 Mar, 1999 7 commits
  5. 10 Mar, 1999 4 commits
  6. 09 Mar, 1999 5 commits
  7. 08 Mar, 1999 4 commits
  8. 05 Mar, 1999 4 commits
    • kw217's avatar
      [project @ 1999-03-05 12:43:26 by kw217] · 3f767306
      kw217 authored
      More counters reinstated; this should be the lot now:
        ENT_AP_UPD_ctr, ENT_BH_ctr, RET_UNBOXED_TUP_ctr, RET_UNBOXED_TUP_hst[]
    • kw217's avatar
      [project @ 1999-03-05 12:02:33 by kw217] · a9e75a05
      kw217 authored
      Counter UPD_PAP_IN_PLACE_ctr erroneously missed from raw Ticky dump.
    • sof's avatar
      [project @ 1999-03-05 10:21:22 by sof] · 9b910bc8
      sof authored
      Support for unsafely thawing your (Byte)Arrays, i.e., added the
      following ops:
       MutableArray.unsafeThawArray :: Ix ix => Array ix elt -> ST s (MutableArray s ix elt)
       MutableArray.unsafeThawByteArray :: Ix ix => ByteArray ix -> ST s (MutableByteArray s ix)
       MutableArray.thawByteArray :: Ix ix => ByteArray ix -> ST s (MutableByteArray s ix)
       ST.unsafeThawSTArray 	    :: Ix ix => Array ix elt -> ST s (STArray s ix elt)
       LazyST.unsafeThawSTArray   :: Ix ix => Array ix elt -> ST s (STArray s ix elt)
       IOExts.unsafeFreezeIOArray :: Ix ix => IOArray ix elt -> IO (Array ix elt)
       IOExts.unsafeThawIOArray   :: Ix ix => Array ix elt -> IO (IOArray ix elt)
      + removed the re-exportation of Monad that ST and LazyST did.
    • sof's avatar
      [project @ 1999-03-05 09:38:43 by sof] · 2ed3e0f4
      sof authored
      Remove the Show instance for (a->b). It will not be missed..
  9. 04 Mar, 1999 3 commits