diff options
| author | Bartosz Nitka <niteria@gmail.com> | 2015-11-21 15:57:09 +0100 |
|---|---|---|
| committer | Ben Gamari <ben@smart-cactus.org> | 2015-11-21 11:15:09 -0500 |
| commit | 2325bd4e0fad0e5872556c5a78d1a6a1873e7201 (patch) | |
| tree | 2aa0eaf21f76b07155ec280095b74e622900e1c3 /compiler/ghci/ByteCodeInstr.hs | |
| parent | 6664ab8356f00ef0b2186f30a0d29a9c0228c045 (diff) | |
| download | haskell-2325bd4e0fad0e5872556c5a78d1a6a1873e7201.tar.gz | |
Create a deterministic version of tyVarsOfType
I've run into situations where I need deterministic `tyVarsOfType` and
this implementation achieves that and also brings an algorithmic
improvement. Union of two `VarSet`s takes linear time the size of the
sets and in the worst case we can have `n` unions of sets of sizes
`(n-1, 1), (n-2, 1)...` making it quadratic.
One reason why we need deterministic `tyVarsOfType` is in `abstractVars`
in `SetLevels`. When we abstract type variables when floating we want
them to be abstracted in deterministic order.
Test Plan: harbormaster
Reviewers: simonpj, goldfire, austin, hvr, simonmar, bgamari
Reviewed By: simonmar
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D1468
GHC Trac Issues: #4012
Diffstat (limited to 'compiler/ghci/ByteCodeInstr.hs')
| -rw-r--r-- | compiler/ghci/ByteCodeInstr.hs | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/ghci/ByteCodeInstr.hs b/compiler/ghci/ByteCodeInstr.hs index fee15bbf74..2de4941aa6 100644 --- a/compiler/ghci/ByteCodeInstr.hs +++ b/compiler/ghci/ByteCodeInstr.hs @@ -44,7 +44,7 @@ data ProtoBCO a protoBCOBitmapSize :: Word16, protoBCOArity :: Int, -- what the BCO came from - protoBCOExpr :: Either [AnnAlt Id VarSet] (AnnExpr Id VarSet), + protoBCOExpr :: Either [AnnAlt Id DVarSet] (AnnExpr Id DVarSet), -- malloc'd pointers protoBCOPtrs :: [Either ItblPtr (Ptr ())] } |
