Commit 1713dd83 authored by Alex Gaynor's avatar Alex Gaynor

merged upstream

parents 6074162a 731dc32b
...@@ -296,7 +296,7 @@ Such a hacked CPython is what you'll use in the next steps. We'll call ...@@ -296,7 +296,7 @@ Such a hacked CPython is what you'll use in the next steps. We'll call
it CPython64/64. it CPython64/64.
It is probably not too much work if the goal is only to get a translated It is probably not too much work if the goal is only to get a translated
PyPy executable, and to run all tests before transaction. But you need PyPy executable, and to run all tests before translation. But you need
to start somewhere, and you should start with some tests in to start somewhere, and you should start with some tests in
rpython/translator/c/test/, like ``test_standalone.py`` and rpython/translator/c/test/, like ``test_standalone.py`` and
``test_newgc.py``: try to have them pass on top of CPython64/64. ``test_newgc.py``: try to have them pass on top of CPython64/64.
...@@ -304,7 +304,7 @@ rpython/translator/c/test/, like ``test_standalone.py`` and ...@@ -304,7 +304,7 @@ rpython/translator/c/test/, like ``test_standalone.py`` and
Keep in mind that this runs small translations, and some details may go Keep in mind that this runs small translations, and some details may go
wrong. The most obvious one is to check that it produces C files that wrong. The most obvious one is to check that it produces C files that
use the integer type ``Signed`` --- but what is ``Signed`` defined to? use the integer type ``Signed`` --- but what is ``Signed`` defined to?
It should be equal to ``long`` on every other platforms, but on Win64 it It should be equal to ``long`` on every other platform, but on Win64 it
should be something like ``long long``. should be something like ``long long``.
What is more generally needed is to review all the C files in What is more generally needed is to review all the C files in
...@@ -315,11 +315,11 @@ any other platform, so feel free to. ...@@ -315,11 +315,11 @@ any other platform, so feel free to.
Then, these two C types have corresponding RPython types: ``rffi.LONG`` Then, these two C types have corresponding RPython types: ``rffi.LONG``
and ``lltype.Signed`` respectively. The first should really correspond and ``lltype.Signed`` respectively. The first should really correspond
to the C ``long``. Add tests that check that integers casted to one to the C ``long``. Add tests that check that integers cast to one
type or the other really have 32 and 64 bits respectively, on Win64. type or the other really have 32 and 64 bits respectively, on Win64.
Once these basic tests work, you need to review ``rpython/rlib/`` for Once these basic tests work, you need to review ``rpython/rlib/`` for
usages of ``rffi.LONG`` versus ``lltype.Signed``. The goal would be to uses of ``rffi.LONG`` versus ``lltype.Signed``. The goal would be to
fix some more ``LONG-versus-Signed`` issues, by fixing the tests --- as fix some more ``LONG-versus-Signed`` issues, by fixing the tests --- as
always run on top of CPython64/64. Note that there was some early work always run on top of CPython64/64. Note that there was some early work
done in ``rpython/rlib/rarithmetic`` with the goal of running all the done in ``rpython/rlib/rarithmetic`` with the goal of running all the
...@@ -329,14 +329,14 @@ bad idea. Look only at CPython64/64. ...@@ -329,14 +329,14 @@ bad idea. Look only at CPython64/64.
The major intermediate goal is to get a translation of PyPy with ``-O2`` The major intermediate goal is to get a translation of PyPy with ``-O2``
with a minimal set of modules, starting with ``--no-allworkingmodules``; with a minimal set of modules, starting with ``--no-allworkingmodules``;
you need to use CPython64/64 to run this translation too. Check you need to use CPython64/64 to run this translation too. Check
carefully the warnings of the C compiler at the end. I think that MSVC carefully the warnings of the C compiler at the end. By default, MSVC
is "nice" in the sense that by default a lot of mismatches of integer reports a lot of mismatches of integer sizes as warnings instead of
sizes are reported as warnings. errors.
Then you need to review ``pypy/module/*/`` for ``LONG-versus-Signed`` Then you need to review ``pypy/module/*/`` for ``LONG-versus-Signed``
issues. At some time during this review, we get a working translated issues. At some time during this review, we get a working translated
PyPy on Windows 64 that includes all ``--translationmodules``, i.e. PyPy on Windows 64 that includes all ``--translationmodules``, i.e.
everything needed to run translations. When we are there, the hacked everything needed to run translations. Once we have that, the hacked
CPython64/64 becomes much less important, because we can run future CPython64/64 becomes much less important, because we can run future
translations on top of this translated PyPy. As soon as we get there, translations on top of this translated PyPy. As soon as we get there,
please *distribute* the translated PyPy. It's an essential component please *distribute* the translated PyPy. It's an essential component
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment