On Fri, Sep 15, 2017 at 2:12 PM, Dan Greiner <[email protected]> wrote:
> BRANCH INDIRECT ON CONDITION (BIC) was primarily designed in support of > the new guarded-storage facility (GSF). GSF is described beginning on page > 4-64 of the IBM z/Architecture Principles of Operation (SA22-7832-11). > Programming note 1 on p. 4-72 gives a (very) brief overview of GSF concepts. > > Briefly, GSF provides support for programming languages that implement > so-called "garbage collection" by allowing the language to designate > sections of it's heap that are undergoing urban renewal. When the program > loads a pointer to a program object (by means of the new LOAD GUARDED [LGG] > or LOAD LOGICAL AND SHIFT GUARDED [LLGFSG] instructions), either (a) the > instruction executes normally (i.e., the target location is not undergoing > urban renewal), or (b) the target location is is in a guarded area, in > which case a guarded-storage event (GSE) is recognized. In the case of GSE > recognition, control branches to a pre-registered event handler, where the > program can perform whatever fix-up is required to effect garbage > collection, and then branch back to the original LGG / LLGFSG to try it > again. > > BIC provides the means by which the GSE handler can branch back with only > a stack pointer. That is, after performing whatever garbage-collection is > necessary, the GSE handler can restore any and all registers it altered, > and then branch back to the LGG / LLGFSG with only the stack pointer. > > Using BIC for indexed branches was considered to be interesting (though > secondary). > > FYI: Although I was involved with the architecture definition of GSF and > BIC, I am now retired. > Very interesting. Especially the part about the garbage collection. I was curious what that was all about. -- UNIX was not designed to stop you from doing stupid things, because that would also stop you from doing clever things. -- Doug Gwyn Maranatha! <>< John McKown
