On the 0x20E day of Apache Harmony Pavel Pervov wrote: > > The Alexey's solution does not affect devirtualizer at all. > > > > How can we do without devirtualizer changes here? We need to replace > > Object->Vtable with Object->class->vtable. Am I missing something? > > > If vtables are pinned Aleksey's solution does not affect JITs at all. > > If vtables move, it will be one more level of indirection for guarded > devirtualization: was object->vtable, will be object->vtable->class.
yeah, that is why unpinning them might appear a perf-boost as well as slowdown. I cannot find any solution not to slow down here. (thinking of obj->class->vtable which is bad for virtual calls, keeping both obj->vtable->class and obj->class->vtable is bad for footprint) Is it really the problem each JVM designer meets? :) > Unpinning vtables does not cause the need to enumerate them from JIT, if JIT > does not store pointers to them. yes, as well as all other objects -- Egor Pasko, Intel Managed Runtime Division