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 { |