157 };
158
159 static const Vptr* vptr(CodeBlobKind kind);
160 const Vptr* vptr() const;
161
162 CodeBlob(const char* name, CodeBlobKind kind, CodeBuffer* cb, int size, uint16_t header_size,
163 int16_t frame_complete_offset, int frame_size, OopMapSet* oop_maps, bool caller_must_gc_arguments,
164 int mutable_data_size);
165
166 // Simple CodeBlob used for simple BufferBlob.
167 CodeBlob(const char* name, CodeBlobKind kind, int size, uint16_t header_size);
168
169
170 void operator delete(void* p) { }
171
172 void prepare_for_archiving_impl();
173 void post_restore_impl();
174
175 public:
176
177 ~CodeBlob() {
178 assert(_oop_maps == nullptr, "Not flushed");
179 }
180
181 // Returns the space needed for CodeBlob
182 static unsigned int allocation_size(CodeBuffer* cb, int header_size);
183 static unsigned int align_code_offset(int offset);
184
185 // Deletion
186 void purge();
187
188 // Typing
189 bool is_nmethod() const { return _kind == CodeBlobKind::Nmethod; }
190 bool is_buffer_blob() const { return _kind == CodeBlobKind::Buffer; }
191 bool is_runtime_stub() const { return _kind == CodeBlobKind::RuntimeStub; }
192 bool is_deoptimization_stub() const { return _kind == CodeBlobKind::Deoptimization; }
193 #ifdef COMPILER2
194 bool is_uncommon_trap_stub() const { return _kind == CodeBlobKind::UncommonTrap; }
195 bool is_exception_stub() const { return _kind == CodeBlobKind::Exception; }
196 #else
197 bool is_uncommon_trap_stub() const { return false; }
198 bool is_exception_stub() const { return false; }
199 #endif
|
157 };
158
159 static const Vptr* vptr(CodeBlobKind kind);
160 const Vptr* vptr() const;
161
162 CodeBlob(const char* name, CodeBlobKind kind, CodeBuffer* cb, int size, uint16_t header_size,
163 int16_t frame_complete_offset, int frame_size, OopMapSet* oop_maps, bool caller_must_gc_arguments,
164 int mutable_data_size);
165
166 // Simple CodeBlob used for simple BufferBlob.
167 CodeBlob(const char* name, CodeBlobKind kind, int size, uint16_t header_size);
168
169
170 void operator delete(void* p) { }
171
172 void prepare_for_archiving_impl();
173 void post_restore_impl();
174
175 public:
176
177 ~CodeBlob() NOT_DEBUG_RETURN;
178
179 // Returns the space needed for CodeBlob
180 static unsigned int allocation_size(CodeBuffer* cb, int header_size);
181 static unsigned int align_code_offset(int offset);
182
183 // Deletion
184 void purge();
185
186 // Typing
187 bool is_nmethod() const { return _kind == CodeBlobKind::Nmethod; }
188 bool is_buffer_blob() const { return _kind == CodeBlobKind::Buffer; }
189 bool is_runtime_stub() const { return _kind == CodeBlobKind::RuntimeStub; }
190 bool is_deoptimization_stub() const { return _kind == CodeBlobKind::Deoptimization; }
191 #ifdef COMPILER2
192 bool is_uncommon_trap_stub() const { return _kind == CodeBlobKind::UncommonTrap; }
193 bool is_exception_stub() const { return _kind == CodeBlobKind::Exception; }
194 #else
195 bool is_uncommon_trap_stub() const { return false; }
196 bool is_exception_stub() const { return false; }
197 #endif
|