1. A method of processing computer code in a compiler or code translator, comprising the steps of: generating a flow graph representing said code, said flow graph being composed of a plurality of blocks, and said blocks being composed of a plurality of elements, each of said elements representing a single action in said code, each of said blocks representing a sequence of one or more of said elements beginning with an entry and ending in a branch or return, and each said block having no intermediate entry; tracing through each said block of said flow graph to detect any said elements which have an effect of modifying a stack pointer for a stack, and recording for each said block a net change in said stack pointer by said block and a total depth of said stack from a beginning of said tracing; and recording for each said block that said block has been visited in said tracing, and, in tracing through each said block of said flow graph, checking each said block before entering to see if said block has been visited, and, if so, going to another path rather than visiting said block again.