@@ -548,7 +548,7 @@ public TypeState forContextInsensitiveTypeState(PointsToAnalysis bb, TypeState s
548
548
AnalysisObject analysisObject = type .getContextInsensitiveAnalysisObject ();
549
549
return singleTypeState (bb , state .canBeNull (), makeProperties (bb , analysisObject ), analysisObject .type (), analysisObject );
550
550
} else {
551
- MultiTypeState multiState = (MultiTypeState ) state ;
551
+ ContextSensitiveMultiTypeState multiState = (ContextSensitiveMultiTypeState ) state ;
552
552
AnalysisObject [] objectsArray = new AnalysisObject [multiState .typesCount ()];
553
553
554
554
int i = 0 ;
@@ -560,7 +560,7 @@ public TypeState forContextInsensitiveTypeState(PointsToAnalysis bb, TypeState s
560
560
* immutable its types bit set cannot change.
561
561
*/
562
562
563
- BitSet typesBitSet = multiState .typesBitSet ();
563
+ BitSet typesBitSet = multiState .bitSet ();
564
564
int properties = makeProperties (bb , objectsArray );
565
565
return multiTypeState (bb , multiState .canBeNull (), properties , typesBitSet , objectsArray );
566
566
}
@@ -684,7 +684,7 @@ public TypeState doUnion(PointsToAnalysis bb, MultiTypeState state1, SingleTypeS
684
684
685
685
int properties = bb .analysisPolicy ().makePropertiesForUnion (s1 , s2 );
686
686
687
- MultiTypeState result = new ContextSensitiveMultiTypeState (bb , resultCanBeNull , properties , s1 .typesBitSet (), resultObjects );
687
+ MultiTypeState result = new ContextSensitiveMultiTypeState (bb , resultCanBeNull , properties , s1 .bitSet (), resultObjects );
688
688
assert !result .equals (s1 );
689
689
/*
690
690
* No need to check the result size against the all-instantiated since the type count
@@ -715,7 +715,7 @@ public TypeState doUnion(PointsToAnalysis bb, MultiTypeState state1, SingleTypeS
715
715
}
716
716
717
717
/* Create the types bit set by adding the s2 type to avoid walking the objects. */
718
- BitSet typesBitSet = TypeStateUtils .set (s1 .typesBitSet (), s2 .exactType ().getId ());
718
+ BitSet typesBitSet = TypeStateUtils .set (s1 .bitSet (), s2 .exactType ().getId ());
719
719
int properties = bb .analysisPolicy ().makePropertiesForUnion (s1 , s2 );
720
720
721
721
MultiTypeState result = new ContextSensitiveMultiTypeState (bb , resultCanBeNull , properties , typesBitSet , resultObjects );
@@ -760,7 +760,7 @@ private static TypeState doUnion0(PointsToAnalysis bb, ContextSensitiveMultiType
760
760
AnalysisObject [] resultObjects = TypeStateUtils .concat (s1 .objects , s2 .objects );
761
761
762
762
/* Logical OR the type bit sets. */
763
- BitSet resultTypesBitSet = TypeStateUtils .or (s1 .typesBitSet (), s2 .typesBitSet ());
763
+ BitSet resultTypesBitSet = TypeStateUtils .or (s1 .bitSet (), s2 .bitSet ());
764
764
int properties = bb .analysisPolicy ().makePropertiesForUnion (s1 , s2 );
765
765
766
766
MultiTypeState result = new ContextSensitiveMultiTypeState (bb , resultCanBeNull , properties , resultTypesBitSet , resultObjects );
@@ -774,7 +774,7 @@ private static TypeState doUnion0(PointsToAnalysis bb, ContextSensitiveMultiType
774
774
AnalysisObject [] resultObjects = TypeStateUtils .concat (s2 .objects , s1 .objects );
775
775
776
776
/* Logical OR the type bit sets. */
777
- BitSet resultTypesBitSet = TypeStateUtils .or (s1 .typesBitSet (), s2 .typesBitSet ());
777
+ BitSet resultTypesBitSet = TypeStateUtils .or (s1 .bitSet (), s2 .bitSet ());
778
778
int properties = bb .analysisPolicy ().makePropertiesForUnion (s1 , s2 );
779
779
780
780
MultiTypeState result = new ContextSensitiveMultiTypeState (bb , resultCanBeNull , properties , resultTypesBitSet , resultObjects );
@@ -797,10 +797,10 @@ private static TypeState doUnion1(PointsToAnalysis bb, ContextSensitiveMultiType
797
797
* Optimization that gives 1.5-3x in performance for the (typeflow) phase.
798
798
*/
799
799
private static TypeState allocationInsensitiveSpeculativeUnion1 (PointsToAnalysis bb , ContextSensitiveMultiTypeState s1 , ContextSensitiveMultiTypeState s2 , boolean resultCanBeNull ) {
800
- if (s1 .typesBitSet ().length () >= s2 .typesBitSet ().length ()) {
801
- long [] bits1 = TypeStateUtils .extractBitSetField (s1 .typesBitSet ());
802
- long [] bits2 = TypeStateUtils .extractBitSetField (s2 .typesBitSet ());
803
- assert s2 .typesBitSet ().cardinality () == s2 .objects .length : "Cardinality and length of objects must match." ;
800
+ if (s1 .bitSet ().length () >= s2 .bitSet ().length ()) {
801
+ long [] bits1 = TypeStateUtils .extractBitSetField (s1 .bitSet ());
802
+ long [] bits2 = TypeStateUtils .extractBitSetField (s2 .bitSet ());
803
+ assert s2 .bitSet ().cardinality () == s2 .objects .length : "Cardinality and length of objects must match." ;
804
804
805
805
boolean speculate = true ;
806
806
int numberOfWords = Math .min (bits1 .length , bits2 .length );
@@ -965,7 +965,7 @@ private static TypeState doUnion2(PointsToAnalysis bb, ContextSensitiveMultiType
965
965
assert resultObjects .size () > 1 : "The result state of a (Multi U Multi) operation must have at least 2 objects" ;
966
966
967
967
/* Logical OR the type bit sets. */
968
- BitSet resultTypesBitSet = TypeStateUtils .or (s1 .typesBitSet (), s2 .typesBitSet ());
968
+ BitSet resultTypesBitSet = TypeStateUtils .or (s1 .bitSet (), s2 .bitSet ());
969
969
int properties = bb .analysisPolicy ().makePropertiesForUnion (s1 , s2 );
970
970
971
971
MultiTypeState result = new ContextSensitiveMultiTypeState (bb , resultCanBeNull , properties , resultTypesBitSet , resultObjects .copyToArray (new AnalysisObject [resultObjects .size ()]));
@@ -1034,12 +1034,12 @@ public TypeState doIntersection(PointsToAnalysis bb, MultiTypeState state1, Mult
1034
1034
private static TypeState doIntersection0 (PointsToAnalysis bb , ContextSensitiveMultiTypeState s1 , ContextSensitiveMultiTypeState s2 , boolean resultCanBeNull ) {
1035
1035
/* Speculate that s1 and s2 have either the same types, or no types in common. */
1036
1036
1037
- if (s1 .typesBitSet ().equals (s2 .typesBitSet ())) {
1037
+ if (s1 .bitSet ().equals (s2 .bitSet ())) {
1038
1038
/* Speculate that s1 and s2 have the same types, i.e., the result is s1. */
1039
1039
return s1 .forCanBeNull (bb , resultCanBeNull );
1040
1040
}
1041
1041
1042
- if (!s1 .typesBitSet ().intersects (s2 .typesBitSet ())) {
1042
+ if (!s1 .bitSet ().intersects (s2 .bitSet ())) {
1043
1043
/* Speculate that s1 and s2 have no types in common, i.e., the result is empty. */
1044
1044
return TypeState .forEmpty ().forCanBeNull (bb , resultCanBeNull );
1045
1045
}
@@ -1139,7 +1139,7 @@ private static TypeState doIntersection2(PointsToAnalysis bb, ContextSensitiveMu
1139
1139
return new ContextSensitiveSingleTypeState (bb , resultCanBeNull , bb .analysisPolicy ().makeProperties (bb , objects ), objects [0 ].type (), objects );
1140
1140
} else {
1141
1141
/* Logical AND the type bit sets. */
1142
- BitSet resultTypesBitSet = TypeStateUtils .and (s1 .typesBitSet (), s2 .typesBitSet ());
1142
+ BitSet resultTypesBitSet = TypeStateUtils .and (s1 .bitSet (), s2 .bitSet ());
1143
1143
MultiTypeState result = new ContextSensitiveMultiTypeState (bb , resultCanBeNull , bb .analysisPolicy ().makeProperties (bb , objects ), resultTypesBitSet , objects );
1144
1144
1145
1145
/*
@@ -1200,7 +1200,7 @@ public TypeState doSubtraction(PointsToAnalysis bb, MultiTypeState state1, Singl
1200
1200
/* Multiple objects of the same type. */
1201
1201
return new ContextSensitiveSingleTypeState (bb , resultCanBeNull , bb .analysisPolicy ().makeProperties (bb , resultObjects ), resultObjects [0 ].type (), resultObjects );
1202
1202
} else {
1203
- BitSet resultTypesBitSet = TypeStateUtils .clear (s1 .typesBitSet (), s2 .exactType ().getId ());
1203
+ BitSet resultTypesBitSet = TypeStateUtils .clear (s1 .bitSet (), s2 .exactType ().getId ());
1204
1204
return new ContextSensitiveMultiTypeState (bb , resultCanBeNull , bb .analysisPolicy ().makeProperties (bb , resultObjects ), resultTypesBitSet , resultObjects );
1205
1205
}
1206
1206
@@ -1229,12 +1229,12 @@ public TypeState doSubtraction(PointsToAnalysis bb, MultiTypeState state1, Multi
1229
1229
private static TypeState doSubtraction0 (PointsToAnalysis bb , ContextSensitiveMultiTypeState s1 , ContextSensitiveMultiTypeState s2 , boolean resultCanBeNull ) {
1230
1230
/* Speculate that s1 and s2 have either the same types, or no types in common. */
1231
1231
1232
- if (s1 .typesBitSet ().equals (s2 .typesBitSet ())) {
1232
+ if (s1 .bitSet ().equals (s2 .bitSet ())) {
1233
1233
/* Speculate that s1 and s2 have the same types, i.e., the result is empty set. */
1234
1234
return TypeState .forEmpty ().forCanBeNull (bb , resultCanBeNull );
1235
1235
}
1236
1236
1237
- if (!s1 .typesBitSet ().intersects (s2 .typesBitSet ())) {
1237
+ if (!s1 .bitSet ().intersects (s2 .bitSet ())) {
1238
1238
/* Speculate that s1 and s2 have no types in common, i.e., the result is s1. */
1239
1239
return s1 .forCanBeNull (bb , resultCanBeNull );
1240
1240
}
@@ -1323,7 +1323,7 @@ private static TypeState doSubtraction2(PointsToAnalysis bb, ContextSensitiveMul
1323
1323
/* Multiple objects of the same type. */
1324
1324
return new ContextSensitiveSingleTypeState (bb , resultCanBeNull , bb .analysisPolicy ().makeProperties (bb , objects ), objects [0 ].type (), objects );
1325
1325
} else {
1326
- BitSet resultTypesBitSet = TypeStateUtils .andNot (s1 .typesBitSet (), s2 .typesBitSet ());
1326
+ BitSet resultTypesBitSet = TypeStateUtils .andNot (s1 .bitSet (), s2 .bitSet ());
1327
1327
/*
1328
1328
* Don't need to check if the result is close-to-all-instantiated since result
1329
1329
* <= s1.
0 commit comments