hotspot/test/compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/DataPatchTest.java
changeset 38678 06d6c40ce33b
parent 38027 8a5693d27400
child 39291 a4efe145313d
child 39423 0f8dc3693499
equal deleted inserted replaced
38677:1c1598b02874 38678:06d6c40ce33b
    40 
    40 
    41 import jdk.vm.ci.code.Register;
    41 import jdk.vm.ci.code.Register;
    42 import jdk.vm.ci.code.site.DataSectionReference;
    42 import jdk.vm.ci.code.site.DataSectionReference;
    43 import jdk.vm.ci.hotspot.HotSpotConstant;
    43 import jdk.vm.ci.hotspot.HotSpotConstant;
    44 import jdk.vm.ci.hotspot.HotSpotMetaAccessProvider;
    44 import jdk.vm.ci.hotspot.HotSpotMetaAccessProvider;
    45 import jdk.vm.ci.hotspot.HotSpotSymbol;
       
    46 import jdk.vm.ci.hotspot.HotSpotVMConfig;
    45 import jdk.vm.ci.hotspot.HotSpotVMConfig;
    47 import jdk.vm.ci.meta.ResolvedJavaType;
    46 import jdk.vm.ci.meta.ResolvedJavaType;
    48 
    47 
    49 import org.junit.Assume;
    48 import org.junit.Assume;
    50 import org.junit.Test;
    49 import org.junit.Test;
   156             Register klass = asm.emitUncompressPointer(narrowKlass, HotSpotVMConfig.config().narrowKlassBase, HotSpotVMConfig.config().narrowKlassShift);
   155             Register klass = asm.emitUncompressPointer(narrowKlass, HotSpotVMConfig.config().narrowKlassBase, HotSpotVMConfig.config().narrowKlassShift);
   157             Register ret = asm.emitLoadPointer(klass, HotSpotVMConfig.config().classMirrorOffset);
   156             Register ret = asm.emitLoadPointer(klass, HotSpotVMConfig.config().classMirrorOffset);
   158             asm.emitPointerRet(ret);
   157             asm.emitPointerRet(ret);
   159         });
   158         });
   160     }
   159     }
   161 
       
   162     public static long getConstSymbol(HotSpotMetaAccessProvider meta) {
       
   163         HotSpotSymbol symbol = meta.lookupSymbol("java/lang/Object");
       
   164         return symbol.getMetaspacePointer();
       
   165     }
       
   166 
       
   167     private void testSymbol(TestCompiler compiler) {
       
   168         test(compiler, getMethod("getConstSymbol", HotSpotMetaAccessProvider.class), (HotSpotMetaAccessProvider) metaAccess);
       
   169     }
       
   170 
       
   171     @Test
       
   172     public void testInlineSymbol() {
       
   173         testSymbol(asm -> {
       
   174             HotSpotSymbol symbol = ((HotSpotMetaAccessProvider) metaAccess).lookupSymbol("java/lang/Object");
       
   175             Register ret = asm.emitLoadPointer((HotSpotConstant) symbol.asConstant());
       
   176             asm.emitPointerRet(ret);
       
   177         });
       
   178     }
       
   179 
       
   180     @Test
       
   181     public void testSymbolInDataSection() {
       
   182         testSymbol(asm -> {
       
   183             HotSpotSymbol symbol = ((HotSpotMetaAccessProvider) metaAccess).lookupSymbol("java/lang/Object");
       
   184             DataSectionReference ref = asm.emitDataItem((HotSpotConstant) symbol.asConstant());
       
   185             Register ret = asm.emitLoadPointer(ref);
       
   186             asm.emitPointerRet(ret);
       
   187         });
       
   188     }
       
   189 }
   160 }