src/share/vm/code/codeBlob.hpp

changeset 9185
82f9d3b7e317
parent 5919
469216acdb28
child 9203
53eec13fbaa5
child 9861
a248d0be1309
equal deleted inserted replaced
9184:fbcbfd2753b5 9185:82f9d3b7e317
1 /* 1 /*
2 * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
99 virtual bool is_deoptimization_stub() const { return false; } 99 virtual bool is_deoptimization_stub() const { return false; }
100 virtual bool is_uncommon_trap_stub() const { return false; } 100 virtual bool is_uncommon_trap_stub() const { return false; }
101 virtual bool is_exception_stub() const { return false; } 101 virtual bool is_exception_stub() const { return false; }
102 virtual bool is_safepoint_stub() const { return false; } 102 virtual bool is_safepoint_stub() const { return false; }
103 virtual bool is_adapter_blob() const { return false; } 103 virtual bool is_adapter_blob() const { return false; }
104 virtual bool is_vtable_blob() const { return false; }
104 virtual bool is_method_handles_adapter_blob() const { return false; } 105 virtual bool is_method_handles_adapter_blob() const { return false; }
105 106
106 virtual bool is_compiled_by_c2() const { return false; } 107 virtual bool is_compiled_by_c2() const { return false; }
107 virtual bool is_compiled_by_c1() const { return false; } 108 virtual bool is_compiled_by_c1() const { return false; }
108 109
200 // BufferBlob: used to hold non-relocatable machine code such as the interpreter, stubroutines, etc. 201 // BufferBlob: used to hold non-relocatable machine code such as the interpreter, stubroutines, etc.
201 202
202 class BufferBlob: public CodeBlob { 203 class BufferBlob: public CodeBlob {
203 friend class VMStructs; 204 friend class VMStructs;
204 friend class AdapterBlob; 205 friend class AdapterBlob;
206 friend class VtableBlob;
205 friend class MethodHandlesAdapterBlob; 207 friend class MethodHandlesAdapterBlob;
206 208
207 private: 209 private:
208 // Creation support 210 // Creation support
209 BufferBlob(const char* name, int size); 211 BufferBlob(const char* name, int size);
244 246
245 // Typing 247 // Typing
246 virtual bool is_adapter_blob() const { return true; } 248 virtual bool is_adapter_blob() const { return true; }
247 }; 249 };
248 250
251 //---------------------------------------------------------------------------------------------------
252 class VtableBlob: public BufferBlob {
253 private:
254 VtableBlob(const char*, int);
255
256 public:
257 // Creation
258 static VtableBlob* create(const char* name, int buffer_size);
259
260 // Typing
261 virtual bool is_vtable_blob() const { return true; }
262 };
249 263
250 //---------------------------------------------------------------------------------------------------- 264 //----------------------------------------------------------------------------------------------------
251 // MethodHandlesAdapterBlob: used to hold MethodHandles adapters 265 // MethodHandlesAdapterBlob: used to hold MethodHandles adapters
252 266
253 class MethodHandlesAdapterBlob: public BufferBlob { 267 class MethodHandlesAdapterBlob: public BufferBlob {

mercurial