Changeset 207625 in webkit


Ignore:
Timestamp:
Oct 20, 2016 11:02:31 AM (7 years ago)
Author:
Yusuke Suzuki
Message:

[JSC] Move InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero to out of line type info flags
https://bugs.webkit.org/show_bug.cgi?id=163716

Reviewed by Saam Barati.

We found that all the accesses to the InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero flag is
done through the Structure. There is no user that accesses this flag in the cell inlined member. And JIT
code does not access it directly. That means that we can move this flag from inlined flags to out of line
flags. This patch moves it to the out of line flags. And make one bit empty in inlined flags. Later this
new empty flag will be used by megamorphic DOMJIT implementation.

  • runtime/JSTypeInfo.h:

(JSC::TypeInfo::hasStaticPropertyTable):
(JSC::TypeInfo::interceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero):

Location:
trunk/Source/JavaScriptCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r207623 r207625  
     12016-10-19  Yusuke Suzuki  <utatane.tea@gmail.com>
     2
     3        [JSC] Move InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero to out of line type info flags
     4        https://bugs.webkit.org/show_bug.cgi?id=163716
     5
     6        Reviewed by Saam Barati.
     7
     8        We found that all the accesses to the InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero flag is
     9        done through the Structure. There is no user that accesses this flag in the cell inlined member. And JIT
     10        code does not access it directly. That means that we can move this flag from inlined flags to out of line
     11        flags. This patch moves it to the out of line flags. And make one bit empty in inlined flags. Later this
     12        new empty flag will be used by megamorphic DOMJIT implementation.
     13
     14        * runtime/JSTypeInfo.h:
     15        (JSC::TypeInfo::hasStaticPropertyTable):
     16        (JSC::TypeInfo::interceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero):
     17
    1182016-10-20  Keith Miller  <keith_miller@apple.com>
    219
  • trunk/Source/JavaScriptCore/runtime/JSTypeInfo.h

    r206525 r207625  
    4040static const unsigned TypeOfShouldCallGetCallData = 1 << 2; // Need this flag if you override getCallData() and you want typeof to use this to determine if it should say "function". Currently we always set this flag when we override getCallData().
    4141static const unsigned OverridesGetOwnPropertySlot = 1 << 3;
    42 static const unsigned InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero = 1 << 4;
    4342static const unsigned StructureIsImmortal = 1 << 5;
    4443static const unsigned OverridesToThis = 1 << 6; // If this is false then this returns something other than 'this'. Non-object cells that are visible to JS have this set as do some exotic objects.
     
    5251static const unsigned IsEnvironmentRecord = 1 << 13;
    5352static const unsigned GetOwnPropertySlotIsImpureForPropertyAbsence = 1 << 14;
     53static const unsigned InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero = 1 << 15;
    5454
    5555class TypeInfo {
     
    8484    static bool overridesGetOwnPropertySlot(InlineTypeFlags flags) { return flags & OverridesGetOwnPropertySlot; }
    8585    static bool hasStaticPropertyTable(InlineTypeFlags flags) { return flags & HasStaticPropertyTable; }
    86     bool interceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero() const { return isSetOnFlags1(InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero); }
    8786    bool structureIsImmortal() const { return isSetOnFlags1(StructureIsImmortal); }
    8887    bool overridesToThis() const { return isSetOnFlags1(OverridesToThis); }
     
    9392    bool newImpurePropertyFiresWatchpoints() const { return isSetOnFlags2(NewImpurePropertyFiresWatchpoints); }
    9493    bool isEnvironmentRecord() const { return isSetOnFlags2(IsEnvironmentRecord); }
     94    bool interceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero() const { return isSetOnFlags2(InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero); }
    9595
    9696    static ptrdiff_t flagsOffset()
Note: See TracChangeset for help on using the changeset viewer.