Class J2clEqualitySameRewriterPass


  • public class J2clEqualitySameRewriterPass
    extends java.lang.Object
    An optimization pass to re-write J2CL Equality.$same.
    • Method Detail

      • report

        protected void report​(DiagnosticType diagnostic,
                              Node n)
        Helper method for reporting an error to the compiler when applying a peephole optimization.
        Parameters:
        diagnostic - The error type
        n - The node for which the error should be reported
      • areNodesEqualForInlining

        protected boolean areNodesEqualForInlining​(Node n1,
                                                   Node n2)
        Are the nodes equal for the purpose of inlining? If type aware optimizations are on, type equality is checked.
      • isASTNormalized

        protected boolean isASTNormalized()
        Is the current AST normalized? (e.g. has the Normalize pass been run and has the Denormalize pass not yet been run?)
      • mayEffectMutableState

        protected boolean mayEffectMutableState​(Node n)
        Returns whether the node may create new mutable state, or change existing state.
      • mayHaveSideEffects

        protected boolean mayHaveSideEffects​(Node n)
        Returns whether the node may have side effects when executed.
      • getSideEffectFreeNumberValue

        protected java.lang.Double getSideEffectFreeNumberValue​(Node n)
        Returns the number value of the node if it has one and it cannot have side effects.

        Returns null otherwise.

      • getSideEffectFreeBigIntValue

        protected java.math.BigInteger getSideEffectFreeBigIntValue​(Node n)
        Returns the bigint value of the node if it has one and it cannot have side effects.

        Returns null otherwise.

      • getSideEffectFreeStringValue

        protected java.lang.String getSideEffectFreeStringValue​(Node n)
        Gets the value of a node as a String, or null if it cannot be converted.

        This method effectively emulates the String() JavaScript cast function when possible and the node has no side effects. Otherwise, it returns null.

      • getSideEffectFreeBooleanValue

        protected Tri getSideEffectFreeBooleanValue​(Node n)
        Calculate the known boolean value for a node if possible and if it has no side effects.

        Returns Tri.UNKNOWN if the node has side effects or its value cannot be statically determined.

      • nodeTypeMayHaveSideEffects

        protected boolean nodeTypeMayHaveSideEffects​(Node n)
        Returns true if the current node's type implies side effects.

        This is a non-recursive version of the may have side effects check; used to check wherever the current node's type is one of the reason's why a subtree has side effects.

      • isEcmaScript5OrGreater

        protected boolean isEcmaScript5OrGreater()
        Returns whether the output language is ECMAScript 5 or later. Workarounds for quirks in browsers that do not support ES5 can be ignored when this is true.
      • getCodingConvention

        protected CodingConvention getCodingConvention()
        Returns the current coding convention.
      • reportChangeToEnclosingScope

        protected final void reportChangeToEnclosingScope​(Node n)