2043 instanceKlassHandle outer1 = class1; |
2043 instanceKlassHandle outer1 = class1; |
2044 for (;;) { |
2044 for (;;) { |
2045 // As we walk along, look for equalities between outer1 and class2. |
2045 // As we walk along, look for equalities between outer1 and class2. |
2046 // Eventually, the walks will terminate as outer1 stops |
2046 // Eventually, the walks will terminate as outer1 stops |
2047 // at the top-level class around the original class. |
2047 // at the top-level class around the original class. |
2048 symbolOop ignore_name; |
2048 bool ignore_inner_is_member; |
2049 klassOop next = outer1->compute_enclosing_class(ignore_name, CHECK_false); |
2049 klassOop next = outer1->compute_enclosing_class(&ignore_inner_is_member, |
|
2050 CHECK_false); |
2050 if (next == NULL) break; |
2051 if (next == NULL) break; |
2051 if (next == class2()) return true; |
2052 if (next == class2()) return true; |
2052 outer1 = instanceKlassHandle(THREAD, next); |
2053 outer1 = instanceKlassHandle(THREAD, next); |
2053 } |
2054 } |
2054 |
2055 |
2055 // Now do the same for class2. |
2056 // Now do the same for class2. |
2056 instanceKlassHandle outer2 = class2; |
2057 instanceKlassHandle outer2 = class2; |
2057 for (;;) { |
2058 for (;;) { |
2058 symbolOop ignore_name; |
2059 bool ignore_inner_is_member; |
2059 klassOop next = outer2->compute_enclosing_class(ignore_name, CHECK_false); |
2060 klassOop next = outer2->compute_enclosing_class(&ignore_inner_is_member, |
|
2061 CHECK_false); |
2060 if (next == NULL) break; |
2062 if (next == NULL) break; |
2061 // Might as well check the new outer against all available values. |
2063 // Might as well check the new outer against all available values. |
2062 if (next == class1()) return true; |
2064 if (next == class1()) return true; |
2063 if (next == outer1()) return true; |
2065 if (next == outer1()) return true; |
2064 outer2 = instanceKlassHandle(THREAD, next); |
2066 outer2 = instanceKlassHandle(THREAD, next); |