bytecode: Do not generate `SLIDE x 0` instructionsmaster
commitbf8c7d6edf224c083c90ab3ddac49979ac18ad39
authorMatthew Pickering <matthewtpickering@gmail.com>
Tue, 28 Jan 2025 14:59:15 +0000 (28 14:59 +0000)
committerMarge Bot <ben+marge-bot@smart-cactus.org>
Wed, 29 Jan 2025 07:31:44 +0000 (29 02:31 -0500)
treed3f697bb65be315144fbaf6d142b120315b07c88
parent8847125fecdccc4dcda45b1dba519c6dd88b4401
bytecode: Do not generate `SLIDE x 0` instructions

SLIDE x 0 is a no-op as it means to shift x elements of the stack by no
spaces. In the interpreter, this results in a loop which copies an array
element into the same place.

I have instrumented GHCi to count how many of these instructions are interpreted.
The workload was `ghc` compiling two simple modules.

Total no-op slides: 7793476
Total slides: 11413289
Percentage useless (slides): 68%
Percentage uselss of total instructions: 9%
compiler/GHC/StgToByteCode.hs