summaryrefslogtreecommitdiff
path: root/src/qml/compiler/qv4codegen.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* | | Beautify the codeLars Knoll2017-06-201-137/+139
| | | | | | | | | | | | | | | | | | | | | | | | Add a couple of using directives to avoid lots of the repeated prefixing of common types. Change-Id: Ie2bbe366ecb49d24cb951d445d9d6796b7e2554b Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Fix throwSyntaxErrorOnEvalOrArgumentsInStrictModeLars Knoll2017-06-201-27/+22
| | | | | | | | | | | | | | | Change-Id: I4d205f989120701f5fd10497e67dc6f4d01d59e9 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | CleanupsLars Knoll2017-06-201-186/+11
| | | | | | | | | | | | | | | | | | | | | Remove code that's no longer used Change-Id: Idd8bcf1a7fd87b8db393b7e78880ca32e35fbdfd Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Cleanup paramForXXX() methodsLars Knoll2017-06-201-27/+0
| | | | | | | | | | | | | | | | | | | | | Should be folded into the commit that added them Change-Id: I1d0c5bc5d83e0e8c25b63a9eb2e903299715e966 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Proper exception handlingLars Knoll2017-06-201-107/+132
| | | | | | | | | | | | | | | | | | | | | | | | Implement exception handling, and make it conformant with the spec. Change-Id: I6d8222617180f96f628f18e11444488e50e5c043 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Support postfix increment/decrementErik Verbruggen2017-06-201-35/+29
| | | | | | | | | | | | | | | Change-Id: I86e6fd5c34524eb0c101b7988b79e0890d3005f6 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Support object literalsErik Verbruggen2017-06-201-103/+69
| | | | | | | | | | | | | | | Change-Id: I7fc4565044caf23bec239561be4fbc020ccc2468 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Cleanup control flow handlingLars Knoll2017-06-201-171/+249
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace Loop and ScopeAndFinally with a single ControlFlow data structure, that can deal with non local control flow. The control flow data structure can do required cleanup of internal scopes (for catch or with), emit finally statements and dispatch to the right continuation. Also implemented support for the with statement again. Change-Id: I8bb5414151d0312cb28f8d10e99f8d2b64484100 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Implement support for deleteLars Knoll2017-06-201-41/+47
| | | | | | | | | | | | | | | Change-Id: I1b2055b2d89fc0c5484dff064740397154616465 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Support array literalsErik Verbruggen2017-06-201-41/+22
| | | | | | | | | | | | | | | Change-Id: Ief56f93271dbe45c90ed1cb083f99b31af7c6a07 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Use a new temp for return values from call and new operationsLars Knoll2017-06-201-6/+14
| | | | | | | | | | | | | | | | | | Change-Id: Ic95ab3b2f866b68cbdc04299d1c983beb0e46387 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Fix FunctionExpressionErik Verbruggen2017-06-201-1/+1
| | | | | | | | | | | | | | | Change-Id: I03216b8e52057e3f3d665265959f66ae5cfa44df Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Simplify function call and new handlingLars Knoll2017-06-201-20/+14
| | | | | | | | | | | | | | | | | | | | | | | | Always use Call/CreateValue instructions, by loading the reference into a temp if required. Change-Id: I0103cec91224f405129e6a770ce7483141c5c1a8 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Use cx results in loops with conditionsErik Verbruggen2017-06-201-12/+10
| | | | | | | | | | | | | | | | | | | | | | | | This folds the jumps generated by e.g. && and || expressions directly into the jump to the start/end of the loop. Change-Id: I53f8cb6eb6b995b7418b57ada59c17d3a556935a Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Basic support for newLars Knoll2017-06-201-29/+25
| | | | | | | | | | | | | | | | | | Change-Id: I81b323e49c09947d4e068f55eaeee0286468498b Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Implement typeofLars Knoll2017-06-201-4/+16
| | | | | | | | | | | | | | | | | | Change-Id: I52db8e7a28de8f27699283543e1788d524a0c8b1 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Fix the ReturnStatement handling and exit block generationErik Verbruggen2017-06-201-7/+4
| | | | | | | | | | | | | | | Change-Id: Ic25a792b515d9c12c96554a139c1fbeebc1a8e51 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Add support for || and &&Erik Verbruggen2017-06-201-43/+63
| | | | | | | | | | | | | | | | | | | | | And resurrect cx results in the process. Change-Id: If6cfad874a23ffa8fd0721af57b117fe8cdb2548 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Implement switch statementLars Knoll2017-06-201-77/+54
| | | | | | | | | | | | | | | Change-Id: Ifea4078a764fe45a3561d3a1ea9161b67f730bbe Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Simplify for..in codeLars Knoll2017-06-201-18/+2
| | | | | | | | | | | | | | | Change-Id: I33b7f01edbec4e8ff6233a819f3fe514d5f82ee2 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Implement support for for(... in ...)Lars Knoll2017-06-201-60/+75
| | | | | | | | | | | | | | | | | | Change-Id: I49a4abd13d08d86da38badb095206244084327c0 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Add inplace binary operatorsErik Verbruggen2017-06-201-13/+14
| | | | | | | | | | | | | | | Change-Id: Ia8d746e511dc03a3335b638d57ec169633fb3da8 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Add support for LabelledStatementsLars Knoll2017-06-201-6/+3
| | | | | | | | | | | | | | | | | | Change-Id: Ic4fd476226c556bcc7d747c2956d7091f50a65a0 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Do not initialize return value tempErik Verbruggen2017-06-201-5/+0
| | | | | | | | | | | | | | | | | | | | | | | | The Push instruction will initialize all temporaries to undefined, so the generated bytecode doesn't need to do that. Change-Id: I4e8340ea4d47f078404fbb6720cf46a614f33b14 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Add comparison binary operatorsErik Verbruggen2017-06-201-20/+2
| | | | | | | | | | | | | | | Change-Id: I35744fa98cba159f5b591ea1b9975ea79bf40ab6 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Implement support for for loopsLars Knoll2017-06-201-40/+21
| | | | | | | | | | | | | | | | | | Change-Id: I45ff2a2c15552fb3b92e5b5649a74b1814a70274 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Implement do {} while()Lars Knoll2017-06-201-15/+8
| | | | | | | | | | | | | | | | | | Change-Id: Ib1527bb2aeba06cd043a75b81e11d235be048b67 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Fix a bug in the implementation of the if statementLars Knoll2017-06-201-4/+8
| | | | | | | | | | | | | | | | | | Change-Id: Ie67d7e291d503d83b58087e733550de6bc44461f Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Add support for break and continueLars Knoll2017-06-201-8/+7
| | | | | | | | | | | | | | | | | | Change-Id: I7750955343276a83c83587b0f40eb87556501b35 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Initial loop supportLars Knoll2017-06-201-17/+29
| | | | | | | | | | | | | | | | | | | | | | | | Currently just while() {} loops. Change-Id: I8ad202d26540cb670d4ef4753fb461d00c4dd70c Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Move Loop and ScopeAndFinally from Codegen into the .cpp fileLars Knoll2017-06-201-1/+36
| | | | | | | | | | | | | | | | | | | | | | | | This is in preparation for the new loop handling Change-Id: I06b8dd6190e2bc6c40fde33e9ff529a9c6feab91 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Smaller fixesLars Knoll2017-06-201-7/+17
| | | | | | | | | | | | | | | | | | Change-Id: I65f8307b717f365bff6d3d99b67601f000631b58 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Implement support for IfStatementLars Knoll2017-06-201-14/+7
| | | | | | | | | | | | | | | | | | Change-Id: I5269c0957f9da02f31ab5940a66923522f93a30b Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Implement support for conditional expressionsLars Knoll2017-06-201-29/+15
| | | | | | | | | | | | | | | | | | Change-Id: Ifcd57713e1cfa9514d3955e26f739a359cdaa8e5 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Fix unopsErik Verbruggen2017-06-201-44/+87
| | | | | | | | | | | | | | | Change-Id: I0a952cf5c834c1a8c3ee5c327af1913aff56d3b8 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | add closure supportErik Verbruggen2017-06-201-3/+10
| | | | | | | | | | | | | | | Change-Id: Ib1e752119a5330d44f420035820680a476f6a530 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Fix FieldMemberExpressionsLars Knoll2017-06-201-1/+1
| | | | | | | | | | | | | | | | | | Change-Id: I84fa3fc687601cd2e5cfaf4b7745341d88c8d9fd Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Support CallExpressionsErik Verbruggen2017-06-201-17/+35
| | | | | | | | | | | | | | | Change-Id: I7d44c177e795f2392f6c9e582e4a28d593837a62 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Avoid moves between temps that are not requiredLars Knoll2017-06-201-4/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reference can have an associated temp to hold the loaded Name, Member or Subscript expression. In many cases, those can get passed on to the next reference that stores them to avoid internal temp->temp copies. Change-Id: I676715935009a54b6d978003b841ee9088a1ca39 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Optimize constant to temp assignmentErik Verbruggen2017-06-201-8/+14
| | | | | | | | | | | | | | | Change-Id: I20b7a4d6780522cb832f6110c8462834d3c5ed62 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Fix a bug in Reference::store()Lars Knoll2017-06-201-1/+1
| | | | | | | | | | | | | | | Change-Id: Ib06740999846ca3c3c68f95df71bdc7cf1ca443c Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Properly implement Reference::fromMember/fromNameLars Knoll2017-06-201-3/+2
| | | | | | | | | | | | | | | Change-Id: I10374be9cf3e0c245bd71c3b32e9974fcf45c8ba Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Support for some more binary and unary operationsErik Verbruggen2017-06-201-47/+32
| | | | | | | | | | | | | | | | | | | | | | | | And some cleanups to the output of the bytecode dumper. Change-Id: I62fa5fbf87319118a4ba5f641652f8556cc16e07 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Add array member accessErik Verbruggen2017-06-201-49/+28
| | | | | | | | | | | | | | | Change-Id: I4ef87c78ad475e4d7006e36c0acff6314999ee6c Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Refactor ReferenceLars Knoll2017-06-201-37/+110
| | | | | | | | | | | | | | | Change-Id: I30ab4ced1fcb8b9a7c7baed8faf7094a919c8603 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Add Reference to codegen's result and start using itErik Verbruggen2017-06-201-417/+569
| | | | | | | | | | | | | | | | | | | | | Used in unary operations and assignments and variable initialization. Change-Id: I72babcead5ffba078ddf107d8325c9d9c4ef9ba3 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Implement support for string and regexp literalsLars Knoll2017-06-191-2/+12
| | | | | | | | | | | | | | | Change-Id: I4475bb9cbfb8ac545c5bd7fcd0f93d0695b122c7 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Add support for true/false literalsLars Knoll2017-06-191-2/+2
| | | | | | | | | | | | | | | Change-Id: I87def95f5bb2524785a4c5a2a9c601ba6451dd2e Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Also dump function name when dumping the byte codeLars Knoll2017-06-191-1/+4
| | | | | | | | | | | | | | | Change-Id: If3fb51d544d7a379f14d36ca5d7c843cbe8d2859 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Add bytecode dumperLars Knoll2017-06-191-0/+3
| | | | | | | | | | | | | | | Change-Id: Ifd63cf604e66f46329472f82a46d37194a1b39eb Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>