Patent ID: 7797691

Claim:
A computer based method of automatically transforming essentially sequential application code into a plurality of functionally equivalent codes, comprising: receiving the essentially sequential application code; receiving instructions separate from the essentially sequential application code, the instructions marking task boundaries within the essentially sequential application code to thereby define a plurality of tasks, said receiving being based on analysis of said essentially sequential application code; determining whether the essentially sequential application code can be separated at at least one of the tasks boundaries by performing a data flow analysis, globally over said essentially sequential application code across program constructs of said essentially sequential application code wherein determining whether the essentially sequential application code can be separated comprises: determining, globally over the essentially sequential application code, liveness information of substantially all of the variables in the code; and thereafter determining, for at least one of the tasks, whether it can be separated by only evaluating the liveness information at at least one of the task boundaries; and if the essentially sequential application code can be separated at at least one of the tasks boundaries; and automatically generating at least one of the plurality of functionally equivalent codes for at least two of the tasks.