function loopForOf(){ var i; for (i of a){ #3 #18 #4 #6 #10 #12 #13 #17 Block #3 -> #4 :: 85212 hits [Label] [InterruptCheckImplicit] [OsiPoint] [Goto] Block #18 -> #3 :: 85126 hits [Label] [LoadFixedSlotV] movl 0x10(%edx), %eax movl 0x14(%edx), %ecx [Unbox:Int32] cmpl $0xffffff81, %ecx jne ((1990)) [Pointer:GC_THING] movl $0x8e794160, %ecx [Slots] movl 0x8(%ecx), %ecx [LoadSlotT] movl 0x670(%ecx), %ebx [LoadSlotT] movl 0x668(%ecx), %ebp [MoveGroup] movl %eax, %esi [SubI:OverflowCheck] subl $0x1, %esi jo ((2021)) [Elements] movl 0xc(%ebp), %edi [MoveGroup] movl %eax, 0x58(%esp) [InitializedLength] movl -0xc(%edi), %eax [BoundsCheck] cmpl %esi, %eax jbe ((2039)) [LoadElementT] movl 0(%edi,%esi,8), %eax [AddI:OverflowCheck] addl %eax, %ebx jo ((2050)) [StoreSlotT] movl %ebx, 0x670(%ecx) [MoveGroup] movl 0x6c(%esp), %ebx movl 0x68(%esp), %eax movl 0x70(%esp), %ecx movl 0x74(%esp), %edx [Goto] jmp ((2077)) ##link ((2077)) jumps to ((2077)) Block #4 -> #6 -> #9 :: 85212 hits [Label] [TestIAndBranch] testl %ebx, %ebx je ((515)) Block #6 -> #10 -> #9 :: 85212 hits [Label] [StackArgT] movl $0xffffff82, 0x34(%esp) movl $0x0, 0x30(%esp) [StackArgT] movl $0xffffff88, 0x3c(%esp) movl %eax, 0x38(%esp) [CallNative] addl $0x30, %esp push -$0x78 push -$0x71866c60 movl 0xaeee90a0, %edi movl $0x1, %eax movl %esp, %ebx push %eax movl $0xffffffff, %ecx push $0x5c0 push %ecx movl %esp, 0xaeee909c push $0x0 push $0x0 movl %esp, %ecx andl $0xfffffff0, %esp push %ecx subl $0xc, %esp movl %ebx, 0x8(%esp) movl %eax, 0x4(%esp) movl %edi, 0x0(%esp) call ((642)) addl $0xc, %esp pop %esp testb $0xff, %al je ((655)) movl 0x14(%esp), %edx movl 0x18(%esp), %ecx subl $0x14, %esp [Nop] [OsiPoint] [MoveGroup] movl %edx, %eax [Unbox:Bool] cmpl $0xffffff83, %ecx jne ((677)) [TestIAndBranch] testl %eax, %eax jne ((685)) Block #10 -> #11 -> #12 :: 85212 hits [Label] [MoveGroup] movl 0x68(%esp), %eax [LoadFixedSlotV] movl 0x10(%eax), %ecx movl 0x14(%eax), %edx [Unbox:Object] cmpl $0xffffff88, %edx jne ((1169)) [MoveGroup] movl %ecx, 0x58(%esp) [TypeBarrierO] movl 0x4(%ecx), %edx cmpl $0x8d30f040, %edx jne ((1188)) [LoadFixedSlotV] movl 0x18(%eax), %edx movl 0x1c(%eax), %ebx [Unbox:Int32] cmpl $0xffffff81, %ebx jne ((1203)) [MoveGroup] movl %edx, 0x5c(%esp) [LoadFixedSlotV] movl 0x20(%eax), %ebx movl 0x24(%eax), %ebp [Unbox:Int32] cmpl $0xffffff81, %ebp jne ((1222)) [Pointer:GC_THING] movl $0x8d306860, %ebp [NewObject] movl 0xaeee91cc, %ebp leal 0x20(%ebp), %esi cmpl %esi, 0xaeee91d4 jb ((1248)) movl %esi, 0xaeee91cc movl $0xad029868, 0x0(%ebp) movl $0x8e7e7420, 0x4(%ebp) movl $0x0, 0x8(%ebp) movl $0xb58bb9fc, 0xc(%ebp) [OsiPoint] [StoreFixedSlotT] movl $0xffffff82, 0x14(%ebp) movl $0x0, 0x10(%ebp) [StoreFixedSlotT] movl $0xffffff83, 0x1c(%ebp) movl $0x0, 0x18(%ebp) [Elements] movl 0xc(%ecx), %esi [ArrayLength] movl -0x4(%esi), %edi [ShiftI:ursh] [CompareAndBranch:ge] cmpl %edi, %edx jl ((1324)) Block #12 -> #13 -> #14 :: 85126 hits [Label] [MoveGroup] movl %edx, %edi [AddI] addl $0x1, %edi [StoreFixedSlotT] movl $0xffffff81, 0x1c(%eax) movl %edi, 0x18(%eax) [CompareAndBranch:stricteq] testl %ebx, %ebx jne ((1430)) Block #13 -> #17 :: 85126 hits [Label] [InitializedLength] movl -0xc(%esi), %edi [BoundsCheck] cmpl %edx, %edi jbe ((1461)) [LoadElementT] movl 0(%esi,%edx,8), %ecx [StoreFixedSlotT] movl $0xffffff81, 0x14(%ebp) movl %ecx, 0x10(%ebp) [MoveGroup] movl %ebp, %edx [Goto] jmp ((1481)) Block #17 -> #19 -> #18 :: 85212 hits [Label] [LoadFixedSlotT] movl 0x18(%edx), %eax [TestIAndBranch] testl %eax, %eax jne ((1955)) counter += a[i -1]; } } loopForIn : file:///Daten/Projects/empty.html# (line 46)function loopForIn(){ var i; for (i in a){ #1 #2 Block #1 -> #2 -> #3 :: 96096 hits [Label] [InterruptCheckImplicit] [OsiPoint] [IteratorMore] movl 0x4(%eax), %ecx cmpl $0xb6dec2a0, 0x0(%ecx) jne ((246)) movl 0x18(%eax), %ecx testl $0x2, 0x20(%ecx) jne ((262)) movl 0x10(%ecx), %edx cmpl %edx, 0xc(%ecx) setl %cl movzbl %cl, %ecx [OsiPoint] [TestIAndBranch] testl %ecx, %ecx je ((282)) Block #2 -> #1 :: 96000 hits [Label] [IteratorNext] movl 0x4(%eax), %ebx cmpl $0xb6dec2a0, 0x0(%ebx) jne ((317)) movl 0x18(%eax), %ebx testl $0x2, 0x20(%ebx) jne ((333)) movl 0xc(%ebx), %ecx movl 0x0(%ecx), %ecx movl $0xffffff85, %edx addl $4, 0xc(%ebx) [OsiPoint] [MoveGroup] movl %ecx, %ebx [Unbox:String] cmpl $0xffffff85, %edx jne ((358)) [Pointer:GC_THING] movl $0x8e794160, %ebp [Slots] movl 0x8(%ebp), %ebp [LoadSlotT] movl 0x670(%ebp), %esi [LoadSlotT] movl 0x668(%ebp), %edi [MoveGroup] movl %ebx, 0x7c(%esp) [GetElementCacheV] jmp ((387)) [OsiPoint] [MoveGroup] movl %ebp, %ecx [Unbox:Int32] cmpl $0xffffff81, %ebx jne ((398)) [AddI:OverflowCheck] addl %ecx, %esi jo ((406)) [Pointer:GC_THING] movl $0x8e794160, %ecx [Slots] movl 0x8(%ecx), %ecx [StoreSlotT] movl %esi, 0x670(%ecx) [Goto] jmp ((425)) ##link ((425)) jumps to ((425)) counter += a[i]; } } loopFor : file:///Daten/Projects/empty.html# (line 31)function loopFor(){ var i, len = a.length; counter = 0; for (i=0; i #4 -> #5 :: 83275 hits [Label] [InterruptCheckImplicit] [OsiPoint] [CompareAndBranch:lt] cmpl %ecx, %ebx jge ((352)) counter += a[i]; #4 Block #4 -> #3 :: 83191 hits [Label] [LoadSlotT] movl 0x670(%ebp), %edi [LoadElementT] movl 0(%esi,%ebx,8), %ecx [AddI:OverflowCheck] addl %ecx, %edi jo ((389)) [StoreSlotT] movl %edi, 0x670(%ebp) [AddI] addl $0x1, %ebx [MoveGroup] movl 0x6c(%esp), %ecx [Goto] jmp ((407)) ##link ((407)) jumps to ((407)) } } next : self-hosted (line 451)