Skip to content
This repository has been archived by the owner on Apr 2, 2021. It is now read-only.

Unpick Format V1

Daomephsta edited this page Sep 1, 2019 · 1 revision

The instruction name is in plain text.
Parameters are denoted like this <group>.
Optional tokens are denoted like this (<type> <value>).

  • constant <group> <owner> <name> (<descriptor> <value>)
    Defines a constant field. Valid types for constant fields are int, long, float, double, String & Class. Constant fields must be both static & final.
    • Parameters
      • group - A continuous sequence of non-whitespace characters used to group constant definitions. Constant definitions and flag definitions cannot be in the same group.
      • owner - The fully qualified name of the class containing the constant field, with all periods (.) replaced with forward slashes (/).
      • name - The identifier of the constant field.
      • descriptor - The type descriptor of the constant field, formatted according to JVMS 4.3.2.
      • value - The value of the constant field. Integer values must be in base 10.
    • Examples:
      • constant foo_group example/Constants FOO I 3
      • constant bar example/Constants BAR
  • flag <group> <owner> <name> (<descriptor> <value>)
    Defines a flag field. Valid types for flag fields are int & long. Constant fields must be both static & final.
    • Parameters
      • group - A continuous sequence of non-whitespace characters used to group flag definitions. Constant definitions and flag definitions cannot be in the same group.
      • owner - The fully qualified name of the class containing the flag field, with all periods (.) replaced with forward slashes (/).
      • name - The identifier of the flag field.
      • descriptor - The type descriptor of the flag field, formatted according to JVMS 4.3.2.
      • value - The value of the flag field. Values must be in base 10.
    • Examples:
      • flag baz_group example/Constants BAZ I 3
      • flag eggs example/Constants EGGS
  • unpick <owner> <name> <descriptor> <parameter_groups>
    Defines a method that unpick should attempt to uninline the parameters of, when it finds an invocation of the method.
    • Parameters
      • owner - The fully qualified name of the class containing the method, with all periods (.) replaced with forward slashes (/).
      • name - The identifier of the method.
      • descriptor - The type descriptor of the method, formatted according to JVMS 4.3.3.
      • parameter_groups - A sequence of pairs of parameter indices and flag or constant group identifiers.
    • Examples:
      • unpick example/Example foo (J)V 0 long_flags
      • unpick example/Example bar (ZJ)V 1 long_constants
Clone this wiki locally