Q:

Java: In stack frame when and how is the current constant pool reference value populated?

I am trying to understand how a java virtual method is invoked. Per my understanding the object reference variable points to the object in heap from which object specific variable values are accessed and the method definition is pointed by the constant pool reference of the stack frame. The invoking method populates the reference variable (as it was a local variable for it). How and when is the constant pool reference value for the invoked method populated?
Please forgive if my understanding is incorrect.
Adding link for clarity 
https://imgur.com/a/rv8fW9X

A:

How and when is the constant pool reference value for the invoked method populated?

The relevant constant pool is the one of the class in which the invokevirtual instruction appears.  The pool and all its contents are part of the class file.  They are created by the Java compiler, when the class overall is created from its Java source code.
Bytecode instructions that reference elements of the constant pool, such as invokevirtual, do so by the element's index, which is encoded (again, by the compiler) into the byte code.  It follows, then, that although the target object of an invokevirtual method may vary over different executions of the same instruction, the constant pool reference never does.  This corresponds directly to the fact that object references are held in variables in the Java language, but method invocation expressions require the method to be named explicitly.
Inasmuch as a virtual method invocation is performed, however, the method reference is resolved against the target object, and therefore the actual method invoked may vary.

