ByteCodeGen: use depth instead of offsets in BCEnv
authorMichal Terepeta <michal.terepeta@gmail.com>
Tue, 11 Jul 2017 16:00:16 +0000 (12:00 -0400)
committerBen Gamari <ben@smart-cactus.org>
Tue, 11 Jul 2017 17:41:55 +0000 (13:41 -0400)
commitfe6618b14712b829b8675fc6024dd33e9598d09a
treea52718e0cebe64688f621dd5ed1e18ce313b0fb1
parentb8f33bc6b738b0378976e42b79369f0e53b680c7
ByteCodeGen: use depth instead of offsets in BCEnv

This is based on unfinished work in D38 started by Simon Marlow and is
the first step for fixing #13825. (next step use byte-indexing for
stack)

The change boils down to adjusting everything in BCEnv by +1, which
simplifies the code a bit.

I've also looked into a weird stack adjustement that we did in
`getIdValFromApStack` and moved it to `ByteCodeGen` to just keep
everything in one place. I've left a comment about this.

Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com>
Test Plan: ./validate

Reviewers: austin, hvr, bgamari, simonmar

Reviewed By: bgamari, simonmar

Subscribers: simonmar, rwbarton, thomie

GHC Trac Issues: #13825

Differential Revision: https://phabricator.haskell.org/D3708
compiler/ghci/ByteCodeGen.hs
libraries/ghci/GHCi/Run.hs