1795 } 1796 1797 Klass* Dependencies::check_exclusive_concrete_methods(Klass* ctxk, 1798 Method* m1, 1799 Method* m2, 1800 KlassDepChange* changes) { 1801 ClassHierarchyWalker wf(m1); 1802 wf.add_participant(m1->method_holder()); 1803 wf.add_participant(m2->method_holder()); 1804 return wf.find_witness_definer(ctxk, changes); 1805 } 1806 1807 Klass* Dependencies::check_has_no_finalizable_subclasses(Klass* ctxk, KlassDepChange* changes) { 1808 Klass* search_at = ctxk; 1809 if (changes != NULL) 1810 search_at = changes->new_type(); // just look at the new bit 1811 return find_finalizable_subclass(search_at); 1812 } 1813 1814 Klass* Dependencies::check_call_site_target_value(oop call_site, oop method_handle, CallSiteDepChange* changes) { 1815 assert(!oopDesc::is_null(call_site), "sanity"); 1816 assert(!oopDesc::is_null(method_handle), "sanity"); 1817 assert(call_site->is_a(SystemDictionary::CallSite_klass()), "sanity"); 1818 1819 if (changes == NULL) { 1820 // Validate all CallSites 1821 if (java_lang_invoke_CallSite::target(call_site) != method_handle) 1822 return call_site->klass(); // assertion failed 1823 } else { 1824 // Validate the given CallSite 1825 if (call_site == changes->call_site() && java_lang_invoke_CallSite::target(call_site) != changes->method_handle()) { 1826 assert(method_handle != changes->method_handle(), "must be"); 1827 return call_site->klass(); // assertion failed 1828 } 1829 } 1830 return NULL; // assertion still valid 1831 } 1832 1833 void Dependencies::DepStream::trace_and_log_witness(Klass* witness) { 1834 if (witness != NULL) { 1835 if (TraceDependencies) { 1836 print_dependency(witness, /*verbose=*/ true); | 1795 } 1796 1797 Klass* Dependencies::check_exclusive_concrete_methods(Klass* ctxk, 1798 Method* m1, 1799 Method* m2, 1800 KlassDepChange* changes) { 1801 ClassHierarchyWalker wf(m1); 1802 wf.add_participant(m1->method_holder()); 1803 wf.add_participant(m2->method_holder()); 1804 return wf.find_witness_definer(ctxk, changes); 1805 } 1806 1807 Klass* Dependencies::check_has_no_finalizable_subclasses(Klass* ctxk, KlassDepChange* changes) { 1808 Klass* search_at = ctxk; 1809 if (changes != NULL) 1810 search_at = changes->new_type(); // just look at the new bit 1811 return find_finalizable_subclass(search_at); 1812 } 1813 1814 Klass* Dependencies::check_call_site_target_value(oop call_site, oop method_handle, CallSiteDepChange* changes) { 1815 assert(call_site != NULL, "sanity"); 1816 assert(method_handle != NULL, "sanity"); 1817 assert(call_site->is_a(SystemDictionary::CallSite_klass()), "sanity"); 1818 1819 if (changes == NULL) { 1820 // Validate all CallSites 1821 if (java_lang_invoke_CallSite::target(call_site) != method_handle) 1822 return call_site->klass(); // assertion failed 1823 } else { 1824 // Validate the given CallSite 1825 if (call_site == changes->call_site() && java_lang_invoke_CallSite::target(call_site) != changes->method_handle()) { 1826 assert(method_handle != changes->method_handle(), "must be"); 1827 return call_site->klass(); // assertion failed 1828 } 1829 } 1830 return NULL; // assertion still valid 1831 } 1832 1833 void Dependencies::DepStream::trace_and_log_witness(Klass* witness) { 1834 if (witness != NULL) { 1835 if (TraceDependencies) { 1836 print_dependency(witness, /*verbose=*/ true); |