Hi Yury,
That's great news about the speed improvements with the dict offset cache!
> The cache struct is defined in code.h [2], and is 32 bytes long. When a
> code object becomes hot, it gets an cache offset table allocated for it
> (+1 byte for each opcode) + an array of cache structs.
Ok, so each opcode has a 1-byte cache that sits separately to the
actual bytecode. But a lot of opcodes don't use it so that leads to
some wasted memory, correct?
But then how do you index the cache, do you keep a count of the
current opcode number? If I remember correctly, CPython has some
opcodes taking 1 byte, and some taking 3 bytes, so the offset into the
bytecode cannot be easily mapped to a bytecode number.
Cheers,
Damien.