215 } 216 return HotSpotMetaspaceConstantImpl.forMetaspaceObject(klass, false); 217 } 218 219 @Override 220 public Constant readNarrowKlassPointerConstant(Constant base, long displacement, CompressEncoding encoding) { 221 HotSpotResolvedObjectTypeImpl klass = readKlass(base, displacement, true); 222 if (klass == null) { 223 return HotSpotCompressedNullConstant.COMPRESSED_NULL; 224 } 225 return HotSpotMetaspaceConstantImpl.forMetaspaceObject(klass, true); 226 } 227 228 @Override 229 public Constant readMethodPointerConstant(Constant base, long displacement) { 230 assert (base instanceof HotSpotObjectConstantImpl); 231 Object baseObject = ((HotSpotObjectConstantImpl) base).object(); 232 HotSpotResolvedJavaMethodImpl method = runtime.getCompilerToVM().getResolvedJavaMethod(baseObject, displacement); 233 return HotSpotMetaspaceConstantImpl.forMetaspaceObject(method, false); 234 } 235 236 @Override 237 public Constant readSymbolConstant(Constant base, long displacement) { 238 int bits = runtime.getConfig().symbolPointerSize * Byte.SIZE; 239 long pointer = readRawValue(base, displacement, bits); 240 if (pointer == 0) { 241 return JavaConstant.NULL_POINTER; 242 } else { 243 String symbol = runtime.getCompilerToVM().getSymbol(pointer); 244 return new HotSpotSymbol(symbol, pointer).asConstant(); 245 } 246 } 247 } | 215 } 216 return HotSpotMetaspaceConstantImpl.forMetaspaceObject(klass, false); 217 } 218 219 @Override 220 public Constant readNarrowKlassPointerConstant(Constant base, long displacement, CompressEncoding encoding) { 221 HotSpotResolvedObjectTypeImpl klass = readKlass(base, displacement, true); 222 if (klass == null) { 223 return HotSpotCompressedNullConstant.COMPRESSED_NULL; 224 } 225 return HotSpotMetaspaceConstantImpl.forMetaspaceObject(klass, true); 226 } 227 228 @Override 229 public Constant readMethodPointerConstant(Constant base, long displacement) { 230 assert (base instanceof HotSpotObjectConstantImpl); 231 Object baseObject = ((HotSpotObjectConstantImpl) base).object(); 232 HotSpotResolvedJavaMethodImpl method = runtime.getCompilerToVM().getResolvedJavaMethod(baseObject, displacement); 233 return HotSpotMetaspaceConstantImpl.forMetaspaceObject(method, false); 234 } 235 } |