void InstanceClassDesc::variable_oops_do(void do_oop(OopDesc**)) { // Static fields jubyte* map = embedded_oop_map(); while (*map++ != OopMapSentinel) {}; // Skip embedded non-static oop map // Iterate over static oop map map_oops_do(map, do_oop); }
void TaskMirrorDesc::variable_oops_do(void do_oop(OopDesc **)) { if (_object_size == header_size()) { // no statics so don't continue. It may be a size_type_array class which // isn't really an instance. Hence trying to obtain the embedded_oop_map // will result in a crash return; } // The statics are embedded at the end of this TaskMirrorDesc but the oopmap // for them is in the JavaClass object if (_containing_class != NULL) { jubyte *map = _containing_class->embedded_oop_map(); // skip over non-static oopmap entries to get to the statics while (*map++ != OopMapSentinel) {} if (*map != OopMapSentinel) { map_oops_do(map, do_oop); } } }