1. 30 May, 2006 4 commits
    • simonmar@microsoft.com's avatar
      Win32: add _imp__tzname · 4285fd96
      simonmar@microsoft.com authored
      4285fd96
    • simonmar@microsoft.com's avatar
      fix Win32 build · 7a876582
      simonmar@microsoft.com authored
      7a876582
    • Simon Marlow's avatar
      replace stgMallocBytesRWX() with our own allocator · e3c55aeb
      Simon Marlow authored
      See bug #738
      
      Allocating executable memory is getting more difficult these days.  In
      particular, the default SELinux policy on Fedora Core 5 disallows
      making the heap (i.e. malloc()'d memory) executable, although it does
      apparently allow mmap()'ing anonymous executable memory by default.
      
      Previously, stgMallocBytesRWX() used malloc() underneath, and then
      tried to make the page holding the memory executable.  This was rather
      hacky and fails with Fedora Core 5.  
      
      This patch adds a mini-allocator for executable memory, based on the
      block allocator.  We grab page-sized blocks and make them executable,
      then allocate small objects from the page.  There's a simple free
      function, that will free whole pages back to the system when they are
      empty.
      e3c55aeb
    • Simon Marlow's avatar
      add time subdir · 6b36d8ad
      Simon Marlow authored
      6b36d8ad
  2. 25 May, 2006 5 commits
  3. 24 May, 2006 4 commits
  4. 23 May, 2006 2 commits
  5. 22 May, 2006 5 commits
    • simonpj@microsoft.com's avatar
      Prune imports · 1375c0a7
      simonpj@microsoft.com authored
      1375c0a7
    • simonpj@microsoft.com's avatar
      Add deShadowBinds · 2c969ecc
      simonpj@microsoft.com authored
      Add CoreSubst.deShadowBinds, which removes shadowing from 
      a Core term.  I thought we wanted it for SpecConstr, but in 
      fact decided not to use it. Nevertheless, it's a useful sort
      of function to have around, and it has a particularly simple
      definition!
      2c969ecc
    • simonpj@microsoft.com's avatar
      Inline in a call argument if the caller has RULES · a2c92ccc
      simonpj@microsoft.com authored
      This is an experimental change suggested by Roman.  Consider
      	
      	{-# INLINE f #-}
      	f x y = ...
      
      	....(g (f a b))...
      
      where g has RULES.  Then we'd like to inline f, even though the context of
      the call is otherwise 100% boring -- g is lazy and we know nothing about
      x and y. 
      
      This patch just records in the continuation that f has rules.  And does so
      somewhat recursively...e.g.
      
      	...(g (h (f a b)))...
      
      where g has rules.  
      
      a2c92ccc
    • simonpj@microsoft.com's avatar
      Add idHasRules · b7d8dffa
      simonpj@microsoft.com authored
      Add Id.idHasRules :: Id -> Bool, with the obvious semantics.
      This patch makes sense by itself, but it's just a tidy-up.
      
      b7d8dffa
    • simonpj@microsoft.com's avatar
      Transmit inline pragmas faithfully · 39dd1943
      simonpj@microsoft.com authored
      *** WARNING: you will need to recompile your libraries 
      ***	     when you pull this patch (make clean; make)
      
      The inline pragma on wrapper-functions was being lost; this patch 
      makes it be transmitted faithfully.
      
      The reason is that we don't write the full inlining for a wrapper into
      an interface file, because it's generated algorithmically from its strictness
      info.  But previously the inline pragma as being written out only when we
      wrote out an unfolding, and hence it was lost for a wrapper.
      
      This makes a particular difference when a function has a NOINLINE[k] pragma.
      Then it may be w/w'd, and we must retain the pragma.  It's the only consistent
      thing to do really.
      
      The change does change the binary format of interface files, slightly.
      So you need to recompile all your libraries.
      39dd1943
  6. 19 May, 2006 3 commits
    • simonpj@microsoft.com's avatar
      Improved RULE lhs typechecking; less dictionary sharing · 5a8a219c
      simonpj@microsoft.com authored
      See long comment with Simplify.tcSimplifyRuleLhs.
      
      Here's the key example:
      
        RULE "g"  forall x y z. g (x == y) (y == z) = ...
      
      Here, the two dictionaries are *identical*, but we do NOT WANT to
      generate the rule
      
      RULE	forall x::a, y::a, z::a, d1::Eq a
      	  f ((==) d1 x y) ((>) d1 y z) = ...
      
      Instead we want
      
      RULE	forall x::a, y::a, z::a, d1::Eq a, d2:Eq a
      	  f ((==) d1 x y) ((>) d2 y z) = ...
      5a8a219c
    • simonpj@microsoft.com's avatar
      Bug-fix for infix function definitions (parse/rename) · cbc86d74
      simonpj@microsoft.com authored
        
      Fix a crash provoked by
      
      	x `op` y = x
      	op       = True
      
      The trouble was that there is currently a single 'infix' flag for the
      whole group; and RnTypes.checkPrecMatch was therefore expecting the
      second eqn to have two args.
      
      This fixes the crash, and also or-s the infix flags for the various
      eqns together; previously it was just taken from the first eqn, which
      was wrong.
      
      cbc86d74
    • simonpj@microsoft.com's avatar
      Remove misleading comments · c2a3f586
      simonpj@microsoft.com authored
      c2a3f586
  7. 18 May, 2006 9 commits
  8. 17 May, 2006 8 commits