@@ -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 ;
0 commit comments