开发者

Compiler optimization: Java bytecode

开发者 https://www.devze.com 2022-12-10 09:26 出处:网络
I\'m currently writing a toy compiler targeting Java bytecode in the translation. I would like to know if there is some kind of catal开发者_如何学Goog, maybe a summary, of various simple peephole opt

I'm currently writing a toy compiler targeting Java bytecode in the translation.

I would like to know if there is some kind of catal开发者_如何学Goog, maybe a summary, of various simple peephole optimizations that can be made in the emitted bytecode before writing the .class file. I actually am aware of some libraries that have this functionality, but I'd like to implement that myself.


You are aware of Proguard? http://proguard.sourceforge.net/

This is a great bytecode optimizer which implements a lot of optimizations. See the FAQ for a list: http://proguard.sourceforge.net/FAQ.html

  • Evaluate constant expressions.
  • Remove unnecessary field accesses and method calls.
  • Remove unnecessary branches.
  • Remove unnecessary comparisons and instanceof tests.
  • Remove unused code blocks.
  • Merge identical code blocks.
  • Reduce variable allocation.
  • Remove write-only fields and unused method parameters.
  • Inline constant fields, method parameters, and return values.
  • Inline methods that are short or only called once.
  • Simplify tail recursion calls.
  • Merge classes and interfaces.
  • Make methods private, static, and final when possible.
  • Make classes static and final when possible.
  • Replace interfaces that have single implementations.
  • Perform over 200 peephole optimizations, like replacing ...*2 by ...<<1.
  • Optionally remove logging code.

I'm sure you can further look into the source code to understand how they are implemented.

0

精彩评论

暂无评论...
验证码 换一张
取 消