Implementation of Dead Code Elimination in CTOC

CTOC에서 죽은 코드 제거 구현

  • 김기태 (인하대학교 컴퓨터정보공학과) ;
  • 김제민 (인하대학교 컴퓨터정보공학과) ;
  • 유원희 (인하대학교 컴퓨터 컴퓨터공학부)
  • Published : 2007.05.31

Abstract

Although the Java bytecode has numerous advantages, there are also shortcomings such as slow execution speed and difficulty in analysis. Therefore, in order for the Java class file to be effectively executed under the execution environment such as the network, it is necessary to convert it into optimized code. We implements CTOC. In order to statically determine the value and type, CTOC uses the SSA Form which separates the variable according to assignment. Also, it uses a Tree Form for statements. But, due to insertion of the $\phi$-function in the process of conversion into the SSA Form, the number of nodes increased. This paper shows the dead code elimination to obtain a more optimized code in SSA Form. We add new live field in each node and achieve dead code elimination in tree structures. We can confirm after dead code elimination though test results that nodes decreases.

자바 바이트코드가 많은 장점을 갖지만, 수행 속도가 느리고 분석하기 어렵다는 단점이 존재한다. 따라서 자바 클래스 파일이 네트워크와 같은 실행 환경에서 효과적으로 실행되기 위해서는 최적화된 코드로 변환이 요구된다. 최적화된 코드로 변환하기 위해 CTOC를 구현하였다. 정적으로 값과 타입을 결정하기 위해 CTOC는 변수를 배정에 따라 분리하는 SSA Form을 사용하였다. 또한 문장의 표현을 위해 트리 구조를 사용하였다. 하지만 SSA Form 변환 과정에서 $\phi$-함수의 삽입에 의해 오히려 노드의 수가 증가하게 되었다. 본 논문은 SSA Form에서 더욱 최적화된 코드를 얻기 위해 죽은 코드를 제거하는 과정을 보인다. 각 노드에 대해 새로운 live 필드를 추가하고 트리 구조에서 죽은 코드 제거 과정을 수행한다. 실험 결과를 통해 죽은 코드 제거 후 상당한 노드의 수가 줄어든 것을 확인할 수 있다.

Keywords