Skip to content

Commit bc0a7c3

Browse files
committed
refactoring of acmp data profiling interface
1 parent b9e1802 commit bc0a7c3

File tree

5 files changed

+30
-80
lines changed

5 files changed

+30
-80
lines changed

src/hotspot/share/jvmci/jvmciCompilerToVM.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -494,10 +494,10 @@ C2V_VMENTRY_NULL(jobject, getResolvedJavaType0, (JNIEnv* env, jobject, jobject b
494494
}
495495
} else if (JVMCIENV->isa_HotSpotMethodData(base_object)) {
496496
jlong base_address = (intptr_t) JVMCIENV->asMethodData(base_object);
497-
Klass* temp = *((Klass**) (intptr_t) (base_address + offset));
498-
temp = (Klass*)(((uintptr_t) temp)& WordAlignmentMask);
499-
klass = temp;
500-
//klass = *((Klass**) (intptr_t) (base_address + offset));
497+
intptr_t temp = (intptr_t) *((Klass**) (intptr_t) (base_address + offset));
498+
// clear the bits used for acmp data profiling
499+
clear_bits(temp, 0b011);
500+
klass = (Klass*) temp;
501501
if (klass == nullptr || !klass->is_loader_alive()) {
502502
// Klasses in methodData might be concurrently unloading so return null in that case.
503503
return nullptr;

src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/ACmpDataAccessor.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,4 @@ public interface ACmpDataAccessor {
77

88
void setDeoptClassCheck();
99
void setDeoptNullCheck();
10-
11-
static ACmpDataAccessor create(){
12-
return new HotSpotMethodData.ACmpData.ACmpDataAccessorImpl();
13-
}
1410
}

src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotMethodData.java

Lines changed: 26 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -737,74 +737,58 @@ public StringBuilder appendTo(StringBuilder sb, HotSpotMethodData data, int pos)
737737
static class ACmpData extends BranchData {
738738

739739
abstract static class SingleTypeEntryImpl implements SingleTypeEntry {
740-
final long value;
741-
final int flags;
742-
final VMState state;
743-
HotSpotResolvedObjectType validType;
744-
boolean maybeNull;
745-
boolean neverNull;
746-
boolean alwaysNull;
747-
boolean inlineType;
740+
private final long value;
741+
private final VMState state;
742+
private HotSpotResolvedObjectType validType;
743+
private boolean maybeNull;
744+
private boolean neverNull;
745+
private boolean alwaysNull;
746+
private boolean inlineType;
748747

749748
final static long nullSeen =1;
750749
final static long typeMask = ~nullSeen;
751750
final static long typeUnknown = 2;
752-
final static long statusBits = nullSeen | typeUnknown;
753-
final static long typeKlassMask = ~statusBits;
754751

755752
SingleTypeEntryImpl(ACmpData aCmpData, HotSpotMethodData data, int position) {
756753
this.state = aCmpData.state;
757-
this.flags = aCmpData.getFlags(data, position);
758754
this.value = data.readPointer(position, getOperandOffset());
755+
759756
int offset = state.computeFullOffset(position, getOperandOffset());
760-
this.validType = computeValidType(data, offset);
761-
if(!wasNullSeen()){
757+
this.validType = computeValidType(this.value, data, offset);
758+
759+
if(!wasNullSeen(this.value)){
762760
this.neverNull = true;
763-
}else if(isTypeNone()){
761+
}else if(isTypeNone(this.value)){
764762
this.alwaysNull = true;
765763
}else{
766764
this.maybeNull = true;
767765
}
768-
this.inlineType =(flags & getInlineFlag()) !=0;
769-
}
770766

771-
SingleTypeEntryImpl() {
772-
this.value = 0;
773-
this.state = null;
774-
this.flags = 0;
775-
this.validType = null;
776-
this.maybeNull = wasNullSeen() && !isTypeNone();
777-
this.neverNull = !wasNullSeen();
778-
this.alwaysNull= isTypeNone();
779-
this.inlineType =false;
767+
int flags = aCmpData.getFlags(data, position);
768+
this.inlineType =(flags & getInlineFlag()) !=0;
780769
}
781770

782771
abstract int getOperandOffset();
783772
abstract int getInlineFlag();
784773

774+
protected VMState getState(){
775+
return state;
776+
}
785777

786-
@Override
787-
public boolean isTypeNone(){
778+
private static boolean isTypeNone(long value){
788779
return (value & typeMask) == 0;
789780
}
790781

791-
@Override
792-
public boolean isTypeUnknown(){
782+
private static boolean isTypeUnknown(long value){
793783
return (value & typeUnknown) != 0;
794784
}
795785

796-
@Override
797-
public boolean wasNullSeen(){
786+
private static boolean wasNullSeen(long value){
798787
return (value & nullSeen) != 0;
799788
}
800789

801-
@Override
802-
public long klassPart(){
803-
return value & typeKlassMask;
804-
}
805-
806-
private HotSpotResolvedObjectType computeValidType(HotSpotMethodData data, int offset){
807-
if(!isTypeNone() && ! isTypeUnknown()){
790+
private HotSpotResolvedObjectType computeValidType(long value, HotSpotMethodData data, int offset){
791+
if(!isTypeNone(value) && ! isTypeUnknown(value)){
808792
return compilerToVM().getResolvedJavaType(data, offset);
809793
}else{
810794
return null;
@@ -858,16 +842,14 @@ static class LeftSingleTypeEntryImpl extends SingleTypeEntryImpl {
858842
super(aCmpData, data, position);
859843
}
860844

861-
LeftSingleTypeEntryImpl(){}
862-
863845
@Override
864846
int getOperandOffset(){
865-
return state.leftOperandOffset;
847+
return getState().leftOperandOffset;
866848
}
867849

868850
@Override
869851
int getInlineFlag(){
870-
return state.leftInlineTypeFlag;
852+
return getState().leftInlineTypeFlag;
871853
}
872854
}
873855

@@ -877,16 +859,14 @@ static class RightSingleTypeEntryImpl extends SingleTypeEntryImpl {
877859
super(aCmpData, data, position);
878860
}
879861

880-
RightSingleTypeEntryImpl(){}
881-
882862
@Override
883863
int getOperandOffset(){
884-
return state.rightOperandOffset;
864+
return getState().rightOperandOffset;
885865
}
886866

887867
@Override
888868
int getInlineFlag(){
889-
return state.rightInlineTypeFlag;
869+
return getState().rightInlineTypeFlag;
890870
}
891871
}
892872

@@ -900,23 +880,6 @@ static class ACmpDataAccessorImpl implements ACmpDataAccessor{
900880
right = aCmpData.getRight(aCmpData, data, position);
901881
}
902882

903-
ACmpDataAccessorImpl(){
904-
// left = new SingleTypeEntryImpl(1, false, null, 0);
905-
// right = new SingleTypeEntryImpl(1, false, null, 0);
906-
left = new LeftSingleTypeEntryImpl(){
907-
@Override
908-
int getInlineFlag() {
909-
return 0;
910-
}
911-
};
912-
right = new RightSingleTypeEntryImpl(){
913-
@Override
914-
int getInlineFlag() {
915-
return 0;
916-
}
917-
};
918-
}
919-
920883
@Override
921884
public SingleTypeEntry getLeft() {
922885
return left;

src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/SingleTypeEntry.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,6 @@
33
public interface SingleTypeEntry{
44

55

6-
boolean isTypeNone();
7-
8-
boolean isTypeUnknown();
9-
10-
boolean wasNullSeen();
11-
12-
long klassPart();
13-
146
HotSpotResolvedObjectType getValidType();
157

168
boolean maybeNull();

src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/meta/DefaultProfilingInfo.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ public TriState getExceptionSeen(int bci) {
7171

7272
@Override
7373
public ACmpDataAccessor getACmpData(int bci) {
74-
//return ACmpDataAccessor.create();
7574
return null;
7675
}
7776

0 commit comments

Comments
 (0)