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