• barraclough@apple.com's avatar
    Merge 'Getter'/'Setter' attributes into 'Accessor' · bebfe4db
    barraclough@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=76141
    
    Reviewed by Filip Pizlo.
    
    These are currently ambiguous (and used inconsistently). It would logically appear
    that either being bit set implies that the corresponding type of accessor is present
    but (a) we don't correctly enforce this, and (b) this means the attributes would not
    be able to distinguish between a data descriptor and an accessor descriptor with
    neither a getter nor setter defined (which is a descriptor permissible under the spec).
    This ambiguity would lead to unsafe property caching behavior (though this does not
    represent an actual current bug, since we are currently unable to create descriptors
    that have neither a getter nor setter, it just prevents us from doing so).
    
    * runtime/Arguments.cpp:
    (JSC::Arguments::createStrictModeCallerIfNecessary):
    (JSC::Arguments::createStrictModeCalleeIfNecessary):
    * runtime/JSArray.cpp:
    (JSC::SparseArrayValueMap::put):
    (JSC::JSArray::putDescriptor):
    * runtime/JSBoundFunction.cpp:
    (JSC::JSBoundFunction::finishCreation):
    * runtime/JSFunction.cpp:
    (JSC::JSFunction::getOwnPropertySlot):
    (JSC::JSFunction::getOwnPropertyDescriptor):
    * runtime/JSObject.cpp:
    (JSC::JSObject::defineGetter):
    (JSC::JSObject::initializeGetterSetterProperty):
    (JSC::JSObject::defineSetter):
    (JSC::putDescriptor):
    (JSC::JSObject::defineOwnProperty):
    * runtime/JSObject.h:
    * runtime/ObjectConstructor.cpp:
    (JSC::objectConstructorDefineProperty):
    * runtime/PropertyDescriptor.cpp:
    (JSC::PropertyDescriptor::setDescriptor):
    (JSC::PropertyDescriptor::setAccessorDescriptor):
    (JSC::PropertyDescriptor::setSetter):
    (JSC::PropertyDescriptor::setGetter):
    (JSC::PropertyDescriptor::attributesOverridingCurrent):
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@104784 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    bebfe4db
PropertyDescriptor.cpp 6.69 KB