-
Notifications
You must be signed in to change notification settings - Fork 288
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix django test runner #1407
Open
undingen
wants to merge
4,967
commits into
pyston:master
Choose a base branch
from
undingen:django_testrunner
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
fix django test runner #1407
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
make inner links to dir format
don't handle functions containing lambdas with yields as generators
runtime ICs: use mmap instead of malloc for executable code
it is slighlty faster for small allocations and has the advantage that it is easier to track how much memory our python objects are using
llvm::SmallPtrSet<ICSlotInfo*, 2> and std::unordered_set<ICSlotInfo*> have the same size but the SmallPtrSet has the advantage that it can already store 2 elements in there and does not allocate 10 elements in the constructor
use PyObject_Malloc in pyston::DenseMap, smaller ICInvalidator, reduce malloc calls
had to change AST_Expression to store a stmt instead of a expr but this has the advantage that memory managment is easier
SourceInfo: remove the AST stmt copy, remove special handling of lambdas
we used to destroy the ICInfo before all references to it got deleted. I run into this when using the glibc alloc instead of jemalloc
bjit: fix memory corruption
VRegInfo: reduce memory usage
and add the test that exposed it. addGuard(obj) is dangerous because obj could be deallocated+reallocated in the same spot, which is what ended up happening here.
Hopefully this doesn't end up keeping things alive for too much extra time.
Since we are putting more things in the IC gc references, call GC again after clearing them.
Fix uses of addGuard(python_object)
- previously we never deregistered the EH frame from libunwind (which exposed a bug) - I removed the calls to register the EH info with gcc since we have our own unwinder which does not need this - cleaned up the code and fixed some small memory leaks
EH: correctly deregister EH frames and cleanup the code
we free now the code blocks after a recompile in the LLVM tier (except for OSR frames) because it is likely that we will not use the code anymore. - we have to make sure we are not currently executing any code we will delete that's why I added bjit_num_inside - there were some cases where we forgot to deregister stuff - when profiling we don't actually unmap the code in order to not brake profiling
free bjit code after LLVM codegen
We used to store the string content twice. This implementation makes use of DenseSet::find_as functionality where one can search using a different type. I was not sure if the special DenseMapInfo I had to create causes any problems so I choose to create a new source file for it so that it does not get picked up somewhere else.
this fixes the huge (~350MB) leak in: for i in xrange(1000000): class C(object): pass
We had ported part of a CPython optimization to reduce GC-tracking of dicts, but not the invalidation part where it would re-add the tracking if it needs to. I'm guessing this optimization isn't super important to us because we don't have as many internal dicts.
Try to find some more sources of untracked GC dependencies, and make the output nicer.
and disable a sqlalchemy test that was overspecific
More misc compatibility fixes
reduce the size of CFGBlocks
jemalloc: update to 4.3.1 (latest release)
All execs force "name" lookup behavior
it could not find the pyconfig.h file
Update release notes for 0.6 & fix 'make package'
this makes ENABLE_SIGNAL_CHECKING 0 work again
createAfter: don't crash when BB is empty
- this transforms all stores from 64bit to 32bit - but more importantly removes a lot of embedded pointers and replaces them with constant integers which lets llvm use smaller opcodes. - had to teach our assembler how to generate 32bit stores django_template3.py 2.4s (6) 2.4s (4) +0.3% pyxl_bench.py 2.1s (6) 2.1s (4) -1.9% sqlalchemy_imperative2.py 2.6s (6) 2.5s (4) -1.2% pyxl_bench2.py 1.1s (6) 1.1s (4) -1.9% pyxl_bench_10x.py 16.7s (6) 16.5s (4) -1.4% django_template3_10x.py 11.8s (6) 11.5s (4) -3.0% sqlalchemy_imperative2_10x.py 18.0s (6) 17.9s (4) -0.4% pyxl_bench2_10x.py 9.3s (6) 8.8s (4) -5.1% geomean 5.1s 5.0s -1.8%
FrameInfo: store current statement as offset from the bytecode start
Previously if we called `embedRelocatablePtr` twice on the same pointer value we would get two different GVs. But llvm assumes that the addresses of two different syms can't be the equal. This caused some of the `is` checks to fail.
llvm JIT: better handling of `const is const` & less unboxing calls
352fd89
to
6488a3e
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
see #1406