Diff
Modified: trunk/LayoutTests/ChangeLog (99033 => 99034)
--- trunk/LayoutTests/ChangeLog 2011-11-02 02:18:28 UTC (rev 99033)
+++ trunk/LayoutTests/ChangeLog 2011-11-02 02:24:50 UTC (rev 99034)
@@ -1,3 +1,14 @@
+2011-11-01 Sam Weinig <s...@webkit.org>
+
+ Implement __lookupGetter__/__lookupSetter__ in terms of getPropertyDescriptor
+ https://bugs.webkit.org/show_bug.cgi?id=71336
+
+ Reviewed by Darin Adler.
+
+ * fast/dom/getter-on-window-object2-expected.txt:
+ Update results now that __lookupGetter__/__lookupSetter__ match getOwnPropertyDescriptor.
+ The failures are tracked by https://bugs.webkit.org/show_bug.cgi?id=71333.
+
2011-11-01 Benjamin Poulain <bpoul...@apple.com>
[Mac] _drt_descriptionSuitableForTestResult generate an exception for absolute paths above the main frame
Modified: trunk/LayoutTests/fast/dom/getter-on-window-object2-expected.txt (99033 => 99034)
--- trunk/LayoutTests/fast/dom/getter-on-window-object2-expected.txt 2011-11-02 02:18:28 UTC (rev 99033)
+++ trunk/LayoutTests/fast/dom/getter-on-window-object2-expected.txt 2011-11-02 02:24:50 UTC (rev 99034)
@@ -12,11 +12,11 @@
PASS typeof Object.getOwnPropertyDescriptor(window, 'x').get is 'undefined'
PASS window.y is 'window.y __getter__'
-PASS typeof window.__lookupGetter__('y') is 'function'
+FAIL typeof window.__lookupGetter__('y') should be function. Was undefined.
FAIL typeof Object.getOwnPropertyDescriptor(window, 'y').get should be function. Was undefined.
PASS window.y is 'window.y __getter__'
-PASS typeof window.__lookupGetter__('y') is 'function'
+FAIL typeof window.__lookupGetter__('y') should be function. Was undefined.
FAIL typeof Object.getOwnPropertyDescriptor(window, 'y').get should be function. Was undefined.
PASS window.z is undefined.
Modified: trunk/Source/_javascript_Core/ChangeLog (99033 => 99034)
--- trunk/Source/_javascript_Core/ChangeLog 2011-11-02 02:18:28 UTC (rev 99033)
+++ trunk/Source/_javascript_Core/ChangeLog 2011-11-02 02:24:50 UTC (rev 99034)
@@ -1,3 +1,22 @@
+2011-11-01 Sam Weinig <s...@webkit.org>
+
+ Implement __lookupGetter__/__lookupSetter__ in terms of getPropertyDescriptor
+ https://bugs.webkit.org/show_bug.cgi?id=71336
+
+ Reviewed by Darin Adler.
+
+ * debugger/DebuggerActivation.cpp:
+ * debugger/DebuggerActivation.h:
+ Remove overrides of lookupGetter/lookupSetter, which are no longer needed
+ due to implementing getPropertyDescriptor.
+
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::lookupGetter):
+ (JSC::JSObject::lookupSetter):
+ * runtime/JSObject.h:
+ De-virtualize lookupGetter/lookupSetter, and implement them in terms of
+ getPropertyDescriptor.
+
2011-11-01 Mark Hahnenberg <mhahnenb...@apple.com>
De-virtualize JSObject::defineSetter
Modified: trunk/Source/_javascript_Core/_javascript_Core.vcproj/_javascript_Core/_javascript_Core.def (99033 => 99034)
--- trunk/Source/_javascript_Core/_javascript_Core.vcproj/_javascript_Core/_javascript_Core.def 2011-11-02 02:18:28 UTC (rev 99033)
+++ trunk/Source/_javascript_Core/_javascript_Core.vcproj/_javascript_Core/_javascript_Core.def 2011-11-02 02:24:50 UTC (rev 99034)
@@ -240,8 +240,6 @@
?lock@Mutex@WTF@@QAEXXZ
?lockAtomicallyInitializedStaticMutex@WTF@@YAXXZ
?lockCount@JSLock@JSC@@SAHXZ
- ?lookupGetter@JSObject@JSC@@UAE?AVJSValue@2@PAVExecState@2@ABVIdentifier@2@@Z
- ?lookupSetter@JSObject@JSC@@UAE?AVJSValue@2@PAVExecState@2@ABVIdentifier@2@@Z
?match@RegExp@JSC@@QAEHAAVJSGlobalData@2@ABVUString@2@HPAV?$Vector@H$0CA@@WTF@@@Z
?materializePropertyMap@Structure@JSC@@AAEXAAVJSGlobalData@2@@Z
?monotonicallyIncreasingTime@WTF@@YANXZ
Modified: trunk/Source/_javascript_Core/debugger/DebuggerActivation.cpp (99033 => 99034)
--- trunk/Source/_javascript_Core/debugger/DebuggerActivation.cpp 2011-11-02 02:18:28 UTC (rev 99033)
+++ trunk/Source/_javascript_Core/debugger/DebuggerActivation.cpp 2011-11-02 02:24:50 UTC (rev 99034)
@@ -105,14 +105,4 @@
thisObject->m_activation->methodTable()->defineSetter(thisObject->m_activation.get(), exec, propertyName, setterFunction, attributes);
}
-JSValue DebuggerActivation::lookupGetter(ExecState* exec, const Identifier& propertyName)
-{
- return m_activation->lookupGetter(exec, propertyName);
-}
-
-JSValue DebuggerActivation::lookupSetter(ExecState* exec, const Identifier& propertyName)
-{
- return m_activation->lookupSetter(exec, propertyName);
-}
-
} // namespace JSC
Modified: trunk/Source/_javascript_Core/debugger/DebuggerActivation.h (99033 => 99034)
--- trunk/Source/_javascript_Core/debugger/DebuggerActivation.h 2011-11-02 02:18:28 UTC (rev 99033)
+++ trunk/Source/_javascript_Core/debugger/DebuggerActivation.h 2011-11-02 02:24:50 UTC (rev 99034)
@@ -51,8 +51,6 @@
virtual bool getOwnPropertyDescriptor(ExecState*, const Identifier&, PropertyDescriptor&);
static void defineGetter(JSObject*, ExecState*, const Identifier& propertyName, JSObject* getterFunction, unsigned attributes);
static void defineSetter(JSObject*, ExecState*, const Identifier& propertyName, JSObject* setterFunction, unsigned attributes);
- virtual JSValue lookupGetter(ExecState*, const Identifier& propertyName);
- virtual JSValue lookupSetter(ExecState*, const Identifier& propertyName);
static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
{
Modified: trunk/Source/_javascript_Core/runtime/JSObject.cpp (99033 => 99034)
--- trunk/Source/_javascript_Core/runtime/JSObject.cpp 2011-11-02 02:18:28 UTC (rev 99033)
+++ trunk/Source/_javascript_Core/runtime/JSObject.cpp 2011-11-02 02:24:50 UTC (rev 99034)
@@ -434,40 +434,26 @@
JSValue JSObject::lookupGetter(ExecState* exec, const Identifier& propertyName)
{
- JSObject* object = this;
- while (true) {
- if (JSValue value = object->getDirect(exec->globalData(), propertyName)) {
- if (!value.isGetterSetter())
- return jsUndefined();
- JSObject* functionObject = asGetterSetter(value)->getter();
- if (!functionObject)
- return jsUndefined();
- return functionObject;
- }
+ PropertyDescriptor descriptor;
+ if (!getPropertyDescriptor(exec, propertyName, descriptor))
+ return jsUndefined();
- if (!object->prototype() || !object->prototype().isObject())
- return jsUndefined();
- object = asObject(object->prototype());
- }
+ if (!descriptor.getterPresent())
+ return jsUndefined();
+
+ return descriptor.getter();
}
JSValue JSObject::lookupSetter(ExecState* exec, const Identifier& propertyName)
{
- JSObject* object = this;
- while (true) {
- if (JSValue value = object->getDirect(exec->globalData(), propertyName)) {
- if (!value.isGetterSetter())
- return jsUndefined();
- JSObject* functionObject = asGetterSetter(value)->setter();
- if (!functionObject)
- return jsUndefined();
- return functionObject;
- }
+ PropertyDescriptor descriptor;
+ if (!getPropertyDescriptor(exec, propertyName, descriptor))
+ return jsUndefined();
- if (!object->prototype() || !object->prototype().isObject())
- return jsUndefined();
- object = asObject(object->prototype());
- }
+ if (!descriptor.setterPresent())
+ return jsUndefined();
+
+ return descriptor.setter();
}
bool JSObject::hasInstance(ExecState* exec, JSValue value, JSValue proto)
Modified: trunk/Source/_javascript_Core/runtime/JSObject.h (99033 => 99034)
--- trunk/Source/_javascript_Core/runtime/JSObject.h 2011-11-02 02:18:28 UTC (rev 99033)
+++ trunk/Source/_javascript_Core/runtime/JSObject.h 2011-11-02 02:24:50 UTC (rev 99034)
@@ -187,8 +187,8 @@
static void defineGetter(JSObject*, ExecState*, const Identifier& propertyName, JSObject* getterFunction, unsigned attributes = 0);
static void defineSetter(JSObject*, ExecState*, const Identifier& propertyName, JSObject* setterFunction, unsigned attributes = 0);
- virtual JSValue lookupGetter(ExecState*, const Identifier& propertyName);
- virtual JSValue lookupSetter(ExecState*, const Identifier& propertyName);
+ JSValue lookupGetter(ExecState*, const Identifier& propertyName);
+ JSValue lookupSetter(ExecState*, const Identifier& propertyName);
virtual bool defineOwnProperty(ExecState*, const Identifier& propertyName, PropertyDescriptor&, bool shouldThrow);
bool isGlobalObject() const;
Modified: trunk/Source/WebCore/ChangeLog (99033 => 99034)
--- trunk/Source/WebCore/ChangeLog 2011-11-02 02:18:28 UTC (rev 99033)
+++ trunk/Source/WebCore/ChangeLog 2011-11-02 02:24:50 UTC (rev 99034)
@@ -1,3 +1,18 @@
+2011-11-01 Sam Weinig <s...@webkit.org>
+
+ Implement __lookupGetter__/__lookupSetter__ in terms of getPropertyDescriptor
+ https://bugs.webkit.org/show_bug.cgi?id=71336
+
+ Reviewed by Darin Adler.
+
+ * bindings/js/JSDOMWindowCustom.cpp:
+ * bindings/js/JSDOMWindowShell.cpp:
+ * bindings/js/JSDOMWindowShell.h:
+ * page/DOMWindow.idl:
+ Remove overrides of lookupGetter/lookupSetter, which are no longer needed
+ due to implementing getPropertyDescriptor.
+
+
2011-11-01 Nat Duca <nd...@chromium.org>
[chromium] Move resource-releasing logic into CCProxy and cleanup setNeedsCommit
Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp (99033 => 99034)
--- trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp 2011-11-02 02:18:28 UTC (rev 99033)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp 2011-11-02 02:24:50 UTC (rev 99034)
@@ -415,22 +415,6 @@
return Base::defineOwnProperty(exec, propertyName, descriptor, shouldThrow);
}
-JSValue JSDOMWindow::lookupGetter(ExecState* exec, const Identifier& propertyName)
-{
- // Only allow looking-up getters by frames in the same origin.
- if (!allowsAccessFrom(exec))
- return jsUndefined();
- return Base::lookupGetter(exec, propertyName);
-}
-
-JSValue JSDOMWindow::lookupSetter(ExecState* exec, const Identifier& propertyName)
-{
- // Only allow looking-up setters by frames in the same origin.
- if (!allowsAccessFrom(exec))
- return jsUndefined();
- return Base::lookupSetter(exec, propertyName);
-}
-
// Custom Attributes
JSValue JSDOMWindow::history(ExecState* exec) const
Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowShell.cpp (99033 => 99034)
--- trunk/Source/WebCore/bindings/js/JSDOMWindowShell.cpp 2011-11-02 02:18:28 UTC (rev 99033)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowShell.cpp 2011-11-02 02:24:50 UTC (rev 99034)
@@ -144,17 +144,7 @@
thisObject->window()->methodTable()->defineSetter(thisObject->window(), exec, propertyName, setterFunction, attributes);
}
-JSValue JSDOMWindowShell::lookupGetter(ExecState* exec, const Identifier& propertyName)
-{
- return window()->lookupGetter(exec, propertyName);
-}
-JSValue JSDOMWindowShell::lookupSetter(ExecState* exec, const Identifier& propertyName)
-{
- return window()->lookupSetter(exec, propertyName);
-}
-
-
// ----
// JSDOMWindow methods
// ----
Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowShell.h (99033 => 99034)
--- trunk/Source/WebCore/bindings/js/JSDOMWindowShell.h 2011-11-02 02:18:28 UTC (rev 99033)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowShell.h 2011-11-02 02:24:50 UTC (rev 99034)
@@ -89,8 +89,6 @@
static void defineGetter(JSC::JSObject*, JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSObject* getterFunction, unsigned attributes);
static void defineSetter(JSC::JSObject*, JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSObject* setterFunction, unsigned attributes);
virtual bool defineOwnProperty(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertyDescriptor&, bool shouldThrow);
- virtual JSC::JSValue lookupGetter(JSC::ExecState*, const JSC::Identifier& propertyName);
- virtual JSC::JSValue lookupSetter(JSC::ExecState*, const JSC::Identifier& propertyName);
RefPtr<DOMWrapperWorld> m_world;
};
Modified: trunk/Source/WebCore/page/DOMWindow.idl (99033 => 99034)
--- trunk/Source/WebCore/page/DOMWindow.idl 2011-11-02 02:18:28 UTC (rev 99033)
+++ trunk/Source/WebCore/page/DOMWindow.idl 2011-11-02 02:24:50 UTC (rev 99034)
@@ -33,8 +33,6 @@
CustomDeleteProperty,
CustomGetOwnPropertySlot,
CustomGetPropertyNames,
- CustomLookupGetter,
- CustomLookupSetter,
CustomMarkFunction,
CustomNativeConverter,
CustomPutFunction,