Commit Graph

40 Commits

Author SHA1 Message Date
Lars Knoll d7416a80fa Rename Context to ExecutionContext
This is so it'll map to the name used in the
ECMAScript spec once the other refactorings
are in.

Change-Id: I8dcc7ad43b457ce50e7123c57bc4c770bcda8d11
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2012-11-19 10:28:56 +01:00
Lars Knoll 1cbec5b889 Remove unused variable and method
Change-Id: I357f3062f58e76c1749c9818426be5c0eedf3327
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2012-11-15 13:39:16 +01:00
Erik Verbruggen a09d75dd1f Added more built-ins to the llvm backend and runtime.
Change-Id: I7c63395bc80ce8d37d04f1102b02220a54050d06
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2012-11-14 12:01:52 +01:00
Lars Knoll 5f06c71bc1 Proper exception handling
Implement exceptions using setjmp/longjmp. The
advantage is that this removes all exception
handling overhead from regular code, the only
code that still has a (very small) overhead
is the try{} catch() {} statement.

Change-Id: I43d6a60dfc9dfd4b7a20d2e99ab0a9315b4d8a2f
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2012-10-24 08:46:49 +02:00
Erik Verbruggen af06d1a1a5 More LLVM code generation. This should complete the expressions.
Change-Id: Ic920ceb85cab38093b565acd1c14aeddf20d0bb3
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2012-10-22 11:07:27 +02:00
Erik Verbruggen acfb62cc2e Added LLVM code generation for in-place operators.
E.g. +=, <<=, etc.

Change-Id: Iffd5eac413e3c3714fedbab58415d9dc4ba42fa6
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2012-10-19 15:12:11 +02:00
Lars Knoll 617240f92a More changes to the new calling convention
Change-Id: Icc22f2ed342ced9eac0d62307151acca8031d2c2
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2012-10-17 14:40:40 +02:00
Lars Knoll f5b98f6386 Generate correct code when calling values
__qmljs_call_value was still using a pointer to a Value.
In addition, qcv4isel_masm.cpp was using a wrong order
of the arguments.

Change-Id: I0414aa732ae8074420e4f11525f5b04712cc1bab
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2012-10-17 09:35:39 +02:00
Lars Knoll bd0e6209dd Convert most operations to the new calling convention
Change-Id: I2dbf61b215a03a3c44c9c6bc431859bb9d067625
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2012-10-17 09:32:13 +02:00
Lars Knoll 69e7dfe5f4 Convert some more methods to the new calling convention
Change-Id: Ieeeb86d94d1094213430a1b4afa0d3a91785ac45
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2012-10-17 09:11:03 +02:00
Lars Knoll bb09c83bcf Converting more runtime methods to the new calling convention
Change-Id: I331e7ebe6479bc5b6bac9cf4e3e6506a1cae1053
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2012-10-16 17:26:25 +02:00
Lars Knoll 537c5fa10d Move conversions to new calling convention
Change-Id: Iec01835b4fd27d8b71b7e709b05bcc757d09e417
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2012-10-16 16:57:24 +02:00
Lars Knoll f730f7526b More conversions to new calling convention
Change-Id: Iac67c9923bc3d7af76bb490cc8ca7cd3e922e192
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2012-10-16 16:57:18 +02:00
Lars Knoll 644804d6b8 More conversions to new calling convention
Change-Id: I6002715cc3f5c22d90a9ade6ae2152c2c3c8ebb2
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2012-10-16 16:57:13 +02:00
Lars Knoll 3cdb661ee0 Converting more methods to the new calling convention
Change-Id: I5199a9e5439644cc259f131c8b0ba6a941989615
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2012-10-16 16:57:09 +02:00
Lars Knoll a1475002d6 Converting more runtime methods.
Change-Id: I9e5d73004e377cff2819cb82240d50e73c8bda94
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2012-10-16 16:57:05 +02:00
Lars Knoll c63e799fc2 Convert Value constructors to new calling convention
Change-Id: I433f72666499e660618b061cfcf3407f5f9bb166
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2012-10-16 16:57:01 +02:00
Lars Knoll 013098cae8 Further convert runtime methods to the new calling convention
Value bassed argument passing.

Change-Id: I95e49ae301221e36946c2ce4f25081461513a6bb
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2012-10-16 16:56:52 +02:00
Lars Knoll d4e6330737 Start changing signatures of the runtime to being value based.
Value's should be passed by value and returned by value between JIT
and the JS runtime. This should give us better performance on
x86_64 and ARM.

Change-Id: I4fa286c6164f0143adb72d07c737fa273c8a5eb6
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2012-10-16 16:56:47 +02:00
Simon Hausmann c13a95361a Add missing license headers
Change-Id: I59d602a0f2c1fefb03994ed32a3d697b176791ff
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2012-10-12 10:51:06 +02:00
Lars Knoll bd0ff1b50d Remove almost all uses of __qmljs_init_string
Change-Id: I88130ec39958c75b70d898a352423908ac2ef1d4
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2012-10-12 09:17:40 +02:00
Lars Knoll 6961f98a85 Remove __qmljs_init_(number|boolean)
Change-Id: Iae59dfea39e44931bb2f7a6436bd2f1491bbf843
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2012-10-12 09:16:21 +02:00
Lars Knoll e28e4e1ac6 Introduce an integer type for Value
The type is not being used yet, but all runtime
methods should be updated and able to deal with
integer Values correctly.

In addition started to clean up the use of some of
__qmljs_* Value constructors.

Change-Id: I1cb2169a5731f6adcc990dcbc92bc96aa008079f
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2012-10-12 09:15:16 +02:00
Roberto Raggi 56de925f00 Generate LLVM code for constructor calls 2012-06-07 15:28:45 +02:00
Roberto Raggi 5c869a3c81 Delete properties 2012-06-07 14:28:42 +02:00
Roberto Raggi 80188db9d8 Generate LLVM code for the `this-expression'. 2012-06-06 15:58:21 +02:00
Roberto Raggi 55287cde51 Initial work on exceptions for the AOT compiler. 2012-06-06 15:30:50 +02:00
Roberto Raggi 9366999ac2 Generate code for closures. 2012-06-06 14:59:42 +02:00
Roberto Raggi 648f1462ab Lower IR::Name nodes. 2012-06-06 14:11:28 +02:00
Roberto Raggi c3f50fdb95 Generate LLVM code for MoveMember 2012-06-06 13:43:50 +02:00
Roberto Raggi f0ee49c6a4 Lower subscripts 2012-06-06 13:30:03 +02:00
Roberto Raggi b3fbdb62f7 Lower IR::Call and IR::New 2012-06-06 11:50:13 +02:00
Roberto Raggi b1e62cc607 Generate LLVM code for member expressions 2012-06-06 11:30:56 +02:00
Roberto Raggi ad9816514f Compile simple IR::New nodes 2012-06-06 10:08:51 +02:00
Roberto Raggi b353942bfa More work on the AOT. 2012-06-05 18:32:52 +02:00
Roberto Raggi 89bb85c9c4 Start generating LLVM code for IR::Call nodes. 2012-06-05 15:26:21 +02:00
Roberto Raggi 7f3a694adc LLVM code for unary expressions 2012-06-05 15:03:49 +02:00
Roberto Raggi a48ece9a5c Generate LLVM code for the binary expressions 2012-06-05 14:30:04 +02:00
Roberto Raggi 437c25fe33 Generate LLVM code for the conditional jumps. 2012-06-05 13:15:03 +02:00
Roberto Raggi 9551c6527a Some more work on the LLVM-based AOT compiler. 2012-06-05 12:28:58 +02:00