An error occurred fetching the project authors.
- 06 Apr, 2015 1 commit
-
-
Michael Arntzenius authored
-
- 26 Mar, 2015 2 commits
-
-
Marius Wachtler authored
This commit removes our implementation of this functions, because they could not handle mixing of old and new style classes. And having two implementations with very similar name but different results is very confusing. Also adds __subclasscheck__ and __instancecheck__ support
-
Chris Toshok authored
-
- 25 Mar, 2015 6 commits
-
-
Chris Toshok authored
-
Chris Toshok authored
cache BoxedString*'s for a module's constant AST_TYPE::Str nodes. emit the pointers to these BoxedString's in the generated IR
-
Michael Arntzenius authored
This lets class & function definitions become ordinary assignments in the CFG, which simplifies our invariants and fixes problems with the interaction between definedness analysis and block-terminating "invoke"s.
-
Travis Hance authored
-
Travis Hance authored
-
Travis Hance authored
-
- 24 Mar, 2015 1 commit
-
-
Michael Arntzenius authored
-
- 23 Mar, 2015 1 commit
-
-
Travis Hance authored
-
- 21 Mar, 2015 1 commit
-
-
Kevin Modzelewski authored
-
- 17 Mar, 2015 1 commit
-
-
Kevin Modzelewski authored
(scratch space is pre-allocated stack space since the IC can't allocate new space itself, in order to have unwinding work) Allocate a fixed amount (currently: 40 bytes) of extra stack space in our runtime ics. This involves changing the function prologue+ epilogue to do more rsp adjustment, and modifying the .eh_frame sections we generate. One tricky thing is that we currently use frame pointer elimination in our runtime ics, but the rest of the scratch space logic had assumed the scratch would be rbp-relative, which I had to convert to rsp-relative.
-
- 10 Mar, 2015 1 commit
-
-
Kevin Modzelewski authored
I don't know how well this is followed in practice, but "!" is supposed to just be for irgen-specific names that should not make it to other tiers. The closure and generator variables are more like part of the inter-tier contract, so I think make more sense as "#" names.
-
- 06 Mar, 2015 1 commit
-
-
Chris Toshok authored
there are a few areas where we fail (decimal usage, and formatting complex numbers) so those specific lines are commented out. The changes in src were necessary to get the test to run to completion with -n. Finally, we skip the test when -x is present because pypa doesn't parse unicode literals correctly.
-
- 25 Feb, 2015 3 commits
-
-
Kevin Modzelewski authored
Currently storing + passing unicode strings around as UTF-encoded bytestrings in std::string; maybe it'd be nice to have the type system show that these are actually unicode strings, or to use the CPython internal representation (UCS4?) to reduce the number of encodings/decodings.
-
Marius Wachtler authored
If the type analysis successfully determines that the __iter__() and __hasnext__() methods we can now replace them with direct calls to the destination. Else we create a patchpoint and do a rewrite.
-
Marius Wachtler authored
-
- 24 Feb, 2015 2 commits
-
-
Marius Wachtler authored
Had to change the comdat handling otherwise the executable would crash on startup. Cause is that publicize is renaming symbols but keeps the old comdat around, the linker would then replace the implementation of the symbol with a call to 0. One may need to run 'make llvm_up' if you are using the cmake build and see a error, caused by debuginfo beeing renamed to debuginfodwarf.
-
Kevin Modzelewski authored
Annotate constants - functions - heap values Collapse nop regions
-
- 22 Feb, 2015 1 commit
-
-
Travis Hance authored
-
- 21 Feb, 2015 2 commits
-
-
Travis Hance authored
-
Travis Hance authored
-
- 14 Feb, 2015 3 commits
-
-
Kevin Modzelewski authored
We should do a more comprehensive investigation. Removing t2 caused regressions on a number of benchmarks since we lost chances to do speculations, but making t3 easier to get to caused regressions due to the cost of our LLVM optimization set (which is pretty hefty since it's supposed to be hard to activate).
-
Kevin Modzelewski authored
We only needed that for supporting the old deopt system
-
Kevin Modzelewski authored
Long live new-deopt!
-
- 13 Feb, 2015 3 commits
-
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
Previously it was: tier 0: ast interpreter tier 1: llvm, no speculations, no llvm opts tier 2: llvm, w/ speculations, no llvm opts tier 3: llvm, w/ speculations, w/ llvm opts tier 2 seemed pretty useless, and very little would stay in it. Also, OSR would always skip from tier 1 to tier 3. Separately, add configurable OSR/reopt thresholds. This is mostly for the sake of tests, where we can set lower limits and force OSR/reopts to happen.
-
Marius Wachtler authored
-
- 11 Feb, 2015 1 commit
-
-
Kevin Modzelewski authored
Thanks to @denji for the report!
-
- 07 Feb, 2015 1 commit
-
-
Travis Hance authored
-
- 04 Feb, 2015 1 commit
-
-
Kevin Modzelewski authored
Most importantly, intern all the strings we put into the AST* nodes. (the AST_Module* owns them) This should save us some memory, but it also improves performance pretty substantially since now we can do string comparisons very cheaply. Performance of the interpreter tier is up by something like 30%, and JIT-compilation times are down as well (though not by as much as I was hoping). The overall effect on perf is more muted since we tier out of the interpreter pretty quickly; to see more benefit, we'll have to retune the OSR/reopt thresholds. For better or worse (mostly better IMO), the interned-ness is encoded in the type system, and things will not automatically convert between an InternedString and a std::string. It means that this diff is quite large, but it also makes it a lot more clear where we are making our string copies or have other room for optimization.
-
- 02 Feb, 2015 1 commit
-
-
Kevin Modzelewski authored
Old deopt worked by compiling two copies of every BB, one with speculations and one without, and stitching the two together. This has a number of issues: - doubles the amount of code LLVM has to jit - can't ever get back on the optimized path - doesn't support 'deopt if branch taken' - horrifically complex - doesn't support deopt from within try blocks We actually ran into that last issue (see test from previous commit). So rather than wade in and try to fix old-deopt, just start switching to new-deopt. (new) deopt works by using the frame introspection features, gathering up all the locals, and passing them to the interpreter.
-
- 24 Jan, 2015 1 commit
-
-
Kevin Modzelewski authored
ie names that begin with two underscores but don't end in two underscores have the classname added to them. Do this early on in the pipeline so that all the analyses operate post-mangling. The implementation is kind of hacky and I couldn't think of a good way to make it super systematic; there may be more cases I missed.
-
- 22 Jan, 2015 3 commits
-
-
Kevin Modzelewski authored
Should probably nuke all of the codegen "memory management" using vrefs, and instead just used shared_pointers. Looks like there could be more "bugs" of the kind fixed in this commit...
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
-
- 21 Jan, 2015 3 commits
-
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
-
Kevin Modzelewski authored
Currently nothing sets that though.
-