Glasgow Haskell Compiler

Glasgow Haskell Compiler

The Glorious Glasgow Haskell Compiler.

Forked from Glasgow Haskell Compiler / GHC

  • Andreas Klebinger's avatar
    Make sure mkSplitUniqSupply stores the precomputed mask only. · 4549cadf
    Andreas Klebinger authored
    mkSplitUniqSupply was lazy on the boxed char.
    
    This caused a bunch of issues:
    * The closure captured the boxed Char
    * The mask was recomputed on every split of the supply.
    * It also caused the allocation of MkSplitSupply to happen in it's own
    (allocated) closure. The reason of which I did not further investigate.
    
    We know force the computation of the mask inside mkSplitUniqSupply.
    * This way the mask is computed at most once per UniqSupply creation.
    * It allows ww to kick in, causing the closure to retain the unboxed
    value.
    
    Requesting Uniques in a loop is now faster by about 20%.
    
    I did not check the impact on the overall compiler, but I added a test
    to avoid regressions.
    4549cadf
Name
Last commit
Last update
.gitlab Loading commit data...
bindisttest Loading commit data...
compiler Loading commit data...
distrib Loading commit data...
docs Loading commit data...
driver Loading commit data...
ghc Loading commit data...
hadrian Loading commit data...
includes Loading commit data...
libffi Loading commit data...
libffi-tarballs @ 96d02800 Loading commit data...
libraries Loading commit data...
mk Loading commit data...
nofib @ 7a702cc1 Loading commit data...
rts Loading commit data...
rules Loading commit data...
testsuite Loading commit data...
utils Loading commit data...
.appveyor.sh Loading commit data...
.ghcid Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gitlab-ci.yml Loading commit data...
.gitmodules Loading commit data...
.mailmap Loading commit data...
.travis.yml Loading commit data...
CODEOWNERS Loading commit data...
HACKING.md Loading commit data...
INSTALL.md Loading commit data...
LICENSE Loading commit data...
MAKEHELP.md Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
Vagrantfile Loading commit data...
aclocal.m4 Loading commit data...
appveyor.yml Loading commit data...
boot Loading commit data...
build.nix.sh Loading commit data...
config.guess Loading commit data...
config.sub Loading commit data...
configure.ac Loading commit data...
ghc.mk Loading commit data...
install-sh Loading commit data...
llvm-passes Loading commit data...
llvm-targets Loading commit data...
packages Loading commit data...
validate Loading commit data...