aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4engine.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Optimize String.replace and RegExp.execLars Knoll2013-09-021-0/+15
| | | | | | | This speeds up the v8 regexp benchmark by a factor 2.5 :) Change-Id: Ibd6b18ee28181aa712429cbec4598984e0c69820 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Optimize ScriptFunction::construct() and creation of FunctionObjectsLars Knoll2013-09-021-0/+5
| | | | | Change-Id: I7df04171a26cbe659e85f14878cc4e51030e8a5a Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Remove more usages of Object::setPrototype()Lars Knoll2013-09-021-8/+6
| | | | | Change-Id: I33383baf14e764ce79252a100a6d769bde75331a Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Remove more usages of Object::setPrototype()Lars Knoll2013-09-021-15/+14
| | | | | Change-Id: I8c49f61bc85e3d98dea90bf05db1a3f22d08f7b1 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Cleanup calls to Object::setPrototype()Lars Knoll2013-09-021-50/+27
| | | | | | | | Rather use the correct internalClass directly when constructing the objects. Change-Id: I8e916f1ce8f83d291c08ca6332fe85b1f57b90b5 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Move prototype pointer into QV4::InternalClassLars Knoll2013-09-021-64/+52
| | | | | | | | | | | | | The prototype is actually the same for most objects. By moving it into the internal class, we can save 8 bytes per object, as well as allowing for some future optimizations. Also fix a bug in the implementation of the Error prototype objects. Change-Id: I4d4b641055f644a9b088f27be34bfdb0446279b7 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Add the object's prototype to the InternalClass structureLars Knoll2013-09-021-0/+2
| | | | | Change-Id: Ifa97d3354a7a7afadf70f9ba540716bd5b1eef44 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Remove unused arvument from Object constructorLars Knoll2013-09-021-1/+1
| | | | | Change-Id: I2c26bd8af9b352baed9b84a6b6401633ded4da85 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* move methods to create a new context into the ExecutionContext classLars Knoll2013-09-021-29/+0
| | | | | | | | This avoids one indirection when calling the methods and cleans up the engine a bit. Change-Id: I426f41e23f6a7262af95b9807b00920530fef642 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Add a SimpleScriptFunction classLars Knoll2013-09-021-8/+0
| | | | | | | | | Choose whether we use a stack based context for a function, when the actual closure is generated, not at call time. This speeds up function calling for leaf functions. Change-Id: Ibcbf3acb5610a7f59b6474e982122df03c1c5298 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Move call context creation into the ExecutionContext classLars Knoll2013-09-021-21/+0
| | | | | Change-Id: Ie66a5892b0e5ab74bead1fcb59ffad5a867e0509 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Temporarily collect a map of all functions in the engineSimon Hausmann2013-09-021-0/+14
| | | | | | | | | | | | | | | | At the moment we collect a lot of compilation units (one per binding expression!), which for long running QML accumulates and creates a horrible performance when trying to retrieve back traces. There is work in progress to reduces the number of units down to one per QML file, and then the fixed sorted QVector might proof to be a more efficient data structure for the lookups. But until that code lands, this patch proposes to use a QMap instead for the time being, that tracks all functions. This brings down the qtquickcontrols auto-test run from 2.5 minutes to just under a minute on my machine. Change-Id: I45bf609055877081daa984de90f291a030f2f24f Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Merge branch 'wip/v4' of ssh://codereview.qt-project.org/qt/qtdeclarative ↵Simon Hausmann2013-08-201-30/+16
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into dev Conflicts: src/qml/compiler/qv4codegen.cpp src/qml/compiler/qv4codegen_p.h src/qml/compiler/qv4isel_moth.cpp src/qml/jsruntime/qv4context_p.h src/qml/jsruntime/qv4functionobject.cpp src/qml/jsruntime/qv4runtime.cpp src/qml/jsruntime/qv4runtime_p.h src/qml/jsruntime/qv4script.cpp sync.profile Change-Id: I1d785e2134bffac9553a1c16eed12816cbd1ad2c
| * Eliminate all vm functions on the isel sideSimon Hausmann2013-08-161-6/+0
| | | | | | | | | | Change-Id: I7c0e50498c937ce554b019f98829fa8c5d96c18e Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Get rid of the functions list in QV4::ExecutionEngineSimon Hausmann2013-08-161-20/+8
| | | | | | | | | | Change-Id: I97067dbb2819936a1b2029c9f63f0627cb6b8bd2 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Fix crashes with unmarked runtime stringsSimon Hausmann2013-08-151-0/+4
| | | | | | | | | | | | | | | | | | Runtime strings are identifiers, but they still require to be marked. Keep track of all compilation units in the engine (one per file) and mark its run-time strings. Change-Id: Ie70b00dfa373c4567279591de2f717e8103c288f Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Move QV4::Function::sourceFile to CompiledFunctionSimon Hausmann2013-08-151-4/+4
| | | | | | | | | | Change-Id: Iacf907c475070bab4a5a1583280f110c089141c4 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Remove QV4::DiagnosticMessageLars Knoll2013-08-201-6/+6
| | | | | | | | | | | | | | | | | | | | QQmlError provides the same functionality, so let's rather use that where required. Remove the dependency of codegen onto the ExecutionContext that was only required for error handling. Change-Id: Ib0b61c0e138f89ff989c32996c93c339e4b62223 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | Remove unused overload of newCallContext()Lars Knoll2013-08-171-10/+0
| | | | | | | | | | Change-Id: I9b9de585b18bf87ea256db36b320a7defdcc4ac8 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | Optimize contruction of Arguments objectsLars Knoll2013-08-171-0/+5
| | | | | | | | | | Change-Id: If77bff28a25462a6069d646a2594dd903fefb9e5 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | Fix memory leak in identifier tableSimon Hausmann2013-08-131-1/+1
|/ | | | | Change-Id: I8bc393856cad85734160b52dee745509be502247 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Re-enable JITSimon Hausmann2013-08-121-1/+1
| | | | | | | Ooops, an earlier commit accidentally disabled it. Change-Id: I7b732e0addba8b6403e0d6818d784f267711af42 Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* Add reference counting to the VM functionsSimon Hausmann2013-08-121-3/+2
| | | | | | | | | This reduces memory pressure, keep engine->functions small and thus makes back trace lookup faster. It became visible for example in the QtQuickControls auto-tests that use plenty of loaders and we ended up with 30k+ functions. Change-Id: Iaa5981f44e1e49ad9417a50c1e6a74946090dd28 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Restructure source codeLars Knoll2013-08-081-0/+837
Move the v4 engine classes from a subdir of qml/qml into two subdirs (compiler and jsruntime) of the qml module Remove an unsued qv4syntaxchecker class, and move the moth code directly into compiler. Change-Id: I6929bede1f25098e6cb2e68087e779fac16b0c68 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>