Skip to content
Closed
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/hotspot/share/runtime/vmStructs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2390,6 +2390,7 @@
COMPILER2_PRESENT(declare_constant(CodeBlobKind::Exception)) \
COMPILER2_PRESENT(declare_constant(CodeBlobKind::UncommonTrap)) \
declare_constant(CodeBlobKind::Upcall) \
declare_constant(CodeBlobKind::Number_Of_Kinds) \
\
/***************/ \
/* OopMapValue */ \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ public class CodeBlob extends VMObject {
private static int SafepointKind;
private static int UncommonTrapKind;
private static int UpcallKind;
private static int NumberOfKinds;

private static Class[] wrapperClasses;

public CodeBlob(Address addr) {
super(addr);
Expand Down Expand Up @@ -101,9 +104,29 @@ private static void initialize(TypeDataBase db) {
DeoptimizationKind = db.lookupIntConstant("CodeBlobKind::Deoptimization").intValue();
SafepointKind = db.lookupIntConstant("CodeBlobKind::Safepoint").intValue();
UpcallKind = db.lookupIntConstant("CodeBlobKind::Upcall").intValue();
NumberOfKinds = db.lookupIntConstant("CodeBlobKind::Number_Of_Kinds").intValue();
if (VM.getVM().isServerCompiler()) {
ExceptionKind = db.lookupIntConstant("CodeBlobKind::Exception").intValue();
UncommonTrapKind = db.lookupIntConstant("CodeBlobKind::UncommonTrap").intValue();
ExceptionKind = db.lookupIntConstant("CodeBlobKind::Exception").intValue();
UncommonTrapKind = db.lookupIntConstant("CodeBlobKind::UncommonTrap").intValue();
} else {
// Set invalid value to not match default.
ExceptionKind = NumberOfKinds + 1;
UncommonTrapKind = NumberOfKinds + 1;
}

wrapperClasses = new Class[NumberOfKinds];
wrapperClasses[NMethodKind] = NMethod.class;
wrapperClasses[BufferKind] = BufferBlob.class;
wrapperClasses[AdapterKind] = AdapterBlob.class;
wrapperClasses[VtableKind] = VtableBlob.class;
wrapperClasses[MHAdapterKind] = MethodHandlesAdapterBlob.class;
wrapperClasses[RuntimeStubKind] = RuntimeStub.class;
wrapperClasses[DeoptimizationKind] = DeoptimizationBlob.class;
wrapperClasses[SafepointKind] = SafepointBlob.class;
wrapperClasses[UpcallKind] = UpcallStub.class;
if (VM.getVM().isServerCompiler()) {
wrapperClasses[ExceptionKind] = ExceptionBlob.class;
wrapperClasses[UncommonTrapKind] = UncommonTrapBlob.class;
}
}

Expand All @@ -117,33 +140,7 @@ public void update(Observable o, Object data) {

public static Class<?> getClassFor(Address addr) {
CodeBlob cb = new CodeBlob(addr);
if (cb.isNMethod()) {
return NMethod.class;
} else if (cb.isBufferBlob()) {
return BufferBlob.class;
} else if (cb.isAdapterBlob()) {
return AdapterBlob.class;
} else if (cb.isVtableBlob()) {
return VtableBlob.class;
} else if (cb.isMHAdapterBlob()) {
return MethodHandlesAdapterBlob.class;
} else if (cb.isRuntimeStub()) {
return RuntimeStub.class;
} else if (cb.isDeoptimizationBlob()) {
return DeoptimizationBlob.class;
} else if (cb.isSafepointBlob()) {
return SafepointBlob.class;
} else if (cb.isUpcallStub()) {
return UpcallStub.class;
}
if (VM.getVM().isServerCompiler()) {
if (cb.isExceptionBlob()) {
return ExceptionBlob.class;
} else if (cb.isUncommonTrapBlob()) {
return UncommonTrapBlob.class;
}
}
return null;
return wrapperClasses[cb.getKind()];
}

public Address headerBegin() { return getAddress(); }
Expand Down Expand Up @@ -209,15 +206,9 @@ public ImmutableOopMapSet getOopMaps() {

public boolean isDeoptimizationBlob() { return getKind() == DeoptimizationKind; }

public boolean isUncommonTrapBlob() {
if (!VM.getVM().isServerCompiler()) return false;
return getKind() == UncommonTrapKind;
}
public boolean isUncommonTrapBlob() { return getKind() == UncommonTrapKind; }

public boolean isExceptionBlob() {
if (!VM.getVM().isServerCompiler()) return false;
return getKind() == ExceptionKind;
}
public boolean isExceptionBlob() { return getKind() == ExceptionKind; }

public boolean isSafepointBlob() { return getKind() == SafepointKind; }

Expand Down