Print this page


Split Close
Expand all
Collapse all
          --- old/agent/src/share/classes/sun/jvm/hotspot/code/CodeCache.java
          +++ new/agent/src/share/classes/sun/jvm/hotspot/code/CodeCache.java
↓ open down ↓ 49 lines elided ↑ open up ↑
  50   50      Type type = db.lookupType("CodeCache");
  51   51  
  52   52      heapField = type.getAddressField("_heap");
  53   53      scavengeRootNMethodsField = type.getAddressField("_scavenge_root_nmethods");
  54   54  
  55   55      virtualConstructor = new VirtualConstructor(db);
  56   56      // Add mappings for all possible CodeBlob subclasses
  57   57      virtualConstructor.addMapping("BufferBlob", BufferBlob.class);
  58   58      virtualConstructor.addMapping("nmethod", NMethod.class);
  59   59      virtualConstructor.addMapping("RuntimeStub", RuntimeStub.class);
  60      -    virtualConstructor.addMapping("RicochetBlob", RicochetBlob.class);
  61   60      virtualConstructor.addMapping("AdapterBlob", AdapterBlob.class);
  62   61      virtualConstructor.addMapping("MethodHandlesAdapterBlob", MethodHandlesAdapterBlob.class);
  63   62      virtualConstructor.addMapping("SafepointBlob", SafepointBlob.class);
  64   63      virtualConstructor.addMapping("DeoptimizationBlob", DeoptimizationBlob.class);
  65   64      if (VM.getVM().isServerCompiler()) {
  66   65        virtualConstructor.addMapping("ExceptionBlob", ExceptionBlob.class);
  67   66        virtualConstructor.addMapping("UncommonTrapBlob", UncommonTrapBlob.class);
  68   67      }
  69   68    }
  70   69  
↓ open down ↓ 49 lines elided ↑ open up ↑
 120  119        throw new RuntimeException(message, wte);
 121  120      }
 122  121      if (result == null) return null;
 123  122      if (Assert.ASSERTS_ENABLED) {
 124  123        // The HeapBlock that contains this blob is outside of the blob
 125  124        // but it shouldn't be an error to find a blob based on the
 126  125        // pointer to the HeapBlock.
 127  126        Assert.that(result.blobContains(start) || result.blobContains(start.addOffsetTo(8)),
 128  127                                                                      "found wrong CodeBlob");
 129  128      }
 130      -    if (result.isRicochetBlob()) {
 131      -      // This should probably be done for other SingletonBlobs
 132      -      return VM.getVM().ricochetBlob();
 133      -    }
 134  129      return result;
 135  130    }
 136  131  
 137  132    public NMethod findNMethod(Address start) {
 138  133      CodeBlob cb = findBlob(start);
 139  134      if (Assert.ASSERTS_ENABLED) {
 140  135        Assert.that(cb == null || cb.isNMethod(), "did not find an nmethod");
 141  136      }
 142  137      return (NMethod) cb;
 143  138    }
↓ open down ↓ 68 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX