Hi,

On Sat, Nov 7, 2015 at 2:40 PM, Armin Rigo <ar...@tunes.org> wrote:
> Would that miss an important case?

Fijal shed doubt on that, so I'm going with this solution:

For GC objects, check the gctype or correct subclass when doing an
access from the optimizer.  (We can't do that with Boehm, but then we
never unroll with Boehm anyway, because the same checks are needed for
short preambles.)

For RAW pointers, kill the resoperations
GET{FIELD,ARRAYITEM}_RAW_PURE, but *not* the jitcodes
get{field,arrayitem}_raw_*_pure.  The latter are used for example in
all RPython classes' vtable accesses, and so are essential.  But in
all cases I could find, they'd be constant-folded during tracing
already (e.g. a previous guard_class always promotes the class to a
tracing-time constant).  For the rare case where they are not, we can
simply emit a regular GET{FIELD,ARRAYITEM}_RAW.


A bientôt,

Armin.
_______________________________________________
pypy-dev mailing list
pypy-dev@python.org
https://mail.python.org/mailman/listinfo/pypy-dev

Reply via email to