Skip to content
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

[WIP] build on arch linux #1141

Open
wants to merge 3,689 commits into
base: master
Choose a base branch
from
Open

[WIP] build on arch linux #1141

wants to merge 3,689 commits into from

Conversation

aisk
Copy link
Contributor

@aisk aisk commented Apr 23, 2016

  • use python2 in build / test process (arch's default python is symbol link to python3)
  • isinf is undefined under arch linux
  • SSLv3 is not supported under arch's default openssl package (link it only if possible)
  • pass all the test cases

Daetalus and others added 30 commits December 4, 2015 14:56
…eed patching

Previously we generated patchpoints for every call because the callee could do a frame introspection
and we could not retrieve the frame info without the additional patchpoint informations.

This change moves all required information inside the FrameInfo.
Because the FrameInfo does not have a fixed offset (different num of stack args and OSR functions reuse the frame info from the interpreter),
we generate at function entry a stack variable which points to the frame_info and than we emit a stackmap intrinsic
in order to know which basepointer relative address it has.
The current statement inside the FrameInfo gets only updated on direct calls - patchpoints still attach it directly instead of updating the memory.
Because always updating the variable is a small slowdown.

This allows us todo inlining of trivial call sites at the llvm IR level.
because when calling a function with return type BOOL we currently expect it to return a i64.
This got triggered by the inliner
Inlining it causes a perf regression
Don't generate patchpoints for calls to fixed functions which don't need patching
Add cmath module and fix some bugs discovered in test_cmath.
we can't use insert because it will not update existing values.
We did not hit this issue because I compared an instance with a class...
… frames

I encountered this issue sometimes in the sqlalchemy integration test.
Fix two unwinding bugs I found while implementing pyston#1031
Add four separate tests with prefix of sys_path for four types of
sys.path entries: str, unicode, subclass of str, and subclass of
unicode.
Micro optimization on 'gc_invalidateOrderedFinalizerList'
fix issue pyston#596 'slice is not subclassable'
Fix issue pyston#596 'slice is not subclassable'
Fix pyston#599 by allowing subclasses of string and unicode in sys.path
Micro optimization on 'gc_invalidateOrderedFinalizerList'
This could happend when we trigger a collection inside the BoxedGenerator constructor when allocating space for the args array.
In this case it would not be set but we would dereference the memory.
Fix crash inside BoxedGenerator::gcHandler
This function let's one register a potential root range from the CAPI
Was part of the unmerged pyston#1026 but split out because pyston#1029 requires it too.
undingen and others added 24 commits March 9, 2016 13:30
this caused problems inside the multiprocessing module
…n str types

if we get the attrwrapper of an object, then change it to be dict-backed,
the original attrwrapper should remain valid but no longer connected to that object.
Threading and multiprocessing related fixes
implement correct binop lookup for subclasses
check duplicate function params
We can't directly do OSR from the bjit frame because it will cause issues with exception handling.
Reason is that the bjit and the OSRed code share the same python frame and the way invokes are implemented in the
bjit. During unwinding we will see the OSR frame and will remove it and continue to unwind but the try catch
block inside ASTInterpreter::execJITedBlock will rethrow the exception which causes another frame deinit,
which is wrong because it already got removed.
Instead we return back to the interpreter loop with special value (osr_dummy_value) which will trigger the OSR from there.
…nter

saves a few bytes because r12 requires the SIB byte
django_template bjit bytes emitted shrinks from 3016247 to 3006353
bjit: don't directly do a OSR from the bjit
bjit: microptimization use r13 instead of r12 for the interpreter pointer
We used to not detect deopt frames in release mode this was because we are looking for 'astInterpretDeopt'
in the call stack but this did not work because the compiler optimized this function to a jmp to astInterpretDeoptInner.

I tested different compiler attributes but I ended up implementing this small wrapper function in assembler
because I think it's the most reliable way to make sure it does appear in the call stack.
I have been noticing quite some perf variance - hopefuly this makes perf more predicatable again.
fix two python frame handling crashes
deopt: support deserializing instance methods
If we find a type that
- we think we can reason about statically
- does not have an __iter__ but can be iterated via __getitem__

we previously just bailed saying that we know it doesn't have an __iter__ method
(instead of calling getiterHelper like we should).  I think we've always had this,
we've just never run into it until testing the refcounting in llvm-only mode.
Some minor fixing which found in numpy tests
@aisk aisk force-pushed the arch-linux-build branch 2 times, most recently from 203fbe0 to 0a6e430 Compare May 2, 2016 12:04
@kmod kmod force-pushed the master branch 2 times, most recently from 352fd89 to 6488a3e Compare October 28, 2020 21:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants