2016-10-18 1 views
0

Selon [1], dans un cadre de méthode, le tableau de variables local contient une référence à l'instance appelée, les paramètres et, enfin, toutes les autres variables utilisées dans le code de la méthode. De plus, les valeurs long et double occupent deux variables locales.Comment compter les index de variable locaux dans MethodVariableAccess?

Lorsque vous utilisez Byte amis pour générer le code de la méthode par les manipulations de la pile, L'indice des MethodVariableAccess.OffsetLoadinglong et double valeurs en un seul indice ou est-il nécessaire, en utilisant ASM directement, pour tenir compte de ces types de valeurs pour le calcul local var index?

[1] https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.6.1

Répondre

1

MethodVariableAccess.OffsetLoading accède à un décalage qui est non nommé indice de distinguer exactement. Si un type long ou double est contenu dans le tableau, cela représente deux emplacements. Byte Buddy utilise cette abstraction pour interagir avec ASM où le même décalage est requis pour appeler le visiteur respectif.