Ignore:
Timestamp:
Sep 3, 2011, 10:43:47 PM (14 years ago)
Author:
[email protected]
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):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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.