とりあえずこんな感じだった。

[Codegen] #label     ((14))
[Codegen] instruction CompareAndBranch
[Codegen] cmpl       0xc(%esp), %eax
[Codegen] jg         ((24))
[Codegen] #label     ((24))
[Codegen] instruction MoveGroup
[Codegen] instruction MoveGroup
[Codegen] movl       %eax, %ecx
[Codegen] instruction MulI
[Codegen] shll       $3, %ecx
[Codegen] instruction MoveGroup
[Codegen] movl       0x4(%esp), %edx
[Codegen] instruction BitOpI
[Codegen] orl        %ecx, %edx
[Codegen] instruction BitOpI
[Codegen] andl       $0xfffffff8, %edx
[Codegen] instruction AsmJSLoadHeap
[Codegen] cmpl       $0x0, %edx
[Codegen] jae        ((50))
[Codegen] movsd      0x0(%edx), %xmm0
[Codegen] #label     ((58))
[Codegen] instruction MoveGroup
[Codegen] movl       0x8(%esp), %ebx
[Codegen] instruction BitOpI
[Codegen] orl        %ecx, %ebx
[Codegen] instruction BitOpI
[Codegen] andl       $0xfffffff8, %ebx
[Codegen] instruction AsmJSLoadHeap
[Codegen] cmpl       $0x0, %ebx
[Codegen] jae        ((79))
[Codegen] movsd      0x0(%ebx), %xmm1
[Codegen] #label     ((87))
[Codegen] instruction MathD
[Codegen] mulsd      %xmm1, %xmm0
[Codegen] instruction MathD
[Codegen] addsd      %xmm1, %xmm0
[Codegen] instruction AsmJSStoreHeap
[Codegen] cmpl       $0x0, %edx
[Codegen] jae        ((107))
[Codegen] movsd      %xmm0, 0x0(%edx)
[Codegen] #label     ((115))
[Codegen] ##link     ((107)) jumps to ((115))
[Codegen] ##setRel32 ((from=007BDFEB)) ((to=007BDFF3))
[Codegen] #label     ((115))
[Codegen] instruction AddI
[Codegen] addl       $0x1, %eax
[Codegen] instruction MoveGroup
[Codegen] instruction Goto
[Codegen] jmp        ((123))
[Codegen] ##link     ((123)) jumps to ((14))

なんか BitOpI 多すぎでは(orl %ecx,%ebx とか)?あとで調べよう。

いやポインタの足し算か。しかしなんでor?

  • js/src のなかで configure --enable-debug
  • export IONFLAGS=codegen