65 // ExceptionBlob : Used for stack unrolling
66 // SafepointBlob : Used to handle illegal instruction exceptions
67 // UncommonTrapBlob : Used to handle uncommon traps
68 //
69 //
70 // Layout (all except AOTCompiledMethod) : continuous in the CodeCache
71 // - header
72 // - relocation
73 // - content space
74 // - instruction space
75 // - data space
76 //
77 // Layout (AOTCompiledMethod) : in the C-Heap
78 // - header -\
79 // ... |
80 // - code <-/
81
82
83 class CodeBlobLayout;
84
85 class CodeBlob VALUE_OBJ_CLASS_SPEC {
86 friend class VMStructs;
87 friend class JVMCIVMStructs;
88 friend class CodeCacheDumper;
89
90 protected:
91
92 const CompilerType _type; // CompilerType
93 int _size; // total size of CodeBlob in bytes
94 int _header_size; // size of header (depends on subclass)
95 int _frame_complete_offset; // instruction offsets in [0.._frame_complete_offset) have
96 // not finished setting up their frame. Beware of pc's in
97 // that range. There is a similar range(s) on returns
98 // which we don't detect.
99 int _data_offset; // offset to where data region begins
100 int _frame_size; // size of stack frame
101
102 address _code_begin;
103 address _code_end;
104 address _content_begin; // address to where content region begins (this includes consts, insts, stubs)
105 // address _content_end - not required, for all CodeBlobs _code_end == _content_end for now
|
65 // ExceptionBlob : Used for stack unrolling
66 // SafepointBlob : Used to handle illegal instruction exceptions
67 // UncommonTrapBlob : Used to handle uncommon traps
68 //
69 //
70 // Layout (all except AOTCompiledMethod) : continuous in the CodeCache
71 // - header
72 // - relocation
73 // - content space
74 // - instruction space
75 // - data space
76 //
77 // Layout (AOTCompiledMethod) : in the C-Heap
78 // - header -\
79 // ... |
80 // - code <-/
81
82
83 class CodeBlobLayout;
84
85 class CodeBlob {
86 friend class VMStructs;
87 friend class JVMCIVMStructs;
88 friend class CodeCacheDumper;
89
90 protected:
91
92 const CompilerType _type; // CompilerType
93 int _size; // total size of CodeBlob in bytes
94 int _header_size; // size of header (depends on subclass)
95 int _frame_complete_offset; // instruction offsets in [0.._frame_complete_offset) have
96 // not finished setting up their frame. Beware of pc's in
97 // that range. There is a similar range(s) on returns
98 // which we don't detect.
99 int _data_offset; // offset to where data region begins
100 int _frame_size; // size of stack frame
101
102 address _code_begin;
103 address _code_end;
104 address _content_begin; // address to where content region begins (this includes consts, insts, stubs)
105 // address _content_end - not required, for all CodeBlobs _code_end == _content_end for now
|