PageRenderTime 39ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/pypy/translator/c/gcc/test/elf/track8.s

https://github.com/lalitjsraks/pypy
Assembly | 217 lines | 212 code | 0 blank | 5 comment | 0 complexity | 1aa6f274f81644ef3a52e88e4e6a55ae MD5 | raw file
  1. .type pypy_g_foo, @function
  2. pypy_g_foo:
  3. .L1780:
  4. subl $76, %esp
  5. movl 80(%esp), %ecx
  6. movl %esi, 64(%esp)
  7. movl 104(%esp), %esi
  8. testl %ecx, %ecx
  9. movl %ebp, 72(%esp)
  10. movl 100(%esp), %ebp
  11. movl %ebx, 60(%esp)
  12. movl %edi, 68(%esp)
  13. jle .L1779
  14. .L1783:
  15. .L1782:
  16. .L1784:
  17. movl _LLstacktoobig_stack_base_pointer, %edx
  18. leal 59(%esp), %eax
  19. xorl %ebx, %ebx
  20. subl %edx, %eax
  21. cmpl _LLstacktoobig_stack_min, %eax
  22. jl .L1786
  23. cmpl _LLstacktoobig_stack_max, %eax
  24. jg .L1786
  25. .L1787:
  26. testl %ebx, %ebx
  27. jne .L1830
  28. .L1795:
  29. .L1797:
  30. .L1799:
  31. .L1791:
  32. movl pypy_g_ExcData, %eax
  33. testl %eax, %eax
  34. je .L1831
  35. .L1779:
  36. movl 60(%esp), %ebx
  37. movl 64(%esp), %esi
  38. movl 68(%esp), %edi
  39. movl 72(%esp), %ebp
  40. addl $76, %esp
  41. ret
  42. .p2align 4,,7
  43. .L1786:
  44. call LL_stack_too_big_slowpath
  45. ;; expected {76(%esp) | 60(%esp), 64(%esp), 68(%esp), 72(%esp) | %esi, %ebp, 84(%esp), 88(%esp), 92(%esp), 96(%esp)}
  46. testl %eax, %eax
  47. je .L1787
  48. movl $1, %ebx
  49. jmp .L1787
  50. .p2align 4,,7
  51. .L1831:
  52. .L1802:
  53. movl pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC+12, %edx
  54. movl pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC+80, %ecx
  55. subl %edx, %ecx
  56. cmpl $7, %ecx
  57. jle .L1804
  58. .L1829:
  59. .L1805:
  60. .L1808:
  61. movl $4, (%edx)
  62. movl %edx, %edi
  63. movl $pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC, %ebx
  64. leal 8(%edx), %edx
  65. movl %edx, 12(%ebx)
  66. movl %edi, %ebx
  67. .L1809:
  68. movl %esi, %edi
  69. movl 84(%esp), %eax
  70. movl 88(%esp), %esi
  71. #APP
  72. /* GCROOT %eax */
  73. /* GCROOT %edi */
  74. #NO_APP
  75. movl %eax, 48(%esp)
  76. movl 96(%esp), %eax
  77. #APP
  78. /* GCROOT %esi */
  79. /* GCROOT %eax */
  80. /* GCROOT %ebp */
  81. #NO_APP
  82. movl %eax, 44(%esp)
  83. movl 92(%esp), %eax
  84. #APP
  85. /* GCROOT %eax */
  86. #NO_APP
  87. movl %eax, 40(%esp)
  88. testl %ebx, %ebx
  89. je .L1779
  90. .L1811:
  91. movl $pypy_g_src8_A_vtable, 4(%ebx)
  92. movl 80(%esp), %eax
  93. movl %ebx, 24(%esp)
  94. movl %ebx, 20(%esp)
  95. decl %eax
  96. movl %eax, 52(%esp)
  97. movl %ebx, 16(%esp)
  98. movl %ebx, 12(%esp)
  99. movl %ebx, 8(%esp)
  100. movl %ebx, 4(%esp)
  101. movl %eax, (%esp)
  102. call pypy_g_foo
  103. ;; expected {76(%esp) | 60(%esp), 64(%esp), 68(%esp), 72(%esp) | %ebx, %esi, %edi, %ebp, 40(%esp), 44(%esp), 48(%esp)}
  104. movl pypy_g_ExcData, %ecx
  105. #APP
  106. /* GCROOT %esi */
  107. /* GCROOT %edi */
  108. #NO_APP
  109. movl %esi, 36(%esp)
  110. movl 48(%esp), %eax
  111. movl 40(%esp), %esi
  112. #APP
  113. /* GCROOT %eax */
  114. /* GCROOT %ebp */
  115. #NO_APP
  116. movl %eax, 32(%esp)
  117. movl %ebx, %eax
  118. movl 44(%esp), %ebx
  119. #APP
  120. /* GCROOT %eax */
  121. /* GCROOT %ebx */
  122. /* GCROOT %esi */
  123. #NO_APP
  124. testl %ecx, %ecx
  125. jne .L1779
  126. .L1814:
  127. movl %eax, 24(%esp)
  128. movl 52(%esp), %edx
  129. movl %eax, 20(%esp)
  130. movl %eax, 16(%esp)
  131. movl %eax, 12(%esp)
  132. movl %eax, 8(%esp)
  133. movl %eax, 4(%esp)
  134. movl %edx, (%esp)
  135. call pypy_g_foo
  136. ;; expected {76(%esp) | 60(%esp), 64(%esp), 68(%esp), 72(%esp) | %ebx, %esi, %edi, %ebp, 32(%esp), 36(%esp)}
  137. movl %esi, %eax
  138. movl pypy_g_ExcData, %esi
  139. #APP
  140. /* GCROOT %edi */
  141. #NO_APP
  142. movl %edi, 28(%esp)
  143. movl 32(%esp), %edx
  144. #APP
  145. /* GCROOT %ebp */
  146. #NO_APP
  147. movl 36(%esp), %edi
  148. #APP
  149. /* GCROOT %edx */
  150. /* GCROOT %edi */
  151. #NO_APP
  152. movl %ebx, %ecx
  153. #APP
  154. /* GCROOT %eax */
  155. /* GCROOT %ecx */
  156. #NO_APP
  157. testl %esi, %esi
  158. jne .L1779
  159. .L1816:
  160. movl %edi, 20(%esp)
  161. movl 28(%esp), %edi
  162. movl %ebp, 8(%esp)
  163. movl 52(%esp), %ebp
  164. movl %edx, 24(%esp)
  165. movl %eax, 16(%esp)
  166. movl %ecx, 12(%esp)
  167. movl %edi, 4(%esp)
  168. movl %ebp, (%esp)
  169. call pypy_g_foo
  170. ;; expected {76(%esp) | 60(%esp), 64(%esp), 68(%esp), 72(%esp) | }
  171. jmp .L1779
  172. .L1807:
  173. .p2align 4,,7
  174. .L1804:
  175. .L1817:
  176. movl $pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC, (%esp)
  177. movl $8, %ebx
  178. movl %ebx, 4(%esp)
  179. call pypy_g_SemiSpaceGC_try_obtain_free_space
  180. ;; expected {76(%esp) | 60(%esp), 64(%esp), 68(%esp), 72(%esp) | %esi, %ebp, 84(%esp), 88(%esp), 92(%esp), 96(%esp)}
  181. movl pypy_g_ExcData, %ecx
  182. xorl %edx, %edx
  183. testl %ecx, %ecx
  184. je .L1832
  185. .L1819:
  186. xorl %ebx, %ebx
  187. testl %ecx, %ecx
  188. jne .L1809
  189. jmp .L1829
  190. .L1790:
  191. .L1789:
  192. .L1792:
  193. .L1793:
  194. .L1830:
  195. .L1794:
  196. movl $pypy_g_exceptions_RuntimeError_vtable, %edi
  197. movl $pypy_g_exceptions_RuntimeError, %ebx
  198. movl %edi, pypy_g_ExcData
  199. movl %ebx, pypy_g_ExcData+4
  200. jmp .L1791
  201. .L1832:
  202. .L1820:
  203. testb %al, %al
  204. je .L1833
  205. .L1822:
  206. movl pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC+12, %edx
  207. jmp .L1819
  208. .L1833:
  209. .L1823:
  210. .L1824:
  211. .L1825:
  212. movl $pypy_g_exceptions_MemoryError_vtable, %ecx
  213. movl $pypy_g_exceptions_MemoryError_1, %eax
  214. movl %ecx, pypy_g_ExcData
  215. movl %eax, pypy_g_ExcData+4
  216. jmp .L1819
  217. .size pypy_g_foo, .-pypy_g_foo