diff options
| author | Simon Peyton Jones <simonpj@microsoft.com> | 2011-11-26 21:47:39 +0000 |
|---|---|---|
| committer | Simon Peyton Jones <simonpj@microsoft.com> | 2011-11-26 21:47:39 +0000 |
| commit | e99f323405a8398f0521686d87124453e85b599a (patch) | |
| tree | 96a0b33463c1093363b33d078ec437d89a972a81 /compiler/codeGen | |
| parent | 18aae18503442276e14a47eabf4786bc7210662e (diff) | |
| download | haskell-e99f323405a8398f0521686d87124453e85b599a.tar.gz | |
Add missing cases in TcUnify.uUnfilledVars
These missing cases dealt with unifying a meta type variable with a
skolem when the kinds match -- a pretty common case. The missing
cases meant that instead of directly solving on the fly (which is easy
in this situation) we were generating an equality constraint viat
`utype_defer`. This isn't *wrong*, but it's a lot less efficient than
it could be!
All this arose from investigating #5631. This one change does this
to the compiler allocation
Before:
821,257,552 bytes allocated in the heap
94 MB total memory in use (0 MB lost due to fragmentation)
MUT time 1.54s ( 1.67s elapsed)
GC time 1.36s ( 1.60s elapsed)
Total time 2.93s ( 3.27s elapsed)
After:
424,244,124 bytes allocated in the heap
49 MB total memory in use (0 MB lost due to fragmentation)
MUT time 0.64s ( 0.89s elapsed)
GC time 0.83s ( 0.77s elapsed)
Total time 1.47s ( 1.66s elapsed)
Not bad for a 3-line change!
Diffstat (limited to 'compiler/codeGen')
0 files changed, 0 insertions, 0 deletions
