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