主权项 |
1. 一种计算机实现的编译计算机代码的方法,该方法包括:根据抽象计算机指令创建一信号流图,其中该信号流图具有多个基本程序块和至少一个数据对象,其中将抽象指令转换成由计算机代码形成的一个语义分析树;对所述多个基本程序块指定一个深度优先次序;确定所述多个基本程序块两两之间的支配关系;确定所述信号流图内是否存在循环,如果存在循环,标识该循环;确定所述至少一个数据对象的应用;根据该应用、标识的循环、所述多个基本程序块的支配关系和深度优先次序来为所述至少一个数据对象确定一创建点、撤消点和锁定点;以及在所述计算机代码中插入指令以在所述创建点创建所述至少一个数据对象,在所述撤消点撤消所述至少一个数据对象并在所述锁定点锁定所述至少一个数据对象,其中:确定一创建点进一步包括:标识所述至少一个数据对象的第一次使用并从所述多个基本程序块中标识所述第一次使用发生在其中的第一基本程序块,其中包括所述第一次使用的所述数据对象的所述第一基本程序块是初始创建点;标识所述至少一个数据对象在所述第一次使用后的一次使用并从所述多个基本程序块中标识所述第一次使用后的所述一次使用发生在其中的第二基本程序块;计算所述第一基本程序块的预支配顶点与所述第二基本程序块的预支配顶点的交集;确定所述交集是否包含所述第一基本程序块;以及如果所述交集不包含所述第一基本程序块,则从所述交集中选择一新创建点;确定一撤消点包括:标识所述至少一个数据对象的最后一次使用并从所述多个基本程序块中标识第一基本程序块,所述最后一次使用发生在该第一基本程序块中,其中包括所述最后一次使用的所述数据对象的所述第一基本程序块是初始撤销点;标识所述至少一个数据对象在最后一次使用前的一次使用并从所述多个基本程序块中标识最后一次使用前的所述一次使用发生在其中的第二基本程序块;计算所述第一基本程序块的在后支配顶点与所述第二基本程序块的在后支配顶点的交集;确定所述交集是否包含所述第一基本程序块;以及如果所述交集不包含所述第一基本程序块,则从所述交集中选择一新撤消点;以及确定一锁定点进一步包括:标识所述至少一个数据对象的第一次使用并从所述多个基本程序块中标识所述第一次使用发生在其中的第一基本程序块,其中包括所述第一次使用的所述数据对象的所述第一基本程序块是初始锁定点;标识所述至少一个数据对象在所述第一次使用后的一次使用并从所述多个基本程序块中标识所述第一次使用后的所述一次使用发生在其中的第二基本程序块;计算所述第一基本程序块的预支配顶点与所述第二基本程序块的预支配顶点的交集;确定所述交集是否包含所述第一基本程序块;以及如果所述交集不包含所述第一基本程序块,则从所述交集中选择一新锁定点。 |