Changeset 218218 in webkit


Ignore:
Timestamp:
Jun 13, 2017 3:39:34 PM (7 years ago)
Author:
msaboff@apple.com
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.

Location:
trunk/Source/JavaScriptCore
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r218216 r218218  
     12017-06-13  Michael Saboff  <msaboff@apple.com>
     2
     3        Refactor AbsenceOfSetter to AbsenceOfSetEffects
     4        https://bugs.webkit.org/show_bug.cgi?id=173322
     5
     6        Reviewed by Filip Pizlo.
     7
     8        * bytecode/ObjectPropertyCondition.h:
     9        (JSC::ObjectPropertyCondition::absenceOfSetEffectWithoutBarrier):
     10        (JSC::ObjectPropertyCondition::absenceOfSetEffect):
     11        (JSC::ObjectPropertyCondition::absenceOfSetterWithoutBarrier): Deleted.
     12        (JSC::ObjectPropertyCondition::absenceOfSetter): Deleted.
     13        * bytecode/ObjectPropertyConditionSet.cpp:
     14        (JSC::generateConditionsForPropertySetterMiss):
     15        (JSC::generateConditionsForPropertySetterMissConcurrently):
     16        * bytecode/PropertyCondition.cpp:
     17        (JSC::PropertyCondition::dumpInContext):
     18        (JSC::PropertyCondition::isStillValidAssumingImpurePropertyWatchpoint):
     19        (JSC::PropertyCondition::isStillValid):
     20        (WTF::printInternal):
     21        * bytecode/PropertyCondition.h:
     22        (JSC::PropertyCondition::absenceOfSetEffectWithoutBarrier):
     23        (JSC::PropertyCondition::absenceOfSetEffect):
     24        (JSC::PropertyCondition::hasPrototype):
     25        (JSC::PropertyCondition::hash):
     26        (JSC::PropertyCondition::operator==):
     27        (JSC::PropertyCondition::absenceOfSetterWithoutBarrier): Deleted.
     28        (JSC::PropertyCondition::absenceOfSetter): Deleted.
     29
    1302017-06-13  JF Bastien  <jfbastien@apple.com>
    231
  • trunk/Source/JavaScriptCore/bytecode/ObjectPropertyCondition.h

    r211247 r218218  
    8989    }
    9090   
    91     static ObjectPropertyCondition absenceOfSetterWithoutBarrier(
     91    static ObjectPropertyCondition absenceOfSetEffectWithoutBarrier(
    9292        JSObject* object, UniquedStringImpl* uid, JSObject* prototype)
    9393    {
    9494        ObjectPropertyCondition result;
    9595        result.m_object = object;
    96         result.m_condition = PropertyCondition::absenceOfSetterWithoutBarrier(uid, prototype);
    97         return result;
    98     }
    99    
    100     static ObjectPropertyCondition absenceOfSetter(
     96        result.m_condition = PropertyCondition::absenceOfSetEffectWithoutBarrier(uid, prototype);
     97        return result;
     98    }
     99   
     100    static ObjectPropertyCondition absenceOfSetEffect(
    101101        VM& vm, JSCell* owner, JSObject* object, UniquedStringImpl* uid, JSObject* prototype)
    102102    {
    103103        if (owner)
    104104            vm.heap.writeBarrier(owner);
    105         return absenceOfSetterWithoutBarrier(object, uid, prototype);
     105        return absenceOfSetEffectWithoutBarrier(object, uid, prototype);
    106106    }
    107107   
  • trunk/Source/JavaScriptCore/bytecode/ObjectPropertyConditionSet.cpp

    r208637 r218218  
    207207        break;
    208208    }
    209     case PropertyCondition::AbsenceOfSetter: {
    210         result = ObjectPropertyCondition::absenceOfSetter(
     209    case PropertyCondition::AbsenceOfSetEffect: {
     210        result = ObjectPropertyCondition::absenceOfSetEffect(
    211211            vm, owner, object, uid, object->structure()->storedPrototypeObject());
    212212        break;
     
    334334        [&] (Vector<ObjectPropertyCondition>& conditions, JSObject* object) -> bool {
    335335            ObjectPropertyCondition result =
    336                 generateCondition(vm, owner, object, uid, PropertyCondition::AbsenceOfSetter);
     336                generateCondition(vm, owner, object, uid, PropertyCondition::AbsenceOfSetEffect);
    337337            if (!result)
    338338                return false;
     
    414414        [&] (Vector<ObjectPropertyCondition>& conditions, JSObject* object) -> bool {
    415415            ObjectPropertyCondition result =
    416                 generateCondition(vm, nullptr, object, uid, PropertyCondition::AbsenceOfSetter);
     416                generateCondition(vm, nullptr, object, uid, PropertyCondition::AbsenceOfSetEffect);
    417417            if (!result)
    418418                return false;
  • trunk/Source/JavaScriptCore/bytecode/PropertyCondition.cpp

    r218203 r218218  
    4848        return;
    4949    case Absence:
    50     case AbsenceOfSetter:
     50    case AbsenceOfSetEffect:
    5151        out.print(" with prototype ", inContext(JSValue(prototype()), context));
    5252        return;
     
    125125    }
    126126   
    127     case AbsenceOfSetter: {
     127    case AbsenceOfSetEffect: {
    128128        if (structure->isDictionary()) {
    129129            if (verbose)
     
    135135        PropertyOffset currentOffset = structure->getConcurrently(uid(), currentAttributes);
    136136        if (currentOffset != invalidOffset) {
    137             // FIXME: Given the addition of the check for ReadOnly attributes, we should refactor
    138             // instances of AbsenceOfSetter.
    139             // https://bugs.webkit.org/show_bug.cgi?id=173322 - Refactor AbsenceOfSetter to something like AbsenceOfSetEffects
    140137            if (currentAttributes & (ReadOnly | Accessor | CustomAccessor)) {
    141138                if (verbose) {
     
    224221    // Currently we assume that an impure property can cause a property to appear, and can also
    225222    // "shadow" an existing JS property on the same object. Hence it affects both presence and
    226     // absence. It doesn't affect AbsenceOfSetter because impure properties aren't ever setters.
     223    // absence. It doesn't affect AbsenceOfSetEffect because impure properties aren't ever setters.
    227224    switch (m_kind) {
    228225    case Absence:
     
    355352        out.print("Absence");
    356353        return;
    357     case JSC::PropertyCondition::AbsenceOfSetter:
     354    case JSC::PropertyCondition::AbsenceOfSetEffect:
    358355        out.print("Absence");
    359356        return;
  • trunk/Source/JavaScriptCore/bytecode/PropertyCondition.h

    r211247 r218218  
    3838        Presence,
    3939        Absence,
    40         AbsenceOfSetter,
     40        AbsenceOfSetEffect,
    4141        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.
    4242    };
     
    9090    }
    9191   
    92     static PropertyCondition absenceOfSetterWithoutBarrier(
     92    static PropertyCondition absenceOfSetEffectWithoutBarrier(
    9393        UniquedStringImpl* uid, JSObject* prototype)
    9494    {
    9595        PropertyCondition result;
    9696        result.m_uid = uid;
    97         result.m_kind = AbsenceOfSetter;
     97        result.m_kind = AbsenceOfSetEffect;
    9898        result.u.absence.prototype = prototype;
    9999        return result;
    100100    }
    101101   
    102     static PropertyCondition absenceOfSetter(
     102    static PropertyCondition absenceOfSetEffect(
    103103        VM& vm, JSCell* owner, UniquedStringImpl* uid, JSObject* prototype)
    104104    {
    105105        if (owner)
    106106            vm.heap.writeBarrier(owner);
    107         return absenceOfSetterWithoutBarrier(uid, prototype);
     107        return absenceOfSetEffectWithoutBarrier(uid, prototype);
    108108    }
    109109   
     
    144144    }
    145145   
    146     bool hasPrototype() const { return !!*this && (m_kind == Absence || m_kind == AbsenceOfSetter); }
     146    bool hasPrototype() const { return !!*this && (m_kind == Absence || m_kind == AbsenceOfSetEffect); }
    147147    JSObject* prototype() const
    148148    {
     
    170170            break;
    171171        case Absence:
    172         case AbsenceOfSetter:
     172        case AbsenceOfSetEffect:
    173173            result ^= WTF::PtrHash<JSObject*>::hash(u.absence.prototype);
    174174            break;
     
    191191                && u.presence.attributes == other.u.presence.attributes;
    192192        case Absence:
    193         case AbsenceOfSetter:
     193        case AbsenceOfSetEffect:
    194194            return u.absence.prototype == other.u.absence.prototype;
    195195        case Equivalence:
Note: See TracChangeset for help on using the changeset viewer.