Professional Documents
Culture Documents
Optimization Techniques For ECJ (Eclipse Java Compiler) : Presented To:-By
Optimization Techniques For ECJ (Eclipse Java Compiler) : Presented To:-By
LC!(Lcllpse!avaCompller)
(AnCpenSource!avaCompller)
resenLedLo:-8y:
rof.M.S.8haLL8onak8oy(M120)
WPA1lSECJ?
LcllpseCompllerfor!ava(LC!),anopen
sourcelncremenLalcompllerusedby
LheLcllpsepro[ecL.
AnlncremenLalcompllerlsoneLhaLcan
recomplleonlyLhoseporLlonsofaprogram
LhaLhavebeenmodlfledwhereasCrdlnary
compllersmusLprocessenLlremodulesor
programs.
CpLlmlzaLlon1echnlquesforLC!Compller
ueadCodeLllmlnaLlon
uead code ellmlnaLlon ls a compller opLlmlzaLlon Lo remove
codewhlchdoesnoLaffecLLheprogramresulLs.
lL allows Lhe runnlng program Lo avold execuLlng lrrelevanL
operaLlons.
uead code lncludes code LhaL can never be execuLed
(unreachable code), and code LhaL only affecLs dead
varlables, LhaL ls, varlables LhaL are irrelevant Lo Lhe
program
CpLlmlzaLlon1echnlquesforLC!Compller
LxampleofueadCode:-
import java.io.*;
CpLlmlzaLlon1echnlquesforLC!Compller
CuLpuLofcomplledunopLlmlzedcode:-
deadcode.class
L???2?2? ? deadcode? ? [ava/lang/Cb[ecL ? <lnlL> ? ()v ? Code
? ? ? ? ? Llnenumber1able ? Localvarlable1able ? Lhls ?
Ldeadcode, ? maln ? ([L[ava/lang/SLrlng,)v ? ?
? ? [ava/lang/SysLem? ? ? ouL ? L[ava/lo/rlnLSLream,
? ? [ava/lang/SLrlng8ullder ? ?
valueof[ls
? ? ? ? ? (L[ava/lang/SLrlng,)v
? ? ? ? ? append ? (l)L[ava/lang/SLrlng8ullder,
? ?"?#?$ ? LoSLrlng ? ()L[ava/lang/SLrlng,
?&?(?' ? [ava/lo/rlnLSLream?)? ?prlnLln ?+ ? valueof[ls+
[ ? args ? [L[ava/lang/SLrlng, ? [ ? l ?
Sourcellle ?
deadcode.[ava?!? ? ????? ? ? ? ? ????/? ? ??? *? ??? ?
??? ? ??? ?
???? ??? ??
??? ? ? ? ????b? ? ???"
<? ? ? ? ? ?!?? *???? ?
??? ? ???? ? ? ?
?!??
??? ? ???"?,?-??? ? ?.?/? ? ?0??? ?1
CpLlmlzaLlon1echnlquesforLC!Compller
CuLpuLofcomplledunopLlmlzed
code(conLd).
Using JAD to view output of class files generated :-
JAD-AprogramLhaLreadsoneormore!avaclassfllesandconverLsLhem
lnLo!avasourceflles..lnshorLitsaJava Decompiler.
CpLlmlzaLlon1echnlquesforLC!Compller
unopLlmlzedcode:-
//uecomplledby!adv1.3.8g.CopyrlghL2001avelkouzneLsov.
//!adhomepage:hLLp://www.kpdus.com/[ad.hLml
//uecomplleropLlons:packlmporLs(3)
//Sourcelllename:deadcode.[ava
lmporL[ava.lo.rlnLSLream,
publlcclassdeadcode
[
publlcdeadcode()
[
}
publlcsLaLlcvoldmaln(SLrlngargs[])
[
int i = 10;
lnL[=10,
i = 100;
SysLem.ouL.prlnLln((newSLrlng8ullder("valueof[ls")).append([).LoSLrlng()),
int k = 12;
k = 200;
SysLem.ouL.prlnLln((newSLrlng8ullder("valueof[ls")).append([).LoSLrlng()),
}
}
CpLlmlzaLlon1echnlquesforLC!Compller
ConflgurlngLcllpseforueadCode
LllmlnaLlon
CpLlmlzaLlon1echnlquesforLC!Compller
CpLlmlzedClassflle:-
dead_opL.class
L???2?2? ? code? ?
[ava/lang/Cb[ecL ? <lnlL> ? ()v ? Code
? ? ? ? ? Llnenumber1able ? Localvarlable1able ? Lhls ?
Ldeadcode, ? maln ? ([L[ava/lang/SLrlng,)v ? ?
? ? [ava/lang/SysLem? ? ? ouL ? L[ava/lo/rlnLSLream,
? ? [ava/lang/SLrlng8ullder ? ?
valueof[ls
[ ? args ? [L[ava/lang/SLrlng, ? [ ? l ?
Sourcellle ?
deadcode.[ava?!? ? ????? ? ? ? ? ????/? ? ??? *? ??? ?
??? ? ??? ?
???? ??? ??
??? ? ? ? ????b? ? ???"
<? ? ? ? ? ?!?? *???? ?
??? ? ???? ? ? ?
?!??
??? ? ???"?,?-??? ? ?.?/? ? ?0??? ?1
CpLlmlzaLlon1echnlquesforLC!Compller
Optimized Code : -
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3)
// Source File Name: deadcode.java
import java.io.PrintStream;
public class deadcode
{
public deadcode()
{
}
public static void main(String args[])
{
int j = 10;
System.out.println((new StringBuilder("Value of j is")).append(j).toString());
System.out.println((new StringBuilder("Value of j is")).append(j).toString());
}
}
CpLlmlzaLlon1echnlquesforLC!Compller