- 09 May, 2016 1 commit
-
-
Kevin Modzelewski authored
bitset begin() function fix
-
- 08 May, 2016 7 commits
-
-
Marius Wachtler authored
refcounting fixes for numpy in PyTuple_GetSlice, PyErr_SetExcInfo and PyErr_GetExcInfo
-
Marius Wachtler authored
-
Dong-hee Na authored
-
Kevin Modzelewski authored
Fix test_set.py
-
Kevin Modzelewski authored
It fetches a webpage from a third-party server ("example.com") and verifies the return code. For some reason it's failing, both for us and for CPython.
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
This time it was if __eq__ throws.
-
- 07 May, 2016 4 commits
-
-
Kevin Modzelewski authored
It was failing on master due to some of the test cases checking for immediate destruction.
-
Kevin Modzelewski authored
Marius fixed the propagate-C++-exception case, and this commit adds the to- and from-CAPI cases as well.
-
Kevin Modzelewski authored
We were missing a guard and we ended up calling the wrong function :/ Still some other issuse with this test
-
Kevin Modzelewski authored
Fix the lost-ref-from-oargs issue
-
- 06 May, 2016 18 commits
-
-
Kevin Modzelewski authored
They were both failing on master: - test_dumbdbm was failing in a test case that writes out some data to a database, closes it, then reopens the db and expects to be able to read the data. - test_memoryview expected some weakrefs to get cleared at the right time. test_socket.py appears to "pass" -- it exits with code 0, but it spams a bunch of error messages from other threads.
-
Kevin Modzelewski authored
The Rewriter will automatically refcount objects represented as RewriterVar's, but if you store one as an attribute somewhere, it can't keep track of that. So add a registerOwnedAttribute() function that lets you say that there is a reference that lives in an attribute (stored in a memory offset) of another RewriterVar.
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
Fix some pyexpat issues
-
Marius Wachtler authored
bjit: directly emit recordType again
-
Marius Wachtler authored
the comment was totaly not true, result can't be 0 for our uses
-
Marius Wachtler authored
cleanup abandon generators
-
Marius Wachtler authored
-
Marius Wachtler authored
this makes sure that we don't generate additional cycles to the generator
-
Marius Wachtler authored
we create quite strange lambda cfg nodes but it should be fine I guess
-
Marius Wachtler authored
in order to break cycles we need to traverse all generator owned object at yields. The interpreter is fine because it stores all objects inside the vregs so they will already get visited. For the llvm jit pass all owned object to the yield call as vararg argument. We will currently leak (move objects to gc.garbage) when a generator is involved in a cycle because our PyGen_NeedsFinalizing() is much more conservative.
-
Marius Wachtler authored
the idea is that stealing the value allows us to immediately free the variable in more case when it's unused otherwise we would always have to continue the generator in order to decrease the refcount
-
Marius Wachtler authored
this can happend when a deopt() call inside the llvm tier throws. We would catch the exception in order to do some decrefs and than reraise it from the disabled frame.
-
Marius Wachtler authored
Previously we only supported one unwind to happen at a given time. The change is unfortunately quit ugly :-( but should work.
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
We were double-registering its exception type as a static constant.
-
Kevin Modzelewski authored
Trying to reduce allocations in refcounting branch
-
Kevin Modzelewski authored
Add some liveness information to the cfg
-
- 04 May, 2016 6 commits
-
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
I had added an allocation to deal with the requirements refcounting added. To remove that allocation, I added a "SmallUniquePtr" class which is similar to unique_ptr but it allocates the object in-line. It's a bit tricky to use since if the containing object gets moved around then the pointers become invalid.
-
Kevin Modzelewski authored
Previously, to replace a refcounted object in memory, we would do something like array->getAttr(offset)->setType(OWNED); array->setAttr(offset, new_val); The problem is that this ends up emitting something like x = array[offset]; Py_DECREF(x); array[offset] = new_val; which is not safe, since x can have a destructor that runs. In this particular case, the destructor changed the value of array[offset]. It's actually pretty hard to get the right behavior (decref after setting the new value) from outside the rewriter class, so add a new replaceAttr that does these steps.
-
Kevin Modzelewski authored
By adding a 'is_kill' flag to AST_Name nodes, which say that this is the last use of this name. This handles some common cases of keeping temporaries alive for too long. For some rare cases, there is no AST_Name that is a last use: for example, the iterator object of a for loop is live after every time it is used, but dies when exiting the loop. For those, we insert a `del #foo` instead. The interpreter and bjit use these flags to remove temporaries from the vregs. The LLVM jit ignores them since it has its own way of handling lifetime. It ignores any `del` statements on temporary names as an optimization. This does not handle decref'ing temporaries on an exception.
-
Kevin Modzelewski authored
-
- 03 May, 2016 2 commits
-
-
Kevin Modzelewski authored
Fix another raise-before-stealing-argument bug
-
Kevin Modzelewski authored
-
- 02 May, 2016 2 commits
-
-
Marius Wachtler authored
Fix the test_string segfault error
-
Boxiang Sun authored
-