hotspot/test/compiler/jvmci/jdk.vm.ci.code.test/src/jdk/vm/ci/code/test/DataPatchTest.java
equal
deleted
inserted
replaced
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 } |