Class ValueNumberFrame

    • Field Detail

      • mergedValueList

        private java.util.ArrayList<ValueNumber> mergedValueList
      • phiNodeForLoads

        public boolean phiNodeForLoads
      • USE_WRITTEN_OUTSIDE_OF_CONSTRUCTOR

        private static final boolean USE_WRITTEN_OUTSIDE_OF_CONSTRUCTOR
        See Also:
        Constant Field Values
      • constructedUnmodifiableMap

        static int constructedUnmodifiableMap
      • reusedMap

        static int reusedMap
      • createdEmptyMap

        static int createdEmptyMap
      • madeImmutableMutable

        static int madeImmutableMutable
      • reusedMutableMap

        static int reusedMutableMap
    • Constructor Detail

      • ValueNumberFrame

        public ValueNumberFrame​(int numLocals)
    • Method Detail

      • availableLoadMapAsString

        public java.lang.String availableLoadMapAsString()
      • getAvailableLoad

        public ValueNumber[] getAvailableLoad​(AvailableLoad availableLoad)
        Look for an available load.
        Parameters:
        availableLoad - the AvailableLoad (reference and field)
        Returns:
        the value(s) available, or null if no matching entry is found
      • addAvailableLoad

        public void addAvailableLoad​(AvailableLoad availableLoad,
                                     @Nonnull
                                     ValueNumber[] value)
        Add an available load.
        Parameters:
        availableLoad - the AvailableLoad (reference and field)
        value - the value(s) loaded
      • killLoadsOfField

        public void killLoadsOfField​(XField field)
        Kill all loads of given field.
        Parameters:
        field - the field
      • killAllLoads

        public void killAllLoads()
        Kill all loads. This conservatively handles method calls where we don't really know what fields might be assigned.
      • killAllLoads

        public void killAllLoads​(boolean primitiveOnly)
      • killAllLoadsExceptFor

        public void killAllLoadsExceptFor​(@CheckForNull
                                          ValueNumber v)
      • killAllLoadsOf

        public void killAllLoadsOf​(@CheckForNull
                                   ValueNumber v)
        Kill all loads. This conservatively handles method calls where we don't really know what fields might be assigned.
      • killLoadsOf

        public void killLoadsOf​(java.util.Set<XField> fieldsToKill)
      • killLoadsWithSimilarName

        public void killLoadsWithSimilarName​(java.lang.String className,
                                             java.lang.String methodName)
      • killAvailableLoads

        private void killAvailableLoads​(java.util.HashSet<AvailableLoad> killMe)
      • extractPackageName

        private java.lang.String extractPackageName​(java.lang.String className)
      • getMergedValue

        ValueNumber getMergedValue​(int slot)
      • setMergedValue

        void setMergedValue​(int slot,
                            ValueNumber value)
      • copyFrom

        public void copyFrom​(Frame<ValueNumber> other)
        Description copied from class: Frame
        Make this Frame exactly the same as the one given as a parameter.
        Overrides:
        copyFrom in class Frame<ValueNumber>
        Parameters:
        other - the Frame to make this object the same as
      • assignAvailableLoadMap

        private void assignAvailableLoadMap​(ValueNumberFrame other)
      • assignPreviouslyKnownAs

        private void assignPreviouslyKnownAs​(ValueNumberFrame other)
      • toString

        public java.lang.String toString()
        Description copied from class: Frame
        Convert to string.
        Overrides:
        toString in class Frame<ValueNumber>
      • valueToString

        private static java.lang.String valueToString​(ValueNumber[] valueNumberList)
      • haveMatchingFlags

        public boolean haveMatchingFlags​(ValueNumber v1,
                                         ValueNumber v2)
        Returns:
        true if v1 and v2 have a flag in common
      • valueNumbersForLoads

        public java.util.Collection<ValueNumber> valueNumbersForLoads()
      • setPreviouslyKnownAs

        private void setPreviouslyKnownAs​(java.util.Map<ValueNumber,​AvailableLoad> previouslyKnownAs)
      • sameAs

        public boolean sameAs​(Frame<ValueNumber> other)
        Description copied from class: Frame
        Return true if this stack frame is the same as the one given as a parameter.
        Overrides:
        sameAs in class Frame<ValueNumber>
        Parameters:
        other - the other Frame
        Returns:
        true if the frames are the same, false otherwise
      • hasAvailableLoads

        public boolean hasAvailableLoads()