Changeset 196004 in webkit
- Timestamp:
- Feb 1, 2016 10:35:09 PM (8 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r196002 r196004 1 2016-02-01 Chris Dumez <cdumez@apple.com> 2 3 object.__lookupGetter__() / object.__lookupSetter__() does not work for native bindings 4 https://bugs.webkit.org/show_bug.cgi?id=153765 5 <rdar://problem/24439699> 6 7 Reviewed by Oliver Hunt. 8 9 Add layout tests to test that object.__lookupGetter__() / object.__lookupSetter__() 10 works for native bindings. 11 12 * js/lookupGetterGetter-native-bindings-expected.txt: Added. 13 * js/lookupGetterGetter-native-bindings.html: Added. 14 1 15 2016-02-01 Chris Dumez <cdumez@apple.com> 2 16 -
trunk/Source/JavaScriptCore/ChangeLog
r196001 r196004 1 2016-02-01 Chris Dumez <cdumez@apple.com> 2 3 object.__lookupGetter__() / object.__lookupSetter__() does not work for native bindings 4 https://bugs.webkit.org/show_bug.cgi?id=153765 5 <rdar://problem/24439699> 6 7 Reviewed by Oliver Hunt. 8 9 Add support for CustomAccessor slots to objectProtoFuncLookupGetter() and 10 objectProtoFuncLookupSetter() by return getOwnPropertyDescriptor().get / set. 11 getOwnPropertyDescriptor() now correctly deals with CustomAccessors since 12 r196001. 13 14 * runtime/ObjectPrototype.cpp: 15 (JSC::objectProtoFuncLookupGetter): 16 (JSC::objectProtoFuncLookupSetter): 17 1 18 2016-02-01 Chris Dumez <cdumez@apple.com> 2 19 -
trunk/Source/JavaScriptCore/runtime/ObjectPrototype.cpp
r195528 r196004 176 176 177 177 PropertySlot slot(thisObject); 178 if (thisObject->getPropertySlot(exec, propertyName, slot) && slot.isAccessor()) { 179 GetterSetter* getterSetter = slot.getterSetter(); 180 return getterSetter->isGetterNull() ? JSValue::encode(jsUndefined()) : JSValue::encode(getterSetter->getter()); 178 if (thisObject->getPropertySlot(exec, propertyName, slot)) { 179 if (slot.isAccessor()) { 180 GetterSetter* getterSetter = slot.getterSetter(); 181 return getterSetter->isGetterNull() ? JSValue::encode(jsUndefined()) : JSValue::encode(getterSetter->getter()); 182 } 183 if (slot.attributes() & CustomAccessor) { 184 PropertyDescriptor descriptor; 185 ASSERT(slot.slotBase()); 186 if (slot.slotBase()->getOwnPropertyDescriptor(exec, propertyName, descriptor)) 187 return descriptor.getterPresent() ? JSValue::encode(descriptor.getter()) : JSValue::encode(jsUndefined()); 188 } 181 189 } 182 190 … … 195 203 196 204 PropertySlot slot(thisObject); 197 if (thisObject->getPropertySlot(exec, propertyName, slot) && slot.isAccessor()) { 198 GetterSetter* getterSetter = slot.getterSetter(); 199 return getterSetter->isSetterNull() ? JSValue::encode(jsUndefined()) : JSValue::encode(getterSetter->setter()); 205 if (thisObject->getPropertySlot(exec, propertyName, slot)) { 206 if (slot.isAccessor()) { 207 GetterSetter* getterSetter = slot.getterSetter(); 208 return getterSetter->isSetterNull() ? JSValue::encode(jsUndefined()) : JSValue::encode(getterSetter->setter()); 209 } 210 if (slot.attributes() & CustomAccessor) { 211 PropertyDescriptor descriptor; 212 ASSERT(slot.slotBase()); 213 if (slot.slotBase()->getOwnPropertyDescriptor(exec, propertyName, descriptor)) 214 return descriptor.setterPresent() ? JSValue::encode(descriptor.setter()) : JSValue::encode(jsUndefined()); 215 } 200 216 } 201 217
Note: See TracChangeset
for help on using the changeset viewer.