case 4
对于A* ptr = new B();传入的ecx指向的是A这个sub-object,实际调用到的函数是fooA_override_by_B。而根据虚函数调用条件,fooA_override_by_B会认为传入的是B*。所以fooA_override_by_B分为两部分,其中一部分fooA_override_by_B_impl是具体实现,会认为传入的this是B*的。另一部分fooA_override_by_B_adjust会将传入的A*调整为B*,然后跳转到fooA_override_by_B_impl。vptrA中放的应该是fooA_override_by_B_adjust。
case 5
对于B* ptr = new B();在外部将ecx指向了A-sub-object,在fooA_override_by_B_adjust中又将指向A-sub-object的对象调整为指向B的对象。