My question was - why did you add:
if (!sbkObj->ob_dict)
sbkObj->ob_dict = PyDict_New();
? Your commit message talks about the #ifdef PYPY_VERSION case, but doesn't talk about this change.
This change is for PySide6 only and addresses simplified dict access. Before, there was a check if the dict exists, which complicated the code. The reason was in fact to make PyPy work and avoid #ifdef in the code.
I don't think that it is relevant performance-wise, since in most cases attributes are used, anyway.