1. 06 Mar, 2019 6 commits
    • Ömer Sinan Ağacan's avatar
      rts: Unglobalize dead_weak_ptr_list and resurrected_threads · 5aab1d9c
      Ömer Sinan Ağacan authored
      In the concurrent nonmoving collector we will need the ability to call
      `traverseWeakPtrList` concurrently with minor generation collections.
      This global state stands in the way of this. However, refactoring it
      away is straightforward since this list only persists the length of a
      single GC.
      5aab1d9c
    • P.C. Shyamshankar's avatar
      Handle absolute paths to build roots in Hadrian. · 2ff77b98
      P.C. Shyamshankar authored
      Fixes #16187.
      
      This patch fixes various path concatenation issues to allow functioning
      builds with hadrian when the build root location is specified with an
      absolute path.
      
      Remarks:
      
      - The path concatenation operator (-/-) now handles absolute second operands
        appropriately. Its behavior should match that of POSIX (</>) in this
        regard.
      
      - The `getDirectoryFiles*` family of functions only searches for matches
        under the directory tree rooted by its first argument; all of the
        results are also relative to this root. If the first argument is the
        empty string, the current working directory is used.
      
        This patch passes the appropriate directory (almost always either `top`
        or `root`), and subsequently attaches that directory prefix so that
        the paths refer to the appropriate files.
      
      - Windows `tar` does not like colons (':') in paths to archive files, it
        tries to resolve them as remote paths. The `--force-local` option
        remedies this, and is applied on windows builds.
      2ff77b98
    • Ryan Scott's avatar
      Add regression test for #15918 · db039a4a
      Ryan Scott authored
      The test case in #15918 no longer triggers an `ASSERT` failure on
      GHC HEAD, likely due to commit
      68278382 (`Make a smart mkAppTyM`).
      This patch adds a regression test for #15918 to finally put it to
      rest.
      db039a4a
    • Ömer Sinan Ağacan's avatar
      c19a401d
    • Ömer Sinan Ağacan's avatar
      rts/Printer: Introduce a few more printing utilities · 23342e1f
      Ömer Sinan Ağacan authored
      These include printLargeAndPinnedObjects, printWeakLists, and
      printStaticObjects. These are generally useful things to have.
      23342e1f
    • Ben Gamari's avatar
      Rip out object splitting · 37f257af
      Ben Gamari authored
      The splitter is an evil Perl script that processes assembler code.
      Its job can be done better by the linker's --gc-sections flag. GHC
      passes this flag to the linker whenever -split-sections is passed on
      the command line.
      
      This is based on @DemiMarie's D2768.
      
      Fixes Trac #11315
      Fixes Trac #9832
      Fixes Trac #8964
      Fixes Trac #8685
      Fixes Trac #8629
      37f257af
  2. 05 Mar, 2019 3 commits
    • Krzysztof Gogolewski's avatar
      Fix map/coerce rule for newtypes with wrappers · 646b6dfb
      Krzysztof Gogolewski authored
      This addresses Trac #16208 by marking newtype wrapper
      unfoldings as compulsory.
      
      Furthermore, we can remove the special case for newtypes
      in exprIsConApp_maybe (introduced in 7833cf40).
      646b6dfb
    • David Eichmann's avatar
      Test Runner: don't show missing baseline warning for performance tests with... · 6c4e45b0
      David Eichmann authored
      Test Runner: don't show missing baseline warning for performance tests with expected changes on the current commit.
      
      Trac #16359
      6c4e45b0
    • Simon Peyton Jones's avatar
      Be more careful when naming TyCon binders · 80dfcee6
      Simon Peyton Jones authored
      This patch fixes two rather gnarly test cases:
        * Trac #16342 (mutual recursion)
          See Note [Tricky scoping in generaliseTcTyCon]
      
        * Trac #16221 (shadowing)
          See Note [Unification variables need fresh Names]
      
      The main changes are:
      
      * Substantial reworking of TcTyClsDecls.generaliseTcTyCon
        This is the big change, and involves the rather tricky
        function TcHsSyn.zonkRecTyVarBndrs.
      
        See Note [Inferring kinds for type declarations] and
        Note [Tricky scoping in generaliseTcTyCon] for the details.
      
      * bindExplicitTKBndrs_Tv and bindImplicitTKBndrs_Tv both now
        allocate /freshly-named/ unification variables. Indeed, more
        generally, unification variables are always fresh; see
        Note [Unification variables need fresh Names] in TcMType
      
      * Clarify the role of tcTyConScopedTyVars.
        See Note [Scoped tyvars in a TcTyCon] in TyCon
      
      As usual, this dragged in some more refactoring:
      
      * Renamed TcMType.zonkTyCoVarBndr to zonkAndSkolemise
      
      * I renamed checkValidTelescope to checkTyConTelescope;
        it's only used on TyCons, and indeed takes a TyCon as argument.
      
      * I folded the slightly-mysterious reportFloatingKvs into
        checkTyConTelescope. (Previously all its calls immediately
        followed a call to checkTyConTelescope.)  It makes much more
        sense there.
      
      * I inlined some called-once functions to simplify
        checkValidTyFamEqn. It's less spaghetti-like now.
      
      * This patch also fixes Trac #16251.  I'm not quite sure why #16251
        went wrong in the first place, nor how this patch fixes it, but
        hey, it's good, and life is short.
      80dfcee6
  3. 04 Mar, 2019 5 commits
  4. 02 Mar, 2019 1 commit
  5. 01 Mar, 2019 10 commits
  6. 28 Feb, 2019 1 commit
    • Moritz Angermann's avatar
      Cleanup iserv/iserv-proxy · f838809f
      Moritz Angermann authored
      This adds trace messages that include the processes name and as such
      make debugging and following the communication easier.
      
      It also adds a note regarding the fwd*Call proxy-communication logic
      between the proxy and the slave.
      
      The proxy will now also poll for 60s to wait for the remote iserv
      to come up. (Alternatively you can start the remote process
      beforehand; and just have iserv-proxy connect to it)
      f838809f
  7. 27 Feb, 2019 3 commits
    • Vladislav Zavialov's avatar
      Fix intermittent hie002 failure · 2e8f6649
      Vladislav Zavialov authored
      hie002 is a performance test that used to fail unpredictably:
      
      	max_bytes_used Decrease from x86_64-linux-deb9-debug baseline @ HEAD~2:
      	    Expected    hie002 (normal) max_bytes_used: 1190923992.0 +/-20%
      	    Lower bound hie002 (normal) max_bytes_used:    952739193
      	    Upper bound hie002 (normal) max_bytes_used:   1429108791
      	    Actual      hie002 (normal) max_bytes_used:    726270784
      	    Deviation   hie002 (normal) max_bytes_used:        -39.0 %
      	peak_megabytes_allocated Decrease from x86_64-linux-deb9-debug baseline @ HEAD~2:
      	    Expected    hie002 (normal) peak_megabytes_allocated: 2538.0 +/-20%
      	    Lower bound hie002 (normal) peak_megabytes_allocated:   2030
      	    Upper bound hie002 (normal) peak_megabytes_allocated:   3046
      	    Actual      hie002 (normal) peak_megabytes_allocated:   1587
      	    Deviation   hie002 (normal) peak_megabytes_allocated:  -37.5 %
      	*** unexpected stat test failure for hie002(normal)
      
      'max_bytes_used' and 'peak_megabytes_allocated' are too unstable without careful
      control of the runtime configuration. We fix this by using a more predictable
      metric, 'bytes allocated'.
      2e8f6649
    • Peter Trommler's avatar
      RTS: Add missing memory barrier · 5c084e04
      Peter Trommler authored
      In the work stealing queue a load-load-barrier is required to ensure
      that a read of queue data cannot be reordered before a read of the
      bottom pointer into the queue.
      
      The added load-load-barrier ensures that the ordering of writes enforced
      at the end of `pushWSDeque` is also respected in the order of reads in
      `stealWSDeque_`. In other words, when reading `q->bottom` we want to make
      sure that we see the updates to `q->elements`.
      
      Fixes #13633
      5c084e04
    • Vladislav Zavialov's avatar
      Treat kind/type variables identically, demolish FKTV · 5bc195b1
      Vladislav Zavialov authored
      Implements GHC Proposal #24: .../ghc-proposals/blob/master/proposals/0024-no-kind-vars.rst
      Fixes Trac #16334, Trac #16315
      
      With this patch, scoping rules for type and kind variables have been
      unified: kind variables no longer receieve special treatment. This
      simplifies both the language and the implementation.
      
      User-facing changes
      -------------------
      
      * Kind variables are no longer implicitly quantified when an explicit
        forall is used:
      
          p ::             Proxy (a :: k)    -- still accepted
          p :: forall k a. Proxy (a :: k)    -- still accepted
          p :: forall   a. Proxy (a :: k)    -- no longer accepted
      
        In other words, now we adhere to the "forall-or-nothing" rule more
        strictly.
      
        Related function: RnTypes.rnImplicitBndrs
      
      * The -Wimplicit-kind-vars warning has been deprecated.
      
      * Kind variables are no longer implicitly quantified in constructor
        declarations:
      
          data T a        = T1 (S (a :: k) | forall (b::k). T2 (S b)  -- no longer accepted
          data T (a :: k) = T1 (S (a :: k) | forall (b::k). T2 (S b)  -- still accepted
      
        Related function: RnTypes.extractRdrKindSigVars
      
      * Implicitly quantified kind variables are no longer put in front of
        other variables:
      
          f :: Proxy (a :: k) -> Proxy (b :: j)
      
          f :: forall k j (a :: k) (b :: j). Proxy a -> Proxy b   -- old order
          f :: forall k (a :: k) j (b :: j). Proxy a -> Proxy b   -- new order
      
        This is a breaking change for users of TypeApplications. Note that
        we still respect the dpendency order: 'k' before 'a', 'j' before 'b'.
        See "Ordering of specified variables" in the User's Guide.
      
        Related function: RnTypes.rnImplicitBndrs
      
      * In type synonyms and type family equations, free variables on the RHS
        are no longer implicitly quantified unless used in an outermost kind
        annotation:
      
          type T = Just (Nothing :: Maybe a)         -- no longer accepted
          type T = Just Nothing :: Maybe (Maybe a)   -- still accepted
      
        The latter form is a workaround due to temporary lack of an explicit
        quantification method. Ideally, we would write something along these
        lines:
      
          type T @a = Just (Nothing :: Maybe a)
      
        Related function: RnTypes.extractHsTyRdrTyVarsKindVars
      
      * Named wildcards in kinds are fixed (Trac #16334):
      
          x :: (Int :: _t)    -- this compiles, infers (_t ~ Type)
      
        Related function: RnTypes.partition_nwcs
      
      Implementation notes
      --------------------
      
      * One of the key changes is the removal of FKTV in RnTypes:
      
        - data FreeKiTyVars = FKTV { fktv_kis    :: [Located RdrName]
        -                          , fktv_tys    :: [Located RdrName] }
        + type FreeKiTyVars = [Located RdrName]
      
        We used to keep track of type and kind variables separately, but
        now that they are on equal footing when it comes to scoping, we
        can put them in the same list.
      
      * extract_lty and family are no longer parametrized by TypeOrKind,
        as we now do not distinguish kind variables from type variables.
      
      * PatSynExPE and the related Note [Pattern synonym existentials do not scope]
        have been removed (Trac #16315). With no implicit kind quantification,
        we can no longer trigger the error.
      
      * reportFloatingKvs and the related Note [Free-floating kind vars]
        have been removed. With no implicit kind quantification,
        we can no longer trigger the error.
      5bc195b1
  8. 26 Feb, 2019 1 commit
  9. 25 Feb, 2019 1 commit
    • Vladislav Zavialov's avatar
      Fix the ghci063 test on Darwin (Trac #16201) · f320f3b2
      Vladislav Zavialov authored
      We use "touch -r" to set modification timestamps, which leads to precision loss
      on Darwin. For example,
      
         before: 2019-02-25 01:11:23.807627350 +0300
         after:  2019-02-25 01:11:23.807627000 +0300
                                           ^^^
      This means we can't trick GHCi into thinking the file hasn't been changed by
      restoring its old timestamp, as we cannot faithfully restore all digits.
      
      The solution is to nullify the insignificant digits before the first :load
      f320f3b2
  10. 24 Feb, 2019 9 commits