86 static nmethod* find_nmethod(void* start); |
86 static nmethod* find_nmethod(void* start); |
87 |
87 |
88 // Lookup that does not fail if you lookup a zombie method (if you call this, be sure to know |
88 // Lookup that does not fail if you lookup a zombie method (if you call this, be sure to know |
89 // what you are doing) |
89 // what you are doing) |
90 static CodeBlob* find_blob_unsafe(void* start) { |
90 static CodeBlob* find_blob_unsafe(void* start) { |
|
91 // NMT can walk the stack before code cache is created |
|
92 if (_heap == NULL) return NULL; |
|
93 |
91 CodeBlob* result = (CodeBlob*)_heap->find_start(start); |
94 CodeBlob* result = (CodeBlob*)_heap->find_start(start); |
92 // this assert is too strong because the heap code will return the |
95 // this assert is too strong because the heap code will return the |
93 // heapblock containing start. That block can often be larger than |
96 // heapblock containing start. That block can often be larger than |
94 // the codeBlob itself. If you look up an address that is within |
97 // the codeBlob itself. If you look up an address that is within |
95 // the heapblock but not in the codeBlob you will assert. |
98 // the heapblock but not in the codeBlob you will assert. |