Hi Armin,

Thank you for the reply.

Luckily, I found the bug.  It was a bug in my write barrier card marking
implementation.  I misunderstood what AArch64 MVN instruction meant when I
was porting the code.  After fixing it, I can pass these two test cases
(test_zipfile64 and test_tokenize).

Now, I am looking into test_json.  Earlier, I thought it was an XFAIL
because the -O2 build was failing too.  But after adding
`@settings(suppress_health_check=[HealthCheck.too_slow])` to
`test_json.test_roundtrip`, I could run it in reasonable time.

However, it was extremely slow when I ran the same test with the `-Ojit`
build.  According to `PYPYLOG=jit:log.txt`, the JIT compiler kept building
the same (or similar) bridge.  Statistics showed that the RISC-V JIT
compiled more than 3000 bridges (when Ctrl-C interrupted) whereas the X86
JIT build compiled only 900 bridges (when completed).  I will try to figure
out the failing guard op first.

Regards,
Logan

On Mon, Feb 19, 2024 at 10:05 PM Armin Rigo <armin.r...@gmail.com> wrote:

> Hi Logan,
>
> On Tue, 20 Feb 2024 at 05:08, Logan Chien <tzuhsiang.ch...@gmail.com>
> wrote:
> > > This should just be #defined to do nothing with Boehm, maybe in
> rpython/translator/c/src/mem.h
> >
> > With this change and a few RISC-V backend fixes (related to
> self.cpu.vtable_offset), I can build and run a JIT+BoehmGC PyPy.
>
> Cool!  I also got a pull request merged into the main branch with this
> change, and it does indeed fix boehm builds.
>
> > This configuration (JIT+BoehmGC) can pass test_tokenize and
> test_zipfile64 (from lib_python_tests.py).
> >
> > Thus, my next step will focus on the differences between JIT+BoehmGC and
> JIT+IncminimarkGC.
>
> A problem that came up a lot in other backends is a specific input
> instruction that the backend emits with specific registers.  When you
> run into the bad case, the emitted code reuses a register *before*
> reading the same register assuming that it still contains its old
> value.  It's entirely dependent on register allocation, and if you run
> it with boehm then the sequence of instruction is slightly different
> and that might be the reason that the bug doesn't show up then.  If
> you get two failures with incminimark and none with boehm, then it
> sounds more likely that the case involves one of the incminimark-only
> constructions---but it's also possible the bug is somewhere unrelated
> and it's purely bad luck...
>
>
> Armin
>
_______________________________________________
pypy-dev mailing list -- pypy-dev@python.org
To unsubscribe send an email to pypy-dev-le...@python.org
https://mail.python.org/mailman3/lists/pypy-dev.python.org/
Member address: arch...@mail-archive.com

Reply via email to