package Ġcom . s usion . rabbit . gradle . transform . visitor Ċ Ċ import Ġcom . s usion . rabbit . gradle . Global Config Ċ import Ġcom . s usion . rabbit . gradle . utils . Rabbit Transform Utils Ċ import Ġorg . object web . asm . Class Visitor Ċ import Ġorg . object web . asm . Method Visitor Ċ import Ġorg . object web . asm . Op codes Ċ Ċ /** Ċ Ġ* Ġs usion wang Ġat Ġ 2 0 2 0 - 0 1 - 1 4 Ċ Ġ*/ Ċ class ĠMethod Cost Class Visitor ( api : ĠInt , Ġcv : ĠClass Visitor ) Ġ: ĠClass Visitor ( api , Ġcv ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġnot Trace Methods Ġ= ĠlistOf ("< init >", Ġ"< cl init >") ĊĠĠĠ Ġprivate Ġvar ĠclassName : ĠString Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar ĠisIn Config Pkg List Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġvisit ( ĊĠĠĠĠĠĠĠ Ġversion : ĠInt , ĊĠĠĠĠĠĠĠ Ġaccess : ĠInt , ĊĠĠĠĠĠĠĠ Ġname : ĠString ?, ĊĠĠĠĠĠĠĠ Ġsignature : ĠString ?, ĊĠĠĠĠĠĠĠ Ġsuper Name : ĠString ?, ĊĠĠĠĠĠĠĠ Ġinterfaces : ĠArray < out ĠString >? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . visit ( version , Ġaccess , Ġname , Ġsignature , Ġsuper Name , Ġinterfaces ) ĊĊĠĠĠĠĠĠĠ Ġthis . className Ġ= Ġname ?. replace ("/", Ġ". ") Ġ?: Ġ"" ĊĊĠĠĠĠĠĠĠ ĠisIn Config Pkg List Ġ= ĠRabbit Transform Utils . class In Pkg List ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠclassName , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGlobal Config . plugin Config . method Monitor Pk gs ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Method ( ĊĠĠĠĠĠĠĠ Ġaccess : ĠInt , ĊĠĠĠĠĠĠĠ Ġname : ĠString ?, ĊĠĠĠĠĠĠĠ Ġdesc : ĠString ?, ĊĠĠĠĠĠĠĠ Ġsignature : ĠString ?, ĊĠĠĠĠĠĠĠ Ġexceptions : ĠArray < out ĠString >? ĊĠĠĠ Ġ): ĠMethod Visitor Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġis Un Impl Method Ġ= Ġaccess Ġand ĠOp codes . ACC _ AB STR ACT Ġ> Ġ 0 ĠĠĠ Ġ// æľª å®ŀçİ° çļĦæĸ¹æ³ķ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( not Trace Methods . contains ( name ) Ġ|| Ġis Un Impl Method Ġ|| Ġ! isIn Config Pkg List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . visit Method ( access , Ġname , Ġdesc , Ġsignature , Ġexceptions ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠmethodName Ġ= Ġ"$ className & $ name ()" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRabbit Transform Utils . print (" Method Cost Class Visitor Ġ-> ĠclassName Ġ: Ġ$ className Ġ ĠmethodName -> Ġ$ methodName ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmv Ġ= Ġcv . visit Method ( access , Ġname , Ġdesc , Ġsignature , Ġexceptions ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMethod Cost Method Visitor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmv , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccess , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdesc , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmethodName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }