首页> 外文期刊>Scientific programming >Transient variable caching in Java's stack-based intermediate representation
【24h】

Transient variable caching in Java's stack-based intermediate representation

机译:Java基于堆栈的中间表示形式中的瞬时变量缓存

获取原文
获取原文并翻译 | 示例
       

摘要

Java's stack-based intermediate representation (IR) is typi- cally coerced to execute on register-based architectures. Un- optimized compiled code dutifully replicates transient vari- able usage designated by the programmer and common op- timization practices tend to introduce further usage (i.e., CSE, Loop-invariant Code Motion, etc.). On register based machines, often transient variables are cached within regis- ters (when available) saving the expense of actually access- ing memory. Unfortunately, in stack-based environments be- cause of the need to push and pop the transient values, further performance improvement is possible. This paper presents Transient Variable Caching (TVC), a technique for eliminat- ing transient variable overhead whenever possible. This opti- mization would find a likely home in optimizers attached to the back of popular Java compilers.` Side effects of the al- gorithm include significant instruction reordering and intro- duction of many stack-manipulation operations. This combi- nation has proven to greatly impede the ability to decompile stack-based IR code sequences. The code that results from the transform is faster, smaller, and greatly impedes decom- pilation.
机译:Java的基于堆栈的中间表示(IR)通常被强制在基于寄存器的体系结构上执行。未优化的编译代码会忠实地复制程序员指定的瞬态变量用法,而常见的优化实践往往会引入更多用法(即CSE,循环不变代码运动等)。在基于寄存器的计算机上,经常将瞬态变量缓存在寄存器中(如果可用),从而节省了实际访问内存的开销。不幸的是,在基于堆栈的环境中,由于需要压入和弹出瞬态值,因此可能会进一步提高性能。本文介绍了瞬态变量缓存(TVC),这是一种在可能的情况下消除瞬态变量开销的技术。这种优化可能会在连接到流行Java编译器背面的优化器中找到可能的位置。算法的副作用包括大量的指令重新排序和许多堆栈操作的引入。事实证明,这种组合极大地阻碍了反编译基于堆栈的IR代码序列的能力。转换产生的代码更快,更小,并且极大地阻碍了反编译。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号