Class ScriptNode

All Implemented Interfaces:
Comparable<AstNode>, Iterable<Node>
Direct Known Subclasses:
AstRoot, FunctionNode

public class ScriptNode extends Scope
Base type for AstRoot and FunctionNode nodes, which need to collect much of the same information.
  • Constructor Details

    • ScriptNode

      public ScriptNode()
    • ScriptNode

      public ScriptNode(int pos)
  • Method Details

    • getSourceName

      public String getSourceName()
      Returns the URI, path or descriptive text indicating the origin of this script's source code.
    • setSourceName

      public void setSourceName(String sourceName)
      Sets the URI, path or descriptive text indicating the origin of this script's source code.
    • getEncodedSourceStart

      public int getEncodedSourceStart()
      Returns the start offset of the encoded source. Only valid if getEncodedSource() returns non-null.
    • setEncodedSourceStart

      public void setEncodedSourceStart(int start)
      Used by code generator.
      See Also:
    • getEncodedSourceEnd

      public int getEncodedSourceEnd()
      Returns the end offset of the encoded source. Only valid if getEncodedSource() returns non-null.
    • setEncodedSourceEnd

      public void setEncodedSourceEnd(int end)
      Used by code generator.
      See Also:
    • setEncodedSourceBounds

      public void setEncodedSourceBounds(int start, int end)
      Used by code generator.
      See Also:
    • setEncodedSource

      public void setEncodedSource(String encodedSource)
      Used by the code generator.
      See Also:
    • getEncodedSource

      public String getEncodedSource()
      Returns a canonical version of the source for this script or function, for use in implementing the Object.toSource method of JavaScript objects. This source encoding is only recorded during code generation. It must be passed back to Decompiler.decompile(java.lang.String, int, org.mozilla.javascript.UintMap) to construct the human-readable source string.

      Given a parsed AST, you can always convert it to source code using the AstNode.toSource(int) method, although it's not guaranteed to produce exactly the same results as Object.toSource with respect to formatting, parenthesization and other details.

      Returns:
      the encoded source, or null if it was not recorded.
    • getBaseLineno

      public int getBaseLineno()
    • setBaseLineno

      public void setBaseLineno(int lineno)
      Sets base (starting) line number for this script or function. This is a one-time operation, and throws an exception if the line number has already been set.
    • getEndLineno

      public int getEndLineno()
    • setEndLineno

      public void setEndLineno(int lineno)
    • getFunctionCount

      public int getFunctionCount()
    • getFunctionNode

      public FunctionNode getFunctionNode(int i)
    • getFunctions

      public List<FunctionNode> getFunctions()
    • addFunction

      public int addFunction(FunctionNode fnNode)
      Adds a FunctionNode to the functions table for codegen. Does not set the parent of the node.
      Returns:
      the index of the function within its parent
    • getRegexpCount

      public int getRegexpCount()
    • getRegexpString

      public String getRegexpString(int index)
    • getRegexpFlags

      public String getRegexpFlags(int index)
    • addRegExp

      public void addRegExp(RegExpLiteral re)
      Called by IRFactory to add a RegExp to the regexp table.
    • getIndexForNameNode

      public int getIndexForNameNode(Node nameNode)
    • getParamOrVarName

      public String getParamOrVarName(int index)
    • getParamCount

      public int getParamCount()
    • getParamAndVarCount

      public int getParamAndVarCount()
    • getParamAndVarNames

      public String[] getParamAndVarNames()
    • getParamAndVarConst

      public boolean[] getParamAndVarConst()
    • getSymbols

      public List<Symbol> getSymbols()
    • setSymbols

      public void setSymbols(List<Symbol> symbols)
    • flattenSymbolTable

      public void flattenSymbolTable(boolean flattenAllTables)
      Assign every symbol a unique integer index. Generate arrays of variable names and constness that can be indexed by those indices.
      Parameters:
      flattenAllTables - if true, flatten all symbol tables, included nested block scope symbol tables. If false, just flatten the script's or function's symbol table.
    • getCompilerData

      public Object getCompilerData()
    • setCompilerData

      public void setCompilerData(Object data)
    • getNextTempName

      public String getNextTempName()
    • visit

      public void visit(NodeVisitor v)
      Description copied from class: Jump
      Jumps are only used directly during code generation, and do not support this interface.
      Overrides:
      visit in class Scope
      Parameters:
      v - the object to call with this node and its children