Title: [218218] trunk/Source/_javascript_Core
Revision
218218
Author
msab...@apple.com
Date
2017-06-13 15:39:34 -0700 (Tue, 13 Jun 2017)

Log Message

Refactor AbsenceOfSetter to AbsenceOfSetEffects
https://bugs.webkit.org/show_bug.cgi?id=173322

Reviewed by Filip Pizlo.

* bytecode/ObjectPropertyCondition.h:
(JSC::ObjectPropertyCondition::absenceOfSetEffectWithoutBarrier):
(JSC::ObjectPropertyCondition::absenceOfSetEffect):
(JSC::ObjectPropertyCondition::absenceOfSetterWithoutBarrier): Deleted.
(JSC::ObjectPropertyCondition::absenceOfSetter): Deleted.
* bytecode/ObjectPropertyConditionSet.cpp:
(JSC::generateConditionsForPropertySetterMiss):
(JSC::generateConditionsForPropertySetterMissConcurrently):
* bytecode/PropertyCondition.cpp:
(JSC::PropertyCondition::dumpInContext):
(JSC::PropertyCondition::isStillValidAssumingImpurePropertyWatchpoint):
(JSC::PropertyCondition::isStillValid):
(WTF::printInternal):
* bytecode/PropertyCondition.h:
(JSC::PropertyCondition::absenceOfSetEffectWithoutBarrier):
(JSC::PropertyCondition::absenceOfSetEffect):
(JSC::PropertyCondition::hasPrototype):
(JSC::PropertyCondition::hash):
(JSC::PropertyCondition::operator==):
(JSC::PropertyCondition::absenceOfSetterWithoutBarrier): Deleted.
(JSC::PropertyCondition::absenceOfSetter): Deleted.

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (218217 => 218218)


--- trunk/Source/_javascript_Core/ChangeLog	2017-06-13 22:31:49 UTC (rev 218217)
+++ trunk/Source/_javascript_Core/ChangeLog	2017-06-13 22:39:34 UTC (rev 218218)
@@ -1,3 +1,32 @@
+2017-06-13  Michael Saboff  <msab...@apple.com>
+
+        Refactor AbsenceOfSetter to AbsenceOfSetEffects
+        https://bugs.webkit.org/show_bug.cgi?id=173322
+
+        Reviewed by Filip Pizlo.
+
+        * bytecode/ObjectPropertyCondition.h:
+        (JSC::ObjectPropertyCondition::absenceOfSetEffectWithoutBarrier):
+        (JSC::ObjectPropertyCondition::absenceOfSetEffect):
+        (JSC::ObjectPropertyCondition::absenceOfSetterWithoutBarrier): Deleted.
+        (JSC::ObjectPropertyCondition::absenceOfSetter): Deleted.
+        * bytecode/ObjectPropertyConditionSet.cpp:
+        (JSC::generateConditionsForPropertySetterMiss):
+        (JSC::generateConditionsForPropertySetterMissConcurrently):
+        * bytecode/PropertyCondition.cpp:
+        (JSC::PropertyCondition::dumpInContext):
+        (JSC::PropertyCondition::isStillValidAssumingImpurePropertyWatchpoint):
+        (JSC::PropertyCondition::isStillValid):
+        (WTF::printInternal):
+        * bytecode/PropertyCondition.h:
+        (JSC::PropertyCondition::absenceOfSetEffectWithoutBarrier):
+        (JSC::PropertyCondition::absenceOfSetEffect):
+        (JSC::PropertyCondition::hasPrototype):
+        (JSC::PropertyCondition::hash):
+        (JSC::PropertyCondition::operator==):
+        (JSC::PropertyCondition::absenceOfSetterWithoutBarrier): Deleted.
+        (JSC::PropertyCondition::absenceOfSetter): Deleted.
+
 2017-06-13  JF Bastien  <jfbast...@apple.com>
 
         WebAssembly: import updated spec tests

Modified: trunk/Source/_javascript_Core/bytecode/ObjectPropertyCondition.h (218217 => 218218)


--- trunk/Source/_javascript_Core/bytecode/ObjectPropertyCondition.h	2017-06-13 22:31:49 UTC (rev 218217)
+++ trunk/Source/_javascript_Core/bytecode/ObjectPropertyCondition.h	2017-06-13 22:39:34 UTC (rev 218218)
@@ -88,21 +88,21 @@
         return absenceWithoutBarrier(object, uid, prototype);
     }
     
