1815 (intptr_t)(*p), (intptr_t)p);
1816 (*p)->print();
1817 }
1818 #endif //PRODUCT
1819 };
1820
1821 bool nmethod::detect_scavenge_root_oops() {
1822 DetectScavengeRoot detect_scavenge_root;
1823 NOT_PRODUCT(if (TraceScavenge) detect_scavenge_root._print_nm = this);
1824 oops_do(&detect_scavenge_root);
1825 return detect_scavenge_root.detected_scavenge_root();
1826 }
1827
1828 // Method that knows how to preserve outgoing arguments at call. This method must be
1829 // called with a frame corresponding to a Java invoke
1830 void nmethod::preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map, OopClosure* f) {
1831 #ifndef SHARK
1832 if (!method()->is_native()) {
1833 SimpleScopeDesc ssd(this, fr.pc());
1834 Bytecode_invoke call(ssd.method(), ssd.bci());
1835 bool has_receiver = call.has_receiver();
1836 Symbol* signature = call.signature();
1837 fr.oops_compiled_arguments_do(signature, has_receiver, reg_map, f);
1838 }
1839 #endif // !SHARK
1840 }
1841
1842
1843 oop nmethod::embeddedOop_at(u_char* p) {
1844 RelocIterator iter(this, p, p + 1);
1845 while (iter.next())
1846 if (iter.type() == relocInfo::oop_type) {
1847 return iter.oop_reloc()->oop_value();
1848 }
1849 return NULL;
1850 }
1851
1852
1853 inline bool includes(void* p, void* from, void* to) {
1854 return from <= p && p < to;
1855 }
|
1815 (intptr_t)(*p), (intptr_t)p);
1816 (*p)->print();
1817 }
1818 #endif //PRODUCT
1819 };
1820
1821 bool nmethod::detect_scavenge_root_oops() {
1822 DetectScavengeRoot detect_scavenge_root;
1823 NOT_PRODUCT(if (TraceScavenge) detect_scavenge_root._print_nm = this);
1824 oops_do(&detect_scavenge_root);
1825 return detect_scavenge_root.detected_scavenge_root();
1826 }
1827
1828 // Method that knows how to preserve outgoing arguments at call. This method must be
1829 // called with a frame corresponding to a Java invoke
1830 void nmethod::preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map, OopClosure* f) {
1831 #ifndef SHARK
1832 if (!method()->is_native()) {
1833 SimpleScopeDesc ssd(this, fr.pc());
1834 Bytecode_invoke call(ssd.method(), ssd.bci());
1835 // invokedynamic has a receiver in the signature at this point
1836 bool has_receiver = !call.is_invokestatic();
1837 Symbol* signature = call.signature();
1838 fr.oops_compiled_arguments_do(signature, has_receiver, reg_map, f);
1839 }
1840 #endif // !SHARK
1841 }
1842
1843
1844 oop nmethod::embeddedOop_at(u_char* p) {
1845 RelocIterator iter(this, p, p + 1);
1846 while (iter.next())
1847 if (iter.type() == relocInfo::oop_type) {
1848 return iter.oop_reloc()->oop_value();
1849 }
1850 return NULL;
1851 }
1852
1853
1854 inline bool includes(void* p, void* from, void* to) {
1855 return from <= p && p < to;
1856 }
|