Permalink
Commits on Jul 11, 2018
  1. Fix instructions 45cc and 4rcc (invoke-polymorphic)

    agorski3 authored and JesusFreke committed Jul 6, 2018
    Previously the offset of the method prototype was 3 bytes from the
    instruction start for both instructions. This would put it somewhere in
    the middle of the register values and method reference. Changed it to
    the correct offset which is 6 bytes in both cases.
    
    45cc Instruction Format
      op(8 bits)
      number_of_regs(4 bits)
      reg_g(4 bits)
      method_reference(16 bits)
      reg_d(4 bits)
      reg_c(4 bits)
      reg_f(4 bits)
      ref_e(4 bits)
      method_prototype(16 bits)
    
    Example of invoke-polymorphic using 45cc
      Instruction: fa302f0021030800
      DexDump: invoke-polymorphic  {v1, v2, v3}, Ljava/lang/invoke/MethodHandle;
               .invoke:([Ljava/lang/Object;)Ljava/lang/Object;,
               (II)Ljava/lang/Object; // method@002f, proto@0008
    
    4rcc Instruction Format
      op(8 bits)
      number_of_regs(8 bits)
      method_reference(16 bits)
      start_register(16 bits)
      method_prototype(16 bits)
    
    Example of invoke-polymorphic using 4rcc
      Instruction: fb092f0000000800
      DexDump: invoke-polymorphic/range  {v0, v1, v2, v3, v4, v5, v6, v7, v8},
               Ljava/lang/invoke/MethodHandle;.invoke:([Ljava/lang/Object;)
               Ljava/lang/Object;, (IIIIIIILjava/lang/String;)Ljava/lang/Object;
               // method@002f, proto@0008
Commits on Jul 10, 2018
  1. Extract new class, PathEntryLoader from ClassPathResolver.

    A4Vision authored and JesusFreke committed Jun 20, 2018
    Extract method ClassPathResolver::getDefaultBootClassPath()
  2. Fix and extend hasOverflowed

    Lanchon authored and JesusFreke committed Jul 3, 2018
Commits on Jul 2, 2018
  1. Make mapDexVersionToApi return NO_VERSION in the style of the other maps

    Lanchon authored and JesusFreke committed Jun 14, 2018
    Note that this commit silently changes the behavior of dexlib2 public API.
    But mapDexVersionToApi was made available only a day ago in dexlib2 2.2.4,
    and if the next version is published quickly, then this change should have
    no real impact on clients.
Commits on Jul 1, 2018
  1. Refactor most of the utility classes from util into dexlib2

    JesusFreke committed Jun 30, 2018
    Now, util only contains the utilities that are needed by smali/baksmali,
    but not dexlib2. E.g. the common command line parsing utilities, some path
    utilities, etc.
    
    This also reverses the dependency between the util module and dexlib2.
Commits on Jun 14, 2018
Commits on Jun 13, 2018
  1. Fix for method reference sizes

    wojtek-kalicinski authored and JesusFreke committed Sep 13, 2017
    The protos can be shared across methods so we should not be counting
    them as part of private method size.
  2. MemoryDataStore: Handle weird arguments values correctly

    Lanchon authored and JesusFreke committed Sep 25, 2017
    Namely:
    - Negative arguments to InputStream::skip(n).
    - Large arguments to readAt(offset).
Commits on Jun 12, 2018
  1. Handle Changes in OAT Files for Android 8.1 (OAT 131)

    agorski3 authored and JesusFreke committed Jun 11, 2018
    - The OAT Header has a new field containing the offset to the
      entries for the DEX files.
        - The change was made in OAT 127.
        - All offsets in the header had to be adjusted to account
          for this new field.
        - The offset to the entries for the DEX files also had to
          be adjusted to use this field as they are no longer
          right after the key value store.
    - The format of the DEX entries also changed in OAT 127 and
      again in OAT 131.
        - The field containing the offset to the method bss
          mapping was added in OAT 127.
        - The field containing the offset to the dex sections
          layout was added in OAT 131 right before the method
          bss mapping offset.
  2. Simplified mapApiToArtVersion

    ale5000-git authored and JesusFreke committed Jun 6, 2018
  3. Bump the version to 2.2.4

    JesusFreke committed Jun 12, 2018
Commits on May 23, 2018