- 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 2 commits
-
-
Marius Wachtler authored
perf: add a script which allows 'perf report' to disassemble JITed functions
-
Marius Wachtler authored
-
- 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 5 commits
-
-
Marius Wachtler authored
make more list unit test pass
-
Marius Wachtler authored
Improve REPL support
-
asaka authored
-
Cullen Rhodes authored
This fixes a bug with expressions inside loops in interactive mode that resulted in expressions not being printed: >> for i in range(3): ... i ... >> Python prints the value every iteration: >> for i in range(3): ... i ... 0 1 2 >>> The same also applies to while loops.
-
Kevin Modzelewski authored
vregs: reuse block local vregs
-
- 09 Jun, 2016 1 commit
-
-
Marius Wachtler authored
user visible: used for all non compiler generated names, name could be used in a single block or multiple all frames contain atleast this vregs in order to do frame introspection cross block : used for compiler generated names which get used in several blocks or which have closure scope single block: used by compiler created names which are only used in a single block. get reused for different names we assign the lowest numbers to the user visible ones, followed by the cross block ones and finally the single block ones. we do this because not all tiers use all of the vregs and it still makes it fast to switch between tiers.
-
- 08 Jun, 2016 11 commits
-
-
Kevin Modzelewski authored
Fix some issues that crop up on 15.10
-
Kevin Modzelewski authored
not very happy about this but it's better than having a flaky CI...
-
Marius Wachtler authored
Some fixings that let scipy tests pass.
-
Marius Wachtler authored
major bjit improvements
-
Marius Wachtler authored
float.cpp: now that we have float.c use some of the functions directly
-
Boxiang Sun authored
CPython has this check. I think Pyston missed it when switch to the CPython way of handling some inheritance functionality. References: CPython code: https://github.com/python/cpython/blob/2.7/Objects/typeobject.c#L4074 Pyston commit that switch to the CPython way of handling it: https://github.com/dropbox/pyston/commit/251f417abd68c4b018217ae3b1901b3f1687384d#diff-a5cc3ff8c761716ba33b328ad1d042dfR1499 And also add an extension for test.
-
Boxiang Sun authored
complexTruediv will pass subtype of float to complexDivFloat, so loose the type check in complexDivFloat, use PyFloat_Check instead check the type exactly.
-
Boxiang Sun authored
For some struct member in Pyston itself, add `const` qualifier, for exenstion, do not add `const` for compatibility reason.
-
Boxiang Sun authored
Pyston's PyInt_AsLong implementation didn't check tp_as_number->nb_int, use CPython implementation with some Pyston modifications to avoid recursive call.
-
Kevin Modzelewski authored
I think LLVM-tier compilation times got worse with refcounting, which is why we've seen these tests time out more often lately.
-
Kevin Modzelewski authored
-
- 07 Jun, 2016 2 commits
-
-
Marius Wachtler authored
-
Marius Wachtler authored
this also workarounds the problem we were having on ubuntu 16.04 where we have to use std::isinf instead of isinf()
-