- 28 Jun, 2016 1 commit
-
-
Marius Wachtler authored
before this change we had a fixed number of equal size slots inside an IC. Because of the large difference in rewrite sizes a fixed slot size is not ideal. We often ended up with too large slots which prevented us from emitting more slots. (or very large ICs in general which are bad for memory usage and the instruction cache) With this commit we will start with a single slot with the size of the whole IC and then decreasing its size to the actual bytes emitted and creating a new slot which starts directly at the end of the previous slot. We will repeat to to this until the space left is smaller than the number of bytes the last slot required. This makes it a little bit less likely that we will be successful in overwritting an existing slot but our benchmarks show that it is still a large win on all our benchmarks. Some notable changes are: - we pick the slot to rewrite much earlier now and prevent it from getting rewritten while we rewrite using num_inside = 1 the reason is that we would otherwise not know how big the slot is - when we resize a slot we have to patch the failing guard jumps to the address of the next slot
-
- 26 Jun, 2016 2 commits
-
-
Marius Wachtler authored
enable the clang travis CI build again
-
Marius Wachtler authored
This reverts commit d1b799e5.
-
- 20 Jun, 2016 1 commit
-
-
Kevin Modzelewski authored
Add some helper API to Pyston.
-
- 17 Jun, 2016 10 commits
-
-
Marius Wachtler authored
rewriter+bjit: remove duplicate getattrs, misc codegen improvements
-
Marius Wachtler authored
this saves a few bytes by replacing some movabs imm64, reg with smaller instructions
-
Marius Wachtler authored
before when we allocated scratch space we always needed one more reg to store the address of the scratch space this address is a constant stack offset so this was not needed because it can be recalculated like to a constant value
-
Marius Wachtler authored
e.g. relative or absolute using a temp register
-
Marius Wachtler authored
this transform some xdecrefs to decrefs and removes some calls of assertNameDefinedHelper
-
Marius Wachtler authored
-
Marius Wachtler authored
problem was that the bumped the variable to late which caused an extra spill
-
Boxiang Sun authored
-
Boxiang Sun authored
I think we need a place to test new added C API. And Pyston missed PySet_Size implementation(already declared it). Add and test it.
-
Kevin Modzelewski authored
Add more line numbers
-
- 16 Jun, 2016 11 commits
-
-
Kevin Modzelewski authored
We've been a bit lazy about adding line numbers to all ast nodes. This is an inconvenience when the tracebacks are bad/wrong, and it's also causing issues for testing code that wants to look at the line at which something failed. So I added line numbers to a whole bunch more nodes. There are still quite a few that don't have line numbers, but many of them are harmless, so I tried to identify the ones that matter. I also added some assertions to make sure that bad (non-positive) line numbers don't escape to the user.
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
This issue is that type analysis is stronger than irgen. Specifically here, type analysis knows that the phi isn't required and propagates the type across BB's, but irgen conservatively promotes to UNKNOWN.
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
Fix some leaks related to signals
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
The IR we generated looked something like this: 1: i64 %a = doIC() 2: checkPendingCalls() 3: Box* %b = (Box*)%b The problem is that the refcounter only knew about %b, starting on line 3. So for line 2, the refcounter didn't think it needed to decref %a if an exception was thrown. So the first thing this commit does is it adds check that when we refcount-track a value, if it is a cast, then the cast must be right next to the thing it is casting. This is stricter than we need but it should be easy enough to do and be sufficient. Another approach would have been to have the refcount checker be able to track the non-box-like values, ie track %a in the above example. This would need some checking to make sure that people didn't forget to track that. In the end I thought this would be simpler. The second thing is it adds a helper function createAfter that inserts the cast in the right location. This could have worked by having createIC do the casting itself. But this was a little bit tricky since some callers want to know the Instruction of the call itself, and if createIC only returned the cast then those would get confused. It could have returned both, but that seemed complicated.
-
Kevin Modzelewski authored
We would leak refs if an exception was thrown via the pending-calls handler.
-
Kevin Modzelewski authored
Previously we would print out all leaked objects at program exit. But this is problematic since it includes both directly leaked objects (the ones we are interested in), and indirectly leaked objects (which only got leaked by being referenced from another leaked object). This uses the cycle collector infrastructure to figure out what objects have non-heap, ie leaked, references remaining. Hopefully this should help us debug cases where there are hundreds of objects remaining.
-
Kevin Modzelewski authored
-
- 15 Jun, 2016 4 commits
-
-
Boxiang Sun authored
-
Marius Wachtler authored
perf: add a script which allows 'perf report' to disassemble JITed functions
-
Marius Wachtler authored
-
Boxiang Sun authored
In Pyston the PyCodeObject just an opaque pointer. Which can't calculate the number of freevars. Implement a function to check whether there has freevars in BoxedCode object.
-
- 13 Jun, 2016 5 commits
-
-
Marius Wachtler authored
Remove redefinition error in pyport.h
-
Marius Wachtler authored
-
Marius Wachtler authored
add prefix to Pyston defined True and False
-
Marius Wachtler authored
download cython from github instead of cython.org
-
Marius Wachtler authored
cython.org is currently down
-
- 12 Jun, 2016 3 commits
-
-
Boxiang Sun authored
The current pyport.h missed somethings due to it started with an empty pyport.h. And add things increfmentally from CPython, now copied all things in CPython pyport.h.
-
Boxiang Sun authored
bool is technically a subclass of int. Revert that Pyston change to support some extensions.
-
Boxiang Sun authored
Some extension will use `True` and `False` from other package. For example, X11 defined `True` and `False` in `/usr/include/X11/Xlib.h`. Which will cause name conflict when try to build extension with pygame. For now, I think add a prefix to these is a acceptable sulotion. And also use Py_True and Py_False as much as possible.
-
- 11 Jun, 2016 3 commits
-
-
Marius Wachtler authored
make more list unit test pass
-
Marius Wachtler authored
Improve REPL support
-
asaka authored
-