- 06 Jul, 2015 9 commits
-
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
Since we don't memset the unicode allocations any more, and we now use a precise gc handler, we have to be careful that unicode objects are valid enough whenever a collection could happen. The issue was that "unicode->str = gc_alloc(...)" could cause a collection, in which case the collector would go and see a bogus value in the ->str field. Now, do the str allocation first (since it is UNTRACKED) and then do the precise allocation second.
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
Inlining the allocation + object initialization saves a decent amount of overhead, since most of the properties will be fixed. For example, the size of the main allocation is fixed, so we can directly allocate it from the correct SmallArena bucket. We can also skip all the indirect function calls.
-
Kevin Modzelewski authored
add babel to our extra tests
-
Kevin Modzelewski authored
baseline jit: patch block transitions to a direct jump.
-
Kevin Modzelewski authored
Add a new JIT tier which is tightly coupled to the AST Interpreter
-
Marius Wachtler authored
-
Kevin Modzelewski authored
For issue #254, add lt, le, gt, ge to old-style class
-
- 05 Jul, 2015 1 commit
-
-
Kevin Modzelewski authored
assembler: Use 32bit moves if the immediate fits inside 32bit
-
- 04 Jul, 2015 1 commit
-
-
Marius Wachtler authored
Before we emitted a runtime check to check if the block has been JITed or if we have to fallback to the interpreter. Now we always generate a exit to the interpreter if the block is not yet JITed and patch the exit to a direct jump later when we have successfully generated code for the new block. This also removes the epilog and replaces it with a direct 'leave ret' combo which saves space and an additional jump.
-
- 02 Jul, 2015 7 commits
-
-
Marius Wachtler authored
-
Marius Wachtler authored
makes the encoding 4-5byte shorter and works because the upper 32bit will get auto cleared
-
Marius Wachtler authored
This JIT is tightly coupled to the ASTInterpreter, at every CFGBlock* entry/exit on can switch between interpreting and directly executing the generated code without having to do any translations. Generating the code is pretty fast compared to the LLVM tier but the generated code is not as fast as code generated by the higher LLVM tiers. But because the JITed can use runtime ICs, avoids a lot of interpretation overhead and stores CFGBlock locals sysbols inside register/stack slots, it's much faster than the interpreter.
-
Kevin Modzelewski authored
Use less large constants
-
Boxiang Sun authored
-
Boxiang Sun authored
-
Boxiang Sun authored
-
- 01 Jul, 2015 8 commits
-
-
Kevin Modzelewski authored
Preperations for the new JIT tier
-
Kevin Modzelewski authored
Conflicts: src/core/types.h
-
Marius Wachtler authored
IC sizes are guessed...
-
Marius Wachtler authored
It deleted the passed ICSlotRewrite* and there was no way for a caller to know this without looking at the source. Make the ownership explicit by using a std::unique_ptr
-
Marius Wachtler authored
and make code ready for the new JIT tier.
-
Marius Wachtler authored
-
Kevin Modzelewski authored
Conflicts: src/runtime/iterobject.cpp
-
Kevin Modzelewski authored
add -a flag which outputs assembly of ICs
-
- 30 Jun, 2015 13 commits
-
-
Chris Toshok authored
-
Chris Toshok authored
build sorted vectors for large/huge objects at gc time, and use binarySearch to power ::allocationFrom
-
Chris Toshok authored
-
Kevin Modzelewski authored
fastpath investigations
-
Kevin Modzelewski authored
I think this only gets hit through explicit calls to tuple(), but at one point it was crashing on this codepath which is how I noticed it.
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
Our tuple format is now the same as CPython's, so we can just enable the fast macros again. Little bit of trickiness since they declare their storage array to have a size of 1; I'm not sure how important that is, but let's play it safe and match it.
-
Kevin Modzelewski authored
We already have this for the rest of our code, but it wasn't enabled for C files.
-
Kevin Modzelewski authored
- conservative references into the large/huge heaps are especially expensive - it's nice to know what kind of object we are scanning
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
So we can compare against their latest instead of whatever was in apt.
-
Kevin Modzelewski authored
Notably, to the rewriter. Turns out that a decent amount of the time that used to get allocated to slowpaths is actually time spent in the rewriter, doing successful rewrites.
-
- 29 Jun, 2015 1 commit
-
-
Kevin Modzelewski authored
Take another pass over the failing cpython tests
-