182 void set_callee_saved( VMReg local, VMReg caller_machine_register );
183 void set_derived_oop ( VMReg local, VMReg derived_from_local_register );
184
185 int heap_size() const;
186 void copy_data_to(address addr) const;
187 OopMap* deep_copy();
188
189 bool legal_vm_reg_name(VMReg local) {
190 return OopMapValue::legal_vm_reg_name(local);
191 }
192
193 // Printing
194 void print_on(outputStream* st) const;
195 void print() const;
196 bool equals(const OopMap* other) const;
197 };
198
199
200 class OopMapSet : public ResourceObj {
201 friend class VMStructs;
202 private:
203 GrowableArray<OopMap*> _list;
204
205 void add(OopMap* value) { _list.append(value); }
206
207 public:
208 OopMapSet();
209
210 // returns the number of OopMaps in this OopMapSet
211 int size() const { return _list.length(); }
212 // returns the OopMap at a given index
213 OopMap* at(int index) const { return _list.at(index); }
214
215 // Collect OopMaps.
216 void add_gc_map(int pc, OopMap* map);
217
218 // Methods oops_do() and all_do() filter out NULL oops and
219 // oop == CompressedOops::base() before passing oops
220 // to closures.
221
222 // Iterates through frame for a compiled method
223 static void oops_do (const frame* fr,
224 const RegisterMap* reg_map, OopClosure* f);
225 static void update_register_map(const frame* fr, RegisterMap *reg_map);
226
|
182 void set_callee_saved( VMReg local, VMReg caller_machine_register );
183 void set_derived_oop ( VMReg local, VMReg derived_from_local_register );
184
185 int heap_size() const;
186 void copy_data_to(address addr) const;
187 OopMap* deep_copy();
188
189 bool legal_vm_reg_name(VMReg local) {
190 return OopMapValue::legal_vm_reg_name(local);
191 }
192
193 // Printing
194 void print_on(outputStream* st) const;
195 void print() const;
196 bool equals(const OopMap* other) const;
197 };
198
199
200 class OopMapSet : public ResourceObj {
201 friend class VMStructs;
202 friend class OopClosureWalker;
203 private:
204 GrowableArray<OopMap*> _list;
205
206 void add(OopMap* value) { _list.append(value); }
207
208 static void stack_oop_do(oop *p, OopClosure* oop_fn,
209 GrowableArray<oop> *stack_oops,
210 intptr_t *stack_base, intptr_t *stack_top);
211
212 public:
213 OopMapSet();
214
215 // returns the number of OopMaps in this OopMapSet
216 int size() const { return _list.length(); }
217 // returns the OopMap at a given index
218 OopMap* at(int index) const { return _list.at(index); }
219
220 // Collect OopMaps.
221 void add_gc_map(int pc, OopMap* map);
222
223 // Methods oops_do() and all_do() filter out NULL oops and
224 // oop == CompressedOops::base() before passing oops
225 // to closures.
226
227 // Iterates through frame for a compiled method
228 static void oops_do (const frame* fr,
229 const RegisterMap* reg_map, OopClosure* f);
230 static void update_register_map(const frame* fr, RegisterMap *reg_map);
231
|