Commit Graph

34 Commits

Author SHA1 Message Date
Erik Verbruggen 399eff6704 Changed the interpreter and compiler backends to move consts.
See https://codereview.qt-project.org/39510 for details.

Change-Id: I308364cd7d66ad2fd12e6ab7e185882fe8d1795e
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2012-11-14 13:41:42 +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
Erik Verbruggen 2a8d0b894b Added different output types to LLVM backend to ease debugging.
While in that area of code, also throw in the pass-managers for
some extra optimisations during compilation.

Change-Id: I1239ab9d21fc50b2e65c2f9d77a03ae593b607bc
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2012-11-14 08:40:37 +01:00
Erik Verbruggen cdfbf401e1 Changed the LLVM backend to also support the LLVM JIT.
This is useful for quick LLVM codegen testing.

Change-Id: I45778371375b903e154222c47b15411d08085ae5
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2012-11-12 23:15:15 +01:00
Erik Verbruggen c9c2b0c541 Fix LLVM backend compilation.
Change-Id: I326cf2531a600fd09b888e9955052b29624ccdbe
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2012-10-24 11:40:11 +02: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 6d05c917ce Fix: implement missing virtual method.
Change-Id: Iec6a70155ff2343dafa2116fa54740e891539c61
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2012-10-22 11:05:02 +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
Erik Verbruggen 3fd7a3a8e9 Moved LLVM specific code out of main.cpp.
Change-Id: I16c79667625d5034acb91cec13c22ed58b74984f
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2012-10-18 12:00:05 +02:00
Erik Verbruggen 0e92d6eac2 Fix LLVM code generation to call the right methods.
Change-Id: Ia63342d2808ca2e3cdd5b19e94054786cc34c495
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2012-10-18 11:02:14 +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
Roberto Raggi 1e74b19d87 Fix LLVM code generation for unary expressions 2012-06-07 15:49:50 +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 01bca93863 Warn about unimplement assignments. 2012-06-06 14:16:11 +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 3631bac985 Move the Alloca instructions at the beginning of the function. 2012-06-06 10:00:28 +02:00
Roberto Raggi 1dc551ae9b Fix the return value of calls. 2012-06-06 09:37:41 +02:00
Roberto Raggi 0829b00d57 Fix code generation for IR::Call nodes. 2012-06-05 15:54:37 +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
Roberto Raggi 4cd31221ec Initial work on the LLVM-based AOT compiler. 2012-05-31 19:02:05 +02:00