- Mar 19, 2014
-
-
Gergő Érdi authored
This is so that generated names like e.g. workers don't show up as infix operators when using something like -ddump-simpl.
-
- Mar 14, 2014
-
-
Gergő Érdi authored
-
Gergő Érdi authored
-
Gergő Érdi authored
-
- Mar 13, 2014
-
-
Gergő Érdi authored
* AnId * ACoAxiom * AConLike
-
Gergő Érdi authored
-
Gergő Érdi authored
-
- Mar 12, 2014
-
-
Gergő Érdi authored
-
- Mar 11, 2014
-
-
tibbe authored
Also make sure allocHeapClosure updates profiling counters with the memory allocated.
-
- Move array representation knowledge into SMRep - Separate out low-level heap-object allocation so that we can reuse it from doNewArrayOp - remove card-table initialisation, we can safely ignore the card table for newly allocated arrays.
-
I'd like to be able to pack together non-pointer fields that are less than a word in size, and this is a necessary prerequisite.
-
tibbe authored
This results in a 46% runtime decrease when allocating an array of 16 unit elements on a 64-bit machine. In order to allow newArray# to have both an inline and an out-of-line implementation, cgOpApp is refactored slightly. The new implementation of cgOpApp should make it easier to add other primops with both inline and out-of-line implementations in the future.
-
Simon Peyton Jones authored
Sorry about that...
-
Simon Peyton Jones authored
Nowadays SetLevels floats case expressions as well as let-bindings, and case expressions bind type variables. We need to clone all such floated binders, to avoid accidental name capture. But I'd forgotten to substitute for the cloned type variables, causing #8714. (In the olden days only Ids were cloned, from let-bindings.) This patch fixes the bug and does quite a bit of clean-up refactoring as well, by putting the context level in the LvlEnv. There is no effect on performance, except that nofib 'rewrite' improves allocations by 3%. On investigation I think it was a fluke to do with loop-cutting in big letrec nests. But at least it's a fluke in the right direction. Program Size Allocs Runtime Elapsed TotalMem -------------------------------------------------------------------------------- Min -0.4% -3.0% -19.4% -19.4% -26.7% Max -0.0% +0.0% +17.9% +17.9% 0.0% Geometric Mean -0.1% -0.0% -0.7% -0.7% -0.4%
-
Simon Peyton Jones authored
-
- Mar 10, 2014
-
-
Simon Peyton Jones authored
Yet another small way in which polymorphic kinds needs a bit of care See Note [Unify kinds in deriving] in TcDeriv
-
- Mar 07, 2014
-
-
Simon Peyton Jones authored
The issue here is described in Note [Binding scoped type variables] in TcPat. When implementing this fix I was able to make things quite a bit simpler: * The type variables in a type signature now never unify with each other, and so can be straightfoward skolems. * We only need the SigTv stuff for signatures in patterns, and for kind variables.
-
Simon Peyton Jones authored
When deriving Functor, Foldable, Traversable, we need only look at the way that the last type argument is treated. It's fine for there to be existentials etc, provided they don't affect the last type argument. See Note [Check that the type variable is truly universal] in TcDeriv.
-
- Mar 06, 2014
-
-
Simon Peyton Jones authored
-
Simon Peyton Jones authored
Because of GADTs and casts we were getting binders whose demand annotation was more deeply nested than made sense for its type. See Note [Trimming a demand to a type], in Demand.lhs, which I reproduce here: Note [Trimming a demand to a type] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Consider this: f :: a -> Bool f x = case ... of A g1 -> case (x |> g1) of (p,q) -> ... B -> error "urk" where A,B are the constructors of a GADT. We'll get a U(U,U) demand on x from the A branch, but that's a stupid demand for x itself, which has type 'a'. Indeed we get ASSERTs going off (notably in splitUseProdDmd, Trac #8569). Bottom line: we really don't want to have a binder whose demand is more deeply-nested than its type. There are various ways to tackle this. When processing (x |> g1), we could "trim" the incoming demand U(U,U) to match x's type. But I'm currently doing so just at the moment when we pin a demand on a binder, in DmdAnal.findBndrDmd.
-
Simon Peyton Jones authored
-
- Mar 05, 2014
-
-
Gabor Greif authored
-
Joachim Breitner authored
This patch improves the call arity analysis in various ways. Most importantly, it enriches the analysis result information so that when looking at a call, we do not have to make a random choice about what side we want to take the information from. Instead we can combine the results in a way that does not lose valuable information. To do so, besides the incoming arities, we store remember "what can be called with what", i.e. an undirected graph between the (interesting) free variables of an expression. Of course it makes combining the results a bit more tricky (especially mutual recursion), but still doable. The actually implemation of the graph structure is abstractly put away in a module of its own (UnVarGraph.hs) The implementation is geared towards efficiently representing the graphs that we need (which can contain large complete and large complete bipartite graphs, which would be huge in other representations). If someone feels like designing data structures: There is surely some speed-up to be obtained by improving that data structure. Additionally, the analysis now takes into account that if a RHS stays a thunk, then its calls happen only once, even if the variables the RHS is bound to is evaluated multiple times, or is part of a recursive group.
-
- Feb 28, 2014
-
-
Erik de Castro Lopo authored
Loads should now handle up to 32 bit offsets.
-
- Feb 27, 2014
-
-
Simon Marlow authored
To evaluate most non-updatable thunks, we can jump directly to the entry code if we know what it is. But not for a selector thunk: these might be updated by the garbage collector, so we have to enter the closure with an indirect jump through its info pointer.
-
- Feb 26, 2014
-
-
Richard Eisenberg authored
It turns out that the enhanced repPred function in DsMeta assumed that the head of any constraint would be a tycon. This assumption is false. Happily, the solution involved *deleting* code. I just removed repPred in favor of repTy, and added the HsEqTy case to repTy, where it should be anyway.
-
- Feb 25, 2014
-
-
Herbert Valerio Riedel authored
This matches GCC's choice of Unicode quotation marks (i.e. U+2018 and U+2019) and therefore looks more familiar on the console. This addresses #2507. Signed-off-by:
Herbert Valerio Riedel <hvr@gnu.org>
-
Mateusz Kowalczyk authored
Seeing "<document comment>" when trying to debug things in Haddock is utterly useless and because this instance exists, we can't even make our own. No instance at all would be better than what it was! Admittedly, this doesn't produce the nicest output. Perhaps wrapping the comments in {- -} would be in order but I think it's fine until someone complains.
-
- Feb 24, 2014
-
-
Mateusz Kowalczyk authored
-
Austin Seipp authored
See the comments in Packages.lhs and the ticket for some more explanation. This is a temporary fix while we consider a way to re-enable intra-package references in the mean time. Authored-by:
Reid Barton <rwbarton@gmail.com> Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
- Feb 20, 2014
-
-
Austin Seipp authored
Patch submitted by an anonymous friend on the bug tracker. This also fixes TH_RichKinds2 which had a slight message output wibble (it uses the qualified name of the promoted datacon) Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
- Feb 19, 2014
-
-
Austin Seipp authored
As pointed out by Albert Y. C. Lai on glasgow-haskell-users. Signed-off-by:
Austin Seipp <austin@well-typed.com>
-
- Feb 18, 2014
-
-
Joachim Breitner authored
-
Joachim Breitner authored
-
Joachim Breitner authored
-
Joachim Breitner authored
-
Joachim Breitner authored
-
Joachim Breitner authored
-
Joachim Breitner authored
-
Joachim Breitner authored
by elaborating the domain a bit.
-