heap_4.c.075i.fnsummary 34 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207
  1. Analyzing function: vPortGetHeapStats/20
  2. ;; 2 loops found
  3. ;;
  4. ;; Loop 0
  5. ;; header 0, latch 1
  6. ;; depth 0, outer -1
  7. ;; nodes: 0 1 2 5 3 6 4
  8. ;;
  9. ;; Loop 1
  10. ;; header 3, latch 6
  11. ;; depth 1, outer 0
  12. ;; nodes: 3 6
  13. ;; 2 succs { 5 4 }
  14. ;; 5 succs { 3 }
  15. ;; 3 succs { 6 4 }
  16. ;; 6 succs { 3 }
  17. ;; 4 succs { 1 }
  18. Analyzing function body size: vPortGetHeapStats
  19. IPA function summary for vPortGetHeapStats/20 inlinable
  20. global time: 106.909092
  21. self size: 29
  22. global size: 0
  23. min size: 0
  24. self stack: 0
  25. global stack: 0
  26. size:18.500000, time:61.409091
  27. size:6.500000, time:5.500000, executed if:(not inlined)
  28. calls:
  29. vPortExitCritical/24 function body not available
  30. loop depth: 0 freq:1.00 size: 1 time: 10
  31. vPortEnterCritical/23 function body not available
  32. loop depth: 0 freq:1.00 size: 1 time: 10
  33. xTaskResumeAll/22 function body not available
  34. loop depth: 0 freq:1.00 size: 1 time: 10
  35. vTaskSuspendAll/21 function body not available
  36. loop depth: 0 freq:1.00 size: 1 time: 10
  37. Analyzing function: prvInsertBlockIntoFreeList/19
  38. ;; 2 loops found
  39. ;;
  40. ;; Loop 0
  41. ;; header 0, latch 1
  42. ;; depth 0, outer -1
  43. ;; nodes: 0 1 2 3 14 4 5 6 7 8 9 10 11 12 13
  44. ;;
  45. ;; Loop 1
  46. ;; header 3, latch 14
  47. ;; depth 1, outer 0
  48. ;; nodes: 3 14
  49. ;; 2 succs { 3 }
  50. ;; 3 succs { 14 4 }
  51. ;; 14 succs { 3 }
  52. ;; 4 succs { 5 6 }
  53. ;; 5 succs { 6 }
  54. ;; 6 succs { 7 10 }
  55. ;; 7 succs { 8 9 }
  56. ;; 8 succs { 11 }
  57. ;; 9 succs { 11 }
  58. ;; 10 succs { 11 }
  59. ;; 11 succs { 12 13 }
  60. ;; 12 succs { 13 }
  61. ;; 13 succs { 1 }
  62. Analyzing function body size: prvInsertBlockIntoFreeList
  63. IPA function summary for prvInsertBlockIntoFreeList/19 inlinable
  64. global time: 43.612727
  65. self size: 30
  66. global size: 0
  67. min size: 0
  68. self stack: 0
  69. global stack: 0
  70. size:26.000000, time:41.312727
  71. size:3.000000, time:2.000000, executed if:(not inlined)
  72. size:0.500000, time:0.150000, executed if:(not inlined), nonconst if:(op0[ref offset: 32] changed) && (not inlined)
  73. size:0.500000, time:0.150000, nonconst if:(op0[ref offset: 32] changed)
  74. calls:
  75. Analyzing function: prvHeapInit/18
  76. ;; 1 loops found
  77. ;;
  78. ;; Loop 0
  79. ;; header 0, latch 1
  80. ;; depth 0, outer -1
  81. ;; nodes: 0 1 2 3 4
  82. ;; 2 succs { 3 4 }
  83. ;; 3 succs { 4 }
  84. ;; 4 succs { 1 }
  85. Analyzing function body size: prvHeapInit
  86. IPA function summary for prvHeapInit/18 inlinable
  87. global time: 12.000000
  88. self size: 13
  89. global size: 0
  90. min size: 0
  91. self stack: 0
  92. global stack: 0
  93. size:10.000000, time:10.000000
  94. size:3.000000, time:2.000000, executed if:(not inlined)
  95. calls:
  96. Analyzing function: vPortInitialiseBlocks/17
  97. ;; 1 loops found
  98. ;;
  99. ;; Loop 0
  100. ;; header 0, latch 1
  101. ;; depth 0, outer -1
  102. ;; nodes: 0 1 2
  103. ;; 2 succs { 1 }
  104. Analyzing function body size: vPortInitialiseBlocks
  105. IPA function summary for vPortInitialiseBlocks/17 inlinable
  106. global time: 2.000000
  107. self size: 3
  108. global size: 0
  109. min size: 0
  110. self stack: 0
  111. global stack: 0
  112. size:0.000000, time:0.000000
  113. size:3.000000, time:2.000000, executed if:(not inlined)
  114. calls:
  115. Analyzing function: xPortGetMinimumEverFreeHeapSize/16
  116. ;; 1 loops found
  117. ;;
  118. ;; Loop 0
  119. ;; header 0, latch 1
  120. ;; depth 0, outer -1
  121. ;; nodes: 0 1 2
  122. ;; 2 succs { 1 }
  123. Analyzing function body size: xPortGetMinimumEverFreeHeapSize
  124. IPA function summary for xPortGetMinimumEverFreeHeapSize/16 inlinable
  125. global time: 3.000000
  126. self size: 4
  127. global size: 0
  128. min size: 0
  129. self stack: 0
  130. global stack: 0
  131. size:1.000000, time:1.000000
  132. size:3.000000, time:2.000000, executed if:(not inlined)
  133. calls:
  134. Analyzing function: xPortGetFreeHeapSize/15
  135. ;; 1 loops found
  136. ;;
  137. ;; Loop 0
  138. ;; header 0, latch 1
  139. ;; depth 0, outer -1
  140. ;; nodes: 0 1 2
  141. ;; 2 succs { 1 }
  142. Analyzing function body size: xPortGetFreeHeapSize
  143. IPA function summary for xPortGetFreeHeapSize/15 inlinable
  144. global time: 3.000000
  145. self size: 4
  146. global size: 0
  147. min size: 0
  148. self stack: 0
  149. global stack: 0
  150. size:1.000000, time:1.000000
  151. size:3.000000, time:2.000000, executed if:(not inlined)
  152. calls:
  153. Analyzing function: vPortFree/14
  154. ;; 3 loops found
  155. ;;
  156. ;; Loop 0
  157. ;; header 0, latch 1
  158. ;; depth 0, outer -1
  159. ;; nodes: 0 1 2 3 4 5 11 6 7 8 12 9 10
  160. ;;
  161. ;; Loop 2
  162. ;; header 5, latch 11
  163. ;; depth 1, outer 0
  164. ;; nodes: 5 11
  165. ;;
  166. ;; Loop 1
  167. ;; header 8, latch 12
  168. ;; depth 1, outer 0
  169. ;; nodes: 8 12
  170. ;; 2 succs { 3 10 }
  171. ;; 3 succs { 4 6 }
  172. ;; 4 succs { 5 }
  173. ;; 5 succs { 11 }
  174. ;; 11 succs { 5 }
  175. ;; 6 succs { 7 9 }
  176. ;; 7 succs { 8 }
  177. ;; 8 succs { 12 }
  178. ;; 12 succs { 8 }
  179. ;; 9 succs { 10 }
  180. ;; 10 succs { 1 }
  181. Analyzing function body size: vPortFree
  182. IPA function summary for vPortFree/14 inlinable
  183. global time: 13.668150
  184. self size: 38
  185. global size: 0
  186. min size: 0
  187. self stack: 0
  188. global stack: 0
  189. size:0.000000, time:0.000000
  190. size:3.000000, time:0.722009, executed if:(not inlined)
  191. size:2.000000, time:2.000000, nonconst if:(op0 changed)
  192. size:1.000000, time:0.700000, executed if:(op0 != 0B), nonconst if:(op0 changed) && (op0 != 0B)
  193. size:2.000000, time:0.586004, executed if:(op0 != 0B) && (not inlined)
  194. size:26.000000, time:7.769013, executed if:(op0 != 0B)
  195. calls:
  196. xTaskResumeAll/22 function body not available
  197. loop depth: 0 freq:0.06 size: 1 time: 10 predicate: (op0 != 0B)
  198. prvInsertBlockIntoFreeList/19 function not considered for inlining
  199. loop depth: 0 freq:0.06 size: 2 time: 11callee size:15 stack: 0 predicate: (op0 != 0B)
  200. vTaskSuspendAll/21 function body not available
  201. loop depth: 0 freq:0.06 size: 1 time: 10 predicate: (op0 != 0B)
  202. Analyzing function: pvPortMalloc/13
  203. ;; 5 loops found
  204. ;;
  205. ;; Loop 0
  206. ;; header 0, latch 1
  207. ;; depth 0, outer -1
  208. ;; nodes: 0 1 2 3 4 5 6 7 8 9 10 11 12 28 13 14 15 16 17 26 18 19 20 21 22 23 24 27 25
  209. ;;
  210. ;; Loop 3
  211. ;; header 17, latch 26
  212. ;; depth 1, outer 0
  213. ;; nodes: 17 26
  214. ;;
  215. ;; Loop 2
  216. ;; header 24, latch 27
  217. ;; depth 1, outer 0
  218. ;; nodes: 24 27
  219. ;;
  220. ;; Loop 1
  221. ;; header 11, latch 28
  222. ;; depth 1, outer 0
  223. ;; nodes: 11 28 12
  224. ;; 2 succs { 3 4 }
  225. ;; 3 succs { 4 }
  226. ;; 4 succs { 5 22 }
  227. ;; 5 succs { 6 22 }
  228. ;; 6 succs { 7 8 }
  229. ;; 7 succs { 8 22 }
  230. ;; 8 succs { 9 22 }
  231. ;; 9 succs { 10 22 }
  232. ;; 10 succs { 11 }
  233. ;; 11 succs { 12 13 }
  234. ;; 12 succs { 28 13 }
  235. ;; 28 succs { 11 }
  236. ;; 13 succs { 14 22 }
  237. ;; 14 succs { 15 19 }
  238. ;; 15 succs { 16 18 }
  239. ;; 16 succs { 17 }
  240. ;; 17 succs { 26 }
  241. ;; 26 succs { 17 }
  242. ;; 18 succs { 19 }
  243. ;; 19 succs { 20 21 }
  244. ;; 20 succs { 21 }
  245. ;; 21 succs { 22 }
  246. ;; 22 succs { 23 25 }
  247. ;; 23 succs { 24 }
  248. ;; 24 succs { 27 }
  249. ;; 27 succs { 24 }
  250. ;; 25 succs { 1 }
  251. Analyzing function body size: pvPortMalloc
  252. IPA function summary for pvPortMalloc/13 inlinable
  253. global time: 61.960418
  254. self size: 82
  255. global size: 0
  256. min size: 0
  257. self stack: 0
  258. global stack: 0
  259. size:63.000000, time:33.578902
  260. size:3.000000, time:0.927373, executed if:(not inlined)
  261. size:11.000000, time:6.043949, nonconst if:(op0 changed)
  262. calls:
  263. xTaskResumeAll/22 function body not available
  264. loop depth: 0 freq:0.93 size: 1 time: 10
  265. prvInsertBlockIntoFreeList/19 function not considered for inlining
  266. loop depth: 0 freq:0.04 size: 2 time: 11callee size:15 stack: 0
  267. prvHeapInit/18 function not considered for inlining
  268. loop depth: 0 freq:0.17 size: 1 time: 10callee size: 6 stack: 0
  269. vTaskSuspendAll/21 function body not available
  270. loop depth: 0 freq:1.00 size: 1 time: 10
  271. Symbol table:
  272. vPortExitCritical/24 (vPortExitCritical) @06ad4e00
  273. Type: function
  274. Visibility: external public
  275. References:
  276. Referring:
  277. Availability: not_available
  278. Function flags: optimize_size
  279. Called by: vPortGetHeapStats/20 (168730858 (estimated locally),1.00 per call)
  280. Calls:
  281. vPortEnterCritical/23 (vPortEnterCritical) @06ad4c40
  282. Type: function
  283. Visibility: external public
  284. References:
  285. Referring:
  286. Availability: not_available
  287. Function flags: optimize_size
  288. Called by: vPortGetHeapStats/20 (168730858 (estimated locally),1.00 per call)
  289. Calls:
  290. xTaskResumeAll/22 (xTaskResumeAll) @06ad42a0
  291. Type: function
  292. Visibility: external public
  293. References:
  294. Referring:
  295. Availability: not_available
  296. Function flags: optimize_size
  297. Called by: vPortGetHeapStats/20 (168730858 (estimated locally),1.00 per call) vPortFree/14 (18715 (estimated locally),0.06 per call) pvPortMalloc/13 (214748 (estimated locally),0.93 per call)
  298. Calls:
  299. vTaskSuspendAll/21 (vTaskSuspendAll) @06ad40e0
  300. Type: function
  301. Visibility: external public
  302. References:
  303. Referring:
  304. Availability: not_available
  305. Function flags: optimize_size
  306. Called by: vPortGetHeapStats/20 (168730857 (estimated locally),1.00 per call) vPortFree/14 (18715 (estimated locally),0.06 per call) pvPortMalloc/13 (231566 (estimated locally),1.00 per call)
  307. Calls:
  308. vPortGetHeapStats/20 (vPortGetHeapStats) @06ac60e0
  309. Type: function definition analyzed
  310. Visibility: externally_visible public
  311. References: xStart/6 (read)pxEnd/7 (read)xFreeBytesRemaining/8 (read)xNumberOfSuccessfulAllocations/10 (read)xNumberOfSuccessfulFrees/11 (read)xMinimumEverFreeBytesRemaining/9 (read)
  312. Referring:
  313. Availability: available
  314. Function flags: count:168730857 (estimated locally) body optimize_size
  315. Called by:
  316. Calls: vPortExitCritical/24 (168730858 (estimated locally),1.00 per call) vPortEnterCritical/23 (168730858 (estimated locally),1.00 per call) xTaskResumeAll/22 (168730858 (estimated locally),1.00 per call) vTaskSuspendAll/21 (168730857 (estimated locally),1.00 per call)
  317. prvInsertBlockIntoFreeList/19 (prvInsertBlockIntoFreeList) @06ac6d20
  318. Type: function definition analyzed
  319. Visibility: prevailing_def_ironly
  320. References: xStart/6 (addr)pxEnd/7 (read)
  321. Referring:
  322. Availability: local
  323. Function flags: count:118111600 (estimated locally) body local optimize_size
  324. Called by: vPortFree/14 (18715 (estimated locally),0.06 per call) pvPortMalloc/13 (8283 (estimated locally),0.04 per call)
  325. Calls:
  326. prvHeapInit/18 (prvHeapInit) @06ac6a80
  327. Type: function definition analyzed
  328. Visibility: prevailing_def_ironly
  329. References: ucHeap/4 (addr)xStart/6 (write)xStart/6 (write)pxEnd/7 (write)xMinimumEverFreeBytesRemaining/9 (write)xFreeBytesRemaining/8 (write)xBlockAllocatedBit/12 (write)
  330. Referring:
  331. Availability: local
  332. Function flags: count:1073741824 (estimated locally) body local optimize_size
  333. Called by: pvPortMalloc/13 (40362 (estimated locally),0.17 per call)
  334. Calls:
  335. vPortInitialiseBlocks/17 (vPortInitialiseBlocks) @06ac67e0
  336. Type: function definition analyzed
  337. Visibility: externally_visible public
  338. References:
  339. Referring:
  340. Availability: available
  341. Function flags: count:1073741824 (estimated locally) body optimize_size
  342. Called by:
  343. Calls:
  344. xPortGetMinimumEverFreeHeapSize/16 (xPortGetMinimumEverFreeHeapSize) @06ac6540
  345. Type: function definition analyzed
  346. Visibility: externally_visible public
  347. References: xMinimumEverFreeBytesRemaining/9 (read)
  348. Referring:
  349. Availability: available
  350. Function flags: count:1073741824 (estimated locally) body optimize_size
  351. Called by:
  352. Calls:
  353. xPortGetFreeHeapSize/15 (xPortGetFreeHeapSize) @06ac62a0
  354. Type: function definition analyzed
  355. Visibility: externally_visible public
  356. References: xFreeBytesRemaining/8 (read)
  357. Referring:
  358. Availability: available
  359. Function flags: count:1073741824 (estimated locally) body optimize_size
  360. Called by:
  361. Calls:
  362. vPortFree/14 (vPortFree) @06ac6000
  363. Type: function definition analyzed
  364. Visibility: externally_visible public
  365. References: xBlockAllocatedBit/12 (read)xFreeBytesRemaining/8 (read)xFreeBytesRemaining/8 (write)xNumberOfSuccessfulFrees/11 (read)xNumberOfSuccessfulFrees/11 (write)
  366. Referring:
  367. Availability: available
  368. Function flags: count:306783 (estimated locally) body optimize_size
  369. Called by:
  370. Calls: xTaskResumeAll/22 (18715 (estimated locally),0.06 per call) prvInsertBlockIntoFreeList/19 (18715 (estimated locally),0.06 per call) vTaskSuspendAll/21 (18715 (estimated locally),0.06 per call)
  371. pvPortMalloc/13 (pvPortMalloc) @06abeee0
  372. Type: function definition analyzed
  373. Visibility: externally_visible public
  374. References: pxEnd/7 (read)xBlockAllocatedBit/12 (read)xFreeBytesRemaining/8 (read)xStart/6 (read)xStart/6 (addr)pxEnd/7 (read)xFreeBytesRemaining/8 (read)xFreeBytesRemaining/8 (write)xMinimumEverFreeBytesRemaining/9 (read)xMinimumEverFreeBytesRemaining/9 (write)xBlockAllocatedBit/12 (read)xNumberOfSuccessfulAllocations/10 (read)xNumberOfSuccessfulAllocations/10 (write)
  375. Referring:
  376. Availability: available
  377. Function flags: count:231566 (estimated locally) body optimize_size
  378. Called by:
  379. Calls: xTaskResumeAll/22 (214748 (estimated locally),0.93 per call) prvInsertBlockIntoFreeList/19 (8283 (estimated locally),0.04 per call) prvHeapInit/18 (40362 (estimated locally),0.17 per call) vTaskSuspendAll/21 (231566 (estimated locally),1.00 per call)
  380. xBlockAllocatedBit/12 (xBlockAllocatedBit) @06b14678
  381. Type: variable definition analyzed
  382. Visibility: prevailing_def_ironly
  383. References:
  384. Referring: pvPortMalloc/13 (read)pvPortMalloc/13 (read)prvHeapInit/18 (write)vPortFree/14 (read)
  385. Availability: available
  386. Varpool flags: initialized
  387. xNumberOfSuccessfulFrees/11 (xNumberOfSuccessfulFrees) @06b145e8
  388. Type: variable definition analyzed
  389. Visibility: prevailing_def_ironly
  390. References:
  391. Referring: vPortFree/14 (write)vPortFree/14 (read)vPortGetHeapStats/20 (read)
  392. Availability: available
  393. Varpool flags: initialized
  394. xNumberOfSuccessfulAllocations/10 (xNumberOfSuccessfulAllocations) @06b145a0
  395. Type: variable definition analyzed
  396. Visibility: prevailing_def_ironly
  397. References:
  398. Referring: pvPortMalloc/13 (write)pvPortMalloc/13 (read)vPortGetHeapStats/20 (read)
  399. Availability: available
  400. Varpool flags: initialized
  401. xMinimumEverFreeBytesRemaining/9 (xMinimumEverFreeBytesRemaining) @06b14558
  402. Type: variable definition analyzed
  403. Visibility: prevailing_def_ironly
  404. References:
  405. Referring: prvHeapInit/18 (write)xPortGetMinimumEverFreeHeapSize/16 (read)pvPortMalloc/13 (write)pvPortMalloc/13 (read)vPortGetHeapStats/20 (read)
  406. Availability: available
  407. Varpool flags: initialized
  408. xFreeBytesRemaining/8 (xFreeBytesRemaining) @06b14510
  409. Type: variable definition analyzed
  410. Visibility: prevailing_def_ironly
  411. References:
  412. Referring: vPortFree/14 (write)pvPortMalloc/13 (read)prvHeapInit/18 (write)pvPortMalloc/13 (write)xPortGetFreeHeapSize/15 (read)pvPortMalloc/13 (read)vPortFree/14 (read)vPortGetHeapStats/20 (read)
  413. Availability: available
  414. Varpool flags: initialized
  415. pxEnd/7 (pxEnd) @06b14480
  416. Type: variable definition analyzed
  417. Visibility: prevailing_def_ironly
  418. References:
  419. Referring: pvPortMalloc/13 (read)prvHeapInit/18 (write)prvInsertBlockIntoFreeList/19 (read)pvPortMalloc/13 (read)vPortGetHeapStats/20 (read)
  420. Availability: available
  421. Varpool flags: initialized
  422. xStart/6 (xStart) @06b143f0
  423. Type: variable definition analyzed
  424. Visibility: prevailing_def_ironly
  425. References:
  426. Referring: prvHeapInit/18 (write)prvHeapInit/18 (write)pvPortMalloc/13 (addr)prvInsertBlockIntoFreeList/19 (addr)pvPortMalloc/13 (read)vPortGetHeapStats/20 (read)
  427. Availability: available
  428. Varpool flags:
  429. ucHeap/4 (ucHeap) @06b14120
  430. Type: variable definition analyzed
  431. Visibility: prevailing_def_ironly
  432. References:
  433. Referring: prvHeapInit/18 (addr)
  434. Availability: available
  435. Varpool flags:
  436. vPortGetHeapStats (struct HeapStats_t * pxHeapStats)
  437. {
  438. size_t xMinSize;
  439. size_t xMaxSize;
  440. size_t xBlocks;
  441. struct BlockLink_t * pxBlock;
  442. unsigned int _1;
  443. struct BlockLink_t * pxEnd.26_3;
  444. unsigned int xFreeBytesRemaining.27_4;
  445. unsigned int xNumberOfSuccessfulAllocations.28_5;
  446. unsigned int xNumberOfSuccessfulFrees.29_6;
  447. unsigned int xMinimumEverFreeBytesRemaining.30_7;
  448. <bb 2> [local count: 168730857]:
  449. # DEBUG BEGIN_STMT
  450. # DEBUG BEGIN_STMT
  451. # DEBUG xBlocks => 0
  452. # DEBUG xMaxSize => 0
  453. # DEBUG xMinSize => 4294967295
  454. # DEBUG BEGIN_STMT
  455. vTaskSuspendAll ();
  456. # DEBUG BEGIN_STMT
  457. pxBlock_17 = xStart.pxNextFreeBlock;
  458. # DEBUG pxBlock => pxBlock_17
  459. # DEBUG BEGIN_STMT
  460. if (pxBlock_17 != 0B)
  461. goto <bb 5>; [70.00%]
  462. else
  463. goto <bb 4>; [30.00%]
  464. <bb 5> [local count: 118111600]:
  465. <bb 3> [local count: 1073741824]:
  466. # pxBlock_8 = PHI <pxBlock_17(5), pxBlock_20(6)>
  467. # xBlocks_9 = PHI <0(5), xBlocks_18(6)>
  468. # xMaxSize_11 = PHI <0(5), xMaxSize_2(6)>
  469. # xMinSize_13 = PHI <4294967295(5), xMinSize_19(6)>
  470. # DEBUG xMinSize => xMinSize_13
  471. # DEBUG xMaxSize => xMaxSize_11
  472. # DEBUG xBlocks => xBlocks_9
  473. # DEBUG pxBlock => pxBlock_8
  474. # DEBUG BEGIN_STMT
  475. # DEBUG BEGIN_STMT
  476. xBlocks_18 = xBlocks_9 + 1;
  477. # DEBUG xBlocks => xBlocks_18
  478. # DEBUG BEGIN_STMT
  479. _1 = pxBlock_8->xBlockSize;
  480. xMaxSize_2 = MAX_EXPR <_1, xMaxSize_11>;
  481. # DEBUG xMaxSize => xMaxSize_2
  482. # DEBUG BEGIN_STMT
  483. xMinSize_19 = MIN_EXPR <_1, xMinSize_13>;
  484. # DEBUG xMinSize => xMinSize_19
  485. # DEBUG BEGIN_STMT
  486. pxBlock_20 = pxBlock_8->pxNextFreeBlock;
  487. # DEBUG pxBlock => pxBlock_20
  488. # DEBUG BEGIN_STMT
  489. pxEnd.26_3 = pxEnd;
  490. if (pxEnd.26_3 != pxBlock_20)
  491. goto <bb 6>; [89.00%]
  492. else
  493. goto <bb 4>; [11.00%]
  494. <bb 6> [local count: 955630225]:
  495. goto <bb 3>; [100.00%]
  496. <bb 4> [local count: 168730858]:
  497. # xBlocks_10 = PHI <0(2), xBlocks_18(3)>
  498. # xMaxSize_12 = PHI <0(2), xMaxSize_2(3)>
  499. # xMinSize_14 = PHI <4294967295(2), xMinSize_19(3)>
  500. # DEBUG xMinSize => xMinSize_14
  501. # DEBUG xMaxSize => xMaxSize_12
  502. # DEBUG xBlocks => xBlocks_10
  503. # DEBUG BEGIN_STMT
  504. xTaskResumeAll ();
  505. # DEBUG BEGIN_STMT
  506. pxHeapStats_22(D)->xSizeOfLargestFreeBlockInBytes = xMaxSize_12;
  507. # DEBUG BEGIN_STMT
  508. pxHeapStats_22(D)->xSizeOfSmallestFreeBlockInBytes = xMinSize_14;
  509. # DEBUG BEGIN_STMT
  510. pxHeapStats_22(D)->xNumberOfFreeBlocks = xBlocks_10;
  511. # DEBUG BEGIN_STMT
  512. vPortEnterCritical ();
  513. # DEBUG BEGIN_STMT
  514. xFreeBytesRemaining.27_4 = xFreeBytesRemaining;
  515. pxHeapStats_22(D)->xAvailableHeapSpaceInBytes = xFreeBytesRemaining.27_4;
  516. # DEBUG BEGIN_STMT
  517. xNumberOfSuccessfulAllocations.28_5 = xNumberOfSuccessfulAllocations;
  518. pxHeapStats_22(D)->xNumberOfSuccessfulAllocations = xNumberOfSuccessfulAllocations.28_5;
  519. # DEBUG BEGIN_STMT
  520. xNumberOfSuccessfulFrees.29_6 = xNumberOfSuccessfulFrees;
  521. pxHeapStats_22(D)->xNumberOfSuccessfulFrees = xNumberOfSuccessfulFrees.29_6;
  522. # DEBUG BEGIN_STMT
  523. xMinimumEverFreeBytesRemaining.30_7 = xMinimumEverFreeBytesRemaining;
  524. pxHeapStats_22(D)->xMinimumEverFreeBytesRemaining = xMinimumEverFreeBytesRemaining.30_7;
  525. # DEBUG BEGIN_STMT
  526. vPortExitCritical ();
  527. return;
  528. }
  529. prvInsertBlockIntoFreeList (struct BlockLink_t * pxBlockToInsert)
  530. {
  531. struct BlockLink_t * pxIterator;
  532. struct A_BLOCK_LINK * _1;
  533. unsigned int _2;
  534. uint8_t * _3;
  535. unsigned int _5;
  536. unsigned int _6;
  537. unsigned int _7;
  538. uint8_t * _8;
  539. struct BlockLink_t * pxEnd.19_9;
  540. unsigned int _10;
  541. unsigned int _11;
  542. struct A_BLOCK_LINK * _12;
  543. struct A_BLOCK_LINK * _20;
  544. <bb 2> [local count: 118111600]:
  545. # DEBUG BEGIN_STMT
  546. # DEBUG BEGIN_STMT
  547. # DEBUG BEGIN_STMT
  548. # DEBUG pxIterator => &xStart
  549. <bb 3> [local count: 1073741824]:
  550. # pxIterator_14 = PHI <&xStart(2), _1(14)>
  551. # DEBUG pxIterator => pxIterator_14
  552. # DEBUG BEGIN_STMT
  553. _1 = pxIterator_14->pxNextFreeBlock;
  554. if (_1 < pxBlockToInsert_19(D))
  555. goto <bb 14>; [89.00%]
  556. else
  557. goto <bb 4>; [11.00%]
  558. <bb 14> [local count: 955630223]:
  559. goto <bb 3>; [100.00%]
  560. <bb 4> [local count: 118111601]:
  561. # _20 = PHI <_1(3)>
  562. # pxIterator_4 = PHI <pxIterator_14(3)>
  563. # DEBUG BEGIN_STMT
  564. # DEBUG puc => pxIterator_4
  565. # DEBUG BEGIN_STMT
  566. _2 = pxIterator_4->xBlockSize;
  567. _3 = pxIterator_4 + _2;
  568. if (_3 == pxBlockToInsert_19(D))
  569. goto <bb 5>; [30.00%]
  570. else
  571. goto <bb 6>; [70.00%]
  572. <bb 5> [local count: 35433480]:
  573. # DEBUG BEGIN_STMT
  574. _5 = pxBlockToInsert_19(D)->xBlockSize;
  575. _6 = _2 + _5;
  576. pxIterator_4->xBlockSize = _6;
  577. # DEBUG BEGIN_STMT
  578. # DEBUG pxBlockToInsert => pxIterator_4
  579. <bb 6> [local count: 118111601]:
  580. # pxBlockToInsert_13 = PHI <pxBlockToInsert_19(D)(4), pxIterator_4(5)>
  581. # DEBUG pxBlockToInsert => pxBlockToInsert_13
  582. # DEBUG BEGIN_STMT
  583. # DEBUG BEGIN_STMT
  584. # DEBUG puc => pxBlockToInsert_13
  585. # DEBUG BEGIN_STMT
  586. _7 = pxBlockToInsert_13->xBlockSize;
  587. _8 = pxBlockToInsert_13 + _7;
  588. if (_8 == _20)
  589. goto <bb 7>; [30.00%]
  590. else
  591. goto <bb 10>; [70.00%]
  592. <bb 7> [local count: 35433480]:
  593. # DEBUG BEGIN_STMT
  594. pxEnd.19_9 = pxEnd;
  595. if (pxEnd.19_9 != _20)
  596. goto <bb 8>; [70.00%]
  597. else
  598. goto <bb 9>; [30.00%]
  599. <bb 8> [local count: 24803436]:
  600. # DEBUG BEGIN_STMT
  601. _10 = _20->xBlockSize;
  602. _11 = _7 + _10;
  603. pxBlockToInsert_13->xBlockSize = _11;
  604. # DEBUG BEGIN_STMT
  605. _12 = _20->pxNextFreeBlock;
  606. pxBlockToInsert_13->pxNextFreeBlock = _12;
  607. goto <bb 11>; [100.00%]
  608. <bb 9> [local count: 10630044]:
  609. # DEBUG BEGIN_STMT
  610. pxBlockToInsert_13->pxNextFreeBlock = pxEnd.19_9;
  611. goto <bb 11>; [100.00%]
  612. <bb 10> [local count: 82678120]:
  613. # DEBUG BEGIN_STMT
  614. pxBlockToInsert_13->pxNextFreeBlock = _20;
  615. <bb 11> [local count: 118111601]:
  616. # DEBUG BEGIN_STMT
  617. if (pxIterator_4 != pxBlockToInsert_13)
  618. goto <bb 12>; [70.00%]
  619. else
  620. goto <bb 13>; [30.00%]
  621. <bb 12> [local count: 82678120]:
  622. # DEBUG BEGIN_STMT
  623. pxIterator_4->pxNextFreeBlock = pxBlockToInsert_13;
  624. <bb 13> [local count: 118111601]:
  625. # DEBUG BEGIN_STMT
  626. return;
  627. }
  628. prvHeapInit ()
  629. {
  630. size_t xTotalHeapSize;
  631. size_t uxAddress;
  632. uint8_t * pucAlignedHeap;
  633. unsigned int _1;
  634. unsigned int _2;
  635. struct BlockLink_t * uxAddress.14_3;
  636. unsigned int _4;
  637. <bb 2> [local count: 1073741824]:
  638. # DEBUG BEGIN_STMT
  639. # DEBUG BEGIN_STMT
  640. # DEBUG BEGIN_STMT
  641. # DEBUG BEGIN_STMT
  642. # DEBUG xTotalHeapSize => 8192
  643. # DEBUG BEGIN_STMT
  644. uxAddress_7 = (size_t) &ucHeap;
  645. # DEBUG uxAddress => uxAddress_7
  646. # DEBUG BEGIN_STMT
  647. _1 = uxAddress_7 & 7;
  648. if (_1 != 0)
  649. goto <bb 3>; [50.00%]
  650. else
  651. goto <bb 4>; [50.00%]
  652. <bb 3> [local count: 536870913]:
  653. # DEBUG BEGIN_STMT
  654. uxAddress_8 = uxAddress_7 + 7;
  655. # DEBUG uxAddress => uxAddress_8
  656. # DEBUG BEGIN_STMT
  657. uxAddress_9 = uxAddress_8 & 4294967288;
  658. # DEBUG uxAddress => uxAddress_9
  659. # DEBUG BEGIN_STMT
  660. _2 = 8192 - uxAddress_9;
  661. xTotalHeapSize_10 = _2 + uxAddress_7;
  662. # DEBUG xTotalHeapSize => xTotalHeapSize_10
  663. <bb 4> [local count: 1073741824]:
  664. # uxAddress_5 = PHI <uxAddress_7(2), uxAddress_9(3)>
  665. # xTotalHeapSize_6 = PHI <8192(2), xTotalHeapSize_10(3)>
  666. # DEBUG xTotalHeapSize => xTotalHeapSize_6
  667. # DEBUG uxAddress => uxAddress_5
  668. # DEBUG BEGIN_STMT
  669. pucAlignedHeap_11 = (uint8_t *) uxAddress_5;
  670. # DEBUG pucAlignedHeap => pucAlignedHeap_11
  671. # DEBUG BEGIN_STMT
  672. xStart.pxNextFreeBlock = pucAlignedHeap_11;
  673. # DEBUG BEGIN_STMT
  674. xStart.xBlockSize = 0;
  675. # DEBUG BEGIN_STMT
  676. uxAddress_15 = uxAddress_5 + xTotalHeapSize_6;
  677. # DEBUG uxAddress => uxAddress_15
  678. # DEBUG BEGIN_STMT
  679. uxAddress_16 = uxAddress_15 + 4294967288;
  680. # DEBUG uxAddress => uxAddress_16
  681. # DEBUG BEGIN_STMT
  682. uxAddress_17 = uxAddress_16 & 4294967288;
  683. # DEBUG uxAddress => uxAddress_17
  684. # DEBUG BEGIN_STMT
  685. uxAddress.14_3 = (struct BlockLink_t *) uxAddress_17;
  686. pxEnd = uxAddress.14_3;
  687. # DEBUG BEGIN_STMT
  688. uxAddress.14_3->xBlockSize = 0;
  689. # DEBUG BEGIN_STMT
  690. uxAddress.14_3->pxNextFreeBlock = 0B;
  691. # DEBUG BEGIN_STMT
  692. # DEBUG pxFirstFreeBlock => pucAlignedHeap_11
  693. # DEBUG BEGIN_STMT
  694. _4 = uxAddress_17 - uxAddress_5;
  695. MEM[(struct BlockLink_t *)pucAlignedHeap_11].xBlockSize = _4;
  696. # DEBUG BEGIN_STMT
  697. MEM[(struct BlockLink_t *)pucAlignedHeap_11].pxNextFreeBlock = uxAddress.14_3;
  698. # DEBUG BEGIN_STMT
  699. xMinimumEverFreeBytesRemaining = _4;
  700. # DEBUG BEGIN_STMT
  701. xFreeBytesRemaining = _4;
  702. # DEBUG BEGIN_STMT
  703. xBlockAllocatedBit = 2147483648;
  704. return;
  705. }
  706. vPortInitialiseBlocks ()
  707. {
  708. <bb 2> [local count: 1073741824]:
  709. # DEBUG BEGIN_STMT
  710. return;
  711. }
  712. xPortGetMinimumEverFreeHeapSize ()
  713. {
  714. size_t _2;
  715. <bb 2> [local count: 1073741824]:
  716. # DEBUG BEGIN_STMT
  717. _2 = xMinimumEverFreeBytesRemaining;
  718. return _2;
  719. }
  720. xPortGetFreeHeapSize ()
  721. {
  722. size_t _2;
  723. <bb 2> [local count: 1073741824]:
  724. # DEBUG BEGIN_STMT
  725. _2 = xFreeBytesRemaining;
  726. return _2;
  727. }
  728. vPortFree (void * pv)
  729. {
  730. uint32_t ulNewBASEPRI;
  731. uint32_t ulNewBASEPRI;
  732. uint8_t * puc;
  733. unsigned int _1;
  734. unsigned int xBlockAllocatedBit.21_2;
  735. unsigned int _3;
  736. struct A_BLOCK_LINK * _4;
  737. unsigned int _5;
  738. unsigned int _6;
  739. unsigned int _7;
  740. unsigned int xFreeBytesRemaining.24_8;
  741. unsigned int _9;
  742. unsigned int xNumberOfSuccessfulFrees.25_10;
  743. unsigned int _11;
  744. <bb 2> [local count: 306783]:
  745. # DEBUG BEGIN_STMT
  746. # DEBUG puc => pv_13(D)
  747. # DEBUG BEGIN_STMT
  748. # DEBUG BEGIN_STMT
  749. if (pv_13(D) != 0B)
  750. goto <bb 3>; [70.00%]
  751. else
  752. goto <bb 10>; [30.00%]
  753. <bb 3> [local count: 214748]:
  754. # DEBUG BEGIN_STMT
  755. puc_15 = pv_13(D) + 4294967288;
  756. # DEBUG puc => puc_15
  757. # DEBUG BEGIN_STMT
  758. # DEBUG pxLink => puc_15
  759. # DEBUG BEGIN_STMT
  760. _1 = MEM[(struct BlockLink_t *)pv_13(D) + 4294967288B].xBlockSize;
  761. xBlockAllocatedBit.21_2 = xBlockAllocatedBit;
  762. _3 = _1 & xBlockAllocatedBit.21_2;
  763. if (_3 == 0)
  764. goto <bb 4>; [50.00%]
  765. else
  766. goto <bb 6>; [50.00%]
  767. <bb 4> [local count: 107374]:
  768. # DEBUG BEGIN_STMT
  769. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  770. # DEBUG BEGIN_STMT
  771. # DEBUG BEGIN_STMT
  772. __asm__ __volatile__(" mov %0, %1
  773. msr basepri, %0
  774. isb
  775. dsb
  776. " : "=r" ulNewBASEPRI_22 : "i" 16 : "memory");
  777. # DEBUG ulNewBASEPRI => ulNewBASEPRI_22
  778. <bb 5> [local count: 1073741823]:
  779. # DEBUG ulNewBASEPRI => NULL
  780. # DEBUG BEGIN_STMT
  781. # DEBUG BEGIN_STMT
  782. # DEBUG BEGIN_STMT
  783. <bb 11> [local count: 1073741824]:
  784. goto <bb 5>; [100.00%]
  785. <bb 6> [local count: 107374]:
  786. # DEBUG BEGIN_STMT
  787. # DEBUG BEGIN_STMT
  788. _4 = MEM[(struct BlockLink_t *)pv_13(D) + 4294967288B].pxNextFreeBlock;
  789. if (_4 != 0B)
  790. goto <bb 7>; [82.57%]
  791. else
  792. goto <bb 9>; [17.43%]
  793. <bb 7> [local count: 88659]:
  794. # DEBUG BEGIN_STMT
  795. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  796. # DEBUG BEGIN_STMT
  797. # DEBUG BEGIN_STMT
  798. __asm__ __volatile__(" mov %0, %1
  799. msr basepri, %0
  800. isb
  801. dsb
  802. " : "=r" ulNewBASEPRI_23 : "i" 16 : "memory");
  803. # DEBUG ulNewBASEPRI => ulNewBASEPRI_23
  804. <bb 8> [local count: 886588623]:
  805. # DEBUG ulNewBASEPRI => NULL
  806. # DEBUG BEGIN_STMT
  807. # DEBUG BEGIN_STMT
  808. # DEBUG BEGIN_STMT
  809. <bb 12> [local count: 886588623]:
  810. goto <bb 8>; [100.00%]
  811. <bb 9> [local count: 18715]:
  812. # DEBUG BEGIN_STMT
  813. # DEBUG BEGIN_STMT
  814. # DEBUG BEGIN_STMT
  815. # DEBUG BEGIN_STMT
  816. _5 = ~xBlockAllocatedBit.21_2;
  817. _6 = _1 & _5;
  818. MEM[(struct BlockLink_t *)pv_13(D) + 4294967288B].xBlockSize = _6;
  819. # DEBUG BEGIN_STMT
  820. vTaskSuspendAll ();
  821. # DEBUG BEGIN_STMT
  822. _7 = MEM[(struct BlockLink_t *)pv_13(D) + 4294967288B].xBlockSize;
  823. xFreeBytesRemaining.24_8 = xFreeBytesRemaining;
  824. _9 = _7 + xFreeBytesRemaining.24_8;
  825. xFreeBytesRemaining = _9;
  826. # DEBUG BEGIN_STMT
  827. # DEBUG BEGIN_STMT
  828. prvInsertBlockIntoFreeList (puc_15);
  829. # DEBUG BEGIN_STMT
  830. xNumberOfSuccessfulFrees.25_10 = xNumberOfSuccessfulFrees;
  831. _11 = xNumberOfSuccessfulFrees.25_10 + 1;
  832. xNumberOfSuccessfulFrees = _11;
  833. # DEBUG BEGIN_STMT
  834. xTaskResumeAll ();
  835. <bb 10> [local count: 110750]:
  836. # DEBUG BEGIN_STMT
  837. return;
  838. }
  839. pvPortMalloc (size_t xWantedSize)
  840. {
  841. uint32_t ulNewBASEPRI;
  842. uint32_t ulNewBASEPRI;
  843. void * pvReturn;
  844. struct BlockLink_t * pxNewBlockLink;
  845. struct BlockLink_t * pxPreviousBlock;
  846. struct BlockLink_t * pxBlock;
  847. struct BlockLink_t * pxEnd.0_1;
  848. unsigned int xBlockAllocatedBit.1_2;
  849. unsigned int _3;
  850. unsigned int _4;
  851. unsigned int _5;
  852. unsigned int _6;
  853. unsigned int _7;
  854. unsigned int xFreeBytesRemaining.2_9;
  855. unsigned int _10;
  856. struct A_BLOCK_LINK * _11;
  857. struct BlockLink_t * pxEnd.3_12;
  858. struct A_BLOCK_LINK * _13;
  859. struct A_BLOCK_LINK * _14;
  860. unsigned int _15;
  861. unsigned int pxNewBlockLink.4_16;
  862. unsigned int _17;
  863. unsigned int xFreeBytesRemaining.5_18;
  864. unsigned int _19;
  865. unsigned int _20;
  866. unsigned int xMinimumEverFreeBytesRemaining.7_21;
  867. unsigned int xBlockAllocatedBit.9_22;
  868. unsigned int _23;
  869. unsigned int xNumberOfSuccessfulAllocations.10_24;
  870. unsigned int _25;
  871. unsigned int pvReturn.11_26;
  872. unsigned int _27;
  873. unsigned int _57;
  874. <bb 2> [local count: 231566]:
  875. # DEBUG BEGIN_STMT
  876. # DEBUG BEGIN_STMT
  877. # DEBUG pvReturn => 0B
  878. # DEBUG BEGIN_STMT
  879. vTaskSuspendAll ();
  880. # DEBUG BEGIN_STMT
  881. pxEnd.0_1 = pxEnd;
  882. if (pxEnd.0_1 == 0B)
  883. goto <bb 3>; [17.43%]
  884. else
  885. goto <bb 4>; [82.57%]
  886. <bb 3> [local count: 40362]:
  887. # DEBUG BEGIN_STMT
  888. prvHeapInit ();
  889. <bb 4> [local count: 231566]:
  890. # DEBUG BEGIN_STMT
  891. # DEBUG BEGIN_STMT
  892. xBlockAllocatedBit.1_2 = xBlockAllocatedBit;
  893. _3 = xBlockAllocatedBit.1_2 & xWantedSize_39(D);
  894. if (_3 == 0)
  895. goto <bb 5>; [83.25%]
  896. else
  897. goto <bb 22>; [16.75%]
  898. <bb 5> [local count: 192779]:
  899. # DEBUG BEGIN_STMT
  900. _4 = xWantedSize_39(D) + 4294967295;
  901. if (_4 <= 4294967286)
  902. goto <bb 6>; [71.00%]
  903. else
  904. goto <bb 22>; [29.00%]
  905. <bb 6> [local count: 136873]:
  906. # DEBUG BEGIN_STMT
  907. xWantedSize_40 = xWantedSize_39(D) + 8;
  908. # DEBUG xWantedSize => xWantedSize_40
  909. # DEBUG BEGIN_STMT
  910. _5 = xWantedSize_40 & 7;
  911. if (_5 != 0)
  912. goto <bb 7>; [50.00%]
  913. else
  914. goto <bb 8>; [50.00%]
  915. <bb 7> [local count: 68436]:
  916. # DEBUG BEGIN_STMT
  917. _6 = xWantedSize_40 & 4294967288;
  918. _7 = _6 + 8;
  919. if (_7 > xWantedSize_40)
  920. goto <bb 8>; [71.00%]
  921. else
  922. goto <bb 22>; [29.00%]
  923. <bb 8> [local count: 117026]:
  924. # xWantedSize_28 = PHI <_7(7), xWantedSize_40(6)>
  925. # DEBUG xWantedSize => xWantedSize_28
  926. # DEBUG BEGIN_STMT
  927. if (xWantedSize_28 != 0)
  928. goto <bb 9>; [71.00%]
  929. else
  930. goto <bb 22>; [29.00%]
  931. <bb 9> [local count: 83089]:
  932. xFreeBytesRemaining.2_9 = xFreeBytesRemaining;
  933. if (xFreeBytesRemaining.2_9 >= xWantedSize_28)
  934. goto <bb 10>; [71.00%]
  935. else
  936. goto <bb 22>; [29.00%]
  937. <bb 10> [local count: 58993]:
  938. # DEBUG BEGIN_STMT
  939. # DEBUG pxPreviousBlock => &xStart
  940. # DEBUG BEGIN_STMT
  941. pxBlock_41 = xStart.pxNextFreeBlock;
  942. # DEBUG pxBlock => pxBlock_41
  943. # DEBUG BEGIN_STMT
  944. <bb 11> [local count: 551465]:
  945. # pxBlock_29 = PHI <pxBlock_41(10), _11(28)>
  946. # pxPreviousBlock_30 = PHI <&xStart(10), pxBlock_29(28)>
  947. # DEBUG pxPreviousBlock => pxPreviousBlock_30
  948. # DEBUG pxBlock => pxBlock_29
  949. # DEBUG BEGIN_STMT
  950. _10 = pxBlock_29->xBlockSize;
  951. if (_10 < xWantedSize_28)
  952. goto <bb 12>; [94.50%]
  953. else
  954. goto <bb 13>; [5.50%]
  955. <bb 12> [local count: 521134]:
  956. _11 = pxBlock_29->pxNextFreeBlock;
  957. if (_11 != 0B)
  958. goto <bb 28>; [94.50%]
  959. else
  960. goto <bb 13>; [5.50%]
  961. <bb 28> [local count: 492472]:
  962. goto <bb 11>; [100.00%]
  963. <bb 13> [local count: 58993]:
  964. # _57 = PHI <_10(11), _10(12)>
  965. # pxBlock_54 = PHI <pxBlock_29(11), pxBlock_29(12)>
  966. # pxPreviousBlock_8 = PHI <pxPreviousBlock_30(11), pxPreviousBlock_30(12)>
  967. # DEBUG BEGIN_STMT
  968. pxEnd.3_12 = pxEnd;
  969. if (pxEnd.3_12 != pxBlock_54)
  970. goto <bb 14>; [85.10%]
  971. else
  972. goto <bb 22>; [14.90%]
  973. <bb 14> [local count: 50203]:
  974. # DEBUG BEGIN_STMT
  975. _13 = pxPreviousBlock_8->pxNextFreeBlock;
  976. pvReturn_42 = _13 + 8;
  977. # DEBUG pvReturn => pvReturn_42
  978. # DEBUG BEGIN_STMT
  979. _14 = pxBlock_54->pxNextFreeBlock;
  980. pxPreviousBlock_8->pxNextFreeBlock = _14;
  981. # DEBUG BEGIN_STMT
  982. _15 = _57 - xWantedSize_28;
  983. if (_15 > 16)
  984. goto <bb 15>; [50.00%]
  985. else
  986. goto <bb 19>; [50.00%]
  987. <bb 15> [local count: 25102]:
  988. # DEBUG BEGIN_STMT
  989. pxNewBlockLink_44 = pxBlock_54 + xWantedSize_28;
  990. # DEBUG pxNewBlockLink => pxNewBlockLink_44
  991. # DEBUG BEGIN_STMT
  992. pxNewBlockLink.4_16 = (unsigned int) pxNewBlockLink_44;
  993. _17 = pxNewBlockLink.4_16 & 7;
  994. if (_17 != 0)
  995. goto <bb 16>; [67.00%]
  996. else
  997. goto <bb 18>; [33.00%]
  998. <bb 16> [local count: 16818]:
  999. # DEBUG BEGIN_STMT
  1000. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  1001. # DEBUG BEGIN_STMT
  1002. # DEBUG BEGIN_STMT
  1003. __asm__ __volatile__(" mov %0, %1
  1004. msr basepri, %0
  1005. isb
  1006. dsb
  1007. " : "=r" ulNewBASEPRI_55 : "i" 16 : "memory");
  1008. # DEBUG ulNewBASEPRI => ulNewBASEPRI_55
  1009. <bb 17> [local count: 168180375]:
  1010. # DEBUG ulNewBASEPRI => NULL
  1011. # DEBUG BEGIN_STMT
  1012. # DEBUG BEGIN_STMT
  1013. # DEBUG BEGIN_STMT
  1014. <bb 26> [local count: 168180375]:
  1015. goto <bb 17>; [100.00%]
  1016. <bb 18> [local count: 8283]:
  1017. # DEBUG BEGIN_STMT
  1018. # DEBUG BEGIN_STMT
  1019. pxNewBlockLink_44->xBlockSize = _15;
  1020. # DEBUG BEGIN_STMT
  1021. pxBlock_54->xBlockSize = xWantedSize_28;
  1022. # DEBUG BEGIN_STMT
  1023. prvInsertBlockIntoFreeList (pxNewBlockLink_44);
  1024. <bb 19> [local count: 33385]:
  1025. # DEBUG BEGIN_STMT
  1026. # DEBUG BEGIN_STMT
  1027. xFreeBytesRemaining.5_18 = xFreeBytesRemaining;
  1028. _19 = pxBlock_54->xBlockSize;
  1029. _20 = xFreeBytesRemaining.5_18 - _19;
  1030. xFreeBytesRemaining = _20;
  1031. # DEBUG BEGIN_STMT
  1032. xMinimumEverFreeBytesRemaining.7_21 = xMinimumEverFreeBytesRemaining;
  1033. if (_20 < xMinimumEverFreeBytesRemaining.7_21)
  1034. goto <bb 20>; [50.00%]
  1035. else
  1036. goto <bb 21>; [50.00%]
  1037. <bb 20> [local count: 16693]:
  1038. # DEBUG BEGIN_STMT
  1039. xMinimumEverFreeBytesRemaining = _20;
  1040. <bb 21> [local count: 33385]:
  1041. # DEBUG BEGIN_STMT
  1042. # DEBUG BEGIN_STMT
  1043. xBlockAllocatedBit.9_22 = xBlockAllocatedBit;
  1044. _23 = _19 | xBlockAllocatedBit.9_22;
  1045. pxBlock_54->xBlockSize = _23;
  1046. # DEBUG BEGIN_STMT
  1047. pxBlock_54->pxNextFreeBlock = 0B;
  1048. # DEBUG BEGIN_STMT
  1049. xNumberOfSuccessfulAllocations.10_24 = xNumberOfSuccessfulAllocations;
  1050. _25 = xNumberOfSuccessfulAllocations.10_24 + 1;
  1051. xNumberOfSuccessfulAllocations = _25;
  1052. <bb 22> [local count: 214748]:
  1053. # pvReturn_31 = PHI <0B(4), 0B(9), 0B(8), 0B(13), pvReturn_42(21), 0B(7), 0B(5)>
  1054. # DEBUG xWantedSize => NULL
  1055. # DEBUG pvReturn => pvReturn_31
  1056. # DEBUG BEGIN_STMT
  1057. # DEBUG BEGIN_STMT
  1058. # DEBUG BEGIN_STMT
  1059. xTaskResumeAll ();
  1060. # DEBUG BEGIN_STMT
  1061. pvReturn.11_26 = (unsigned int) pvReturn_31;
  1062. _27 = pvReturn.11_26 & 7;
  1063. if (_27 != 0)
  1064. goto <bb 23>; [50.00%]
  1065. else
  1066. goto <bb 25>; [50.00%]
  1067. <bb 23> [local count: 107374]:
  1068. # DEBUG BEGIN_STMT
  1069. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  1070. # DEBUG BEGIN_STMT
  1071. # DEBUG BEGIN_STMT
  1072. __asm__ __volatile__(" mov %0, %1
  1073. msr basepri, %0
  1074. isb
  1075. dsb
  1076. " : "=r" ulNewBASEPRI_56 : "i" 16 : "memory");
  1077. # DEBUG ulNewBASEPRI => ulNewBASEPRI_56
  1078. <bb 24> [local count: 1073741824]:
  1079. # DEBUG ulNewBASEPRI => NULL
  1080. # DEBUG BEGIN_STMT
  1081. # DEBUG BEGIN_STMT
  1082. # DEBUG BEGIN_STMT
  1083. <bb 27> [local count: 1073741824]:
  1084. goto <bb 24>; [100.00%]
  1085. <bb 25> [local count: 107374]:
  1086. # DEBUG BEGIN_STMT
  1087. # DEBUG BEGIN_STMT
  1088. return pvReturn_31;
  1089. }