From: simonpj Date: Fri, 21 Mar 2003 09:22:28 +0000 (+0000) Subject: [project @ 2003-03-21 09:22:28 by simonpj] X-Git-Tag: Approx_11550_changesets_converted~1054 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=301f1535d4bec8659ee6e62c96608156c36ceea2;p=ghc-hetmet.git [project @ 2003-03-21 09:22:28 by simonpj] Notes about constructor info tables --- diff --git a/ghc/docs/comm/the-beast/data-types.html b/ghc/docs/comm/the-beast/data-types.html index 7e3a264..fef4852 100644 --- a/ghc/docs/comm/the-beast/data-types.html +++ b/ghc/docs/comm/the-beast/data-types.html @@ -220,7 +220,23 @@ that type, and that in turn depends on whether module M was compiled with -funbox-strict-fields. So when writing an interface file, GHC therefore records with each data type whether its strict fields (if any) should be unboxed. + +

Labels and info tables

+ +Quick rough notes: SLPJ March 2003.

+Every data constructor Chas two info tables: +

+Statically-allocated constructors are not moved by the garbage collector, and therefore have a different closure +type from dynamically-allocated constructors; hence they need +a distinct info table. +Both info tables share the same entry code, but since the entry code is phyiscally juxtaposed with the +info table, it must be duplicated (C_static_entry and C_con_entry respectively). +