• sgjesse@chromium.org's avatar
    Inline floating point compare · 9240342a
    sgjesse@chromium.org authored
    Inline floating point compare instead of calling the stub when the following conditions are met:
      * Code is in a loop
      * Compare is not a for loop condition
      * Compare is not an equal comparison
    
    This inlined code handles heap number to heap number and heap number to smi compare. It can also handle smi to smi compare, but whenever there is a chance of comparing two smis the smi compare is inlined before the inlined floating point compare. Support for non SSE2 hardware is included.
    
    A new set of variants of the compare stub without the floating point comparison code is called if the inline comapre fails due to the operands not beeing heap numbers or smis.
    
    The virtual frame has been extended with a branch taking two live results to be carried through to the destination. This makes this change much simpler as the inlined code have two live results in registers and a number of bailouts.
    
    CompareStub::GetName needs to be updated as well. I will do that as a separate change.
    
    Also inlined equality check if both operands can't be NaN. This can only provide positive equals if it is the same object.
    Review URL: http://codereview.chromium.org/1117011
    
    git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4220 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
    9240342a
jump-target.cc 14.6 KB