aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jit
Commit message (Collapse)AuthorAgeFilesLines
* Use Q_ASSERT instead of assertLars Knoll2014-03-194-20/+18
| | | | | Change-Id: I6185b59a7dfd6977ce82581ab4385e07d78f13f6 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Enable constant propagation for all typesLars Knoll2014-03-191-0/+3
| | | | | | | | | So far constant propagation was only enabled for numbers and booleans. Enable it for all types now and make sure the propagation does the right thing. Change-Id: I202b0073f463d8a42e34931a736544207284b6dc Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Fixes to for...in statementLars Knoll2014-03-193-4/+4
| | | | | | | | | | | Properly convert the argument to an object if it's not null or undefined as mandated by the standard. Add a similar test case for the with statement. Change-Id: Idd8e245e8dae4803eb0e2010e3d43bb912670444 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Cleanup our runtime methodsLars Knoll2014-03-114-104/+103
| | | | | | | | | Move all our runtime methods into the QV4::Runtime struct and give them nicer names without underscores. Sort them logically and remove a few unused methods. Change-Id: Ib69b71764ff194d0ba211aac581f9a99734d8180 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* V4 JIT: enable JIT on win64.Erik Verbruggen2014-03-081-0/+10
| | | | | Change-Id: I640d507c33fd4c4df6d6284b473df5cea9e5c4b4 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Fix test failure in qqmldebugjs autotestLars Knoll2014-03-071-1/+1
| | | | | | | | | | | | | | The debugger should only have one breakpoint that can be set per line. Nevertheless, we should have proper line number information available in case we stop at other places. We also need a debug instruction before the return statement, so that step out will always find a last stopping point in the parent frame. Change-Id: I86145fc244148f106a4a97ce69ab60b568c8dac6 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* V4 JIT: fix stack space reserving codeErik Verbruggen2014-03-071-2/+2
| | | | | | | | sub32 will truncate the register's content, which is a bit problematic when the stack is located outside the first 4G (e.g. on win64). Change-Id: I8c2c55c0e08f4e5b67295ba6a8a26d7d55d4477f Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* V4: fix address printing on 64bit platformsErik Verbruggen2014-03-071-0/+1
| | | | | | | | The addresses were truncated to 32bits, which is a problem on win64, because JITted code ended up outside that range. Change-Id: I0d8b92486714340dffe4b4c2de29cf11a929a149 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Fix MSVC2012 compiler warnings in disabled code.Erik Verbruggen2014-03-071-2/+4
| | | | | | | ... that should soon get enabled. Change-Id: I2f8393cab5e99a7f5d3c7df6af6385fefd2d4dd1 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* V4 JIT: fix up register usage for linux/macos on x86_64.Erik Verbruggen2014-03-072-5/+7
| | | | | Change-Id: Ia6f3a78410fd41c58904a60f4c7a0630cf5230d0 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* V4 JIT: enable register allocator on win32.Erik Verbruggen2014-03-042-2/+25
| | | | | Change-Id: I7134bd3721df0e000ad0bd135c01e76c55271156 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Move all binop related code into qv4binop*Lars Knoll2014-03-044-212/+218
| | | | | Change-Id: I8f96b8d570dd4c0139b0a2e595055b3b2c6dae70 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Remove unused ExecutionEngine::allFunctionsLars Knoll2014-03-031-5/+0
| | | | | Change-Id: I69a736ac7920a10667949475600460ee43d61480 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Remove unused codeSizesLars Knoll2014-03-033-6/+3
| | | | | Change-Id: I13c7d9dda7cd1e771079f6fdaa175008b3a3e0e5 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* V4 JIT: enable disassembler on windows.Erik Verbruggen2014-03-031-36/+38
| | | | | Change-Id: I55a2a96a1a774c79cc2146c6b47d441fede1d102 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* V4 JIT: fix MSVC warning.Erik Verbruggen2014-03-031-1/+1
| | | | | | | d:\dev\qt5-dev\qtdeclarative\src\qml\jit\qv4assembler_p.h(394) : warning C4146: unary minus operator applied to unsigned type, result still unsigned Change-Id: Iff972f419d7505ecedeb42b4b7eb456295225cb2 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Fix build with QT_FORCE_ASSERTSKonstantin Ritt2014-03-031-1/+1
| | | | | Change-Id: Ie87b574f6cabe6095a531129511823ec55c58929 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Determine whether or not an object literal requires a sparse array at ↵Simon Hausmann2014-02-243-6/+6
| | | | | | | compile time Change-Id: Ieb7f6ee97a4f251f1e2369850ebb9e2931f84ac1 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Clean up object literal handling with integral indicesSimon Hausmann2014-02-243-32/+59
| | | | | | | | | | | | | | | | | | | | | * Object literals with array indices are now created with one run-time call, instead of an initial one for non-integral keys followed by sub-sequent define_builtin_property calls. * Cleaned up propert name retrieval. Instead of using a visitor, it's easier to define a virtual method on the PropertyName type. The visitor doesn't buy us much as it's not possible to recurse within property names, and this way we can use it also from the function scanner to correctly determine the number of arguments needed for object literal initalizations. * Similarly the duplicated/common name member for all property assignments has been moved into PropertyName, for convenient access without AST casts. * Removed now unused builtin_define_property/settergetter functions from IR, run-time and moth. Change-Id: I90d54c81ea5f3f500f4f4a9c14f7caf5135e7f9f Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Smaller cleanupLars Knoll2014-02-232-15/+7
| | | | | | | | | | Cleanup the code to generate a swapValues instruction to only require one code path for 32/64 bit. In addition, this seems to be slightly faster even on x86-64. Change-Id: I0584c3eb5249606ca7541abfbce227e5cb44711f Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Clean up our internal namespacesLars Knoll2014-02-2310-659/+647
| | | | | | | | QQmlJS::MASM -> QV4::JIT QQmlJS::V4IR -> QV4::IR Change-Id: I707e8990459114a699c200fe3c22cec3c8df1afc Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Move binops out of the iselLars Knoll2014-02-227-459/+612
| | | | | | | | Move the binop handling into qv4binop* to clean up the code and ease maintenance. Change-Id: I0053380be7f326a2100302a63e921698a5b28c2a Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Move unops into it's own fileLars Knoll2014-02-225-33/+233
| | | | | Change-Id: I17aaff4d044608462e1edabc5612685591b3a433 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Move the Assembler class into it's own fileLars Knoll2014-02-225-1703/+1856
| | | | | Change-Id: I9968b3ae5ad5fbad3490e08e173c22e4a643c91f Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Move JIT infrastructure into it's own directoryLars Knoll2014-02-225-0/+6000
This is a starting point to clean up some of the code base for the JIT. Change-Id: I388ce8df7d4ab87095e227cf36643f4be2594b7d Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>