1698 _print_nm, (int)((intptr_t)p - (intptr_t)_print_nm),
1699 (intptr_t)(*p), (intptr_t)p);
1700 (*p)->print();
1701 }
1702 #endif //PRODUCT
1703 };
1704
1705 bool nmethod::detect_scavenge_root_oops() {
1706 DetectScavengeRoot detect_scavenge_root;
1707 NOT_PRODUCT(if (TraceScavenge) detect_scavenge_root._print_nm = this);
1708 oops_do(&detect_scavenge_root);
1709 return detect_scavenge_root.detected_scavenge_root();
1710 }
1711
1712 // Method that knows how to preserve outgoing arguments at call. This method must be
1713 // called with a frame corresponding to a Java invoke
1714 void nmethod::preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map, OopClosure* f) {
1715 if (!method()->is_native()) {
1716 SimpleScopeDesc ssd(this, fr.pc());
1717 Bytecode_invoke* call = Bytecode_invoke_at(ssd.method(), ssd.bci());
1718 bool is_static = call->is_invokestatic();
1719 symbolOop signature = call->signature();
1720 fr.oops_compiled_arguments_do(signature, is_static, reg_map, f);
1721 }
1722 }
1723
1724
1725 oop nmethod::embeddedOop_at(u_char* p) {
1726 RelocIterator iter(this, p, p + oopSize);
1727 while (iter.next())
1728 if (iter.type() == relocInfo::oop_type) {
1729 return iter.oop_reloc()->oop_value();
1730 }
1731 return NULL;
1732 }
1733
1734
1735 inline bool includes(void* p, void* from, void* to) {
1736 return from <= p && p < to;
1737 }
1738
1739
1740 void nmethod::copy_scopes_pcs(PcDesc* pcs, int count) {
|
1698 _print_nm, (int)((intptr_t)p - (intptr_t)_print_nm),
1699 (intptr_t)(*p), (intptr_t)p);
1700 (*p)->print();
1701 }
1702 #endif //PRODUCT
1703 };
1704
1705 bool nmethod::detect_scavenge_root_oops() {
1706 DetectScavengeRoot detect_scavenge_root;
1707 NOT_PRODUCT(if (TraceScavenge) detect_scavenge_root._print_nm = this);
1708 oops_do(&detect_scavenge_root);
1709 return detect_scavenge_root.detected_scavenge_root();
1710 }
1711
1712 // Method that knows how to preserve outgoing arguments at call. This method must be
1713 // called with a frame corresponding to a Java invoke
1714 void nmethod::preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map, OopClosure* f) {
1715 if (!method()->is_native()) {
1716 SimpleScopeDesc ssd(this, fr.pc());
1717 Bytecode_invoke* call = Bytecode_invoke_at(ssd.method(), ssd.bci());
1718 bool has_receiver = call->has_receiver();
1719 symbolOop signature = call->signature();
1720 fr.oops_compiled_arguments_do(signature, has_receiver, reg_map, f);
1721 }
1722 }
1723
1724
1725 oop nmethod::embeddedOop_at(u_char* p) {
1726 RelocIterator iter(this, p, p + oopSize);
1727 while (iter.next())
1728 if (iter.type() == relocInfo::oop_type) {
1729 return iter.oop_reloc()->oop_value();
1730 }
1731 return NULL;
1732 }
1733
1734
1735 inline bool includes(void* p, void* from, void* to) {
1736 return from <= p && p < to;
1737 }
1738
1739
1740 void nmethod::copy_scopes_pcs(PcDesc* pcs, int count) {
|