1. 21 Aug, 2001 25 commits
  2. 20 Aug, 2001 15 commits
    • simonpj's avatar
      [project @ 2001-08-20 16:50:13 by simonpj] · 0c190d9e
      simonpj authored
      	Make NOINLINE zap the strictness info
      Make a NOINLINE pragma zap strictness information.
      Reasons given in the WorkWrap comment:
      	-- Furthermore, zap the strictess info in the Id.  Why?  Because
      	-- the NOINLINE says "don't expose any of the inner workings at the call
      	-- site" and the strictness is certainly an inner working.
      	-- More concretely, the demand analyser discovers the following strictness
      	-- for unsafePerformIO:  C(U(AV))
      	-- But then consider
      	--	unsafePerformIO (\s -> let r = f x in
      	--			       case writeIORef v r s of (# s1, _ #) ->
      	--			       (# s1, r #)
      	-- The strictness analyser will find that the binding for r is strict,
      	-- (becuase of uPIO's strictness sig), and so it'll evaluate it before
      	-- doing the writeIORef.  This actually makes tests/lib/should_run/memo002
      	-- get a deadlock!
      	-- Solution: don't expose the strictness of unsafePerformIO.
      This fixes the memo002 deadlock.
    • simonpj's avatar
      [project @ 2001-08-20 16:48:50 by simonpj] · 01417029
      simonpj authored
      Add assertion
    • simonmar's avatar
      [project @ 2001-08-20 16:17:17 by simonmar] · 9035ad45
      simonmar authored
      - be more informative about primitive types: they are identified as
        such, and a declaration is printed out as if the thing was an
        abstract data type (this at least tells you what the arity of the
        tycon is).
      - print 'infix 4 elem' as 'infix 4 `elem`'.
    • simonmar's avatar
      [project @ 2001-08-20 16:15:34 by simonmar] · 5cd52635
      simonmar authored
      Do something vaguely useful in ifaceTyCls when presented with a
      primitive type constructor.  We pretend it's an abstract data type for
    • sof's avatar
      [project @ 2001-08-20 14:57:42 by sof] · 63ea1af6
      sof authored
      sigemptyset: may be implemented as a macro on some plats,
      so wrap it up in an inline function to get the C types
      right. (Thomas Nordin, using OpenBSD, spotted this one).
    • simonmar's avatar
      [project @ 2001-08-20 14:44:05 by simonmar] · 136e0eee
      simonmar authored
      This StablePtr test is old, most of the features it uses are
      deprecated and have been replaced by newer mechanisms (eg. foreign
      export) which is tested elsewhere.
    • simonpj's avatar
      [project @ 2001-08-20 14:18:30 by simonpj] · 6184716f
      simonpj authored
      Amplify comment on mkMachInt a little
    • simonmar's avatar
      [project @ 2001-08-20 14:10:02 by simonmar] · cc7aac1f
      simonmar authored
      Remove the in-range assertions on mkMachInt/mkMachWord.  They clearly
      aren't true, because there's nothing stopping you from writing an
      out-of-range Int# literal (although that's the only way I can see for
      these to arise).
      The wider issue is what should be done about out-of-range Int#
      literals; I vaguely remember that at some point we disallowed them,
      but I can't find anything in the logs.  The case which triggered the
      assertion, namely "intToWord# 0xffff0000" would appear to be a
      legitimate use for an out-of-range Int# literal though, given that
      you can't write Word# literals directly.
    • sewardj's avatar
      [project @ 2001-08-20 13:43:18 by sewardj] · 130f6b84
      sewardj authored
      I have braved the insanity of the Sparc calling conventions and lived
      to tell the tale.  This commit adds support for foreign import
      {static,dynamic} for Sparc in GHCi.
    • simonmar's avatar
      [project @ 2001-08-20 13:18:17 by simonmar] · 354050a3
      simonmar authored
      Commit a new autoheader-generated version of this file.
    • simonmar's avatar
      [project @ 2001-08-20 13:17:06 by simonmar] · 2649f0fc
      simonmar authored
      It isn't necessary to put HAVE_DLOPEN in here, autoheader can figure
      that out for itself.
    • simonmar's avatar
      [project @ 2001-08-20 13:15:52 by simonmar] · ab04639e
      simonmar authored
      dunno what DATA_SECTION_WIBBLE is supposed to be, but it doesn't
      appear anywhere else in the source tree so I'm removing it.
    • simonmar's avatar
      [project @ 2001-08-20 13:15:04 by simonmar] · 018a827a
      simonmar authored
      check for lstat()
    • chak's avatar
      [project @ 2001-08-20 12:36:10 by chak] · d1ba9036
      chak authored
      Added two links to CVS
    • simonpj's avatar
      [project @ 2001-08-20 11:00:18 by simonpj] · e80b5e1a
      simonpj authored
      Remove the identity-substitution "optimisation" from zip_ty_env.
      	-- There used to be a special case for when
      	--	ty == TyVarTy tv
      	-- (a not-uncommon case) in which case the substitution was dropped.
      	-- But the type-tidier changes the print-name of a type variable without
      	-- changing the unique, and that led to a bug.   Why?  Pre-tidying, we had
      	-- a type {Foo t}, where Foo is a one-method class.  So Foo is really a newtype.
      	-- And it happened that t was the type variable of the class.  Post-tiding,
      	-- it got turned into {Foo t2}.  The ext-core printer expanded this using
      	-- sourceTypeRep, but that said "Oh, t == t2" because they have the same unique,
      	-- and so generated a rep type mentioning t not t2.
      	-- Simplest fix is to nuke the "optimisation"