1. A method for executing indirect function calls in a synchronous parallel thread processor, the method comprising: receiving a first control instruction that references a set of pointers to one or more functions, the pointers specifying addresses of said functions in a program; determining if two of the pointers corresponding to active threads in a thread group are different indicating that the active threads diverge during execution of said indirect function calls in the synchronous parallel thread processor; pushing a first token onto an execution stack when the active threads diverge, the token including an address of the first control instruction; and updating an active program counter to specify an address of a first function of said functions.