1800 ClassHierarchyWalker wf(m1);
1801 wf.add_participant(m1->method_holder());
1802 wf.add_participant(m2->method_holder());
1803 return wf.find_witness_definer(ctxk, changes);
1804 }
1805
1806 Klass* Dependencies::check_has_no_finalizable_subclasses(Klass* ctxk, KlassDepChange* changes) {
1807 Klass* search_at = ctxk;
1808 if (changes != NULL)
1809 search_at = changes->new_type(); // just look at the new bit
1810 return find_finalizable_subclass(search_at);
1811 }
1812
1813 Klass* Dependencies::check_call_site_target_value(oop call_site, oop method_handle, CallSiteDepChange* changes) {
1814 assert(call_site != NULL, "sanity");
1815 assert(method_handle != NULL, "sanity");
1816 assert(call_site->is_a(SystemDictionary::CallSite_klass()), "sanity");
1817
1818 if (changes == NULL) {
1819 // Validate all CallSites
1820 if (java_lang_invoke_CallSite::target(call_site) != method_handle)
1821 return call_site->klass(); // assertion failed
1822 } else {
1823 // Validate the given CallSite
1824 if (call_site == changes->call_site() && java_lang_invoke_CallSite::target(call_site) != changes->method_handle()) {
1825 assert(method_handle != changes->method_handle(), "must be");
1826 return call_site->klass(); // assertion failed
1827 }
1828 }
1829 return NULL; // assertion still valid
1830 }
1831
1832 void Dependencies::DepStream::trace_and_log_witness(Klass* witness) {
1833 if (witness != NULL) {
1834 if (TraceDependencies) {
1835 print_dependency(witness, /*verbose=*/ true);
1836 }
1837 // The following is a no-op unless logging is enabled:
1838 log_dependency(witness);
1839 }
1840 }
1841
1842
1843 Klass* Dependencies::DepStream::check_klass_dependency(KlassDepChange* changes) {
1844 assert_locked_or_safepoint(Compile_lock);
|
1800 ClassHierarchyWalker wf(m1);
1801 wf.add_participant(m1->method_holder());
1802 wf.add_participant(m2->method_holder());
1803 return wf.find_witness_definer(ctxk, changes);
1804 }
1805
1806 Klass* Dependencies::check_has_no_finalizable_subclasses(Klass* ctxk, KlassDepChange* changes) {
1807 Klass* search_at = ctxk;
1808 if (changes != NULL)
1809 search_at = changes->new_type(); // just look at the new bit
1810 return find_finalizable_subclass(search_at);
1811 }
1812
1813 Klass* Dependencies::check_call_site_target_value(oop call_site, oop method_handle, CallSiteDepChange* changes) {
1814 assert(call_site != NULL, "sanity");
1815 assert(method_handle != NULL, "sanity");
1816 assert(call_site->is_a(SystemDictionary::CallSite_klass()), "sanity");
1817
1818 if (changes == NULL) {
1819 // Validate all CallSites
1820 if (!oopDesc::equals(java_lang_invoke_CallSite::target(call_site), method_handle))
1821 return call_site->klass(); // assertion failed
1822 } else {
1823 // Validate the given CallSite
1824 if (oopDesc::equals(call_site, changes->call_site()) && !oopDesc::equals(java_lang_invoke_CallSite::target(call_site), changes->m
1825 assert(!oopDesc::equals(method_handle, changes->method_handle()), "must be");
1826 return call_site->klass(); // assertion failed
1827 }
1828 }
1829 return NULL; // assertion still valid
1830 }
1831
1832 void Dependencies::DepStream::trace_and_log_witness(Klass* witness) {
1833 if (witness != NULL) {
1834 if (TraceDependencies) {
1835 print_dependency(witness, /*verbose=*/ true);
1836 }
1837 // The following is a no-op unless logging is enabled:
1838 log_dependency(witness);
1839 }
1840 }
1841
1842
1843 Klass* Dependencies::DepStream::check_klass_dependency(KlassDepChange* changes) {
1844 assert_locked_or_safepoint(Compile_lock);
|