Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (99017 => 99018)
--- trunk/Source/_javascript_Core/ChangeLog 2011-11-02 00:34:14 UTC (rev 99017)
+++ trunk/Source/_javascript_Core/ChangeLog 2011-11-02 00:36:20 UTC (rev 99018)
@@ -1,3 +1,37 @@
+2011-11-01 Mark Hahnenberg <[email protected]>
+
+ De-virtualize JSObject::defineSetter
+ https://bugs.webkit.org/show_bug.cgi?id=71303
+
+ Reviewed by Darin Adler.
+
+ Added defineSetter to the MethodTable, changed all the virtual
+ implementations of defineSetter to static ones, and replaced
+ all call sites with corresponding lookups in the MethodTable.
+
+ * _javascript_Core.exp:
+ * _javascript_Core.vcproj/_javascript_Core/_javascript_Core.def:
+ * debugger/DebuggerActivation.cpp:
+ (JSC::DebuggerActivation::defineSetter):
+ * debugger/DebuggerActivation.h:
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute):
+ * jit/JITStubs.cpp:
+ (JSC::DEFINE_STUB_FUNCTION):
+ * runtime/ClassInfo.h:
+ * runtime/JSCell.cpp:
+ (JSC::JSCell::defineSetter):
+ * runtime/JSCell.h:
+ * runtime/JSGlobalObject.cpp:
+ (JSC::JSGlobalObject::defineSetter):
+ * runtime/JSGlobalObject.h:
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::defineSetter):
+ (JSC::putDescriptor):
+ * runtime/JSObject.h:
+ * runtime/ObjectPrototype.cpp:
+ (JSC::objectProtoFuncDefineSetter):
+
2011-11-01 Filip Pizlo <[email protected]>
DFG inlining breaks function.arguments
Modified: trunk/Source/_javascript_Core/_javascript_Core.exp (99017 => 99018)
--- trunk/Source/_javascript_Core/_javascript_Core.exp 2011-11-02 00:34:14 UTC (rev 99017)
+++ trunk/Source/_javascript_Core/_javascript_Core.exp 2011-11-02 00:36:20 UTC (rev 99018)
@@ -166,7 +166,7 @@
__ZN3JSC13StatementNode6setLocEii
__ZN3JSC14JSGlobalObject10globalExecEv
__ZN3JSC14JSGlobalObject12defineGetterEPNS_8JSObjectEPNS_9ExecStateERKNS_10IdentifierES2_j
-__ZN3JSC14JSGlobalObject12defineSetterEPNS_9ExecStateERKNS_10IdentifierEPNS_8JSObjectEj
+__ZN3JSC14JSGlobalObject12defineSetterEPNS_8JSObjectEPNS_9ExecStateERKNS_10IdentifierES2_j
__ZN3JSC14JSGlobalObject13clearRareDataEPNS_6JSCellE
__ZN3JSC14JSGlobalObject13visitChildrenEPNS_6JSCellERNS_11SlotVisitorE
__ZN3JSC14JSGlobalObject16addStaticGlobalsEPNS0_18GlobalPropertyInfoEi
@@ -307,7 +307,7 @@
__ZN3JSC8JSObject11hasInstanceEPNS_9ExecStateENS_7JSValueES3_
__ZN3JSC8JSObject12defineGetterEPS0_PNS_9ExecStateERKNS_10IdentifierES1_j
__ZN3JSC8JSObject12defaultValueEPKS0_PNS_9ExecStateENS_22PreferredPrimitiveTypeE
-__ZN3JSC8JSObject12defineSetterEPNS_9ExecStateERKNS_10IdentifierEPS0_j
+__ZN3JSC8JSObject12defineSetterEPS0_PNS_9ExecStateERKNS_10IdentifierES1_j
__ZN3JSC8JSObject12lookupGetterEPNS_9ExecStateERKNS_10IdentifierE
__ZN3JSC8JSObject12lookupSetterEPNS_9ExecStateERKNS_10IdentifierE
__ZN3JSC8JSObject12toThisObjectEPNS_6JSCellEPNS_9ExecStateE
Modified: trunk/Source/_javascript_Core/_javascript_Core.vcproj/_javascript_Core/_javascript_Core.def (99017 => 99018)
--- trunk/Source/_javascript_Core/_javascript_Core.vcproj/_javascript_Core/_javascript_Core.def 2011-11-02 00:34:14 UTC (rev 99017)
+++ trunk/Source/_javascript_Core/_javascript_Core.vcproj/_javascript_Core/_javascript_Core.def 2011-11-02 00:36:20 UTC (rev 99018)
@@ -137,8 +137,8 @@
?defineOwnProperty@JSObject@JSC@@UAE_NPAVExecState@2@ABVIdentifier@2@AAVPropertyDescriptor@2@_N@Z
?defineGetter@JSGlobalObject@JSC@@SAXPAVJSObject@2@PAVExecState@2@ABVIdentifier@2@0I@Z
?defineGetter@JSObject@JSC@@SAXPAV12@PAVExecState@2@ABVIdentifier@2@0I@Z
- ?defineSetter@JSGlobalObject@JSC@@UAEXPAVExecState@2@ABVIdentifier@2@PAVJSObject@2@I@Z
- ?defineSetter@JSObject@JSC@@UAEXPAVExecState@2@ABVIdentifier@2@PAV12@I@Z
+ ?defineSetter@JSGlobalObject@JSC@@SAXPAVJSObject@2@PAVExecState@2@ABVIdentifier@2@0I@Z
+ ?defineSetter@JSObject@JSC@@SAXPAV12@PAVExecState@2@ABVIdentifier@2@0I@Z
?deleteOwnedPtr@WTF@@YAXPAUHBITMAP__@@@Z
?deleteOwnedPtr@WTF@@YAXPAUHBRUSH__@@@Z
?deleteOwnedPtr@WTF@@YAXPAUHDC__@@@Z
Modified: trunk/Source/_javascript_Core/debugger/DebuggerActivation.cpp (99017 => 99018)
--- trunk/Source/_javascript_Core/debugger/DebuggerActivation.cpp 2011-11-02 00:34:14 UTC (rev 99017)
+++ trunk/Source/_javascript_Core/debugger/DebuggerActivation.cpp 2011-11-02 00:36:20 UTC (rev 99018)
@@ -99,9 +99,10 @@
thisObject->m_activation->methodTable()->defineGetter(thisObject->m_activation.get(), exec, propertyName, getterFunction, attributes);
}
-void DebuggerActivation::defineSetter(ExecState* exec, const Identifier& propertyName, JSObject* setterFunction, unsigned attributes)
+void DebuggerActivation::defineSetter(JSObject* object, ExecState* exec, const Identifier& propertyName, JSObject* setterFunction, unsigned attributes)
{
- m_activation->defineSetter(exec, propertyName, setterFunction, attributes);
+ DebuggerActivation* thisObject = static_cast<DebuggerActivation*>(object);
+ thisObject->m_activation->methodTable()->defineSetter(thisObject->m_activation.get(), exec, propertyName, setterFunction, attributes);
}
JSValue DebuggerActivation::lookupGetter(ExecState* exec, const Identifier& propertyName)
Modified: trunk/Source/_javascript_Core/debugger/DebuggerActivation.h (99017 => 99018)
--- trunk/Source/_javascript_Core/debugger/DebuggerActivation.h 2011-11-02 00:34:14 UTC (rev 99017)
+++ trunk/Source/_javascript_Core/debugger/DebuggerActivation.h 2011-11-02 00:36:20 UTC (rev 99018)
@@ -50,7 +50,7 @@
virtual void getOwnPropertyNames(ExecState*, PropertyNameArray&, EnumerationMode mode = ExcludeDontEnumProperties);
virtual bool getOwnPropertyDescriptor(ExecState*, const Identifier&, PropertyDescriptor&);
static void defineGetter(JSObject*, ExecState*, const Identifier& propertyName, JSObject* getterFunction, unsigned attributes);
- virtual void defineSetter(ExecState*, const Identifier& propertyName, JSObject* setterFunction, 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);
Modified: trunk/Source/_javascript_Core/interpreter/Interpreter.cpp (99017 => 99018)
--- trunk/Source/_javascript_Core/interpreter/Interpreter.cpp 2011-11-02 00:34:14 UTC (rev 99017)
+++ trunk/Source/_javascript_Core/interpreter/Interpreter.cpp 2011-11-02 00:36:20 UTC (rev 99018)
@@ -5013,7 +5013,7 @@
JSObject* baseObj = asObject(callFrame->r(base).jsValue());
Identifier& ident = codeBlock->identifier(property);
ASSERT(callFrame->r(function).jsValue().isObject());
- baseObj->defineSetter(callFrame, ident, asObject(callFrame->r(function).jsValue()), 0);
+ baseObj->methodTable()->defineSetter(baseObj, callFrame, ident, asObject(callFrame->r(function).jsValue()), 0);
vPC += OPCODE_LENGTH(op_put_setter);
NEXT_INSTRUCTION();
Modified: trunk/Source/_javascript_Core/jit/JITStubs.cpp (99017 => 99018)
--- trunk/Source/_javascript_Core/jit/JITStubs.cpp 2011-11-02 00:34:14 UTC (rev 99017)
+++ trunk/Source/_javascript_Core/jit/JITStubs.cpp 2011-11-02 00:36:20 UTC (rev 99018)
@@ -3757,7 +3757,7 @@
ASSERT(stackFrame.args[0].jsValue().isObject());
JSObject* baseObj = asObject(stackFrame.args[0].jsValue());
ASSERT(stackFrame.args[2].jsValue().isObject());
- baseObj->defineSetter(callFrame, stackFrame.args[1].identifier(), asObject(stackFrame.args[2].jsValue()));
+ baseObj->methodTable()->defineSetter(baseObj, callFrame, stackFrame.args[1].identifier(), asObject(stackFrame.args[2].jsValue()), 0);
}
DEFINE_STUB_FUNCTION(void, op_throw_reference_error)
Modified: trunk/Source/_javascript_Core/runtime/ClassInfo.h (99017 => 99018)
--- trunk/Source/_javascript_Core/runtime/ClassInfo.h 2011-11-02 00:34:14 UTC (rev 99017)
+++ trunk/Source/_javascript_Core/runtime/ClassInfo.h 2011-11-02 00:36:20 UTC (rev 99018)
@@ -65,6 +65,9 @@
typedef void (*DefineGetterFunctionPtr)(JSObject*, ExecState*, const Identifier&, JSObject*, unsigned);
DefineGetterFunctionPtr defineGetter;
+ typedef void (*DefineSetterFunctionPtr)(JSObject*, ExecState*, const Identifier&, JSObject*, unsigned);
+ DefineSetterFunctionPtr defineSetter;
+
typedef JSValue (*DefaultValueFunctionPtr)(const JSObject*, ExecState*, PreferredPrimitiveType);
DefaultValueFunctionPtr defaultValue;
};
@@ -100,6 +103,7 @@
&ClassName::getOwnPropertySlotByIndex, \
&ClassName::toThisObject, \
&ClassName::defineGetter, \
+ &ClassName::defineSetter, \
&ClassName::defaultValue, \
}, \
sizeof(ClassName)
Modified: trunk/Source/_javascript_Core/runtime/JSCell.cpp (99017 => 99018)
--- trunk/Source/_javascript_Core/runtime/JSCell.cpp 2011-11-02 00:34:14 UTC (rev 99017)
+++ trunk/Source/_javascript_Core/runtime/JSCell.cpp 2011-11-02 00:36:20 UTC (rev 99018)
@@ -163,6 +163,11 @@
ASSERT_NOT_REACHED();
}
+void JSCell::defineSetter(JSObject*, ExecState*, const Identifier&, JSObject*, unsigned)
+{
+ ASSERT_NOT_REACHED();
+}
+
JSValue JSCell::defaultValue(const JSObject*, ExecState*, PreferredPrimitiveType)
{
ASSERT_NOT_REACHED();
Modified: trunk/Source/_javascript_Core/runtime/JSCell.h (99017 => 99018)
--- trunk/Source/_javascript_Core/runtime/JSCell.h 2011-11-02 00:34:14 UTC (rev 99017)
+++ trunk/Source/_javascript_Core/runtime/JSCell.h 2011-11-02 00:36:20 UTC (rev 99018)
@@ -135,6 +135,7 @@
// Dummy implementations of override-able static functions for classes to put in their MethodTable
static NO_RETURN_DUE_TO_ASSERT void defineGetter(JSObject*, ExecState*, const Identifier&, JSObject*, unsigned);
+ static NO_RETURN_DUE_TO_ASSERT void defineSetter(JSObject*, ExecState*, const Identifier& propertyName, JSObject* setterFunction, unsigned attributes = 0);
static JSValue defaultValue(const JSObject*, ExecState*, PreferredPrimitiveType);
private:
Modified: trunk/Source/_javascript_Core/runtime/JSGlobalObject.cpp (99017 => 99018)
--- trunk/Source/_javascript_Core/runtime/JSGlobalObject.cpp 2011-11-02 00:34:14 UTC (rev 99017)
+++ trunk/Source/_javascript_Core/runtime/JSGlobalObject.cpp 2011-11-02 00:36:20 UTC (rev 99018)
@@ -171,11 +171,12 @@
JSVariableObject::defineGetter(thisObject, exec, propertyName, getterFunc, attributes);
}
-void JSGlobalObject::defineSetter(ExecState* exec, const Identifier& propertyName, JSObject* setterFunc, unsigned attributes)
+void JSGlobalObject::defineSetter(JSObject* object, ExecState* exec, const Identifier& propertyName, JSObject* setterFunc, unsigned attributes)
{
+ JSGlobalObject* thisObject = static_cast<JSGlobalObject*>(object);
PropertySlot slot;
- if (!symbolTableGet(propertyName, slot))
- JSVariableObject::defineSetter(exec, propertyName, setterFunc, attributes);
+ if (!thisObject->symbolTableGet(propertyName, slot))
+ JSVariableObject::defineSetter(thisObject, exec, propertyName, setterFunc, attributes);
}
static inline JSObject* lastInPrototypeChain(JSObject* object)
Modified: trunk/Source/_javascript_Core/runtime/JSGlobalObject.h (99017 => 99018)
--- trunk/Source/_javascript_Core/runtime/JSGlobalObject.h 2011-11-02 00:34:14 UTC (rev 99017)
+++ trunk/Source/_javascript_Core/runtime/JSGlobalObject.h 2011-11-02 00:36:20 UTC (rev 99018)
@@ -190,7 +190,7 @@
virtual void putWithAttributes(ExecState*, const Identifier& propertyName, JSValue value, unsigned attributes);
static void defineGetter(JSObject*, ExecState*, const Identifier& propertyName, JSObject* getterFunc, unsigned attributes);
- virtual void defineSetter(ExecState*, const Identifier& propertyName, JSObject* setterFunc, unsigned attributes);
+ static void defineSetter(JSObject*, ExecState*, const Identifier& propertyName, JSObject* setterFunc, unsigned attributes);
// We use this in the code generator as we perform symbol table
// lookups prior to initializing the properties
Modified: trunk/Source/_javascript_Core/runtime/JSObject.cpp (99017 => 99018)
--- trunk/Source/_javascript_Core/runtime/JSObject.cpp 2011-11-02 00:34:14 UTC (rev 99017)
+++ trunk/Source/_javascript_Core/runtime/JSObject.cpp 2011-11-02 00:36:20 UTC (rev 99018)
@@ -402,33 +402,33 @@
structure()->setHasGetterSetterProperties(true);
}
-void JSObject::defineSetter(ExecState* exec, const Identifier& propertyName, JSObject* setterFunction, unsigned attributes)
+void JSObject::defineSetter(JSObject* thisObject, ExecState* exec, const Identifier& propertyName, JSObject* setterFunction, unsigned attributes)
{
if (propertyName == exec->propertyNames().underscoreProto) {
// Defining a setter for __proto__ is silently ignored.
return;
}
- JSValue object = getDirect(exec->globalData(), propertyName);
+ JSValue object = thisObject->getDirect(exec->globalData(), propertyName);
if (object && object.isGetterSetter()) {
- ASSERT(structure()->hasGetterSetterProperties());
+ ASSERT(thisObject->structure()->hasGetterSetterProperties());
asGetterSetter(object)->setSetter(exec->globalData(), setterFunction);
return;
}
PutPropertySlot slot;
GetterSetter* getterSetter = GetterSetter::create(exec);
- putDirectInternal(exec->globalData(), propertyName, getterSetter, attributes | Setter, true, slot, 0);
+ thisObject->putDirectInternal(exec->globalData(), propertyName, getterSetter, attributes | Setter, true, slot, 0);
// putDirect will change our Structure if we add a new property. For
// getters and setters, though, we also need to change our Structure
// if we override an existing non-getter or non-setter.
if (slot.type() != PutPropertySlot::NewProperty) {
- if (!structure()->isDictionary())
- setStructure(exec->globalData(), Structure::getterSetterTransition(exec->globalData(), structure()));
+ if (!thisObject->structure()->isDictionary())
+ thisObject->setStructure(exec->globalData(), Structure::getterSetterTransition(exec->globalData(), thisObject->structure()));
}
- structure()->setHasGetterSetterProperties(true);
+ thisObject->structure()->setHasGetterSetterProperties(true);
getterSetter->setSetter(exec->globalData(), setterFunction);
}
@@ -736,7 +736,7 @@
if (exec->hadException())
return false;
if (descriptor.setter() && descriptor.setter().isObject())
- target->defineSetter(exec, propertyName, asObject(descriptor.setter()), attributes);
+ target->methodTable()->defineSetter(target, exec, propertyName, asObject(descriptor.setter()), attributes);
return !exec->hadException();
}
Modified: trunk/Source/_javascript_Core/runtime/JSObject.h (99017 => 99018)
--- trunk/Source/_javascript_Core/runtime/JSObject.h 2011-11-02 00:34:14 UTC (rev 99017)
+++ trunk/Source/_javascript_Core/runtime/JSObject.h 2011-11-02 00:36:20 UTC (rev 99018)
@@ -186,7 +186,7 @@
void initializeGetterSetterProperty(ExecState*, const Identifier&, GetterSetter*, unsigned attributes);
static void defineGetter(JSObject*, ExecState*, const Identifier& propertyName, JSObject* getterFunction, unsigned attributes = 0);
- virtual void defineSetter(ExecState*, const Identifier& propertyName, JSObject* setterFunction, 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);
virtual bool defineOwnProperty(ExecState*, const Identifier& propertyName, PropertyDescriptor&, bool shouldThrow);
Modified: trunk/Source/_javascript_Core/runtime/ObjectPrototype.cpp (99017 => 99018)
--- trunk/Source/_javascript_Core/runtime/ObjectPrototype.cpp 2011-11-02 00:34:14 UTC (rev 99017)
+++ trunk/Source/_javascript_Core/runtime/ObjectPrototype.cpp 2011-11-02 00:36:20 UTC (rev 99018)
@@ -160,7 +160,7 @@
CallData callData;
if (getCallData(exec->argument(1), callData) == CallTypeNone)
return throwVMError(exec, createSyntaxError(exec, "invalid setter usage"));
- thisObject->defineSetter(exec, Identifier(exec, exec->argument(0).toString(exec)), asObject(exec->argument(1)));
+ thisObject->methodTable()->defineSetter(thisObject, exec, Identifier(exec, exec->argument(0).toString(exec)), asObject(exec->argument(1)), 0);
return JSValue::encode(jsUndefined());
}
Modified: trunk/Source/WebCore/ChangeLog (99017 => 99018)
--- trunk/Source/WebCore/ChangeLog 2011-11-02 00:34:14 UTC (rev 99017)
+++ trunk/Source/WebCore/ChangeLog 2011-11-02 00:36:20 UTC (rev 99018)
@@ -1,3 +1,24 @@
+2011-11-01 Mark Hahnenberg <[email protected]>
+
+ De-virtualize JSObject::defineSetter
+ https://bugs.webkit.org/show_bug.cgi?id=71303
+
+ Reviewed by Darin Adler.
+
+ No new tests.
+
+ Added defineSetter to the MethodTable, changed all the virtual
+ implementations of defineSetter to static ones, and replaced
+ all call sites with corresponding lookups in the MethodTable.
+
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::JSDOMWindow::defineSetter):
+ * bindings/js/JSDOMWindowShell.cpp:
+ (WebCore::JSDOMWindowShell::defineSetter):
+ * bindings/js/JSDOMWindowShell.h:
+ * bindings/scripts/CodeGeneratorJS.pm:
+ (GenerateHeader):
+
2011-11-01 Emil A Eklund <[email protected]>
Switch PopupMenuClient to layout abstraction
Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp (99017 => 99018)
--- trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp 2011-11-02 00:34:14 UTC (rev 99017)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp 2011-11-02 00:36:20 UTC (rev 99018)
@@ -398,12 +398,13 @@
Base::defineGetter(thisObject, exec, propertyName, getterFunction, attributes);
}
-void JSDOMWindow::defineSetter(ExecState* exec, const Identifier& propertyName, JSObject* setterFunction, unsigned attributes)
+void JSDOMWindow::defineSetter(JSObject* object, ExecState* exec, const Identifier& propertyName, JSObject* setterFunction, unsigned attributes)
{
+ JSDOMWindow* thisObject = static_cast<JSDOMWindow*>(object);
// Only allow defining setters by frames in the same origin.
- if (!allowsAccessFrom(exec))
+ if (!thisObject->allowsAccessFrom(exec))
return;
- Base::defineSetter(exec, propertyName, setterFunction, attributes);
+ Base::defineSetter(thisObject, exec, propertyName, setterFunction, attributes);
}
bool JSDOMWindow::defineOwnProperty(JSC::ExecState* exec, const JSC::Identifier& propertyName, JSC::PropertyDescriptor& descriptor, bool shouldThrow)
Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowShell.cpp (99017 => 99018)
--- trunk/Source/WebCore/bindings/js/JSDOMWindowShell.cpp 2011-11-02 00:34:14 UTC (rev 99017)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowShell.cpp 2011-11-02 00:36:20 UTC (rev 99018)
@@ -138,9 +138,10 @@
thisObject->window()->methodTable()->defineGetter(thisObject->window(), exec, propertyName, getterFunction, attributes);
}
-void JSDOMWindowShell::defineSetter(ExecState* exec, const Identifier& propertyName, JSObject* setterFunction, unsigned attributes)
+void JSDOMWindowShell::defineSetter(JSObject* object, ExecState* exec, const Identifier& propertyName, JSObject* setterFunction, unsigned attributes)
{
- window()->defineSetter(exec, propertyName, setterFunction, attributes);
+ JSDOMWindowShell* thisObject = static_cast<JSDOMWindowShell*>(object);
+ thisObject->window()->methodTable()->defineSetter(thisObject->window(), exec, propertyName, setterFunction, attributes);
}
JSValue JSDOMWindowShell::lookupGetter(ExecState* exec, const Identifier& propertyName)
Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowShell.h (99017 => 99018)
--- trunk/Source/WebCore/bindings/js/JSDOMWindowShell.h 2011-11-02 00:34:14 UTC (rev 99017)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowShell.h 2011-11-02 00:36:20 UTC (rev 99018)
@@ -87,7 +87,7 @@
virtual void getPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, JSC::EnumerationMode mode = JSC::ExcludeDontEnumProperties);
virtual void getOwnPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, JSC::EnumerationMode mode = JSC::ExcludeDontEnumProperties);
static void defineGetter(JSC::JSObject*, JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSObject* getterFunction, unsigned attributes);
- virtual void defineSetter(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSObject* setterFunction, 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);
Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (99017 => 99018)
--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm 2011-11-02 00:34:14 UTC (rev 99017)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm 2011-11-02 00:36:20 UTC (rev 99018)
@@ -845,7 +845,7 @@
push(@headerContent, " static void defineGetter(JSC::JSObject*, JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSObject* getterFunction, unsigned attributes);\n") if $dataNode->extendedAttributes->{"CustomDefineGetter"};
# Custom defineSetter function
- push(@headerContent, " virtual void defineSetter(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSObject* setterFunction, unsigned attributes);\n") if $dataNode->extendedAttributes->{"CustomDefineSetter"};
+ push(@headerContent, " static void defineSetter(JSC::JSObject*, JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSObject* setterFunction, unsigned attributes);\n") if $dataNode->extendedAttributes->{"CustomDefineSetter"};
# Custom lookupGetter function
push(@headerContent, " virtual JSC::JSValue lookupGetter(JSC::ExecState*, const JSC::Identifier& propertyName);\n") if $dataNode->extendedAttributes->{"CustomLookupGetter"};