src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotConstantPool.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8073191-work Sdiff src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot

src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotConstantPool.java

Print this page




 570             }
 571         }
 572     }
 573 
 574     @Override
 575     public JavaType lookupType(int cpi, int opcode) {
 576         final LookupTypeCacheElement elem = this.lastLookupType;
 577         if (elem != null && elem.lastCpi == cpi) {
 578             return elem.javaType;
 579         } else {
 580             final Object type = compilerToVM().lookupKlassInPool(this, cpi);
 581             JavaType result = getJavaType(type);
 582             if (result instanceof ResolvedJavaType) {
 583                 this.lastLookupType = new LookupTypeCacheElement(cpi, result);
 584             }
 585             return result;
 586         }
 587     }
 588 
 589     @Override
 590     public JavaField lookupField(int cpi, int opcode) {
 591         final int index = rawIndexToConstantPoolIndex(cpi, opcode);
 592         final int nameAndTypeIndex = getNameAndTypeRefIndexAt(index);
 593         final int nameIndex = getNameRefIndexAt(nameAndTypeIndex);
 594         String name = lookupUtf8(nameIndex);
 595         final int typeIndex = getSignatureRefIndexAt(nameAndTypeIndex);
 596         String typeName = lookupUtf8(typeIndex);
 597         JavaType type = runtime().lookupType(typeName, getHolder(), false);
 598 
 599         final int holderIndex = getKlassRefIndexAt(index);
 600         JavaType holder = lookupType(holderIndex, opcode);
 601 
 602         if (holder instanceof HotSpotResolvedObjectTypeImpl) {
 603             long[] info = new long[2];
 604             HotSpotResolvedObjectTypeImpl resolvedHolder;
 605             try {
 606                 resolvedHolder = compilerToVM().resolveFieldInPool(this, index, (byte) opcode, info);
 607             } catch (Throwable t) {
 608                 /*
 609                  * If there was an exception resolving the field we give up and return an unresolved
 610                  * field.
 611                  */
 612                 return new HotSpotUnresolvedField(holder, name, type);
 613             }
 614             final int flags = (int) info[0];
 615             final long offset = info[1];
 616             HotSpotResolvedJavaField result = resolvedHolder.createField(name, type, offset, flags);
 617             return result;
 618         } else {
 619             return new HotSpotUnresolvedField(holder, name, type);
 620         }
 621     }
 622 
 623     @Override
 624     @SuppressWarnings("fallthrough")
 625     public void loadReferencedType(int cpi, int opcode) {
 626         int index;




 570             }
 571         }
 572     }
 573 
 574     @Override
 575     public JavaType lookupType(int cpi, int opcode) {
 576         final LookupTypeCacheElement elem = this.lastLookupType;
 577         if (elem != null && elem.lastCpi == cpi) {
 578             return elem.javaType;
 579         } else {
 580             final Object type = compilerToVM().lookupKlassInPool(this, cpi);
 581             JavaType result = getJavaType(type);
 582             if (result instanceof ResolvedJavaType) {
 583                 this.lastLookupType = new LookupTypeCacheElement(cpi, result);
 584             }
 585             return result;
 586         }
 587     }
 588 
 589     @Override
 590     public JavaField lookupField(int cpi, ResolvedJavaMethod method, int opcode) {
 591         final int index = rawIndexToConstantPoolIndex(cpi, opcode);
 592         final int nameAndTypeIndex = getNameAndTypeRefIndexAt(index);
 593         final int nameIndex = getNameRefIndexAt(nameAndTypeIndex);
 594         String name = lookupUtf8(nameIndex);
 595         final int typeIndex = getSignatureRefIndexAt(nameAndTypeIndex);
 596         String typeName = lookupUtf8(typeIndex);
 597         JavaType type = runtime().lookupType(typeName, getHolder(), false);
 598 
 599         final int holderIndex = getKlassRefIndexAt(index);
 600         JavaType holder = lookupType(holderIndex, opcode);
 601 
 602         if (holder instanceof HotSpotResolvedObjectTypeImpl) {
 603             long[] info = new long[2];
 604             HotSpotResolvedObjectTypeImpl resolvedHolder;
 605             try {
 606                 resolvedHolder = compilerToVM().resolveFieldInPool(this, index, (HotSpotResolvedJavaMethodImpl) method, (byte) opcode, info);
 607             } catch (Throwable t) {
 608                 /*
 609                  * If there was an exception resolving the field we give up and return an unresolved
 610                  * field.
 611                  */
 612                 return new HotSpotUnresolvedField(holder, name, type);
 613             }
 614             final int flags = (int) info[0];
 615             final long offset = info[1];
 616             HotSpotResolvedJavaField result = resolvedHolder.createField(name, type, offset, flags);
 617             return result;
 618         } else {
 619             return new HotSpotUnresolvedField(holder, name, type);
 620         }
 621     }
 622 
 623     @Override
 624     @SuppressWarnings("fallthrough")
 625     public void loadReferencedType(int cpi, int opcode) {
 626         int index;


src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotConstantPool.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File