aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/compiler/qv4codegen.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* | | Make sure we don't accept literals as lvaluesLars Knoll2017-06-211-0/+3
| | | | | | | | | | | | | | | Change-Id: I06f475337944554842b4c0a05f0c88617579e2cb Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Fix recursive array definitionsLars Knoll2017-06-211-2/+11
| | | | | | | | | | | | | | | | | | | | | Make sure '[[1, 2], 3]' produces the correct result. Change-Id: I95efcf4cab20badfffd31429a57fb73cdf241518 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Fix delete operatorLars Knoll2017-06-211-23/+23
| | | | | | | | | | | | | | | | | | | | | | | | Use a switch statement so we cover all cases of Reference types. Fixes a crash for 'delete this'. Change-Id: Ib3575fb2176cd9493211a716132d2f768e0f0ac7 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Throw syntax error if arguments or eval are used as lvalues in strict modeLars Knoll2017-06-211-7/+15
| | | | | | | | | | | | | | | Change-Id: I4c46537e3a4f3c2c22efea323dc8a95c1078c75f Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Add support for post increment/decrementErik Verbruggen2017-06-211-49/+28
| | | | | | | | | | | | | | | Change-Id: Ie3f03a548105fe49d29e3d60bf823435f21b0340 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Fix for for(... in ...)Lars Knoll2017-06-211-6/+6
| | | | | | | | | | | | | | | Change-Id: I7edb3ec722238c0229ca6d0f850cd15bb1bc6937 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Fix nested function callsLars Knoll2017-06-211-2/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | If one argument of a function call was itself calling a function (or an object/array literal), we'd override the arguments of the outer function call. Change-Id: I41bc93c1217283f22b02e881f96b04286a4c7e7e Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Fix exception handlingLars Knoll2017-06-211-17/+81
| | | | | | | | | | | | | | | | | | | | | | | | Fix all exception handling related test failures in test262. Change-Id: Iba50238627c31705a4878b43abbb8f20f0ecee88 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Fix a couple of compiler warningsLars Knoll2017-06-211-0/+4
| | | | | | | | | | | | | | | Change-Id: If30064de5710b7b9e1aaa42ce1279de643f44e85 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Reserve call args and return value before any other tempsErik Verbruggen2017-06-201-8/+8
| | | | | | | | | | | | | | | Change-Id: Ia24a5d301be2f74ac073c37ddda45f6c0ac8ed8e Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Fix calls where the base is a Reference::NameErik Verbruggen2017-06-201-0/+17
| | | | | | | | | | | | | | | Change-Id: Id86a034ba1d3eaec975704875509eb95e014fa7b Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Fix 'arguments' initializationErik Verbruggen2017-06-201-1/+1
| | | | | | | | | | | | | | | Change-Id: I6fe35924b42908f656363ae1af07a7d8cd67a7ea Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Fix 'this' handling and make it an rvalue onlyErik Verbruggen2017-06-201-7/+7
| | | | | | | | | | | | | | | Change-Id: I4e99b81e5b73b7eb36d3f05bdf3b9f03d59f882f Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Fix assertion in LocalForeachStatementLars Knoll2017-06-201-1/+3
| | | | | | | | | | | | | | | Change-Id: I7386769ed62de8a5e86e08c23671f8e9e5a5be3c Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Remove unused codeLars Knoll2017-06-201-27/+0
| | | | | | | | | | | | | | | Change-Id: Ia891fc48572a5691f4129cef8e9a3ed6871565b9 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Port JSCodeGen in qqmlirbuilder over to new parserLars Knoll2017-06-201-10/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement QML support in Reference. Implement the fallbackNameLookup() method for QML, and emit bytecode to load the qml context and imported script temps in beginFunctionBodyHook() Change-Id: I7e052f10ec064097ab1c1f51d776622a4176ce99 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Reduce usage of _functionLars Knoll2017-06-201-35/+35
| | | | | | | | | | | | | | | Change-Id: I9a64083afe8e23f506735c04dedb8978ddcfd45d Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Remove a couple of references to the IRLars Knoll2017-06-201-93/+70
| | | | | | | | | | | | | | | Change-Id: I716000a6932a6b3d3f6c9f0573747b9c4b8e0e6b Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | No need to initialize locals to undefinedLars Knoll2017-06-201-1/+0
| | | | | | | | | | | | | | | | | | | | | The runtime already does that for us. Change-Id: Iddde1a3fe4775b8a30fc887296f56fc3ebace12f Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Handle loads/stores of References betterLars Knoll2017-06-201-49/+94
| | | | | | | | | | | | | | | | | | | | | | | | | | | This is still not ideal and creates too many move instructions, but at least it avoids repeated loads and stores into temps to the largest part. Change-Id: I5286a6598461b229aa12cf88b711922e69f46b70 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Use the proper call for Member referencesLars Knoll2017-06-201-6/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | This is required so the this object gets set up correctly. crypto.js passes now :) Change-Id: I995ffe40b3fee6d8a7b1f9e2d7a9887cd8a87275 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Get back some line number informationLars Knoll2017-06-201-17/+7
| | | | | | | | | | | | | | | Change-Id: I7d7845a9d8d147bd363c0f60df41066fab355272 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Properly implement the function prologueLars Knoll2017-06-201-19/+11
| | | | | | | | | | | | | | | | | | | | | Set locals to undefined and declare them for global code Change-Id: I41848f1463fa402a3c2b1f67117be86cc0d697a1 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | 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>