1. 11 May, 1999 1 commit
    • keithw's avatar
      [project @ 1999-05-11 16:47:39 by keithw] · eb407ca1
      keithw authored
      (this is number 9 of 9 commits to be applied together)
      
        Usage verification changes / ticky-ticky changes:
      
        We want to verify that SingleEntry thunks are indeed entered at most
        once.  In order to do this, -ticky / -DTICKY_TICKY turns on eager
        blackholing.  We blackhole with new blackholes: SE_BLACKHOLE and
        SE_CAF_BLACKHOLE.  We will enter one of these if we attempt to enter
        a SingleEntry thunk twice.  Note that CAFs are dealt with in by
        codeGen, and ordinary thunks by the RTS.
      
        We also want to see how many times we enter each Updatable thunk.
        To this end, we have modified -ticky.  When -ticky is on, we update
        with a permanent indirection, and arrange that when we enter a
        permanent indirection we count the entry and then convert the
        indirection to a normal indirection.  This gives us a means of
        counting the number of thunks entered again after the first entry.
        Obviously this screws up profiling, and so you can't build a ticky
        and profiling compiler any more.
      
        Also a few other changes that didn't make it into the previous 8
        commits, but form a part of this set.
      eb407ca1
  2. 26 Apr, 1999 2 commits
  3. 16 Mar, 1999 1 commit
    • 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.
      456eca73
  4. 05 Mar, 1999 1 commit
    • 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.
      9b910bc8
  5. 18 Feb, 1999 1 commit
    • simonm's avatar
      [project @ 1999-02-18 12:26:11 by simonm] · e58d0e9b
      simonm authored
      Add two new operations to StgPrimFloat.c:
      
      	__int_encodeFloat
      	__int_encodeDouble
      
      for encoding floats/doubles from small integers.  This avoids having
      to convert small integers to large ones before an encodeFloat
      operation, and fixes the two cases of slowdown in nofib after the
      small integer changes.
      
      Also:
      	- remove encodeFloat and decodeFloat as primops
      	- use foreign import for encode{Float,Double} and
      	  the various isNaN etc. ccalls in PrelNumExtra.
      e58d0e9b
  6. 17 Feb, 1999 1 commit
    • simonm's avatar
      [project @ 1999-02-17 15:57:20 by simonm] · 449deb80
      simonm authored
      Fast Integers.  The rep. of Integers is now
      
      	data Integer = S# Int#
      		     | J# Int# ByteArray#
      
      - several new primops added for overflow-detecting arithmetic
      - negateInteger# removed; it can be done directly
      - integer_0, integer_1 etc. removed.
      - the compiler now uses S# where it previously used int2Integer.
      - the compiler generates small integers for -2^32 .. 2^32-1, instead
        of -2^29 .. -2^29-1.
      
      - PrelST.State datatype moved to LazyST (its only use).
      - some library code (in Time.lhs) still needs cleaning up, it depends
        on the Integer rep.
      449deb80
  7. 11 Feb, 1999 2 commits
  8. 01 Feb, 1999 1 commit
  9. 28 Jan, 1999 1 commit
  10. 26 Jan, 1999 1 commit
  11. 14 Jan, 1999 1 commit
    • sof's avatar
      [project @ 1999-01-14 18:12:47 by sof] · 0d65c162
      sof authored
      Changes to make the Prelude comply with Haskell 98.
      
      I claim that this completes GHC's implementation of Haskell 98 (at
      least feature-wise, but there's bound to be some bugs lurking..)
      0d65c162
  12. 21 Dec, 1998 1 commit
  13. 02 Dec, 1998 1 commit
  14. 21 Oct, 1998 1 commit
  15. 14 Aug, 1998 1 commit
  16. 18 Jul, 1998 1 commit
  17. 15 May, 1998 1 commit
  18. 09 Apr, 1998 1 commit
  19. 07 Apr, 1998 1 commit
  20. 13 Mar, 1998 1 commit
  21. 25 Feb, 1998 1 commit
    • sof's avatar
      [project @ 1998-02-25 19:48:54 by sof] · 33362962
      sof authored
      Interface file version checking support. Added a compiler version field
      to the interface file header. The format is now
      
        _interface_ <IfaceName> <ModuleVersion> <CompilerVersion>
      
      where the compiler version follow the value of $(ProjectVersionInt).
      Any mismatch in version numbers causes the renamer to give up.
      
      A compiler version number of 0 means turn off version checking (used
      by PrelGHC.hi to avoid having to update every time we release.)
      
      .hi-boot files are treated specially, the absence of a compiler
      version number in the header is taken to mean that there was a `0'.
      Need to do this since hsc's .hi-boot files have to also be useable
      by versions of the compiler that don't grok version info in interface
      files (e.g., ghc-2.10.)
      33362962
  22. 02 Feb, 1998 1 commit
    • simonm's avatar
      [project @ 1998-02-02 17:27:26 by simonm] · 28139aea
      simonm authored
      Library re-organisation:
      
      All libraries now live under ghc/lib, which has the following structure:
      
      	ghc/lib/std    		--  all prelude files 		(libHS.a)
      	ghc/lib/std/cbits
      
      	ghc/lib/exts		-- standard Hugs/GHC extensions (libHSexts.a)
      				-- available with '-fglasgow-exts'
      
      	ghc/lib/posix		-- POSIX library                (libHSposix.a)
      	ghc/lib/posix/cbits     -- available with '-syslib posix'
      
      	ghc/lib/misc		-- used to be hslibs/ghc	(libHSmisc.a)
      	ghc/lib/misc/cbits	-- available with '-syslib misc'
      
      	ghc/lib/concurrent	-- Concurrent libraries		(libHSconc.a)
      				-- available with '-concurrent'
      
      Also, several non-standard prelude modules had their names changed to begin
      with 'Prel' to reduce namespace pollution.
      
      	Addr      ==> PrelAddr     (Addr interface available in 'exts')
      	ArrBase   ==> PrelArr
      	CCall     ==> PrelCCall    (CCall interface available in 'exts')
      	ConcBase  ==> PrelConc
      	GHCerr    ==> PrelErr
      	Foreign   ==> PrelForeign  (Foreign interface available in 'exts')
      	GHC       ==> PrelGHC
      	IOHandle  ==> PrelHandle
      	IOBase    ==> PrelIOBase
      	GHCmain   ==> PrelMain
      	STBase    ==> PrelST
      	Unsafe    ==> PrelUnsafe
      	UnsafeST  ==> PrelUnsafeST
      28139aea
  23. 22 Jan, 1998 1 commit
  24. 08 Jan, 1998 1 commit
    • simonm's avatar
      [project @ 1998-01-08 18:03:08 by simonm] · 9dd6e1c2
      simonm authored
      The Great Multi-Parameter Type Classes Merge.
      
      Notes from Simon (abridged):
      
      * Multi-parameter type classes are fully implemented.
      * Error messages from the type checker should be noticeably improved
      * Warnings for unused bindings (-fwarn-unused-names)
      * many other minor bug fixes.
      
      Internally there are the following changes
      
      * Removal of Haskell 1.2 compatibility.
      * Dramatic clean-up of the PprStyle stuff.
      * The type Type has been substantially changed.
      * The dictionary for each class is represented by a new
        data type for that purpose, rather than by a tuple.
      9dd6e1c2
  25. 20 Nov, 1997 1 commit
  26. 13 Nov, 1997 2 commits
  27. 11 Nov, 1997 1 commit
    • simonm's avatar
      [project @ 1997-11-11 14:32:34 by simonm] · a138ab7b
      simonm authored
      Library changes to:
      
      	* remove PrimIO
      	* change type of _ccall_ to IO
      	* incorporate Alastair Reid's new library interfaces for
      	  compatibility with Hugs.
      a138ab7b
  28. 21 Oct, 1997 1 commit
  29. 25 Aug, 1997 1 commit
  30. 03 Jun, 1997 1 commit
  31. 18 May, 1997 1 commit
  32. 17 Mar, 1997 1 commit
  33. 14 Mar, 1997 1 commit
  34. 18 Jan, 1997 1 commit
  35. 17 Jan, 1997 1 commit
  36. 06 Jan, 1997 1 commit
  37. 20 Dec, 1996 1 commit