Patent ID: 8191054

Claim:
A method of preparing an executable program for a multi-core architecture from a plurality of object code modules, including a shared memory that is shared between multiple cores and a plurality of private memories, each of which is private to a core, the method comprising: identifying a shared symbol disposed in the shared memory that is (i) satisfied by multiple definitions disposed in the plurality of private memories and (ii) referenced by a plurality of cores in the multi-core architecture; and duplicating, for each referencing core, the identified symbol in the shared memory, wherein each of the duplicated symbols resolves to symbols stored only in the private memory of the core referencing the duplicated symbol, wherein identifying the shared symbols comprises (i) providing a representation of the executable program as a directed graph comprising nodes and links, wherein the nodes are symbol definitions and the links are symbol uses and (ii) categorizing each node as either private to one core or shared between cores, and wherein duplicating the identified symbols comprises transforming the graph to duplicate shared nodes and their links such that no private node is reachable from another private node that is private to a different core.