Changeset 94500 in webkit


Ignore:
Timestamp:
Sep 3, 2011 10:43:47 PM (13 years ago)
Author:
fpizlo@apple.com
Message:

ThunkGenerators does not convert positive double zero into integer zero
https://bugs.webkit.org/show_bug.cgi?id=67553

Reviewed by Gavin Barraclough.

This is an 0.5% speed-up on V8 and neutral elsewhere.

  • jit/SpecializedThunkJIT.h:

(JSC::SpecializedThunkJIT::returnDouble):

Location:
trunk/Source/JavaScriptCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r94494 r94500  
     12011-09-03  Filip Pizlo  <fpizlo@apple.com>
     2
     3        ThunkGenerators does not convert positive double zero into integer zero
     4        https://bugs.webkit.org/show_bug.cgi?id=67553
     5
     6        Reviewed by Gavin Barraclough.
     7       
     8        This is an 0.5% speed-up on V8 and neutral elsewhere.
     9
     10        * jit/SpecializedThunkJIT.h:
     11        (JSC::SpecializedThunkJIT::returnDouble):
     12
    1132011-09-03  Kevin Ollivier  <kevino@theolliviers.com>
    214
  • trunk/Source/JavaScriptCore/jit/SpecializedThunkJIT.h

    r90237 r94500  
    9696#if USE(JSVALUE64)
    9797            moveDoubleToPtr(src, regT0);
     98            Jump zero = branchTestPtr(Zero, regT0);
    9899            subPtr(tagTypeNumberRegister, regT0);
     100            Jump done = jump();
     101            zero.link(this);
     102            move(tagTypeNumberRegister, regT0);
     103            done.link(this);
    99104#else
    100105            storeDouble(src, Address(stackPointerRegister, -(int)sizeof(double)));
    101106            loadPtr(Address(stackPointerRegister, OBJECT_OFFSETOF(JSValue, u.asBits.tag) - sizeof(double)), regT1);
    102107            loadPtr(Address(stackPointerRegister, OBJECT_OFFSETOF(JSValue, u.asBits.payload) - sizeof(double)), regT0);
     108            Jump lowNonZero = branchTestPtr(NonZero, regT1);
     109            Jump highNonZero = branchTestPtr(NonZero, regT0);
     110            move(TrustedImm32(0), regT0);
     111            move(TrustedImm32(Int32Tag), regT1);
     112            lowNonZero.link(this);
     113            highNonZero.link(this);
    103114#endif
    104115            loadPtr(payloadFor(RegisterFile::CallerFrame, callFrameRegister), callFrameRegister);
Note: See TracChangeset for help on using the changeset viewer.