Title: [207625] trunk/Source/_javascript_Core
Revision
207625
Author
[email protected]
Date
2016-10-20 11:02:31 -0700 (Thu, 20 Oct 2016)

Log 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):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (207624 => 207625)


--- trunk/Source/_javascript_Core/ChangeLog	2016-10-20 17:44:37 UTC (rev 207624)
+++ trunk/Source/_javascript_Core/ChangeLog	2016-10-20 18:02:31 UTC (rev 207625)
@@ -1,3 +1,20 @@
+2016-10-19  Yusuke Suzuki  <[email protected]>
+
+        [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):
+
 2016-10-20  Keith Miller  <[email protected]>
 
         Invalid assertion in arguments elimination

Modified: trunk/Source/_javascript_Core/runtime/JSTypeInfo.h (207624 => 207625)


--- trunk/Source/_javascript_Core/runtime/JSTypeInfo.h	2016-10-20 17:44:37 UTC (rev 207624)
+++ trunk/Source/_javascript_Core/runtime/JSTypeInfo.h	2016-10-20 18:02:31 UTC (rev 207625)
@@ -39,7 +39,6 @@
 static const unsigned ImplementsDefaultHasInstance = 1 << 1;
 static 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().
 static const unsigned OverridesGetOwnPropertySlot = 1 << 3;
-static const unsigned InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero = 1 << 4;
 static const unsigned StructureIsImmortal = 1 << 5;
 static 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.
 static const unsigned HasStaticPropertyTable = 1 << 7;
@@ -51,6 +50,7 @@
 static const unsigned NewImpurePropertyFiresWatchpoints = 1 << 12;
 static const unsigned IsEnvironmentRecord = 1 << 13;
 static const unsigned GetOwnPropertySlotIsImpureForPropertyAbsence = 1 << 14;
+static const unsigned InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero = 1 << 15;
 
 class TypeInfo {
 public:
@@ -83,7 +83,6 @@
     bool overridesGetOwnPropertySlot() const { return overridesGetOwnPropertySlot(inlineTypeFlags()); }
     static bool overridesGetOwnPropertySlot(InlineTypeFlags flags) { return flags & OverridesGetOwnPropertySlot; }
     static bool hasStaticPropertyTable(InlineTypeFlags flags) { return flags & HasStaticPropertyTable; }
-    bool interceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero() const { return isSetOnFlags1(InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero); }
     bool structureIsImmortal() const { return isSetOnFlags1(StructureIsImmortal); }
     bool overridesToThis() const { return isSetOnFlags1(OverridesToThis); }
     bool overridesGetPropertyNames() const { return isSetOnFlags2(OverridesGetPropertyNames); }
@@ -92,6 +91,7 @@
     bool getOwnPropertySlotIsImpureForPropertyAbsence() const { return isSetOnFlags2(GetOwnPropertySlotIsImpureForPropertyAbsence); }
     bool newImpurePropertyFiresWatchpoints() const { return isSetOnFlags2(NewImpurePropertyFiresWatchpoints); }
     bool isEnvironmentRecord() const { return isSetOnFlags2(IsEnvironmentRecord); }
+    bool interceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero() const { return isSetOnFlags2(InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero); }
 
     static ptrdiff_t flagsOffset()
     {
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to