[pypy-commit] pypy continulet-jit-2: A different attempt: change jit/backend/x86. If stacklets are actually
arigo
noreply at buildbot.pypy.org
Wed Feb 29 18:20:23 CET 2012
Author: Armin Rigo <arigo at tunes.org>
Branch: continulet-jit-2
Changeset: r53023:137a6bd449b0
Date: 2012-02-29 18:19 +0100
http://bitbucket.org/pypy/pypy/changeset/137a6bd449b0/
Log: A different attempt: change jit/backend/x86. If stacklets are
actually used (as detected by a quasi-immutable field read), we
generate backend code that uses malloc()/realloc()/free() instead of
storing stuff in the stack. This might solve most of the problems
that we get so far by accessing 'vable_token' and 'virtual_token':
they would become heap pointers, and so remain valid even if the
stack is moved away.
The performance impact should be null as long as we don't use
stacklets, but when we do, we have to consider:
* calls to malloc()/realloc()/free() whose result goes into 'ebp';
maybe later we can use a custom version of these functions,
particularly for realloc() at the start of every bridge.
* on the other hand, it makes the stack much smaller if everything
is JITted, which is good for programs that heavily switch().
More information about the pypy-commit
mailing list