- 25 Mar, 2015 3 commits
-
-
Kevin Modzelewski authored
Misc fixes for pip search part 2
-
Kevin Modzelewski authored
print HASNEXT primitive properly
-
Michael Arntzenius authored
-
- 24 Mar, 2015 10 commits
-
-
Kevin Modzelewski authored
We were getting some gc issues with these, I think because there could be GC pointers behind the GC-opaque shared_ptr pointers. Just make impl be a conservatively-allocated object so that the collector will find it while scanning. We still need to explicitly call BoxIterator::gcAlloc if we store a reference (ex for BoxedEnumerate), but this should mean that we keep these alive when they are just on the stack (ex when we do a for-each loop over pyElements). I don't really like how this turned out, but I think the better option is to get rid of the indirection.
-
Kevin Modzelewski authored
Also fix str.rpartition, and add a signal handler for SIGUSR1 that prints out a stack trace. I wanted this because our stack unwinder doesn't work when called from a gdb print command, so it was hard to debug why we were in an infinite loop. Also, fix the '-i' argument so that we get back to the repl if the program throws an exception.
-
Marius Wachtler authored
-
Marius Wachtler authored
-
Marius Wachtler authored
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
It's trickier than just setting all of the attributes, since any updates to either the original dict or to the object's attributes will get mirrored in the other object. I don't know if anyone uses this, but I don't think there's any good way for us to tell if this is going to happen so we just have to be conservative. So, add a new distinction between "types" of hidden classes, and add a new "dict backed" type. Instead of having an array of attributes, has a single attribute which is a dict. There are some pretty tricky corner cases that we don't support yet, such as if you access and save __dict__, then set __dict__, and then try to access the saved version. At least we can detect that and fail.
-
Kevin Modzelewski authored
cmake fix libunwind flags
-
Kevin Modzelewski authored
- Inherit simple_destructor from base classes - Handle unreachable code better - Call reprICAsString instead of reprIC - Fix self-assignment checking bug
-
Daniel Agar authored
-don't pass empty CFLAGS='' when buliding libunwind in release mode -revert libunwind to older version that has per thread caching enabled and match Makefile
-
- 23 Mar, 2015 10 commits
-
-
Kevin Modzelewski authored
(turning up the collection frequency helped with this a lot) - register some memory as a static root - use StlCompatAllocator in the ast_interpreter - zero out memory in the (hopefully uncommon) cases we call PystonType_GenericAlloc - when we realloc() a conservative block, update its recorded size
-
Kevin Modzelewski authored
Make sure the GC sees the fields of BoxedClassobj and BoxedInstances
-
Marius Wachtler authored
-
Kevin Modzelewski authored
misc fixes for running 'pip search'
-
Marius Wachtler authored
-
Marius Wachtler authored
-
Marius Wachtler authored
reduces the parse time for 'import pip' from 120ms to 80ms
-
Marius Wachtler authored
Looks like allocating the BoxedSlice before the arguments caused a issue?!?
-
Marius Wachtler authored
-
Kevin Modzelewski authored
Add some stack frames before where all the exceptions happen. This makes us take some obscenely large amount of time, particularly since we currently generate a traceback for the entire stack when an exception is thrown.
-
- 22 Mar, 2015 1 commit
-
-
Kevin Modzelewski authored
Idea from Marius. This seems to improve exception performance quite a bit, though interestingly also some of the other benchmarks as well.
-
- 21 Mar, 2015 11 commits
-
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
like we had to do for getattrGeneric and setattrGeneric I guess all the other slots will eventually follow as well.
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
And change for loops to instead of calling __hasnext__ directly, to call objmodel::hasnext() which calls tpp_hasnext.
-
- 20 Mar, 2015 5 commits
-
-
Kevin Modzelewski authored
tiny misc improvements
-
Kevin Modzelewski authored
Things are getting pretty messy, but it's an incremental step towards doing things more like CPython which should ultimately make things simpler. The use of the tp_getattro slots (even though they're the CAPI slots) seems to lead to about a ~7% improvement in interpreter-only speed.
-
Kevin Modzelewski authored
ie if we set __getattribute__ on a superclass, we have to update tp_getattro on all subclasses. We've always been broken on this, but this didn't really matter as much until now since we would internally check __getattribute__ and not tp_getattro. tp_subclasses is a list of weakrefs, which means that we need weakref support before we can start finalizing classes. which means we have to add a whole slew of things into the bootstrapping section. We should probably just do this in a more systematic way, but I'm not sure what that would be...
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
This is the analogue of 9f63b62e but for getattr instead of setattr: previously there was no way to run the default getattr logic, since getattrInternalGeneral would always check for a custom __getattr__ or __getattribute__. This meant that object.__getattribute__ was the same thing as getattr() and that PyObject_GenericGetAttr was the same as PyObject_GetAttr, which were not correct.
-