93 94 @Test 95 public void testNarrowDataSectionReference() { 96 Assume.assumeTrue(config.useCompressedOops); 97 test(asm -> { 98 ResolvedJavaType type = metaAccess.lookupJavaType(getConstClass()); 99 HotSpotConstant c = (HotSpotConstant) constantReflection.asJavaClass(type); 100 HotSpotConstant cCompressed = (HotSpotConstant) c.compress(); 101 DataSectionReference ref = asm.emitDataItem(cCompressed); 102 Register compressed = asm.emitLoadNarrowPointer(ref); 103 Register ret = asm.emitUncompressPointer(compressed, config.narrowOopBase, config.narrowOopShift); 104 asm.emitPointerRet(ret); 105 }); 106 } 107 108 @Test 109 public void testInlineMetadata() { 110 test(asm -> { 111 ResolvedJavaType type = metaAccess.lookupJavaType(getConstClass()); 112 Register klass = asm.emitLoadPointer((HotSpotConstant) constantReflection.asObjectHub(type)); 113 Register ret = asm.emitLoadPointer(klass, config.classMirrorOffset); 114 asm.emitPointerRet(ret); 115 }); 116 } 117 118 @Test 119 public void testInlineNarrowMetadata() { 120 Assume.assumeTrue(config.useCompressedClassPointers); 121 test(asm -> { 122 ResolvedJavaType type = metaAccess.lookupJavaType(getConstClass()); 123 HotSpotConstant hub = (HotSpotConstant) constantReflection.asObjectHub(type); 124 Register narrowKlass = asm.emitLoadPointer((HotSpotConstant) hub.compress()); 125 Register klass = asm.emitUncompressPointer(narrowKlass, config.narrowKlassBase, config.narrowKlassShift); 126 Register ret = asm.emitLoadPointer(klass, config.classMirrorOffset); 127 asm.emitPointerRet(ret); 128 }); 129 } 130 131 @Test 132 public void testMetadataInDataSection() { 133 test(asm -> { 134 ResolvedJavaType type = metaAccess.lookupJavaType(getConstClass()); 135 HotSpotConstant hub = (HotSpotConstant) constantReflection.asObjectHub(type); 136 DataSectionReference ref = asm.emitDataItem(hub); 137 Register klass = asm.emitLoadPointer(ref); 138 Register ret = asm.emitLoadPointer(klass, config.classMirrorOffset); 139 asm.emitPointerRet(ret); 140 }); 141 } 142 143 @Test 144 public void testNarrowMetadataInDataSection() { 145 Assume.assumeTrue(config.useCompressedClassPointers); 146 test(asm -> { 147 ResolvedJavaType type = metaAccess.lookupJavaType(getConstClass()); 148 HotSpotConstant hub = (HotSpotConstant) constantReflection.asObjectHub(type); 149 HotSpotConstant narrowHub = (HotSpotConstant) hub.compress(); 150 DataSectionReference ref = asm.emitDataItem(narrowHub); 151 Register narrowKlass = asm.emitLoadNarrowPointer(ref); 152 Register klass = asm.emitUncompressPointer(narrowKlass, config.narrowKlassBase, config.narrowKlassShift); 153 Register ret = asm.emitLoadPointer(klass, config.classMirrorOffset); 154 asm.emitPointerRet(ret); 155 }); 156 } 157 } | 93 94 @Test 95 public void testNarrowDataSectionReference() { 96 Assume.assumeTrue(config.useCompressedOops); 97 test(asm -> { 98 ResolvedJavaType type = metaAccess.lookupJavaType(getConstClass()); 99 HotSpotConstant c = (HotSpotConstant) constantReflection.asJavaClass(type); 100 HotSpotConstant cCompressed = (HotSpotConstant) c.compress(); 101 DataSectionReference ref = asm.emitDataItem(cCompressed); 102 Register compressed = asm.emitLoadNarrowPointer(ref); 103 Register ret = asm.emitUncompressPointer(compressed, config.narrowOopBase, config.narrowOopShift); 104 asm.emitPointerRet(ret); 105 }); 106 } 107 108 @Test 109 public void testInlineMetadata() { 110 test(asm -> { 111 ResolvedJavaType type = metaAccess.lookupJavaType(getConstClass()); 112 Register klass = asm.emitLoadPointer((HotSpotConstant) constantReflection.asObjectHub(type)); 113 Register ret = asm.emitLoadPointer(asm.emitLoadPointer(klass, config.classMirrorHandleOffset), 0); 114 asm.emitPointerRet(ret); 115 }); 116 } 117 118 @Test 119 public void testInlineNarrowMetadata() { 120 Assume.assumeTrue(config.useCompressedClassPointers); 121 test(asm -> { 122 ResolvedJavaType type = metaAccess.lookupJavaType(getConstClass()); 123 HotSpotConstant hub = (HotSpotConstant) constantReflection.asObjectHub(type); 124 Register narrowKlass = asm.emitLoadPointer((HotSpotConstant) hub.compress()); 125 Register klass = asm.emitUncompressPointer(narrowKlass, config.narrowKlassBase, config.narrowKlassShift); 126 Register ret = asm.emitLoadPointer(asm.emitLoadPointer(klass, config.classMirrorHandleOffset), 0); 127 asm.emitPointerRet(ret); 128 }); 129 } 130 131 @Test 132 public void testMetadataInDataSection() { 133 test(asm -> { 134 ResolvedJavaType type = metaAccess.lookupJavaType(getConstClass()); 135 HotSpotConstant hub = (HotSpotConstant) constantReflection.asObjectHub(type); 136 DataSectionReference ref = asm.emitDataItem(hub); 137 Register klass = asm.emitLoadPointer(ref); 138 Register ret = asm.emitLoadPointer(asm.emitLoadPointer(klass, config.classMirrorHandleOffset), 0); 139 asm.emitPointerRet(ret); 140 }); 141 } 142 143 @Test 144 public void testNarrowMetadataInDataSection() { 145 Assume.assumeTrue(config.useCompressedClassPointers); 146 test(asm -> { 147 ResolvedJavaType type = metaAccess.lookupJavaType(getConstClass()); 148 HotSpotConstant hub = (HotSpotConstant) constantReflection.asObjectHub(type); 149 HotSpotConstant narrowHub = (HotSpotConstant) hub.compress(); 150 DataSectionReference ref = asm.emitDataItem(narrowHub); 151 Register narrowKlass = asm.emitLoadNarrowPointer(ref); 152 Register klass = asm.emitUncompressPointer(narrowKlass, config.narrowKlassBase, config.narrowKlassShift); 153 Register ret = asm.emitLoadPointer(asm.emitLoadPointer(klass, config.classMirrorHandleOffset), 0); 154 asm.emitPointerRet(ret); 155 }); 156 } 157 } |