Commit Graph

43 Commits

Author SHA1 Message Date
laknoll aaea2a9a96 Proper NaN boxing for Value
All JS types are now encoded in a 8 byte data
structure. We use the 52 bits that are unused
when a double is a NaN to encode all other types
that can be stored inside a double.

This is being done by using a few bits to determine
the type, and up to 48 bits for data. This works
even on x64, as addresses (ie. pointers) are limited
to 48 bits on these platforms.

For most other types (except doubles), we store the
data in the lower 32 bits of the double.
2012-09-19 23:28:50 +02:00
Roberto Raggi a1eb099a4a Initial work on `eval'. 2012-06-26 15:36:03 +02:00
Roberto Raggi 48a0b3c96b Do not try to optimize the `global object'.
This should simplify the implementation of `eval' and `with'.
2012-06-26 15:17:31 +02:00
Roberto Raggi 93e43fb328 Add support for global, eval and function code. 2012-06-13 11:16:35 +02:00
Aaron Kennedy 6ce83a38c9 Begin to implement moth vm 2012-06-12 18:14:13 +01:00
Roberto Raggi f3933836fb Fix possible crash when executing invalid code. 2012-06-12 12:10:33 +02:00
Aaron Kennedy b759b5f984 Add skeleton moth vme 2012-06-11 17:59:36 +01:00
Aaron Kennedy ac7f4805c1 Add moth skeleton 2012-06-11 12:27:29 +01:00
Roberto Raggi 427114d740 Increase the size of the code cache.
This is just a temporary hack, we can't continue to use
a contiguous region of memory to store the code.
2012-06-11 09:32:00 +02:00
Aaron Kennedy 6b79f27580 Remove dead code 2012-06-08 11:35:16 +01:00
Roberto Raggi 60006079bb Resolve the library name 2012-06-06 18:02:34 +02:00
Roberto Raggi ff76b6afa1 Use O2-level inlining 2012-06-06 11:06:00 +02:00
Roberto Raggi 0288e49e8c Fix the targets 2012-06-06 10:36:59 +02:00
Roberto Raggi b353942bfa More work on the AOT. 2012-06-05 18:32:52 +02:00
Roberto Raggi 9551c6527a Some more work on the LLVM-based AOT compiler. 2012-06-05 12:28:58 +02:00
Roberto Raggi bf46892ccd Move the defnition of the QML/JS Context to qmljs_runtime.h 2012-06-05 10:47:04 +02:00
Roberto Raggi 4cd31221ec Initial work on the LLVM-based AOT compiler. 2012-05-31 19:02:05 +02:00
Roberto Raggi d65f9ddff1 Generalized instruction selection.
This will simplify the instruction selection pass for
different architectures.
2012-05-31 17:32:49 +02:00
Roberto Raggi 538ed5c57c Generate cx-instructions for releational expressionsa. 2012-05-30 12:42:27 +02:00
Roberto Raggi 7e7df11464 Fix the initialization of the ECMA library. 2012-05-25 17:45:15 +02:00
Roberto Raggi fc6f96166f Refactored Object 2012-05-25 13:43:30 +02:00
Roberto Raggi a5229e821d Propagate exceptions 2012-05-25 11:55:50 +02:00
Roberto Raggi 86183598a3 Throw exceptions 2012-05-23 18:50:24 +02:00
Roberto Raggi 84467cf606 Fix constructor calls 2012-05-21 10:26:13 +02:00
Roberto Raggi 860bd23e4d Improve [[DefaultValue]] 2012-05-18 15:28:59 +02:00
Roberto Raggi 086e775da6 Some refactoring and some initial work on the Date object. 2012-05-18 10:10:36 +02:00
Roberto Raggi a34f11737f Simplified the compiler. 2012-05-16 19:00:31 +02:00
Roberto Raggi 6ffb058b18 Cleanup function prototypes. 2012-05-15 10:53:33 +02:00
Roberto Raggi d9c263385c Add methods to allocate JS entities. 2012-05-15 10:35:19 +02:00
Roberto Raggi 4d77fb3a9b Introduce the ExecutionEngine. 2012-05-14 17:12:25 +02:00
Roberto Raggi b8d6b82bcc Initial work on the Number object. 2012-05-14 16:35:04 +02:00
Roberto Raggi 3a7f8a31ed Initial work on the String object. 2012-05-14 16:03:10 +02:00
Roberto Raggi a97bc91c7f Fix nested functions 2012-05-14 10:43:36 +02:00
Roberto Raggi 14ce5bb389 Fix constructors and some work on the String prototype. 2012-05-10 12:14:20 +02:00
Roberto Raggi c75421ee43 Add the String object constructor. 2012-05-10 10:56:02 +02:00
Roberto Raggi 908cc65547 Add callValue. 2012-05-09 15:47:55 +02:00
Roberto Raggi 5282ff06df Initial support for object literals 2012-05-09 11:05:51 +02:00
Roberto Raggi 6f3022a3d4 Added a simple syntax checker. 2012-05-08 13:24:48 +02:00
Roberto Raggi 08c29dabd8 Improve frame instantiations. 2012-05-08 11:13:02 +02:00
Roberto Raggi dc716f8d37 Add naive support for function calls. 2012-05-07 17:38:17 +02:00
Roberto Raggi 0103f7bd2d Move the instruction selection pass. 2012-05-07 14:46:37 +02:00
Roberto Raggi 1318bda1b2 Remove boehm GC 2012-05-04 15:23:18 +02:00
Roberto Raggi 47062ff244 Initial import 2012-05-03 17:08:41 +02:00