-
公开(公告)号:CN108633309A
公开(公告)日:2018-10-09
申请号:CN201680024626.3
申请日:2016-04-15
Applicant: 微软技术许可有限责任公司
IPC: G06F8/41
CPC classification number: G06F8/443 , G06F8/4434 , G06F8/47 , G06F9/4484
Abstract: 作为存储器使用优化,一种编译器标识其激活帧可以在调用方的栈上被分配而非在堆上分配帧的协同程序。例如,当编译器确定协同程序C的寿命不能超过首先调用协同程序C的例程R的寿命时,编译器生成代码以在R的栈上分配C的激活帧,而非生成代码以从堆存储器分配C的帧。在一些情况下,作为另一优化,协同程序C的代码还与调用C的例程R的代码内联。还描述了协同程序激活帧内容变化和布局变化。
-
公开(公告)号:CN108633309B
公开(公告)日:2021-09-03
申请号:CN201680024626.3
申请日:2016-04-15
Applicant: 微软技术许可有限责任公司
IPC: G06F8/41
Abstract: 作为存储器使用优化,一种编译器标识其激活帧可以在调用方的栈上被分配而非在堆上分配帧的协同程序。例如,当编译器确定协同程序C的寿命不能超过首先调用协同程序C的例程R的寿命时,编译器生成代码以在R的栈上分配C的激活帧,而非生成代码以从堆存储器分配C的帧。在一些情况下,作为另一优化,协同程序C的代码还与调用C的例程R的代码内联。还描述了协同程序激活帧内容变化和布局变化。
-
公开(公告)号:CN106716361A
公开(公告)日:2017-05-24
申请号:CN201580052024.4
申请日:2015-09-25
Applicant: 微软技术许可有限责任公司
Inventor: J·J·拉迪甘
Abstract: 编译器创建的高速缓存包含多个间接例程调用站点的目标地址。被分配给间接例程调用站点的序数被用于到高速缓存中的硬编码的偏移。可以使用例程计数器和间接调用站点计数器来计算序数。在运行时,间接例程调用站点的目标地址使用针对效率的硬编码的偏移与高速缓存中的条目相比较。如果目标地址与高速缓存条目相匹配,那么冗余调用被避免;否则,调用不是冗余的,并且高速缓存被更新。针对冗余所测试的调用可以是针对恶意软件的安全性检查或者在没有任何副作用的情况下计算返回值的计算昂贵的例程。可以检查栈指针有效性。可以利用用于可信任的计算的代码来保护高速缓存。可以执行尾部合并。
-
公开(公告)号:CN106716361B
公开(公告)日:2019-10-29
申请号:CN201580052024.4
申请日:2015-09-25
Applicant: 微软技术许可有限责任公司
Inventor: J·J·拉迪甘
Abstract: 编译器创建的高速缓存包含多个间接例程调用站点的目标地址。被分配给间接例程调用站点的序数被用于到高速缓存中的硬编码的偏移。可以使用例程计数器和间接调用站点计数器来计算序数。在运行时,间接例程调用站点的目标地址使用针对效率的硬编码的偏移与高速缓存中的条目相比较。如果目标地址与高速缓存条目相匹配,那么冗余调用被避免;否则,调用不是冗余的,并且高速缓存被更新。针对冗余所测试的调用可以是针对恶意软件的安全性检查或者在没有任何副作用的情况下计算返回值的计算昂贵的例程。可以检查栈指针有效性。可以利用用于可信任的计算的代码来保护高速缓存。可以执行尾部合并。
-
-
-