< prev index next > src/hotspot/share/compiler/oopMap.hpp
Print this page
class OopMap: public ResourceObj {
friend class OopMapStream;
friend class VMStructs;
friend class OopMapSet;
friend class OopMapSort;
+ friend class SCCReader;
private:
int _pc_offset; // offset in the code that this OopMap corresponds to
int _omv_count; // number of OopMapValues in the stream
int _num_oops; // number of oops
int _index; // index in OopMapSet
void set_xxx(VMReg reg, OopMapValue::oop_types x, VMReg optional);
public:
OopMap(int frame_size, int arg_count);
+ OopMap(int data_size);
// pc-offset handling
int offset() const { return _pc_offset; }
void set_offset(int o) { _pc_offset = o; }
int count() const { return _omv_count; }
bool equals(const OopMap* other) const;
};
class OopMapSet : public ResourceObj {
friend class VMStructs;
+ friend class SCCReader;
private:
GrowableArray<OopMap*> _list;
int add(OopMap* value) { return _list.append(value); }
public:
OopMapSet();
+ OopMapSet(int size);
// returns the number of OopMaps in this OopMapSet
int size() const { return _list.length(); }
// returns the OopMap at a given index
OopMap* at(int index) const { return _list.at(index); }
int count() const { return _count; }
int num_oops() const { return _num_oops; }
bool has_derived_oops() const { return _has_derived_oops; }
bool has_any(OopMapValue::oop_types type) const;
! #ifdef ASSERT
- int nr_of_bytes() const; // this is an expensive operation, only used in debug builds
- #endif
void oops_do(const frame* fr, const RegisterMap* reg_map, OopClosure* f, DerivedOopClosure* df) const;
void oops_do(const frame* fr, const RegisterMap* reg_map, OopClosure* f, DerivedPointerIterationMode derived_mode) const;
void all_type_do(const frame *fr, OopMapValue::oop_types type, OopMapClosure* fn) const;
void all_type_do(const frame *fr, OopMapClosure* fn) const;
int count() const { return _count; }
int num_oops() const { return _num_oops; }
bool has_derived_oops() const { return _has_derived_oops; }
bool has_any(OopMapValue::oop_types type) const;
! int nr_of_bytes() const; // this is an expensive operation, only used in debug builds and when storing aot compiled nmethods
void oops_do(const frame* fr, const RegisterMap* reg_map, OopClosure* f, DerivedOopClosure* df) const;
void oops_do(const frame* fr, const RegisterMap* reg_map, OopClosure* f, DerivedPointerIterationMode derived_mode) const;
void all_type_do(const frame *fr, OopMapValue::oop_types type, OopMapClosure* fn) const;
void all_type_do(const frame *fr, OopMapClosure* fn) const;
< prev index next >