Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (96629 => 96630)
--- trunk/Source/_javascript_Core/ChangeLog 2011-10-04 19:17:25 UTC (rev 96629)
+++ trunk/Source/_javascript_Core/ChangeLog 2011-10-04 19:22:00 UTC (rev 96630)
@@ -1,3 +1,32 @@
+2011-10-04 Mark Hahnenberg <mhahnenb...@apple.com>
+
+ Add static ClassInfo structs to classes that override JSCell::getCallData
+ https://bugs.webkit.org/show_bug.cgi?id=69311
+
+ Reviewed by Darin Adler.
+
+ Added ClassInfo structs to each class that defined its own getCallData
+ function but did not already have its own ClassInfo struct. This is a
+ necessary addition for when we switch over to looking up getCallData from
+ the MethodTable in ClassInfo rather than doing the virtual call (which we
+ are removing). These new ClassInfo structs are public because we often
+ use these structs in other areas of the code to uniquely identify JSC classes and
+ to enforce runtime invariants based on those class identities using ASSERTs.
+
+ * runtime/BooleanConstructor.cpp:
+ * runtime/BooleanConstructor.h:
+
+ getCallData was not marked as static is StrictModeTypeErrorFunction.
+ * runtime/Error.cpp:
+ (JSC::StrictModeTypeErrorFunction::getCallDataVirtual):
+ (JSC::StrictModeTypeErrorFunction::getCallData):
+ * runtime/ErrorConstructor.cpp:
+ * runtime/ErrorConstructor.h:
+ * runtime/FunctionConstructor.cpp:
+ * runtime/FunctionConstructor.h:
+ * runtime/FunctionPrototype.cpp:
+ * runtime/FunctionPrototype.h:
+
2011-10-04 Ryosuke Niwa <rn...@webkit.org>
Leopard build fix after r96613.
Modified: trunk/Source/_javascript_Core/runtime/BooleanConstructor.cpp (96629 => 96630)
--- trunk/Source/_javascript_Core/runtime/BooleanConstructor.cpp 2011-10-04 19:17:25 UTC (rev 96629)
+++ trunk/Source/_javascript_Core/runtime/BooleanConstructor.cpp 2011-10-04 19:22:00 UTC (rev 96630)
@@ -28,6 +28,8 @@
ASSERT_CLASS_FITS_IN_CELL(BooleanConstructor);
+const ClassInfo BooleanConstructor::s_info = { "Function", &Base::s_info, 0, 0, CREATE_METHOD_TABLE(BooleanConstructor) };
+
BooleanConstructor::BooleanConstructor(JSGlobalObject* globalObject, Structure* structure)
: InternalFunction(globalObject, structure)
{
Modified: trunk/Source/_javascript_Core/runtime/BooleanConstructor.h (96629 => 96630)
--- trunk/Source/_javascript_Core/runtime/BooleanConstructor.h 2011-10-04 19:17:25 UTC (rev 96629)
+++ trunk/Source/_javascript_Core/runtime/BooleanConstructor.h 2011-10-04 19:22:00 UTC (rev 96630)
@@ -38,6 +38,8 @@
return constructor;
}
+ static const ClassInfo s_info;
+
protected:
void finishCreation(ExecState*, BooleanPrototype*);
Modified: trunk/Source/_javascript_Core/runtime/Error.cpp (96629 => 96630)
--- trunk/Source/_javascript_Core/runtime/Error.cpp 2011-10-04 19:17:25 UTC (rev 96629)
+++ trunk/Source/_javascript_Core/runtime/Error.cpp 2011-10-04 19:22:00 UTC (rev 96630)
@@ -201,23 +201,27 @@
return JSValue::encode(jsNull());
}
- CallType getCallDataVirtual(CallData& callData)
+ virtual CallType getCallDataVirtual(CallData& callData)
{
return getCallData(this, callData);
}
- CallType getCallData(JSCell*, CallData& callData)
+ static CallType getCallData(JSCell*, CallData& callData)
{
callData.native.function = callThrowTypeError;
return CallTypeHost;
}
+ static const ClassInfo s_info;
+
private:
UString m_message;
};
ASSERT_CLASS_FITS_IN_CELL(StrictModeTypeErrorFunction);
+const ClassInfo StrictModeTypeErrorFunction::s_info = { "Function", &Base::s_info, 0, 0, CREATE_METHOD_TABLE(StrictModeTypeErrorFunction) };
+
JSValue createTypeErrorFunction(ExecState* exec, const UString& message)
{
return StrictModeTypeErrorFunction::create(exec, exec->lexicalGlobalObject(), exec->lexicalGlobalObject()->internalFunctionStructure(), message);
Modified: trunk/Source/_javascript_Core/runtime/ErrorConstructor.cpp (96629 => 96630)
--- trunk/Source/_javascript_Core/runtime/ErrorConstructor.cpp 2011-10-04 19:17:25 UTC (rev 96629)
+++ trunk/Source/_javascript_Core/runtime/ErrorConstructor.cpp 2011-10-04 19:22:00 UTC (rev 96630)
@@ -29,6 +29,8 @@
ASSERT_CLASS_FITS_IN_CELL(ErrorConstructor);
+const ClassInfo ErrorConstructor::s_info = { "Function", &Base::s_info, 0, 0, CREATE_METHOD_TABLE(ErrorConstructor) };
+
ErrorConstructor::ErrorConstructor(JSGlobalObject* globalObject, Structure* structure)
: InternalFunction(globalObject, structure)
{
Modified: trunk/Source/_javascript_Core/runtime/ErrorConstructor.h (96629 => 96630)
--- trunk/Source/_javascript_Core/runtime/ErrorConstructor.h 2011-10-04 19:17:25 UTC (rev 96629)
+++ trunk/Source/_javascript_Core/runtime/ErrorConstructor.h 2011-10-04 19:22:00 UTC (rev 96630)
@@ -39,6 +39,8 @@
return constructor;
}
+ static const ClassInfo s_info;
+
protected:
void finishCreation(ExecState*, ErrorPrototype*);
Modified: trunk/Source/_javascript_Core/runtime/FunctionConstructor.cpp (96629 => 96630)
--- trunk/Source/_javascript_Core/runtime/FunctionConstructor.cpp 2011-10-04 19:17:25 UTC (rev 96629)
+++ trunk/Source/_javascript_Core/runtime/FunctionConstructor.cpp 2011-10-04 19:22:00 UTC (rev 96630)
@@ -37,6 +37,8 @@
ASSERT_CLASS_FITS_IN_CELL(FunctionConstructor);
+const ClassInfo FunctionConstructor::s_info = { "Function", &Base::s_info, 0, 0, CREATE_METHOD_TABLE(FunctionConstructor) };
+
FunctionConstructor::FunctionConstructor(JSGlobalObject* globalObject, Structure* structure)
: InternalFunction(globalObject, structure)
{
Modified: trunk/Source/_javascript_Core/runtime/FunctionConstructor.h (96629 => 96630)
--- trunk/Source/_javascript_Core/runtime/FunctionConstructor.h 2011-10-04 19:17:25 UTC (rev 96629)
+++ trunk/Source/_javascript_Core/runtime/FunctionConstructor.h 2011-10-04 19:22:00 UTC (rev 96630)
@@ -38,6 +38,8 @@
return constructor;
}
+ static const ClassInfo s_info;
+
private:
FunctionConstructor(JSGlobalObject*, Structure*);
void finishCreation(ExecState*, FunctionPrototype*);
Modified: trunk/Source/_javascript_Core/runtime/FunctionPrototype.cpp (96629 => 96630)
--- trunk/Source/_javascript_Core/runtime/FunctionPrototype.cpp 2011-10-04 19:17:25 UTC (rev 96629)
+++ trunk/Source/_javascript_Core/runtime/FunctionPrototype.cpp 2011-10-04 19:22:00 UTC (rev 96630)
@@ -39,6 +39,8 @@
static EncodedJSValue JSC_HOST_CALL functionProtoFuncCall(ExecState*);
static EncodedJSValue JSC_HOST_CALL functionProtoFuncBind(ExecState*);
+const ClassInfo FunctionPrototype::s_info = { "Function", &Base::s_info, 0, 0, CREATE_METHOD_TABLE(FunctionPrototype) };
+
FunctionPrototype::FunctionPrototype(JSGlobalObject* globalObject, Structure* structure)
: InternalFunction(globalObject, structure)
{
Modified: trunk/Source/_javascript_Core/runtime/FunctionPrototype.h (96629 => 96630)
--- trunk/Source/_javascript_Core/runtime/FunctionPrototype.h 2011-10-04 19:17:25 UTC (rev 96629)
+++ trunk/Source/_javascript_Core/runtime/FunctionPrototype.h 2011-10-04 19:22:00 UTC (rev 96630)
@@ -43,6 +43,8 @@
return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), &s_info);
}
+ static const ClassInfo s_info;
+
protected:
void finishCreation(ExecState*, const Identifier& name);
Modified: trunk/Source/WebCore/ChangeLog (96629 => 96630)
--- trunk/Source/WebCore/ChangeLog 2011-10-04 19:17:25 UTC (rev 96629)
+++ trunk/Source/WebCore/ChangeLog 2011-10-04 19:22:00 UTC (rev 96630)
@@ -1,3 +1,23 @@
+2011-10-04 Mark Hahnenberg <mhahnenb...@apple.com>
+
+ Add static ClassInfo structs to classes that override JSCell::getCallData
+ https://bugs.webkit.org/show_bug.cgi?id=69311
+
+ Reviewed by Darin Adler.
+
+ No new tests.
+
+ Added ClassInfo structs to each class that defined its own getCallData
+ function but did not already have its own ClassInfo struct. This is a
+ necessary addition for when we switch over to looking up getCallData from
+ the MethodTable in ClassInfo rather than doing the virtual call (which we
+ are removing). These new ClassInfo structs are public because we often
+ use these structs in other areas of the code to uniquely identify JSC classes and
+ to enforce runtime invariants based on those class identities using ASSERTs.
+
+ * bridge/qt/qt_runtime.cpp:
+ * bridge/qt/qt_runtime.h:
+
2011-10-04 Ryosuke Niwa <rn...@webkit.org>
REGRESSION(r94274): setting input.value erroneously triggers focus event
Modified: trunk/Source/WebCore/bridge/qt/qt_runtime.cpp (96629 => 96630)
--- trunk/Source/WebCore/bridge/qt/qt_runtime.cpp 2011-10-04 19:17:25 UTC (rev 96629)
+++ trunk/Source/WebCore/bridge/qt/qt_runtime.cpp 2011-10-04 19:22:00 UTC (rev 96630)
@@ -1425,6 +1425,8 @@
return index;
}
+const ClassInfo QtRuntimeMetaMethod::s_info = { "QtRuntimeMethod", &Base::s_info, 0, 0, CREATE_METHOD_TABLE(QtRuntimeMetaMethod) };
+
QtRuntimeMetaMethod::QtRuntimeMetaMethod(ExecState* exec, Structure* structure, const Identifier& identifier)
: QtRuntimeMethod (new QtRuntimeMetaMethodData(), exec, structure, identifier)
{
@@ -1580,6 +1582,8 @@
QMultiMap<QObject*, QtConnectionObject*> QtRuntimeConnectionMethod::connections;
+const ClassInfo QtRuntimeConnectionMethod::s_info = { "QtRuntimeMethod", &Base::s_info, 0, 0, CREATE_METHOD_TABLE(QtRuntimeConnectionMethod) };
+
QtRuntimeConnectionMethod::QtRuntimeConnectionMethod(ExecState* exec, Structure* structure, const Identifier& identifier)
: QtRuntimeMethod (new QtRuntimeConnectionMethodData(), exec, structure, identifier)
{
Modified: trunk/Source/WebCore/bridge/qt/qt_runtime.h (96629 => 96630)
--- trunk/Source/WebCore/bridge/qt/qt_runtime.h 2011-10-04 19:17:25 UTC (rev 96629)
+++ trunk/Source/WebCore/bridge/qt/qt_runtime.h 2011-10-04 19:22:00 UTC (rev 96630)
@@ -170,6 +170,8 @@
static void visitChildren(JSCell*, SlotVisitor&);
+ static const ClassInfo s_info;
+
protected:
QtRuntimeMetaMethodData* d_func() const {return reinterpret_cast<QtRuntimeMetaMethodData*>(d_ptr);}
@@ -201,6 +203,8 @@
virtual bool getOwnPropertySlot(ExecState *, const Identifier&, PropertySlot&);
virtual bool getOwnPropertyDescriptor(ExecState*, const Identifier&, PropertyDescriptor&);
virtual void getOwnPropertyNames(ExecState*, PropertyNameArray&, EnumerationMode mode = ExcludeDontEnumProperties);
+
+ static const ClassInfo s_info;
protected:
QtRuntimeConnectionMethodData* d_func() const {return reinterpret_cast<QtRuntimeConnectionMethodData*>(d_ptr);}