[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