public class org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest extends org.graalvm.compiler.replacements.test.MethodSubstitutionTest
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest
  super_class: org.graalvm.compiler.replacements.test.MethodSubstitutionTest
{
  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 38
            ldc Lorg/graalvm/compiler/hotspot/test/HotSpotUnsafeSubstitutionTest;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest this
         0: .line 38
            aload 0 /* this */
            invokespecial org.graalvm.compiler.replacements.test.MethodSubstitutionTest.<init>:()V
            return
        end local 0 // org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/hotspot/test/HotSpotUnsafeSubstitutionTest;

  public void testSubstitution(java.lang.String, java.lang.Class<?>, java.lang.String, java.lang.Class<?>[], , [], []);
    descriptor: (Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Object;[Ljava/lang/Object;[Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=13, args_size=8
        start local 0 // org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest this
        start local 1 // java.lang.String testMethodName
        start local 2 // java.lang.Class holder
        start local 3 // java.lang.String methodName
        start local 4 // java.lang.Class[] parameterTypes
        start local 5 // java.lang.Object receiver
        start local 6 // java.lang.Object[] args1
        start local 7 // java.lang.Object[] args2
         0: .line 41
            aload 0 /* this */
            aload 1 /* testMethodName */
            invokevirtual org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest.getResolvedJavaMethod:(Ljava/lang/String;)Ljdk/vm/ci/meta/ResolvedJavaMethod;
            astore 8 /* testMethod */
        start local 8 // jdk.vm.ci.meta.ResolvedJavaMethod testMethod
         1: .line 42
            aload 0 /* this */
            aload 2 /* holder */
            aload 3 /* methodName */
            aload 4 /* parameterTypes */
            invokevirtual org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest.getResolvedJavaMethod:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljdk/vm/ci/meta/ResolvedJavaMethod;
            astore 9 /* originalMethod */
        start local 9 // jdk.vm.ci.meta.ResolvedJavaMethod originalMethod
         2: .line 45
            aload 0 /* this */
            aload 8 /* testMethod */
            invokevirtual org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest.getCode:(Ljdk/vm/ci/meta/ResolvedJavaMethod;)Ljdk/vm/ci/code/InstalledCode;
            astore 10 /* code */
        start local 10 // jdk.vm.ci.code.InstalledCode code
         3: .line 46
            getstatic org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest.$assertionsDisabled:Z
            ifne 4
            aload 10 /* code */
            ifnonnull 4
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         4: .line 49
      StackMap locals: jdk.vm.ci.meta.ResolvedJavaMethod jdk.vm.ci.meta.ResolvedJavaMethod jdk.vm.ci.code.InstalledCode
      StackMap stack:
            aload 0 /* this */
            aload 9 /* originalMethod */
            aload 5 /* receiver */
            aload 6 /* args1 */
            invokevirtual org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest.invokeSafe:(Ljdk/vm/ci/meta/ResolvedJavaMethod;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            astore 11 /* expected */
        start local 11 // java.lang.Object expected
         5: .line 50
            aload 0 /* this */
            aload 8 /* testMethod */
            aconst_null
            aload 7 /* args2 */
            invokevirtual org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest.invokeSafe:(Ljdk/vm/ci/meta/ResolvedJavaMethod;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            astore 12 /* actual */
        start local 12 // java.lang.Object actual
         6: .line 51
            aload 0 /* this */
            aload 11 /* expected */
            aload 12 /* actual */
            invokevirtual org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest.assertDeepEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         7: .line 54
            aload 0 /* this */
            aload 9 /* originalMethod */
            aload 5 /* receiver */
            aload 6 /* args1 */
            invokevirtual org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest.invokeSafe:(Ljdk/vm/ci/meta/ResolvedJavaMethod;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            astore 11 /* expected */
         8: .line 55
            aload 10 /* code */
            aload 7 /* args2 */
            invokestatic org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest.executeVarargsSafe:(Ljdk/vm/ci/code/InstalledCode;[Ljava/lang/Object;)Ljava/lang/Object;
            astore 12 /* actual */
         9: .line 56
            aload 0 /* this */
            aload 11 /* expected */
            aload 12 /* actual */
            invokevirtual org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest.assertDeepEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        10: .line 58
            return
        end local 12 // java.lang.Object actual
        end local 11 // java.lang.Object expected
        end local 10 // jdk.vm.ci.code.InstalledCode code
        end local 9 // jdk.vm.ci.meta.ResolvedJavaMethod originalMethod
        end local 8 // jdk.vm.ci.meta.ResolvedJavaMethod testMethod
        end local 7 // java.lang.Object[] args2
        end local 6 // java.lang.Object[] args1
        end local 5 // java.lang.Object receiver
        end local 4 // java.lang.Class[] parameterTypes
        end local 3 // java.lang.String methodName
        end local 2 // java.lang.Class holder
        end local 1 // java.lang.String testMethodName
        end local 0 // org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   11     0            this  Lorg/graalvm/compiler/hotspot/test/HotSpotUnsafeSubstitutionTest;
            0   11     1  testMethodName  Ljava/lang/String;
            0   11     2          holder  Ljava/lang/Class<*>;
            0   11     3      methodName  Ljava/lang/String;
            0   11     4  parameterTypes  [Ljava/lang/Class;
            0   11     5        receiver  Ljava/lang/Object;
            0   11     6           args1  [Ljava/lang/Object;
            0   11     7           args2  [Ljava/lang/Object;
            1   11     8      testMethod  Ljdk/vm/ci/meta/ResolvedJavaMethod;
            2   11     9  originalMethod  Ljdk/vm/ci/meta/ResolvedJavaMethod;
            3   11    10            code  Ljdk/vm/ci/code/InstalledCode;
            5   11    11        expected  Ljava/lang/Object;
            6   11    12          actual  Ljava/lang/Object;
    Signature: (Ljava/lang/String;Ljava/lang/Class<*>;Ljava/lang/String;[Ljava/lang/Class<*>;Ljava/lang/Object;[Ljava/lang/Object;[Ljava/lang/Object;)V
    MethodParameters:
                Name  Flags
      testMethodName  
      holder          
      methodName      
      parameterTypes  
      receiver        
      args1           
      args2           

  public void testUnsafeSubstitutions();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest this
         0: .line 62
            aload 0 /* this */
            ldc "unsafeCopyMemory"
            getstatic org.graalvm.compiler.hotspot.HotSpotBackend.copyMemoryName:Ljava/lang/String;
            invokevirtual org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest.testGraph:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/compiler/nodes/StructuredGraph;
            pop
         1: .line 63
            return
        end local 0 // org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/hotspot/test/HotSpotUnsafeSubstitutionTest;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void unsafeCopyMemory(java.lang.Object, long, java.lang.Object, long, long);
    descriptor: (Ljava/lang/Object;JLjava/lang/Object;JJ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=9, args_size=6
        start local 0 // org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest this
        start local 1 // java.lang.Object srcBase
        start local 2 // long srcOffset
        start local 4 // java.lang.Object dstBase
        start local 5 // long dstOffset
        start local 7 // long bytes
         0: .line 66
            getstatic org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest.UNSAFE:Lsun/misc/Unsafe;
            aload 1 /* srcBase */
            lload 2 /* srcOffset */
            aload 4 /* dstBase */
            lload 5 /* dstOffset */
            lload 7 /* bytes */
            invokevirtual sun.misc.Unsafe.copyMemory:(Ljava/lang/Object;JLjava/lang/Object;JJ)V
         1: .line 67
            return
        end local 7 // long bytes
        end local 5 // long dstOffset
        end local 4 // java.lang.Object dstBase
        end local 2 // long srcOffset
        end local 1 // java.lang.Object srcBase
        end local 0 // org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lorg/graalvm/compiler/hotspot/test/HotSpotUnsafeSubstitutionTest;
            0    2     1    srcBase  Ljava/lang/Object;
            0    2     2  srcOffset  J
            0    2     4    dstBase  Ljava/lang/Object;
            0    2     5  dstOffset  J
            0    2     7      bytes  J
    MethodParameters:
           Name  Flags
      srcBase    
      srcOffset  
      dstBase    
      dstOffset  
      bytes      

  public byte[] testCopyMemorySnippet(long, int);
    descriptor: (JI)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=5, args_size=3
        start local 0 // org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest this
        start local 1 // long src
        start local 3 // int bytes
         0: .line 70
            iload 3 /* bytes */
            newarray 8
            astore 4 /* result */
        start local 4 // byte[] result
         1: .line 71
            getstatic org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest.UNSAFE:Lsun/misc/Unsafe;
            aconst_null
            lload 1 /* src */
            aload 4 /* result */
            getstatic sun.misc.Unsafe.ARRAY_BYTE_BASE_OFFSET:I
            i2l
            iload 3 /* bytes */
            i2l
            invokevirtual sun.misc.Unsafe.copyMemory:(Ljava/lang/Object;JLjava/lang/Object;JJ)V
         2: .line 72
            aload 4 /* result */
            areturn
        end local 4 // byte[] result
        end local 3 // int bytes
        end local 1 // long src
        end local 0 // org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lorg/graalvm/compiler/hotspot/test/HotSpotUnsafeSubstitutionTest;
            0    3     1     src  J
            0    3     3   bytes  I
            1    3     4  result  [B
    MethodParameters:
       Name  Flags
      src    
      bytes  

  public void testCopyMemory();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=5, args_size=1
        start local 0 // org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest this
         0: .line 77
            sipush 128
            istore 1 /* size */
        start local 1 // int size
         1: .line 78
            getstatic org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest.UNSAFE:Lsun/misc/Unsafe;
            iload 1 /* size */
            i2l
            invokevirtual sun.misc.Unsafe.allocateMemory:(J)J
            lstore 2 /* src */
        start local 2 // long src
         2: .line 79
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         3: goto 6
         4: .line 80
      StackMap locals: int long int
      StackMap stack:
            getstatic org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest.UNSAFE:Lsun/misc/Unsafe;
            aconst_null
            lload 2 /* src */
            iload 4 /* i */
            i2l
            ladd
            iload 4 /* i */
            i2b
            invokevirtual sun.misc.Unsafe.putByte:(Ljava/lang/Object;JB)V
         5: .line 79
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 4 /* i */
            iload 1 /* size */
            if_icmplt 4
        end local 4 // int i
         7: .line 82
            aload 0 /* this */
            ldc "testCopyMemorySnippet"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            lload 2 /* src */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_1
            iload 1 /* size */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokevirtual org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest.test:(Ljava/lang/String;[Ljava/lang/Object;)Lorg/graalvm/compiler/core/test/GraalCompilerTest$Result;
            pop
         8: .line 83
            return
        end local 2 // long src
        end local 1 // int size
        end local 0 // org.graalvm.compiler.hotspot.test.HotSpotUnsafeSubstitutionTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lorg/graalvm/compiler/hotspot/test/HotSpotUnsafeSubstitutionTest;
            1    9     1  size  I
            2    9     2   src  J
            3    7     4     i  I
    RuntimeVisibleAnnotations: 
      org.junit.Test()
}
SourceFile: "HotSpotUnsafeSubstitutionTest.java"
InnerClasses:
  public Result = org.graalvm.compiler.core.test.GraalCompilerTest$Result of org.graalvm.compiler.core.test.GraalCompilerTest