204 // Transfer ownership of comments to this CodeBlob
205 void set_strings(CodeStrings& strings) {
206 _strings.assign(strings);
207 }
208 };
209
210
211 //----------------------------------------------------------------------------------------------------
212 // BufferBlob: used to hold non-relocatable machine code such as the interpreter, stubroutines, etc.
213
214 class BufferBlob: public CodeBlob {
215 friend class VMStructs;
216 friend class AdapterBlob;
217 friend class MethodHandlesAdapterBlob;
218
219 private:
220 // Creation support
221 BufferBlob(const char* name, int size);
222 BufferBlob(const char* name, int size, CodeBuffer* cb);
223
224 void* operator new(size_t s, unsigned size, bool is_critical = false) throw();
225
226 public:
227 // Creation
228 static BufferBlob* create(const char* name, int buffer_size);
229 static BufferBlob* create(const char* name, CodeBuffer* cb);
230
231 static void free(BufferBlob* buf);
232
233 // Typing
234 virtual bool is_buffer_blob() const { return true; }
235
236 // GC/Verification support
237 void preserve_callee_argument_oops(frame fr, const RegisterMap* reg_map, OopClosure* f) { /* nothing to do */ }
238 bool is_alive() const { return true; }
239
240 void verify();
241 void print_on(outputStream* st) const;
242 void print_value_on(outputStream* st) const;
243 };
244
|
204 // Transfer ownership of comments to this CodeBlob
205 void set_strings(CodeStrings& strings) {
206 _strings.assign(strings);
207 }
208 };
209
210
211 //----------------------------------------------------------------------------------------------------
212 // BufferBlob: used to hold non-relocatable machine code such as the interpreter, stubroutines, etc.
213
214 class BufferBlob: public CodeBlob {
215 friend class VMStructs;
216 friend class AdapterBlob;
217 friend class MethodHandlesAdapterBlob;
218
219 private:
220 // Creation support
221 BufferBlob(const char* name, int size);
222 BufferBlob(const char* name, int size, CodeBuffer* cb);
223
224 void* operator new(size_t s, unsigned size) throw();
225
226 public:
227 // Creation
228 static BufferBlob* create(const char* name, int buffer_size);
229 static BufferBlob* create(const char* name, CodeBuffer* cb);
230
231 static void free(BufferBlob* buf);
232
233 // Typing
234 virtual bool is_buffer_blob() const { return true; }
235
236 // GC/Verification support
237 void preserve_callee_argument_oops(frame fr, const RegisterMap* reg_map, OopClosure* f) { /* nothing to do */ }
238 bool is_alive() const { return true; }
239
240 void verify();
241 void print_on(outputStream* st) const;
242 void print_value_on(outputStream* st) const;
243 };
244
|