{
namespace QV4 {
class ExecutionEngine;
namespace CompiledData {
class CompilationUnit;
class Object;
} // CompiledData
} // QV4
class QQmlEngine;
}

QQmlObjectCreator_createInstance_entry(const QV4::CompiledData::CompilationUnit *compilationUnit, const QV4::CompiledData::Object *object, const QUrl &url)
QQmlObjectCreator_createInstance_exit(const QString &typeName)
QQmlCompiling_entry(const QUrl &url)
QQmlCompiling_exit()
QQmlV4_function_call_entry(const QV4::ExecutionEngine *engine, const QString &function, const QString &fileName, int line, int column)
QQmlV4_function_call_exit()
QQmlBinding_entry(const QQmlEngine *engine, const QString &function, const QString &fileName, int line, int column)
QQmlBinding_exit()
QQmlHandlingSignal_entry(const QQmlEngine *engine, const QString &function, const QString &fileName, int line, int column)
QQmlHandlingSignal_exit()
