lets @ example codes following(modified have private fields):
public class stupidnot{ private object a,b; ... public boolean notequal(){ return a!= b; } } public class anotherstupidnot{ private stupidnot sn; private whatever obj; public boolean anothernotequal(){ return ! sn.notequal() && obj.someboolean() } }
... etc, idea if jvm or compiler optimizes multiple "not"'s , located in different methods?
this not optimized javac, can optimized jit compiler if knows stupidnot.notequal
never overridden in loaded subclasses of stupidnot
(if any). notequal
inlined anothernotequal
, after inlining optimization performed.
if stupidnot
class has subclasses , of them override notequal
method, it's still possible jit compiler optimizes case based on type profile (if it's known, example, in of cases using stupidnot
class , not using subclasses). in case jit-compiler add quick type check anothernotequal
method (if succeed) use inlined notequal
, otherwise use slow virtual call.
also don't forget anothernotequal
inlined other method it's quite simple.
Comments
Post a Comment