< prev index next >

src/share/vm/code/codeBlob.hpp

Print this page
rev 12121 : [mq]: all_changes.patch

*** 27,36 **** --- 27,37 ---- #include "asm/codeBuffer.hpp" #include "compiler/oopMap.hpp" #include "runtime/frame.hpp" #include "runtime/handles.hpp" + #include "utilities/macros.hpp" // CodeBlob Types // Used in the CodeCache to assign CodeBlobs to different CodeHeaps struct CodeBlobType { enum {
*** 90,99 **** --- 91,101 ---- address _relocation_end; ImmutableOopMapSet* _oop_maps; // OopMap for this CodeBlob bool _caller_must_gc_arguments; CodeStrings _strings; + S390_ONLY(int _ctable_offset;) CodeBlob(const char* name, const CodeBlobLayout& layout, int frame_complete_offset, int frame_size, ImmutableOopMapSet* oop_maps, bool caller_must_gc_arguments); CodeBlob(const char* name, const CodeBlobLayout& layout, CodeBuffer* cb, int frame_complete_offset, int frame_size, OopMapSet* oop_maps, bool caller_must_gc_arguments); public: // Returns the space needed for CodeBlob
*** 133,142 **** --- 135,150 ---- address content_end() const { return _code_end; } // _code_end == _content_end is true for all types of blobs for now, it is also checked in the constructor address code_begin() const { return _code_begin; } address code_end() const { return _code_end; } address data_end() const { return _data_end; } + // This field holds the beginning of the const section in the old code buffer. + // It is needed to fix relocations of pc-relative loads when resizing the + // the constant pool or moving it. + S390_ONLY(address ctable_begin() const { return header_begin() + _ctable_offset; }) + void set_ctable_begin(address ctable) { S390_ONLY(_ctable_offset = ctable - header_begin();) } + // Sizes int size() const { return _size; } int header_size() const { return _header_size; } int relocation_size() const { return (address) relocation_end() - (address) relocation_begin(); } int content_size() const { return content_end() - content_begin(); }
< prev index next >