8199406: Performance drop with Java JDK 1.8.0_162-b32

Improve the nmethod unloading times by optimizing the search for an itable stub in VtableStubs array

Reviewed-by: kvn, coleenp, tschatzl
This commit is contained in:
Poonam Bajaj 2018-03-30 18:46:14 +00:00
parent 6bdeaad21a
commit 25fbd2ff16
7 changed files with 71 additions and 37 deletions

View file

@ -58,6 +58,7 @@ struct CodeBlobType {
// RuntimeBlob : Non-compiled method code; generated glue code
// BufferBlob : Used for non-relocatable code such as interpreter, stubroutines, etc.
// AdapterBlob : Used to hold C2I/I2C adapters
// VtableBlob : Used for holding vtable chunks
// MethodHandlesAdapterBlob : Used to hold MethodHandles adapters
// RuntimeStub : Call to VM runtime methods
// SingletonBlob : Super-class for all blobs that exist in only one instance
@ -132,6 +133,7 @@ public:
virtual bool is_exception_stub() const { return false; }
virtual bool is_safepoint_stub() const { return false; }
virtual bool is_adapter_blob() const { return false; }
virtual bool is_vtable_blob() const { return false; }
virtual bool is_method_handles_adapter_blob() const { return false; }
virtual bool is_aot() const { return false; }
virtual bool is_compiled() const { return false; }
@ -380,6 +382,7 @@ class WhiteBox;
class BufferBlob: public RuntimeBlob {
friend class VMStructs;
friend class AdapterBlob;
friend class VtableBlob;
friend class MethodHandlesAdapterBlob;
friend class WhiteBox;
@ -425,6 +428,18 @@ public:
virtual bool is_adapter_blob() const { return true; }
};
//---------------------------------------------------------------------------------------------------
class VtableBlob: public BufferBlob {
private:
VtableBlob(const char*, int);
public:
// Creation
static VtableBlob* create(const char* name, int buffer_size);
// Typing
virtual bool is_vtable_blob() const { return true; }
};
//----------------------------------------------------------------------------------------------------
// MethodHandlesAdapterBlob: used to hold MethodHandles adapters