Tag pointers in interpreted constructors
authormniip <mniip@mniip.com>
Tue, 30 Aug 2016 20:57:47 +0000 (16:57 -0400)
committerBen Gamari <ben@smart-cactus.org>
Tue, 30 Aug 2016 21:50:51 +0000 (17:50 -0400)
commita25bf2673d0f6db5f454619ddf91f974cace4e8b
tree7b56d2ecef4a88999c8743d1ddc97a3b02c6933a
parent83b326cda759cfd4c538595cf38ee23eb81a4c76
Tag pointers in interpreted constructors

Instead of stg_interp_constr_entry there are now 7 functions (one for
each value of the tag bits) that tag the constructor pointer before
returning. This is consistent with compiled constructors' entry code,
and expectations that compiled code places on compiled constructors. The
iserv protocol is extended with an extra field that explains what
pointer tag the constructor should use.

Test Plan: Added tests for #12523

Reviewers: erikd, bgamari, hvr, austin, simonmar

Reviewed By: simonmar

Subscribers: osa1, thomie, rwbarton

Differential Revision: https://phabricator.haskell.org/D2473

GHC Trac Issues: #12523
compiler/ghci/ByteCodeItbls.hs
includes/stg/MiscClosures.h
libraries/ghci/GHCi/InfoTable.hsc
libraries/ghci/GHCi/Message.hs
libraries/ghci/GHCi/Run.hs
rts/RtsSymbols.c
rts/StgMiscClosures.cmm
testsuite/tests/ghci/scripts/T12523.hs [new file with mode: 0644]
testsuite/tests/ghci/scripts/T12523.script [new file with mode: 0644]
testsuite/tests/ghci/scripts/T12523.stdout [new file with mode: 0644]
testsuite/tests/ghci/scripts/all.T