-    static ObjectPropertyCondition absenceOfSetterWithoutBarrier(
+    static ObjectPropertyCondition absenceOfSetEffectWithoutBarrier(
         JSObject* object, UniquedStringImpl* uid, JSObject* prototype)
     {
         ObjectPropertyCondition result;
         result.m_object = object;
-        result.m_condition = PropertyCondition::absenceOfSetterWithoutBarrier(uid, prototype);
+        result.m_condition = PropertyCondition::absenceOfSetEffectWithoutBarrier(uid, prototype);
         return result;
     }
     
-    static ObjectPropertyCondition absenceOfSetter(
+    static ObjectPropertyCondition absenceOfSetEffect(
         VM& vm, JSCell* owner, JSObject* object, UniquedStringImpl* uid, JSObject* prototype)
     {
         if (owner)
             vm.heap.writeBarrier(owner);
-        return absenceOfSetterWithoutBarrier(object, uid, prototype);
+        return absenceOfSetEffectWithoutBarrier(object, uid, prototype);
     }
     
     static ObjectPropertyCondition equivalenceWithoutBarrier(

Modified: trunk/Source/_javascript_Core/bytecode/ObjectPropertyConditionSet.cpp (218217 => 218218)


--- trunk/Source/_javascript_Core/bytecode/ObjectPropertyConditionSet.cpp	2017-06-13 22:31:49 UTC (rev 218217)
+++ trunk/Source/_javascript_Core/bytecode/ObjectPropertyConditionSet.cpp	2017-06-13 22:39:34 UTC (rev 218218)
@@ -206,8 +206,8 @@
             vm, owner, object, uid, object->structure()->storedPrototypeObject());
         break;
     }
-    case PropertyCondition::AbsenceOfSetter: {
-        result = ObjectPropertyCondition::absenceOfSetter(
+    case PropertyCondition::AbsenceOfSetEffect: {
+        result = ObjectPropertyCondition::absenceOfSetEffect(
             vm, owner, object, uid, object->structure()->storedPrototypeObject());
         break;
     }
@@ -333,7 +333,7 @@
         vm, exec->lexicalGlobalObject(), headStructure, nullptr,
         [&] (Vector<ObjectPropertyCondition>& conditions, JSObject* object) -> bool {
             ObjectPropertyCondition result =
-                generateCondition(vm, owner, object, uid, PropertyCondition::AbsenceOfSetter);
+                generateCondition(vm, owner, object, uid, PropertyCondition::AbsenceOfSetEffect);
             if (!result)
                 return false;
             conditions.append(result);
@@ -413,7 +413,7 @@
         vm, globalObject, headStructure, nullptr,
         [&] (Vector<ObjectPropertyCondition>& conditions, JSObject* object) -> bool {
             ObjectPropertyCondition result =
-                generateCondition(vm, nullptr, object, uid, PropertyCondition::AbsenceOfSetter);
+                generateCondition(vm, nullptr, object, uid, PropertyCondition::AbsenceOfSetEffect);
             if (!result)
                 return false;
             conditions.append(result);

Modified: trunk/Source/_javascript_Core/bytecode/PropertyCondition.cpp (218217 => 218218)


--- trunk/Source/_javascript_Core/bytecode/PropertyCondition.cpp	2017-06-13 22:31:49 UTC (rev 218217)
+++ trunk/Source/_javascript_Core/bytecode/PropertyCondition.cpp	2017-06-13 22:39:34 UTC (rev 218218)
@@ -47,7 +47,7 @@
         out.print(" at ", offset(), " with attributes ", attributes());
         return;
     case Absence:
-    case AbsenceOfSetter:
+    case AbsenceOfSetEffect:
         out.print(" with prototype ", inContext(JSValue(prototype()), context));
         return;
     case Equivalence:
@@ -124,7 +124,7 @@
         return true;
     }
     
-    case AbsenceOfSetter: {
+    case AbsenceOfSetEffect: {
         if (structure->isDictionary()) {
             if (verbose)
                 dataLog("Invalid because it's a dictionary.\n");
@@ -134,9 +134,6 @@
         unsigned currentAttributes;
         PropertyOffset currentOffset = structure->getConcurrently(uid(), currentAttributes);
         if (currentOffset != invalidOffset) {
-            // FIXME: Given the addition of the check for ReadOnly attributes, we should refactor
-            // instances of AbsenceOfSetter.
-            // https://bugs.webkit.org/show_bug.cgi?id=173322 - Refactor AbsenceOfSetter to something like AbsenceOfSetEffects
             if (currentAttributes & (ReadOnly | Accessor | CustomAccessor)) {
                 if (verbose) {
                     dataLog(
@@ -223,7 +220,7 @@
 
     // Currently we assume that an impure property can cause a property to appear, and can also
     // "shadow" an existing JS property on the same object. Hence it affects both presence and
-    // absence. It doesn't affect AbsenceOfSetter because impure properties aren't ever setters.
+    // absence. It doesn't affect AbsenceOfSetEffect because impure properties aren't ever setters.
     switch (m_kind) {
     case Absence:
         if (structure->typeInfo().getOwnPropertySlotIsImpure() || structure->typeInfo().getOwnPropertySlotIsImpureForPropertyAbsence())
@@ -354,7 +351,7 @@
     case JSC::PropertyCondition::Absence:
         out.print("Absence");
         return;
-    case JSC::PropertyCondition::AbsenceOfSetter:
+    case JSC::PropertyCondition::AbsenceOfSetEffect:
         out.print("Absence");
         return;
     case JSC::PropertyCondition::Equivalence:

Modified: trunk/Source/_javascript_Core/bytecode/PropertyCondition.h (218217 => 218218)


--- trunk/Source/_javascript_Core/bytecode/PropertyCondition.h	2017-06-13 22:31:49 UTC (rev 218217)
+++ trunk/Source/_javascript_Core/bytecode/PropertyCondition.h	2017-06-13 22:39:34 UTC (rev 218218)
@@ -37,7 +37,7 @@
     enum Kind {
         Presence,
         Absence,
-        AbsenceOfSetter,
+        AbsenceOfSetEffect,
         Equivalence // An adaptive watchpoint on this will be a pair of watchpoints, and when the structure transitions, we will set the replacement watchpoint on the new structure.
     };
     
@@ -89,22 +89,22 @@
         return absenceWithoutBarrier(uid, prototype);
     }
     
-    static PropertyCondition absenceOfSetterWithoutBarrier(
+    static PropertyCondition absenceOfSetEffectWithoutBarrier(
         UniquedStringImpl* uid, JSObject* prototype)
     {
         PropertyCondition result;
         result.m_uid = uid;
-        result.m_kind = AbsenceOfSetter;
+        result.m_kind = AbsenceOfSetEffect;
         result.u.absence.prototype = prototype;
         return result;
     }
     
-    static PropertyCondition absenceOfSetter(
+    static PropertyCondition absenceOfSetEffect(
         VM& vm, JSCell* owner, UniquedStringImpl* uid, JSObject* prototype)
     {
         if (owner)
             vm.heap.writeBarrier(owner);
-        return absenceOfSetterWithoutBarrier(uid, prototype);
+        return absenceOfSetEffectWithoutBarrier(uid, prototype);
     }
     
     static PropertyCondition equivalenceWithoutBarrier(
@@ -143,7 +143,7 @@
         return u.presence.attributes;
     }
     
-    bool hasPrototype() const { return !!*this && (m_kind == Absence || m_kind == AbsenceOfSetter); }
+    bool hasPrototype() const { return !!*this && (m_kind == Absence || m_kind == AbsenceOfSetEffect); }
     JSObject* prototype() const
     {
         ASSERT(hasPrototype());
@@ -169,7 +169,7 @@
             result ^= u.presence.attributes;
             break;
         case Absence:
-        case AbsenceOfSetter:
+        case AbsenceOfSetEffect:
             result ^= WTF::PtrHash<JSObject*>::hash(u.absence.prototype);
             break;
         case Equivalence:
@@ -190,7 +190,7 @@
             return u.presence.offset == other.u.presence.offset
                 && u.presence.attributes == other.u.presence.attributes;
         case Absence:
-        case AbsenceOfSetter:
+        case AbsenceOfSetEffect:
             return u.absence.prototype == other.u.absence.prototype;
         case Equivalence:
             return u.equivalence.value == other.u.equivalence.value;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to