codeBlob.hpp revision 1879
1472N/A * or visit www.oracle.com if you need additional information or have any
1879N/A#include "asm/codeBuffer.hpp"
1879N/A#include "compiler/oopMap.hpp"
1879N/A#include "runtime/handles.hpp"
0N/Aclass DeoptimizationBlob;
1668N/A int _content_offset; // offset to where content region begins (this includes consts, insts, stubs)
1668N/A int _code_offset; // offset to where instructions region begins (this includes insts, stubs)
0N/A friend class OopRecorder;
0N/A int header_size,
0N/A int frame_complete,
0N/A int frame_size,
1299N/A virtual bool is_buffer_blob() const { return false; }
1299N/A virtual bool is_nmethod() const { return false; }
1299N/A virtual bool is_runtime_stub() const { return false; }
1299N/A virtual bool is_deoptimization_stub() const { return false; }
1299N/A virtual bool is_uncommon_trap_stub() const { return false; }
1299N/A virtual bool is_exception_stub() const { return false; }
1299N/A virtual bool is_safepoint_stub() const { return false; }
1299N/A virtual bool is_adapter_blob() const { return false; }
1299N/A virtual bool is_method_handles_adapter_blob() const { return false; }
0N/A virtual bool is_compiled_by_c2() const { return false; }
0N/A virtual bool is_compiled_by_c1() const { return false; }
0N/A int relocation_size() const { return (address) relocation_end() - (address) relocation_begin(); }
1668N/A bool blob_contains(address addr) const { return header_begin() <= addr && addr < data_end(); }
0N/A bool relocation_contains(relocInfo* addr) const{ return relocation_begin() <= addr && addr < relocation_end(); }
1668N/A bool content_contains(address addr) const { return content_begin() <= addr && addr < content_end(); }
1668N/A bool code_contains(address addr) const { return code_begin() <= addr && addr < code_end(); }
1668N/A bool data_contains(address addr) const { return data_begin() <= addr && addr < data_end(); }
0N/A virtual bool is_locked_by_vm() const { return false; }
0N/A virtual bool is_unloaded() const { return false; }
0N/A virtual bool is_not_entrant() const { return false; }
0N/A virtual void preserve_callee_argument_oops(frame fr, const RegisterMap* reg_map, OopClosure* f) { ShouldNotReachHere(); }
0N/A//----------------------------------------------------------------------------------------------------
0N/A// BufferBlob: used to hold non-relocatable machine code such as the interpreter, stubroutines, etc.
1299N/A friend class AdapterBlob;
1299N/A friend class MethodHandlesAdapterBlob;
1299N/A virtual bool is_buffer_blob() const { return true; }
0N/A // GC/Verification support
0N/A void preserve_callee_argument_oops(frame fr, const RegisterMap* reg_map, OopClosure* f) { /* nothing to do */ }
0N/A//----------------------------------------------------------------------------------------------------
1299N/A virtual bool is_adapter_blob() const { return true; }
1299N/A//----------------------------------------------------------------------------------------------------
1299N/A MethodHandlesAdapterBlob(int size, CodeBuffer* cb) : BufferBlob("MethodHandles adapters", size, cb) {}
1299N/A virtual bool is_method_handles_adapter_blob() const { return true; }
1299N/A//----------------------------------------------------------------------------------------------------
0N/A int frame_complete,
0N/A int frame_size,
0N/A int frame_complete,
0N/A int frame_size,
0N/A bool is_runtime_stub() const { return true; }
0N/A // GC/Verification support
0N/A void preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map, OopClosure* f) { /* nothing to do */ }
0N/A//----------------------------------------------------------------------------------------------------
0N/A int header_size,
0N/A int frame_size,
0N/A//----------------------------------------------------------------------------------------------------
0N/A int _unpack_offset;
0N/A int unpack_offset,
0N/A int frame_size
0N/A int unpack_offset,
0N/A int frame_size
0N/A bool is_deoptimization_stub() const { return true; }
0N/A void preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map, OopClosure* f) { /* Nothing to do */ }
1668N/A assert(code_contains(code_begin() + _unpack_with_exception_in_tls), "must be PC inside codeblob");
1668N/A address unpack_with_exception_in_tls() const { return code_begin() + _unpack_with_exception_in_tls; }
0N/A//----------------------------------------------------------------------------------------------------
0N/A int frame_size
0N/A int frame_size
0N/A void preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map, OopClosure* f) { /* nothing to do */ }
0N/A bool is_uncommon_trap_stub() const { return true; }
0N/A//----------------------------------------------------------------------------------------------------
0N/A// ExceptionBlob: used for exception unwinding in compiled code (currently only used by Compiler 2)
0N/A int frame_size
0N/A int frame_size
0N/A void preserve_callee_argument_oops(frame fr, const RegisterMap* reg_map, OopClosure* f) { /* nothing to do */ }
0N/A bool is_exception_stub() const { return true; }
0N/A//----------------------------------------------------------------------------------------------------
0N/A int frame_size
0N/A int frame_size
0N/A void preserve_callee_argument_oops(frame fr, const RegisterMap* reg_map, OopClosure* f) { /* nothing to do */ }
0N/A bool is_safepoint_stub() const { return true; }