diff options
author | Erik Verbruggen <[email protected]> | 2013-10-09 10:47:11 +0200 |
---|---|---|
committer | The Qt Project <[email protected]> | 2013-10-10 09:54:36 +0200 |
commit | 14e0e0c000234f67613ea65e3fea1e9c3445844a (patch) | |
tree | 3a2cf837da6ef49b5704d7459b30c1bfe4251e6e /src/qml/jsruntime | |
parent | ccfa06e7566f1c113a3c5c31dab3c5aeb7a4985d (diff) |
V4 runtime: add some more counters.
Change-Id: I872f259a9fd4580e8faeae664f4d34f59a785c4e
Reviewed-by: Lars Knoll <[email protected]>
Diffstat (limited to 'src/qml/jsruntime')
-rw-r--r-- | src/qml/jsruntime/qv4runtime.cpp | 18 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4runtime_p.h | 3 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/qml/jsruntime/qv4runtime.cpp b/src/qml/jsruntime/qv4runtime.cpp index 6e566953c7..6b3afcc300 100644 --- a/src/qml/jsruntime/qv4runtime.cpp +++ b/src/qml/jsruntime/qv4runtime.cpp @@ -114,6 +114,13 @@ struct RuntimeCounters::Data { typedef QVector<quint64> Counters; QHash<const char *, Counters> counters; + inline void count(const char *func) { + QVector<quint64> &cnt = counters[func]; + if (cnt.isEmpty()) + cnt.resize(64); + cnt[0] += 1; + } + inline void count(const char *func, unsigned tag) { QVector<quint64> &cnt = counters[func]; if (cnt.isEmpty()) @@ -180,6 +187,11 @@ RuntimeCounters::~RuntimeCounters() delete d; } +void RuntimeCounters::count(const char *func) +{ + d->count(func); +} + void RuntimeCounters::count(const char *func, uint tag) { d->count(func, tag); @@ -1077,31 +1089,37 @@ QV4::ReturnedValue __qmljs_to_object(QV4::ExecutionContext *ctx, const QV4::Valu ReturnedValue __qmljs_value_to_double(const ValueRef value) { + TRACE1(value); return Encode(value->toNumber()); } int __qmljs_value_to_int32(const ValueRef value) { + TRACE1(value); return value->toInt32(); } int __qmljs_double_to_int32(const double &d) { + TRACE0(); return Primitive::toInt32(d); } unsigned __qmljs_value_to_uint32(const ValueRef value) { + TRACE1(value); return value->toUInt32(); } unsigned __qmljs_double_to_uint32(const double &d) { + TRACE0(); return Primitive::toUInt32(d); } ReturnedValue __qmljs_value_from_string(String *string) { + TRACE0(); return string->asReturnedValue(); } diff --git a/src/qml/jsruntime/qv4runtime_p.h b/src/qml/jsruntime/qv4runtime_p.h index 2fb641c994..4ede7ae991 100644 --- a/src/qml/jsruntime/qv4runtime_p.h +++ b/src/qml/jsruntime/qv4runtime_p.h @@ -72,6 +72,7 @@ public: static RuntimeCounters *instance; + void count(const char *func); void count(const char *func, uint tag); void count(const char *func, uint tag1, uint tag2); @@ -80,9 +81,11 @@ private: Data *d; }; +# define TRACE0() RuntimeCounters::instance->count(Q_FUNC_INFO); # define TRACE1(x) RuntimeCounters::instance->count(Q_FUNC_INFO, x->type()); # define TRACE2(x, y) RuntimeCounters::instance->count(Q_FUNC_INFO, x->type(), y->type()); #else +# define TRACE0() # define TRACE1(x) # define TRACE2(x, y) #endif // QV4_COUNT_RUNTIME_FUNCTIONS |