Lines Matching refs:relocInfo

32 //    relocInfo
34 // Also, the source of relocation types (relocInfo::oop_type, ...).
53 // code and relocInfo streams.
70 // A relocInfo is represented in 16 bits:
72 // 12 bits indicating the offset from the previous relocInfo address
74 // The offsets accumulate along the relocInfo stream to encode the
76 // The address of a particular relocInfo always points to the first
114 // relocInfo::none -- a filler record
118 // (This means that any relocInfo can be disabled by setting
119 // its type to none. See relocInfo::remove.)
121 // relocInfo::oop_type -- a reference to an oop
132 // relocInfo::internal_word_type -- an address within the same CodeBlob
133 // relocInfo::section_word_type -- same, but can refer to another section
142 // relocInfo::external_word_type -- a fixed address in the runtime system
149 // relocInfo::runtime_call_type -- a fixed subroutine in the runtime system
154 // relocInfo::static_call_type -- a static call
161 // relocInfo::virtual_call_type -- a virtual call site (which includes an inline
171 // relocInfo::opt_virtual_call_type -- a virtual call site that is statically bound
202 // relocInfo::breakpoint_type -- a conditional breakpoint in the code
211 // relocInfo::static_stub_type -- an extra stub for each static_call_type
253 class relocInfo VALUE_OBJ_CLASS_SPEC {
280 relocInfo(relocType type, RawBitsToken ignore, int bits)
283 relocInfo(relocType type, RawBitsToken ignore, int off, int f)
288 relocInfo(relocType type, int offset, int format = 0)
291 (*this) = relocInfo(type, RAW_BITS, offset, format);
357 // Occasionally records of type relocInfo::none will appear in the stream.
361 // - to pad out the relocInfo array to the required oop alignment
364 inline friend relocInfo filler_relocInfo();
374 inline friend relocInfo prefix_relocInfo(int datalen = 0);
377 // an immediate relocInfo optimizes a prefix with one 10-bit unsigned value
378 static relocInfo immediate_relocInfo(int data0) {
380 return relocInfo(relocInfo::data_prefix_tag, RAW_BITS, data0);
389 // This routine takes an infant relocInfo (unprefixed) and
396 relocInfo* finish_prefix(short* prefix_limit);
465 inline relocInfo filler_relocInfo() {
466 return relocInfo(relocInfo::none, relocInfo::offset_limit() - relocInfo::offset_unit);
469 inline relocInfo prefix_relocInfo(int datalen) {
470 assert(relocInfo::fits_into_immediate(datalen), "datalen in limits");
471 return relocInfo(relocInfo::data_prefix_tag, relocInfo::RAW_BITS, relocInfo::datalen_tag | datalen);
490 inline relocInfo::relocType type() const;
514 // case relocInfo::oop_type :
515 // case relocInfo::ic_type :
516 // case relocInfo::prim_type :
517 // case relocInfo::uncommon_type :
518 // case relocInfo::runtime_call_type :
519 // case relocInfo::internal_word_type:
520 // case relocInfo::external_word_type:
528 friend class relocInfo; // for change_reloc_info_for_address only
529 typedef relocInfo::relocType relocType;
533 relocInfo* _current; // the current relocation information
534 relocInfo* _end; // end marker; we're done iterating when _current == _end
550 void set_current(relocInfo& ri) {
557 relocInfo* current() const { assert(has_current(), "must have current");
580 assert(_current <= _end, "must not overrun relocInfo");
599 if (relocInfo::have_format) _format = current()->format();
607 int format() const { return (relocInfo::have_format) ? current()->format() : 0; }
643 static void create_index(relocInfo* dest_begin, int dest_count, relocInfo* dest_end);
696 static RelocationHolder spec_simple(relocInfo::relocType rtype);
703 assert(datalen()==0 || type()==relocInfo::none, "no data here");
714 // (The "immediate data" mechanism of relocInfo works independently
724 *p++ = relocInfo::data0_from_int(x); *p++ = relocInfo::data1_from_int(x);
740 return relocInfo::jint_data_at(0, data(), datalen());
761 x0 = relocInfo::short_data_at(0, dp, dlen);
762 x1 = relocInfo::short_data_at(1, dp, dlen);
765 x0 = relocInfo::jint_data_at(0, dp, dlen);
766 x1 = relocInfo::jint_data_at(2, dp, dlen);
789 int offset = -byte_offset / relocInfo::addr_unit();
801 int byte_offset = -( offset * relocInfo::addr_unit() );
825 virtual relocInfo::relocType type() { return relocInfo::none; }
866 relocInfo::relocType RelocationHolder::type() const {
923 relocInfo::relocType type() { return relocInfo::oop_type; }
976 relocInfo::relocType type() { return relocInfo::virtual_call_type; }
1026 relocInfo::relocType type() { return relocInfo::opt_virtual_call_type; }
1048 relocInfo::relocType type() { return relocInfo::static_call_type; }
1069 relocInfo::relocType type() { return relocInfo::static_stub_type; }
1099 relocInfo::relocType type() { return relocInfo::runtime_call_type; }
1116 relocInfo::relocType type() { return relocInfo::external_word_type; }
1165 relocInfo::relocType type() { return relocInfo::internal_word_type; }
1212 relocInfo::relocType type() { return relocInfo::section_word_type; }
1239 relocInfo::relocType type() { return relocInfo::poll_type; }
1245 relocInfo::relocType type() { return relocInfo::poll_return_type; }
1251 relocInfo::relocType type() { return relocInfo::breakpoint_type; }
1282 // We require every bits value to NOT to fit into relocInfo::datalen_width,
1333 assert(type() == relocInfo::name##_type, "type must agree"); \