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.
      0c190d9e
    • simonpj's avatar
      [project @ 2001-08-20 16:48:50 by simonpj] · 01417029
      simonpj authored
      Add assertion
      01417029
    • 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`'.
      9035ad45
    • 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
      now.
      5cd52635
    • 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).
      63ea1af6
    • 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.
      136e0eee
    • simonpj's avatar
      [project @ 2001-08-20 14:18:30 by simonpj] · 6184716f
      simonpj authored
      Amplify comment on mkMachInt a little
      6184716f
    • 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.
      cc7aac1f
    • 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.
      130f6b84
    • simonmar's avatar
      [project @ 2001-08-20 13:18:17 by simonmar] · 354050a3
      simonmar authored
      Commit a new autoheader-generated version of this file.
      354050a3
    • 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.
      2649f0fc
    • 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.
      ab04639e
    • simonmar's avatar
      [project @ 2001-08-20 13:15:04 by simonmar] · 018a827a
      simonmar authored
      check for lstat()
      018a827a
    • chak's avatar
      [project @ 2001-08-20 12:36:10 by chak] · d1ba9036
      chak authored
      Added two links to CVS
      d1ba9036
    • 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"
      e80b5e1a