Class SymbolMapsLinker


@LinkerOrder(POST) @Shardable public class SymbolMapsLinker extends AbstractLinker
This Linker exports the symbol maps associated with each compilation result as a private file. The names of the symbol maps files are computed by appending ".symbolMap" to the value returned by CompilationResult.getStrongName().
  • Field Details

    • MAKE_SYMBOL_MAPS

      public static final String MAKE_SYMBOL_MAPS
      See Also:
    • STRONG_NAME_SUFFIX

      public static final String STRONG_NAME_SUFFIX
      This value is appended to the strong name of the CompilationResult to form the symbol map's filename.
      See Also:
  • Constructor Details

    • SymbolMapsLinker

      public SymbolMapsLinker()
  • Method Details

    • propertyMapToString

      public static String propertyMapToString(Map<SelectionProperty,String> propertyMap)
    • getDescription

      public String getDescription()
      Description copied from class: Linker
      Returns a human-readable String describing the Linker.
      Specified by:
      getDescription in class Linker
    • link

      public ArtifactSet link(TreeLogger logger, LinkerContext context, ArtifactSet artifacts) throws UnableToCompleteException
      Included to support legacy non-shardable subclasses.
      Overrides:
      link in class Linker
      Parameters:
      logger - the TreeLogger to record to
      context - provides access to the Linker's environment
      artifacts - an unmodifiable view of the artifacts to link
      Returns:
      the artifacts that should be propagated through the linker chain
      Throws:
      UnableToCompleteException - if compilation violates assumptions made by the Linker or for errors encountered by the Linker
    • link

      public ArtifactSet link(TreeLogger logger, LinkerContext context, ArtifactSet artifacts, boolean onePermutation) throws UnableToCompleteException
      Description copied from class: Linker

      This method is invoked for linkers annotated with Shardable. It is called at two points during compilation: after the compile of each permutation, and after all compilation has finished. The onePermutation is true for a per-permutation call and false for a global final-link call.

      For one-permutation calls, this method is passed all artifacts generated for just the one permutation. For the global call at the end of compilation, this method sees artifacts for the whole compilation, but with two modifications intended to support builds on computer clusters:

      1. All EmittedArtifacts have been converted to BinaryEmittedArtifacts
      2. All artifacts not marked as Transferable have been discarded.
      Overrides:
      link in class Linker
      Parameters:
      logger - the TreeLogger to record to
      context - provides access to the Linker's environment
      artifacts - an unmodifiable view of the artifacts to link
      onePermutation - true for a one-permutation call
      Returns:
      the artifacts that should be propagated through the linker chain
      Throws:
      UnableToCompleteException - if compilation violates assumptions made by the Linker or for errors encountered by the Linker
    • doEmitSymbolMap

      protected void doEmitSymbolMap(TreeLogger logger, ArtifactSet artifacts, CompilationResult result, ByteArrayOutputStream out) throws UnableToCompleteException
      Override to change the manner in which the symbol map is emitted.
      Throws:
      UnableToCompleteException
    • doWriteSymbolMap

      protected void doWriteSymbolMap(TreeLogger logger, CompilationResult result, PrintWriter pw) throws UnableToCompleteException
      Override to change the format of the symbol map.
      Parameters:
      logger - the logger to write to
      result - the compilation result
      pw - the output PrintWriter
      Throws:
      UnableToCompleteException - if an error occurs
    • emitSourceMapString

      protected SyntheticArtifact emitSourceMapString(TreeLogger logger, String contents, String partialPath) throws UnableToCompleteException
      Throws:
      UnableToCompleteException