RFR (XS) 8055146: Split Verifier incorrectly throws VerifyError for getstatic of an array field

David Holmes david.holmes at oracle.com
Mon Jan 5 02:13:04 UTC 2015

Hi Harold,

On 1/01/2015 2:38 AM, harold seigel wrote:
> Hi,
> Please review this small fix for bug 8055146.  The fix allows the
> operands of getstatic and putstatic bytecodes to be arrays, instead of
> throwing VerifyError exceptions.
> Open webrev:  http://cr.openjdk.java.net/~hseigel/bug_8055146/
> JBS bug: https://bugs.openjdk.java.net/browse/JDK-8055146

I'm missing something here. It says for getField that it must not be an 
array type; but doesn't say that for getStatic. This puzzles me on two 

1. Why should there be any difference between accessing a static versus 
a non-static field in this regard?

2. If I code this:

public class ArrayField {
   static Object[] sarray;
   Object[] array;

   public void test() {
     Object o = sarray;
     Object o2 = array;
     if (o == o2) throw new RuntimeException();

the bytecode generated is:

   public void test();
        0: getstatic     #2                  // Field 
        3: astore_1
        4: aload_0
        5: getfield      #3                  // Field 

so this seems to be using getField for an array field when it is not 
allowed ??


> The fix was tested with JCK lang and VM tests, hotspot JTReg, and NSK
> split_verifier tests.
> Thanks, Harold

More information about the hotspot-runtime-dev mailing list