Skip to content

Instantly share code, notes, and snippets.

@cwgreene
Last active October 28, 2017 20:29
Show Gist options
  • Save cwgreene/9a57daae990201528735aac941f98469 to your computer and use it in GitHub Desktop.
Save cwgreene/9a57daae990201528735aac941f98469 to your computer and use it in GitHub Desktop.
Javap Output for com/google/common/cache/CacheLoader$SupplierToCacheLoader.class

What happened to #17 in the constant pool?

Classfile /home/chris/Downloads/jartest/com/google/common/cache/CacheLoader$SupplierToCacheLoader.class
  Last modified Dec 9, 2015; size 1361 bytes
  MD5 checksum 77190ae73fdc93505ceada7d6f86eacd
  Compiled from "CacheLoader.java"
final class com.google.common.cache.CacheLoader$SupplierToCacheLoader<V extends java.lang.Object> extends com.google.common.cache.CacheLoader<java.lang.Object, V> implements java.io.Serializable
  minor version: 0
  major version: 50
  flags: ACC_FINAL, ACC_SUPER
Constant pool:
   #1 = Methodref          #7.#38         // com/google/common/cache/CacheLoader."<init>":()V
   #2 = Methodref          #39.#40        // com/google/common/base/Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
   #3 = Class              #41            // com/google/common/base/Supplier
   #4 = Fieldref           #6.#42         // com/google/common/cache/CacheLoader$SupplierToCacheLoader.computingSupplier:Lcom/google/common/base/Supplier;
   #5 = InterfaceMethodref #3.#43         // com/google/common/base/Supplier.get:()Ljava/lang/Object;
   #6 = Class              #44            // com/google/common/cache/CacheLoader$SupplierToCacheLoader
   #7 = Class              #45            // com/google/common/cache/CacheLoader
   #8 = Class              #46            // java/io/Serializable
   #9 = Utf8               computingSupplier
  #10 = Utf8               Lcom/google/common/base/Supplier;
  #11 = Utf8               Signature
  #12 = Utf8               Lcom/google/common/base/Supplier<TV;>;
  #13 = Utf8               serialVersionUID
  #14 = Utf8               J
  #15 = Utf8               ConstantValue
  #16 = Long               0l
  #18 = Utf8               <init>
  #19 = Utf8               (Lcom/google/common/base/Supplier;)V
  #20 = Utf8               Code
  #21 = Utf8               LineNumberTable
  #22 = Utf8               LocalVariableTable
  #23 = Utf8               this
  #24 = Utf8               SupplierToCacheLoader
  #25 = Utf8               InnerClasses
  #26 = Utf8               Lcom/google/common/cache/CacheLoader$SupplierToCacheLoader;
  #27 = Utf8               LocalVariableTypeTable
  #28 = Utf8               Lcom/google/common/cache/CacheLoader$SupplierToCacheLoader<TV;>;
  #29 = Utf8               (Lcom/google/common/base/Supplier<TV;>;)V
  #30 = Utf8               load
  #31 = Utf8               (Ljava/lang/Object;)Ljava/lang/Object;
  #32 = Utf8               key
  #33 = Utf8               Ljava/lang/Object;
  #34 = Utf8               (Ljava/lang/Object;)TV;
  #35 = Utf8               <V:Ljava/lang/Object;>Lcom/google/common/cache/CacheLoader<Ljava/lang/Object;TV;>;Ljava/io/Serializable;
  #36 = Utf8               SourceFile
  #37 = Utf8               CacheLoader.java
  #38 = NameAndType        #18:#47        // "<init>":()V
  #39 = Class              #48            // com/google/common/base/Preconditions
  #40 = NameAndType        #49:#31        // checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
  #41 = Utf8               com/google/common/base/Supplier
  #42 = NameAndType        #9:#10         // computingSupplier:Lcom/google/common/base/Supplier;
  #43 = NameAndType        #50:#51        // get:()Ljava/lang/Object;
  #44 = Utf8               com/google/common/cache/CacheLoader$SupplierToCacheLoader
  #45 = Utf8               com/google/common/cache/CacheLoader
  #46 = Utf8               java/io/Serializable
  #47 = Utf8               ()V
  #48 = Utf8               com/google/common/base/Preconditions
  #49 = Utf8               checkNotNull
  #50 = Utf8               get
  #51 = Utf8               ()Ljava/lang/Object;
{
  public com.google.common.cache.CacheLoader$SupplierToCacheLoader(com.google.common.base.Supplier<V>);
    descriptor: (Lcom/google/common/base/Supplier;)V
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
         0: aload_0
         1: invokespecial #1                  // Method com/google/common/cache/CacheLoader."<init>":()V
         4: aload_0
         5: aload_1
         6: invokestatic  #2                  // Method com/google/common/base/Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
         9: checkcast     #3                  // class com/google/common/base/Supplier
        12: putfield      #4                  // Field computingSupplier:Lcom/google/common/base/Supplier;
        15: return
      LineNumberTable:
        line 211: 0
        line 212: 4
        line 213: 15
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      16     0  this   Lcom/google/common/cache/CacheLoader$SupplierToCacheLoader;
            0      16     1 computingSupplier   Lcom/google/common/base/Supplier;
      LocalVariableTypeTable:
        Start  Length  Slot  Name   Signature
            0      16     0  this   Lcom/google/common/cache/CacheLoader$SupplierToCacheLoader<TV;>;
            0      16     1 computingSupplier   Lcom/google/common/base/Supplier<TV;>;
    Signature: #29                          // (Lcom/google/common/base/Supplier<TV;>;)V

  public V load(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
         0: aload_1
         1: invokestatic  #2                  // Method com/google/common/base/Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
         4: pop
         5: aload_0
         6: getfield      #4                  // Field computingSupplier:Lcom/google/common/base/Supplier;
         9: invokeinterface #5,  1            // InterfaceMethod com/google/common/base/Supplier.get:()Ljava/lang/Object;
        14: areturn
      LineNumberTable:
        line 217: 0
        line 218: 5
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      15     0  this   Lcom/google/common/cache/CacheLoader$SupplierToCacheLoader;
            0      15     1   key   Ljava/lang/Object;
      LocalVariableTypeTable:
        Start  Length  Slot  Name   Signature
            0      15     0  this   Lcom/google/common/cache/CacheLoader$SupplierToCacheLoader<TV;>;
    Signature: #34                          // (Ljava/lang/Object;)TV;
}
Signature: #35                          // <V:Ljava/lang/Object;>Lcom/google/common/cache/CacheLoader<Ljava/lang/Object;TV;>;Ljava/io/Serializable;
SourceFile: "CacheLoader.java"

xxd output:

0000000: cafe babe 0000 0032 0034 0a00 0700 260a  .......2.4....&.
0000010: 0027 0028 0700 2909 0006 002a 0b00 0300  .'.(..)....*....
0000020: 2b07 002c 0700 2d07 002e 0100 1163 6f6d  +..,..-......com
0000030: 7075 7469 6e67 5375 7070 6c69 6572 0100  putingSupplier..
0000040: 214c 636f 6d2f 676f 6f67 6c65 2f63 6f6d  !Lcom/google/com
0000050: 6d6f 6e2f 6261 7365 2f53 7570 706c 6965  mon/base/Supplie
0000060: 723b 0100 0953 6967 6e61 7475 7265 0100  r;...Signature..
0000070: 264c 636f 6d2f 676f 6f67 6c65 2f63 6f6d  &Lcom/google/com
0000080: 6d6f 6e2f 6261 7365 2f53 7570 706c 6965  mon/base/Supplie
0000090: 723c 5456 3b3e 3b01 0010 7365 7269 616c  r<TV;>;...serial
00000a0: 5665 7273 696f 6e55 4944 0100 014a 0100  VersionUID...J..
00000b0: 0d43 6f6e 7374 616e 7456 616c 7565 0500  .ConstantValue..
00000c0: 0000 0000 0000 0001 0006 3c69 6e69 743e  ..........<init>
00000d0: 0100 2428 4c63 6f6d 2f67 6f6f 676c 652f  ..$(Lcom/google/
00000e0: 636f 6d6d 6f6e 2f62 6173 652f 5375 7070  common/base/Supp
00000f0: 6c69 6572 3b29 5601 0004 436f 6465 0100  lier;)V...Code..
0000100: 0f4c 696e 654e 756d 6265 7254 6162 6c65  .LineNumberTable
0000110: 0100 124c 6f63 616c 5661 7269 6162 6c65  ...LocalVariable
0000120: 5461 626c 6501 0004 7468 6973 0100 1553  Table...this...S
0000130: 7570 706c 6965 7254 6f43 6163 6865 4c6f  upplierToCacheLo
0000140: 6164 6572 0100 0c49 6e6e 6572 436c 6173  ader...InnerClas
0000150: 7365 7301 003b 4c63 6f6d 2f67 6f6f 676c  ses..;Lcom/googl
0000160: 652f 636f 6d6d 6f6e 2f63 6163 6865 2f43  e/common/cache/C
0000170: 6163 6865 4c6f 6164 6572 2453 7570 706c  acheLoader$Suppl
0000180: 6965 7254 6f43 6163 6865 4c6f 6164 6572  ierToCacheLoader
0000190: 3b01 0016 4c6f 6361 6c56 6172 6961 626c  ;...LocalVariabl
00001a0: 6554 7970 6554 6162 6c65 0100 404c 636f  eTypeTable..@Lco
00001b0: 6d2f 676f 6f67 6c65 2f63 6f6d 6d6f 6e2f  m/google/common/
00001c0: 6361 6368 652f 4361 6368 654c 6f61 6465  cache/CacheLoade
00001d0: 7224 5375 7070 6c69 6572 546f 4361 6368  r$SupplierToCach
00001e0: 654c 6f61 6465 723c 5456 3b3e 3b01 0029  eLoader<TV;>;..)
00001f0: 284c 636f 6d2f 676f 6f67 6c65 2f63 6f6d  (Lcom/google/com
0000200: 6d6f 6e2f 6261 7365 2f53 7570 706c 6965  mon/base/Supplie
0000210: 723c 5456 3b3e 3b29 5601 0004 6c6f 6164  r<TV;>;)V...load
0000220: 0100 2628 4c6a 6176 612f 6c61 6e67 2f4f  ..&(Ljava/lang/O
0000230: 626a 6563 743b 294c 6a61 7661 2f6c 616e  bject;)Ljava/lan
0000240: 672f 4f62 6a65 6374 3b01 0003 6b65 7901  g/Object;...key.
0000250: 0012 4c6a 6176 612f 6c61 6e67 2f4f 626a  ..Ljava/lang/Obj
0000260: 6563 743b 0100 1728 4c6a 6176 612f 6c61  ect;...(Ljava/la
0000270: 6e67 2f4f 626a 6563 743b 2954 563b 0100  ng/Object;)TV;..
0000280: 683c 563a 4c6a 6176 612f 6c61 6e67 2f4f  h<V:Ljava/lang/O
0000290: 626a 6563 743b 3e4c 636f 6d2f 676f 6f67  bject;>Lcom/goog
00002a0: 6c65 2f63 6f6d 6d6f 6e2f 6361 6368 652f  le/common/cache/
00002b0: 4361 6368 654c 6f61 6465 723c 4c6a 6176  CacheLoader<Ljav
00002c0: 612f 6c61 6e67 2f4f 626a 6563 743b 5456  a/lang/Object;TV
00002d0: 3b3e 3b4c 6a61 7661 2f69 6f2f 5365 7269  ;>;Ljava/io/Seri
00002e0: 616c 697a 6162 6c65 3b01 000a 536f 7572  alizable;...Sour
00002f0: 6365 4669 6c65 0100 1043 6163 6865 4c6f  ceFile...CacheLo
0000300: 6164 6572 2e6a 6176 610c 0012 002f 0700  ader.java..../..
0000310: 300c 0031 001f 0100 1f63 6f6d 2f67 6f6f  0..1.....com/goo
0000320: 676c 652f 636f 6d6d 6f6e 2f62 6173 652f  gle/common/base/
0000330: 5375 7070 6c69 6572 0c00 0900 0a0c 0032  Supplier.......2
0000340: 0033 0100 3963 6f6d 2f67 6f6f 676c 652f  .3..9com/google/
0000350: 636f 6d6d 6f6e 2f63 6163 6865 2f43 6163  common/cache/Cac
0000360: 6865 4c6f 6164 6572 2453 7570 706c 6965  heLoader$Supplie
0000370: 7254 6f43 6163 6865 4c6f 6164 6572 0100  rToCacheLoader..
0000380: 2363 6f6d 2f67 6f6f 676c 652f 636f 6d6d  #com/google/comm
0000390: 6f6e 2f63 6163 6865 2f43 6163 6865 4c6f  on/cache/CacheLo
00003a0: 6164 6572 0100 146a 6176 612f 696f 2f53  ader...java/io/S
00003b0: 6572 6961 6c69 7a61 626c 6501 0003 2829  erializable...()
00003c0: 5601 0024 636f 6d2f 676f 6f67 6c65 2f63  V..$com/google/c
00003d0: 6f6d 6d6f 6e2f 6261 7365 2f50 7265 636f  ommon/base/Preco
00003e0: 6e64 6974 696f 6e73 0100 0c63 6865 636b  nditions...check
00003f0: 4e6f 744e 756c 6c01 0003 6765 7401 0014  NotNull...get...
0000400: 2829 4c6a 6176 612f 6c61 6e67 2f4f 626a  ()Ljava/lang/Obj
0000410: 6563 743b 0030 0006 0007 0001 0008 0002  ect;.0..........
0000420: 0012 0009 000a 0001 000b 0000 0002 000c  ................
0000430: 001a 000d 000e 0001 000f 0000 0002 0010  ................
0000440: 0002 0001 0012 0013 0002 0014 0000 0068  ...............h
0000450: 0002 0002 0000 0010 2ab7 0001 2a2b b800  ........*...*+..
0000460: 02c0 0003 b500 04b1 0000 0003 0015 0000  ................
0000470: 000e 0003 0000 00d3 0004 00d4 000f 00d5  ................
0000480: 0016 0000 0016 0002 0000 0010 0017 001a  ................
0000490: 0000 0000 0010 0009 000a 0001 001b 0000  ................
00004a0: 0016 0002 0000 0010 0017 001c 0000 0000  ................
00004b0: 0010 0009 000c 0001 000b 0000 0002 001d  ................
00004c0: 0001 001e 001f 0002 0014 0000 0059 0001  .............Y..
00004d0: 0002 0000 000f 2bb8 0002 572a b400 04b9  ......+...W*....
00004e0: 0005 0100 b000 0000 0300 1500 0000 0a00  ................
00004f0: 0200 0000 d900 0500 da00 1600 0000 1600  ................
0000500: 0200 0000 0f00 1700 1a00 0000 0000 0f00  ................
0000510: 2000 2100 0100 1b00 0000 0c00 0100 0000   .!.............
0000520: 0f00 1700 1c00 0000 0b00 0000 0200 2200  ..............".
0000530: 0300 0b00 0000 0200 2300 2400 0000 0200  ........#.$.....
0000540: 2500 1900 0000 0a00 0100 0600 0700 1800  %...............
0000550: 1a                                       .
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment