31 bool classes_only, bool walk_defaults) { |
31 bool classes_only, bool walk_defaults) { |
32 _klass = _base_klass = klass; |
32 _klass = _base_klass = klass; |
33 _base_class_search_defaults = false; |
33 _base_class_search_defaults = false; |
34 _defaults_checked = false; |
34 _defaults_checked = false; |
35 if (classes_only) { |
35 if (classes_only) { |
36 _interfaces = Universe::the_empty_klass_array(); |
36 _interfaces = Universe::the_empty_instance_klass_array(); |
37 } else { |
37 } else { |
38 _interfaces = klass->transitive_interfaces(); |
38 _interfaces = klass->transitive_interfaces(); |
39 } |
39 } |
40 _interface_index = _interfaces->length(); |
40 _interface_index = _interfaces->length(); |
41 _local_only = local_only; |
41 _local_only = local_only; |
46 bool KlassStream::eos() { |
46 bool KlassStream::eos() { |
47 if (index() >= 0) return false; |
47 if (index() >= 0) return false; |
48 if (_local_only) return true; |
48 if (_local_only) return true; |
49 if (!_klass->is_interface() && _klass->super() != NULL) { |
49 if (!_klass->is_interface() && _klass->super() != NULL) { |
50 // go up superclass chain (not for interfaces) |
50 // go up superclass chain (not for interfaces) |
51 _klass = InstanceKlass::cast(_klass->super()); |
51 _klass = _klass->java_super(); |
52 // Next for method walks, walk default methods |
52 // Next for method walks, walk default methods |
53 } else if (_walk_defaults && (_defaults_checked == false) && (_base_klass->default_methods() != NULL)) { |
53 } else if (_walk_defaults && (_defaults_checked == false) && (_base_klass->default_methods() != NULL)) { |
54 _base_class_search_defaults = true; |
54 _base_class_search_defaults = true; |
55 _klass = _base_klass; |
55 _klass = _base_klass; |
56 _defaults_checked = true; |
56 _defaults_checked = true; |
57 } else { |
57 } else { |
58 // Next walk transitive interfaces |
58 // Next walk transitive interfaces |
59 if (_interface_index > 0) { |
59 if (_interface_index > 0) { |
60 _klass = InstanceKlass::cast(_interfaces->at(--_interface_index)); |
60 _klass = _interfaces->at(--_interface_index); |
61 } else { |
61 } else { |
62 return true; |
62 return true; |
63 } |
63 } |
64 } |
64 } |
65 _index = length(); |
65 _index = length(); |