Advertisement
Guest User

Untitled

a guest
Aug 1st, 2013
1,804
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --- Raw source ---
  2. ( nodes ) {
  3.     var sum = 0;
  4.     for (var i = 0; i < nodes.length; i++) {
  5.         sum += nodes[i];
  6.     }
  7.     return sum;
  8. }
  9.  
  10.  
  11. --- Optimized code ---
  12. kind = OPTIMIZED_FUNCTION
  13. name = test2
  14. stack_slots = 2
  15. Instructions (size = 430)
  16. 24133E80     0  55             push ebp
  17. 24133E81     1  89e5           mov ebp,esp
  18. 24133E83     3  56             push esi
  19. 24133E84     4  57             push edi
  20. 24133E85     5  83ec08         sub esp,0x8
  21.                   ;;; Store dynamic frame alignment tag for spilled doubles
  22. 24133E88     8  c745f400000000 mov [ebp+0xf4],0x0
  23.                   ;;; <@0,#0> -------------------- B0 --------------------
  24.                   ;;; <@6,#5> context
  25. 24133E8F    15  8b45fc         mov eax,[ebp+0xfc]
  26.                   ;;; <@7,#5> gap
  27. 24133E92    18  8945f0         mov [ebp+0xf0],eax
  28.                   ;;; <@10,#8> -------------------- B1 --------------------
  29.                   ;;; <@11,#8> gap
  30. 24133E95    21  89c6           mov esi,eax
  31.                   ;;; <@12,#10> stack-check
  32. 24133E97    23  3b2578386900   cmp esp,[0x693878]
  33. 24133E9D    29  7305           jnc 36  (24133EA4)
  34. 24133E9F    31  e81ccdfdff     call 24110BC0                 ;; code: STUB, StackCheckStub, minor: 0
  35.                   ;;; <@13,#10> gap
  36. 24133EA4    36  8b4508         mov eax,[ebp+0x8]
  37.                   ;;; <@14,#25> check-non-smi
  38. 24133EA7    39  f7c001000000   test eax,0x1
  39. 24133EAD    45  0f8430010000   jz 355  (24133FE3)
  40.                   ;;; <@16,#26> check-maps
  41. 24133EB3    51  8178ffc9c4a02f cmp [eax+0xff],0x2fa0c4c9     ;; object: 2FA0C4C9 <Map(elements=FAST_ELEMENTS)>
  42. 24133EBA    58  0f841a000000   jz 90  (24133EDA)
  43. 24133EC0    64  8178ff41c5a02f cmp [eax+0xff],0x2fa0c541     ;; object: 2FA0C541 <Map(elements=FAST_SMI_ELEMENTS)>
  44. 24133EC7    71  0f840d000000   jz 90  (24133EDA)
  45. 24133ECD    77  8178ff91c5a02f cmp [eax+0xff],0x2fa0c591     ;; object: 2FA0C591 <Map(elements=FAST_DOUBLE_ELEMENTS)>
  46. 24133ED4    84  0f850e010000   jnz 360  (24133FE8)
  47.                   ;;; <@18,#27> load-named-field
  48. 24133EDA    90  8b480b         mov ecx,[eax+0xb]
  49.                   ;;; <@20,#64> tagged-to-i
  50. 24133EDD    93  f6c101         test_b cl,0x1
  51. 24133EE0    96  0f855c000000   jnz 194  (24133F42)
  52. 24133EE6   102  d1f9           sar ecx,1
  53.                   ;;; <@22,#41> check-maps
  54. 24133EE8   104  8178ff41c5a02f cmp [eax+0xff],0x2fa0c541     ;; object: 2FA0C541 <Map(elements=FAST_SMI_ELEMENTS)>
  55. 24133EEF   111  0f85f8000000   jnz 365  (24133FED)
  56.                   ;;; <@24,#42> load-named-field
  57. 24133EF5   117  8b5007         mov edx,[eax+0x7]
  58.                   ;;; <@26,#43> load-named-field
  59. 24133EF8   120  8b580b         mov ebx,[eax+0xb]
  60.                   ;;; <@28,#65> smi-untag
  61. 24133EFB   123  d1fb           sar ebx,1
  62.                   ;;; <@30,#21> gap
  63. 24133EFD   125  33ff           xor edi,edi
  64. 24133EFF   127  33f6           xor esi,esi
  65.                   ;;; <@32,#22> -------------------- B2 (loop header) --------------------
  66.                   ;;; <@35,#28> cmp-id-and-branch
  67. 24133F01   129  3bf1           cmp esi,ecx
  68. 24133F03   131  0f8d29000000   jnl 178  (24133F32)
  69.                   ;;; <@40,#35> -------------------- B4 --------------------
  70.                   ;;; <@42,#37> stack-check
  71. 24133F09   137  3b2578386900   cmp esp,[0x693878]
  72. 24133F0F   143  0f825c000000   jc 241  (24133F71)
  73.                   ;;; <@44,#44> bounds-check
  74. 24133F15   149  3bf3           cmp esi,ebx
  75. 24133F17   151  0f83d5000000   jnc 370  (24133FF2)
  76.                   ;;; <@46,#45> load-keyed
  77. 24133F1D   157  8b44b207       mov eax,[edx+esi*4+0x7]
  78.                   ;;; <@48,#66> smi-untag
  79. 24133F21   161  d1f8           sar eax,1
  80.                   ;;; <@50,#46> add-i
  81. 24133F23   163  03c7           add eax,edi
  82. 24133F25   165  0f80cc000000   jo 375  (24133FF7)
  83.                   ;;; <@52,#51> add-i
  84. 24133F2B   171  83c601         add esi,0x1
  85.                   ;;; <@54,#54> gap
  86. 24133F2E   174  89c7           mov edi,eax
  87.                   ;;; <@55,#54> goto
  88. 24133F30   176  ebcf           jmp 129  (24133F01)
  89.                   ;;; <@60,#55> -------------------- B6 --------------------
  90.                   ;;; <@61,#55> gap
  91. 24133F32   178  89f8           mov eax,edi
  92.                   ;;; <@62,#63> number-tag-i
  93. 24133F34   180  03c0           add eax,eax
  94. 24133F36   182  0f8048000000   jo 260  (24133F84)
  95.                   ;;; <@64,#58> return
  96. 24133F3C   188  89ec           mov esp,ebp
  97. 24133F3E   190  5d             pop ebp
  98. 24133F3F   191  c20800         ret 0x8
  99.                   ;;; <@20,#64> -------------------- Deferred tagged-to-i --------------------
  100. 24133F42   194  8179ff4981a02f cmp [ecx+0xff],0x2fa08149     ;; object: 2FA08149 <Map(elements=FAST_HOLEY_ELEMENTS)>
  101.                   Deferred TaggedToI: not a heap number
  102. 24133F49   201  0f85ad000000   jnz 380  (24133FFC)
  103. 24133F4F   207  f20f104103     movsd xmm0,[ecx+0x3]
  104. 24133F54   212  f20f2cc8       cvttsd2si ecx,xmm0
  105. 24133F58   216  f20f2ac9       cvtsi2sd xmm1,ecx
  106. 24133F5C   220  660f2ec1       ucomisd xmm0,xmm1
  107.                   Deferred TaggedToI: lost precision
  108. 24133F60   224  0f8596000000   jnz 380  (24133FFC)
  109.                   Deferred TaggedToI: NaN
  110. 24133F66   230  0f8a90000000   jpe 380  (24133FFC)
  111. 24133F6C   236  e977ffffff     jmp 104  (24133EE8)
  112.                   ;;; <@42,#37> -------------------- Deferred stack-check --------------------
  113. 24133F71   241  60             pushad
  114. 24133F72   242  8b75fc         mov esi,[ebp+0xfc]
  115. 24133F75   245  33c0           xor eax,eax
  116. 24133F77   247  bb4069e900     mov ebx,00E96940
  117. 24133F7C   252  e8bf70ffff     call 2412B040                 ;; code: STUB, CEntryStub, minor: 1
  118. 24133F81   257  61             popad
  119. 24133F82   258  eb91           jmp 149  (24133F15)
  120.                   ;;; <@62,#63> -------------------- Deferred number-tag-i --------------------
  121. 24133F84   260  60             pushad
  122. 24133F85   261  d1f8           sar eax,1
  123. 24133F87   263  3500000080     xor eax, 80000000
  124. 24133F8C   268  f20f2ac0       cvtsi2sd xmm0,eax
  125. 24133F90   272  8b054c256900   mov eax,[0x69254c]
  126. 24133F96   278  89c1           mov ecx,eax
  127. 24133F98   280  83c10c         add ecx,0xc
  128. 24133F9B   283  0f821c000000   jc 317  (24133FBD)
  129. 24133FA1   289  3b0d50256900   cmp ecx,[0x692550]
  130. 24133FA7   295  0f8710000000   ja 317  (24133FBD)
  131. 24133FAD   301  890d4c256900   mov [0x69254c],ecx
  132. 24133FB3   307  40             inc eax
  133. 24133FB4   308  c740ff4981a02f mov [eax+0xff],0x2fa08149     ;; object: 2FA08149 <Map(elements=FAST_HOLEY_ELEMENTS)>
  134. 24133FBB   315  eb17           jmp 340  (24133FD4)
  135. 24133FBD   317  c744241c00000000 mov [esp+0x1c],0x0
  136. 24133FC5   325  8b75fc         mov esi,[ebp+0xfc]
  137. 24133FC8   328  33c0           xor eax,eax
  138. 24133FCA   330  bbe050e900     mov ebx,00E950E0
  139. 24133FCF   335  e86c70ffff     call 2412B040                 ;; code: STUB, CEntryStub, minor: 1
  140. 24133FD4   340  f20f114003     movsd [eax+0x3],xmm0
  141. 24133FD9   345  8944241c       mov [esp+0x1c],eax
  142. 24133FDD   349  61             popad
  143. 24133FDE   350  e959ffffff     jmp 188  (24133F3C)
  144.                   ;;; -------------------- Jump table --------------------
  145.                   ;;; jump table entry 0: deoptimization bailout 1.
  146. 24133FE3   355  e922606de8     jmp 0C80A00A                  ;; deoptimization bailout 1
  147.                   ;;; jump table entry 1: deoptimization bailout 2.
  148. 24133FE8   360  e927606de8     jmp 0C80A014                  ;; deoptimization bailout 2
  149.                   ;;; jump table entry 2: deoptimization bailout 3.
  150. 24133FED   365  e92c606de8     jmp 0C80A01E                  ;; deoptimization bailout 3
  151.                   ;;; jump table entry 3: deoptimization bailout 5.
  152. 24133FF2   370  e93b606de8     jmp 0C80A032                  ;; deoptimization bailout 5
  153.                   ;;; jump table entry 4: deoptimization bailout 6.
  154. 24133FF7   375  e940606de8     jmp 0C80A03C                  ;; deoptimization bailout 6
  155.                   ;;; jump table entry 5: deoptimization bailout 7.
  156. 24133FFC   380  e945606de8     jmp 0C80A046                  ;; deoptimization bailout 7
  157. 24134001   385  90             nop
  158. 24134002   386  90             nop
  159. 24134003   387  90             nop
  160. 24134004   388  90             nop
  161. 24134005   389  90             nop
  162. 24134006   390  66             nop
  163. 24134007   391  90             nop
  164.                   ;;; Safepoint table.
  165.  
  166.  
  167.  
  168. --- Raw source ---
  169. ( nodes ) {
  170.     var sum = 0;
  171.     var len = nodes.length;
  172.     for (var i = 0; i < len; i++) {
  173.         sum += nodes[i];
  174.     }
  175.     return sum;
  176. }
  177.  
  178.  
  179. --- Optimized code ---
  180. kind = OPTIMIZED_FUNCTION
  181. name = test1
  182. stack_slots = 3
  183. Instructions (size = 438)
  184. 24134200     0  55             push ebp
  185. 24134201     1  89e5           mov ebp,esp
  186. 24134203     3  56             push esi
  187. 24134204     4  57             push edi
  188. 24134205     5  83ec0c         sub esp,0xc
  189.                   ;;; Store dynamic frame alignment tag for spilled doubles
  190. 24134208     8  c745f400000000 mov [ebp+0xf4],0x0
  191.                   ;;; <@0,#0> -------------------- B0 --------------------
  192.                   ;;; <@6,#5> context
  193. 2413420F    15  8b45fc         mov eax,[ebp+0xfc]
  194.                   ;;; <@7,#5> gap
  195. 24134212    18  8945f0         mov [ebp+0xf0],eax
  196.                   ;;; <@10,#8> -------------------- B1 --------------------
  197.                   ;;; <@11,#8> gap
  198. 24134215    21  89c6           mov esi,eax
  199.                   ;;; <@12,#10> stack-check
  200. 24134217    23  3b2578386900   cmp esp,[0x693878]
  201. 2413421D    29  7305           jnc 36  (24134224)
  202. 2413421F    31  e89cc9fdff     call 24110BC0                 ;; code: STUB, StackCheckStub, minor: 0
  203.                   ;;; <@13,#10> gap
  204. 24134224    36  8b4508         mov eax,[ebp+0x8]
  205.                   ;;; <@14,#14> check-non-smi
  206. 24134227    39  f7c001000000   test eax,0x1
  207. 2413422D    45  0f843a010000   jz 365  (2413436D)
  208.                   ;;; <@16,#15> check-maps
  209. 24134233    51  8178ffc9c4a02f cmp [eax+0xff],0x2fa0c4c9     ;; object: 2FA0C4C9 <Map(elements=FAST_ELEMENTS)>
  210. 2413423A    58  0f841a000000   jz 90  (2413425A)
  211. 24134240    64  8178ff41c5a02f cmp [eax+0xff],0x2fa0c541     ;; object: 2FA0C541 <Map(elements=FAST_SMI_ELEMENTS)>
  212. 24134247    71  0f840d000000   jz 90  (2413425A)
  213. 2413424D    77  8178ff91c5a02f cmp [eax+0xff],0x2fa0c591     ;; object: 2FA0C591 <Map(elements=FAST_DOUBLE_ELEMENTS)>
  214. 24134254    84  0f8518010000   jnz 370  (24134372)
  215.                   ;;; <@18,#16> load-named-field
  216. 2413425A    90  8b480b         mov ecx,[eax+0xb]
  217.                   ;;; <@19,#16> gap
  218. 2413425D    93  89ca           mov edx,ecx
  219.                   ;;; <@20,#65> tagged-to-i
  220. 2413425F    95  f6c201         test_b dl,0x1
  221. 24134262    98  0f8564000000   jnz 204  (241342CC)
  222. 24134268   104  d1fa           sar edx,1
  223.                   ;;; <@22,#44> check-maps
  224. 2413426A   106  8178ff41c5a02f cmp [eax+0xff],0x2fa0c541     ;; object: 2FA0C541 <Map(elements=FAST_SMI_ELEMENTS)>
  225. 24134271   113  0f8500010000   jnz 375  (24134377)
  226.                   ;;; <@24,#45> load-named-field
  227. 24134277   119  8b5807         mov ebx,[eax+0x7]
  228.                   ;;; <@26,#46> load-named-field
  229. 2413427A   122  8b700b         mov esi,[eax+0xb]
  230.                   ;;; <@28,#68> smi-untag
  231. 2413427D   125  d1fe           sar esi,1
  232.                   ;;; <@30,#27> gap
  233. 2413427F   127  c745ec00000000 mov [ebp+0xec],0x0
  234. 24134286   134  33ff           xor edi,edi
  235.                   ;;; <@32,#28> -------------------- B2 (loop header) --------------------
  236.                   ;;; <@35,#31> cmp-id-and-branch
  237. 24134288   136  3bfa           cmp edi,edx
  238. 2413428A   138  0f8d2b000000   jnl 187  (241342BB)
  239.                   ;;; <@40,#38> -------------------- B4 --------------------
  240.                   ;;; <@42,#40> stack-check
  241. 24134290   144  3b2578386900   cmp esp,[0x693878]
  242. 24134296   150  0f825f000000   jc 251  (241342FB)
  243.                   ;;; <@44,#47> bounds-check
  244. 2413429C   156  3bfe           cmp edi,esi
  245. 2413429E   158  0f83d8000000   jnc 380  (2413437C)
  246.                   ;;; <@46,#48> load-keyed
  247. 241342A4   164  8b44bb07       mov eax,[ebx+edi*4+0x7]
  248.                   ;;; <@48,#69> smi-untag
  249. 241342A8   168  d1f8           sar eax,1
  250.                   ;;; <@50,#49> add-i
  251. 241342AA   170  0345ec         add eax,[ebp+0xec]
  252. 241342AD   173  0f80ce000000   jo 385  (24134381)
  253.                   ;;; <@52,#54> add-i
  254. 241342B3   179  83c701         add edi,0x1
  255.                   ;;; <@54,#57> gap
  256. 241342B6   182  8945ec         mov [ebp+0xec],eax
  257.                   ;;; <@55,#57> goto
  258. 241342B9   185  ebcd           jmp 136  (24134288)
  259.                   ;;; <@60,#58> -------------------- B6 --------------------
  260.                   ;;; <@61,#58> gap
  261. 241342BB   187  8b45ec         mov eax,[ebp+0xec]
  262.                   ;;; <@62,#67> number-tag-i
  263. 241342BE   190  03c0           add eax,eax
  264. 241342C0   192  0f8048000000   jo 270  (2413430E)
  265.                   ;;; <@64,#61> return
  266. 241342C6   198  89ec           mov esp,ebp
  267. 241342C8   200  5d             pop ebp
  268. 241342C9   201  c20800         ret 0x8
  269.                   ;;; <@20,#65> -------------------- Deferred tagged-to-i --------------------
  270. 241342CC   204  817aff4981a02f cmp [edx+0xff],0x2fa08149     ;; object: 2FA08149 <Map(elements=FAST_HOLEY_ELEMENTS)>
  271.                   Deferred TaggedToI: not a heap number
  272. 241342D3   211  0f85ad000000   jnz 390  (24134386)
  273. 241342D9   217  f20f104203     movsd xmm0,[edx+0x3]
  274. 241342DE   222  f20f2cd0       cvttsd2si edx,xmm0
  275. 241342E2   226  f20f2aca       cvtsi2sd xmm1,edx
  276. 241342E6   230  660f2ec1       ucomisd xmm0,xmm1
  277.                   Deferred TaggedToI: lost precision
  278. 241342EA   234  0f8596000000   jnz 390  (24134386)
  279.                   Deferred TaggedToI: NaN
  280. 241342F0   240  0f8a90000000   jpe 390  (24134386)
  281. 241342F6   246  e96fffffff     jmp 106  (2413426A)
  282.                   ;;; <@42,#40> -------------------- Deferred stack-check --------------------
  283. 241342FB   251  60             pushad
  284. 241342FC   252  8b75fc         mov esi,[ebp+0xfc]
  285. 241342FF   255  33c0           xor eax,eax
  286. 24134301   257  bb4069e900     mov ebx,00E96940
  287. 24134306   262  e8356dffff     call 2412B040                 ;; code: STUB, CEntryStub, minor: 1
  288. 2413430B   267  61             popad
  289. 2413430C   268  eb8e           jmp 156  (2413429C)
  290.                   ;;; <@62,#67> -------------------- Deferred number-tag-i --------------------
  291. 2413430E   270  60             pushad
  292. 2413430F   271  d1f8           sar eax,1
  293. 24134311   273  3500000080     xor eax, 80000000
  294. 24134316   278  f20f2ac0       cvtsi2sd xmm0,eax
  295. 2413431A   282  8b054c256900   mov eax,[0x69254c]
  296. 24134320   288  89c1           mov ecx,eax
  297. 24134322   290  83c10c         add ecx,0xc
  298. 24134325   293  0f821c000000   jc 327  (24134347)
  299. 2413432B   299  3b0d50256900   cmp ecx,[0x692550]
  300. 24134331   305  0f8710000000   ja 327  (24134347)
  301. 24134337   311  890d4c256900   mov [0x69254c],ecx
  302. 2413433D   317  40             inc eax
  303. 2413433E   318  c740ff4981a02f mov [eax+0xff],0x2fa08149     ;; object: 2FA08149 <Map(elements=FAST_HOLEY_ELEMENTS)>
  304. 24134345   325  eb17           jmp 350  (2413435E)
  305. 24134347   327  c744241c00000000 mov [esp+0x1c],0x0
  306. 2413434F   335  8b75fc         mov esi,[ebp+0xfc]
  307. 24134352   338  33c0           xor eax,eax
  308. 24134354   340  bbe050e900     mov ebx,00E950E0
  309. 24134359   345  e8e26cffff     call 2412B040                 ;; code: STUB, CEntryStub, minor: 1
  310. 2413435E   350  f20f114003     movsd [eax+0x3],xmm0
  311. 24134363   355  8944241c       mov [esp+0x1c],eax
  312. 24134367   359  61             popad
  313. 24134368   360  e959ffffff     jmp 198  (241342C6)
  314.                   ;;; -------------------- Jump table --------------------
  315.                   ;;; jump table entry 0: deoptimization bailout 1.
  316. 2413436D   365  e9985c6de8     jmp 0C80A00A                  ;; deoptimization bailout 1
  317.                   ;;; jump table entry 1: deoptimization bailout 2.
  318. 24134372   370  e99d5c6de8     jmp 0C80A014                  ;; deoptimization bailout 2
  319.                   ;;; jump table entry 2: deoptimization bailout 3.
  320. 24134377   375  e9a25c6de8     jmp 0C80A01E                  ;; deoptimization bailout 3
  321.                   ;;; jump table entry 3: deoptimization bailout 5.
  322. 2413437C   380  e9b15c6de8     jmp 0C80A032                  ;; deoptimization bailout 5
  323.                   ;;; jump table entry 4: deoptimization bailout 6.
  324. 24134381   385  e9b65c6de8     jmp 0C80A03C                  ;; deoptimization bailout 6
  325.                   ;;; jump table entry 5: deoptimization bailout 7.
  326. 24134386   390  e9bb5c6de8     jmp 0C80A046                  ;; deoptimization bailout 7
  327. 2413438B   395  90             nop
  328. 2413438C   396  90             nop
  329. 2413438D   397  90             nop
  330. 2413438E   398  90             nop
  331. 2413438F   399  90             nop
  332.                   ;;; Safepoint table.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement