- 04 Mar, 2015 2 commits
-
-
Chris Toshok authored
-
Kevin Modzelewski authored
There are still a couple subtle differences in how we track and store the various module attributes. For example, we show something different for 'print ModuleType("a", "b")'. Also sneak in a fix for "import a.b.c as c"
-
- 03 Mar, 2015 16 commits
-
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
Add should_error directive, for tests that should exit non-0
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
runtime/inline add header dependencies
-
Michael Arntzenius authored
-
Daniel Agar authored
-
Daniel Agar authored
-fixes #339
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
The core functionality is to calculate and store tp_mro and tp_bases instead of just tp_base. This gives the runtime a bit harder of a time to bootstrap itself since now a fully-built class depends on a few more classes, so the bootstrapping section got larger: - object_cls (base of the tp_base hierarchy) - type_cls (base of the metaclass hierarchy) - str_cls (for ht_name) - tuple_cls (for tp_mro) - list_cls (for calculating the mro) There were a few places that needed to be updated now that we have multiple inheritance: - typeLookup() - isSubclass() - typeNew() - super() This change doesn't even attempt to add multiple inheritance rules around old-style classes.
-
Kevin Modzelewski authored
While most of this code is unexercised with just this commit, I wanted to add it so that it's more clear what the multiple inheritance changes actually are.
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
Our class-creation code is getting pretty unruly, since there are four places we can create new classes: 1) extension classes 2) Python-defined classes 3) builtin-defined classes 4) classes created during bootstrapping Then, there are multiple different sets of initialization functions that can be called, each of which initializes different sets of the class attributes. It's not easy to tell what a given initialization function should actually initialize. This change just cleans this up slightly: it renames PystonType_Ready to commonClassSetup to hopefully be more clear about its goal, as well as adds a BoxedClass::finishInitialization() function. It also moves some work out of the BoxedClass() constructor, since this causes issues because it happens before the BoxedHeapClass() constructor runs, which sets certain class slots that affect other parts of class initialization. Things are still pretty complicated but this should help with the multiple inheritance changes that are coming.
-
Michael Arntzenius authored
-
Michael Arntzenius authored
-
Michael Arntzenius authored
-
Kevin Modzelewski authored
add tests for "[] = []", "2 = 2"; currently we core dump on these
-
- 02 Mar, 2015 14 commits
-
-
Kevin Modzelewski authored
Implement `pyston -c command`
-
Michael Arntzenius authored
-
Michael Arntzenius authored
-
Michael Arntzenius authored
-
Michael Arntzenius authored
-
Michael Arntzenius authored
-
Kevin Modzelewski authored
Smaller changes to get more of virtualenv running
-
Kevin Modzelewski authored
Add cStringIO module + basic support for setting member descriptors
-
Marius Wachtler authored
-
Marius Wachtler authored
-
Marius Wachtler authored
In addition fixed a bug: The rewriter generated a 64bit mem comparison for the 32bit offset value, thus comparing partially undefined memory.
-
Marius Wachtler authored
-
Marius Wachtler authored
-
Michael Arntzenius authored
-
- 01 Mar, 2015 1 commit
-
-
Kevin Modzelewski authored
Implement vararg map()
-
- 28 Feb, 2015 7 commits
-
-
Marius Wachtler authored
-
Chris Toshok authored
Weakrefs
-
Chris Toshok authored
-
Chris Toshok authored
-
Chris Toshok authored
-
Chris Toshok authored
bring in the cpython implementation of weakrefs, and post init_weakref() overwrite some fields in the BoxedClass's for weakref.ref/proxy/callableproxy so that they participate in our GC (we also make use of their tp_traverse functions for scanning and tp_clear functions as their simple_destructor.) as we sweep the heap: 1) any unreachable objects that have weakreferences are kept alive and placed in an std::list called weakly_referenced. 2) any unreachable weakref.ref objects are cleared and removed from their referent's list. After sweeping the entire heap, we then loop over the objects in weakly_referenced. If an object in the list still has weak references, we loop over them clearing their target (setting it to None), and calling their callback if they have one. test/tests/weakref1.py tests this.
-
Chris Toshok authored
-