Hi - I am reading Simon Peyton Jones's "Implementing lazy functional languages on stock hardware: the Spineless Tagless G-Machine" (I have version 2.5) paper. I would like very much to understand the contents of Figure 5 which illustrate the mapping of the "map" function from STG code to C. However I have some questions. For example,
* It looks like map_closure is the "closure" in that it has an array of StgWords and the first word is a pointer to an info table. This info table contains map_entry as the entry code. I am curious about the relationship between map_entry and map_direct. Why isn't the stuff in map_direct done in map_entry? * The ret_vec1 is a continuation that's placed on the B stack. I am assuming this is a "non-vectored" return that has contents similar to Figure 7 (which is for vectored returns), but is this true? Also, the "upd_nil" and "upd_cons" functions aren't defined in the example. Maybe they just don't do anything? * In the return_cons1() function, how did the head and tail get put into the RegData1 and RegData2 registers? * I may have missed it, but it looks like the fy and mfy use three contiguous words of heap each. Can I assume that the triple {Hp[-5], Hp[-4], Hp[-3]} are of a structure similar to figure 4, the "Layout of a closure", which in this case would have some pointer/non-pointer words? thanks for any help, -andrew _______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe