/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . android . build . gradle . internal . tasks Ċ Ċ import Ġcom . android . build . api . instrumentation . Frames Computation Mode Ċ import Ġcom . android . build . gradle . internal . component . Component Creation Config Ċ import Ġcom . android . build . gradle . internal . publishing . Android Artifacts Ċ import Ġcom . android . build . gradle . internal . scope . Internal Artifact Type Ċ import Ġcom . android . build . gradle . internal . services . Classes Hierarchy Build Service Ċ import Ġcom . android . build . gradle . internal . services . get Build Service Ċ import Ġcom . android . build . gradle . internal . tasks . factory . Variant Task Creation Action Ċ import Ġcom . android . build . gradle . internal . utils . set Dis allow Changes Ċ import Ġorg . gradle . api . file . Configurable File Collection Ċ import Ġorg . gradle . api . file . Directory Property Ċ import Ġorg . gradle . api . provider . Property Ċ import Ġorg . gradle . api . tasks . Classpath Ċ import Ġorg . gradle . api . tasks . Compile Classpath Ċ import Ġorg . gradle . api . tasks . Internal Ċ import Ġorg . gradle . api . tasks . Output Directory Ċ import Ġorg . gradle . api . tasks . Task Provider Ċ import Ġorg . gradle . work . Incremental Ċ import Ġorg . gradle . work . Input Changes Ċ Ċ /** Ċ Ġ* ĠRe calcul ates Ġthe Ġstack Ġframes Ġfor Ġall Ġproject Ġclasses Ġand Ġj ars . Ċ Ġ* Ċ Ġ* ĠThis Ġis Ġused Ġfor Ġre calcul ating Ġthe Ġstack Ġframes Ġafter Ġthe Ġclasses Ġare Ġinstrument ed Ġwith Ċ Ġ* Ġ[ com . android . build . gradle . tasks . Transform Classes With Asm Task ], Ġwhen Ġthe Ġstack Ġframes Ġcomputation Ċ Ġ* Ġmode Ġis Ġ[ Frames Computation Mode . COMPUTE _ FR AMES _ FOR _ ALL _ CLASSES ]. Ċ Ġ*/ Ċ abstract Ġclass ĠRe calculate Stack Frames Task Ġ: ĠNew Incremental Task () Ġ{ ĊĊĠĠĠ Ġ@ get : Classpath ĊĠĠĠ Ġ@ get : Incremental ĊĠĠĠ Ġabstract Ġval Ġclasses Input Dir : ĠDirectory Property ĊĊĠĠĠ Ġ@ get : Classpath ĊĠĠĠ Ġ@ get : Incremental ĊĠĠĠ Ġabstract Ġval Ġj ars Input Dir : ĠDirectory Property ĊĊĠĠĠ Ġ@ get : Compile Classpath ĊĠĠĠ Ġabstract Ġval Ġboot Classpath : ĠConfigur able File Collection ĊĊĠĠĠ Ġ@ get : Compile Classpath ĊĠĠĠ Ġabstract Ġval Ġreferenced Classes : ĠConfigur able File Collection ĊĊĠĠĠ Ġ@ get : Output Directory ĊĠĠĠ Ġabstract Ġval Ġclasses Output Dir : ĠDirectory Property ĊĊĠĠĠ Ġ@ get : Output Directory ĊĠĠĠ Ġabstract Ġval Ġj ars Output Dir : ĠDirectory Property ĊĊĠĠĠ Ġ@ get : Internal ĊĠĠĠ Ġabstract Ġval Ġclasses Hierarchy Build Service : ĠProperty < Classes Hierarchy Build Service > ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Delegate () Ġ= ĠFix Stack Frames Delegate ( ĊĠĠĠĠĠĠĠ Ġclasses Dir Ġ= Ġclasses Input Dir . get (). as File , ĊĠĠĠĠĠĠĠ Ġj ars Dir Ġ= Ġj ars Input Dir . get (). as File , ĊĠĠĠĠĠĠĠ Ġboot Classpath Ġ= Ġboot Classpath . files , ĊĠĠĠĠĠĠĠ Ġreferenced Classes Ġ= Ġreferenced Classes . files , ĊĠĠĠĠĠĠĠ Ġclasses Out Dir Ġ= Ġclasses Output Dir . get (). as File , ĊĠĠĠĠĠĠĠ Ġj ars Out Dir Ġ= Ġj ars Output Dir . get (). as File , ĊĠĠĠĠĠĠĠ Ġworkers Ġ= Ġworker Executor , ĊĠĠĠĠĠĠĠ Ġtask Ġ= Ġthis , ĊĠĠĠĠĠĠĠ Ġclasses Hierarchy Build ServiceProvider Ġ= Ġclasses Hierarchy Build Service ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġdo Task Action ( input Changes : ĠInput Changes ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( input Changes . is Incremental ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Delegate (). do Incremental Run ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjar Changes Ġ= Ġinput Changes . getFile Changes ( j ars Input Dir ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasses Changes Ġ= Ġinput Changes . getFile Changes ( classes Input Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Delegate (). do Full Run () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠCreation Action ( ĊĠĠĠĠĠĠĠ Ġcreation Config : ĠComponent Creation Config ĊĠĠĠ Ġ) Ġ: ĊĠĠĠĠĠĠĠ ĠVariant Task Creation Action < Re calculate Stack Frames Task , ĠComponent Creation Config >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreation Config ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġname Ġ= Ġcompute Task Name (" fix Instrument ed ", Ġ" Classes Stack Frames ") ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġtype Ġ= ĠRe calculate Stack Frames Task :: class . java ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask Provider : ĠTask Provider < Re calculate Stack Frames Task > ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . handle Provider ( task Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreation Config . artifacts . setInitial Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask Provider , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRe calculate Stack Frames Task :: classes Output Dir ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). on ( Internal Artifact Type . FIXED _ STACK _ FR AMES _ ASM _ INSTR UMENT ED _ PROJECT _ CLASSES ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreation Config . artifacts . setInitial Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask Provider , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRe calculate Stack Frames Task :: j ars Output Dir ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). on ( Internal Artifact Type . FIXED _ STACK _ FR AMES _ ASM _ INSTR UMENT ED _ PROJECT _ J ARS ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġconfigure ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask : ĠRe calculate Stack Frames Task ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . configure ( task ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreation Config . artifacts . set Task Input To Final Product ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInternal Artifact Type . ASM _ INSTR UMENT ED _ PROJECT _ CLASSES , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . classes Input Dir ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreation Config . artifacts . set Task Input To Final Product ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInternal Artifact Type . ASM _ INSTR UMENT ED _ PROJECT _ J ARS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . j ars Input Dir ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . boot Classpath . from ( creation Config . variant Scope . boot Classpath ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . referenced Classes . from ( creation Config . variant Scope . provided Only Classpath ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . referenced Classes . from ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreation Config . get Dependencies Classes J ars Post Asm Instrumentation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAndroid Artifacts . Artifact Scope . ALL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . classes Hierarchy Build Service . set Dis allow Changes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Build Service ( creation Config . services . build Service Registry ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