Modified: trunk/Source/_javascript_Core/ChangeLog (154339 => 154340)
--- trunk/Source/_javascript_Core/ChangeLog 2013-08-20 17:31:14 UTC (rev 154339)
+++ trunk/Source/_javascript_Core/ChangeLog 2013-08-20 17:40:08 UTC (rev 154340)
@@ -1,5 +1,18 @@
2013-08-20 Gavin Barraclough <[email protected]>
+ https://bugs.webkit.org/show_bug.cgi?id=120073
+ Remove use of GOPD from JSFunction::defineProperty
+
+ Reviewed by Oliver Hunt.
+
+ Call getOwnPropertySlot to check for existing properties instead.
+
+ * runtime/JSFunction.cpp:
+ (JSC::JSFunction::defineOwnProperty):
+ - getOwnPropertyDescriptor -> getOwnPropertySlot
+
+2013-08-20 Gavin Barraclough <[email protected]>
+
https://bugs.webkit.org/show_bug.cgi?id=120067
Remove getPropertyDescriptor
Modified: trunk/Source/_javascript_Core/runtime/JSFunction.cpp (154339 => 154340)
--- trunk/Source/_javascript_Core/runtime/JSFunction.cpp 2013-08-20 17:31:14 UTC (rev 154339)
+++ trunk/Source/_javascript_Core/runtime/JSFunction.cpp 2013-08-20 17:40:08 UTC (rev 154340)
@@ -387,14 +387,16 @@
bool valueCheck;
if (propertyName == exec->propertyNames().arguments) {
if (thisObject->jsExecutable()->isStrictMode()) {
- if (!Base::getOwnPropertyDescriptor(thisObject, exec, propertyName, descriptor))
+ PropertySlot slot(thisObject);
+ if (!Base::getOwnPropertySlot(thisObject, exec, propertyName, slot))
thisObject->putDirectAccessor(exec, propertyName, thisObject->globalObject()->throwTypeErrorGetterSetter(exec), DontDelete | DontEnum | Accessor);
return Base::defineOwnProperty(object, exec, propertyName, descriptor, throwException);
}
valueCheck = !descriptor.value() || sameValue(exec, descriptor.value(), retrieveArguments(exec, thisObject));
} else if (propertyName == exec->propertyNames().caller) {
if (thisObject->jsExecutable()->isStrictMode()) {
- if (!Base::getOwnPropertyDescriptor(thisObject, exec, propertyName, descriptor))
+ PropertySlot slot(thisObject);
+ if (!Base::getOwnPropertySlot(thisObject, exec, propertyName, slot))
thisObject->putDirectAccessor(exec, propertyName, thisObject->globalObject()->throwTypeErrorGetterSetter(exec), DontDelete | DontEnum | Accessor);
return Base::defineOwnProperty(object, exec, propertyName, descriptor, throwException);
}