781 } 782 } 783 784 785 oop oop_Relocation::oop_value() { 786 oop v = *oop_addr(); 787 // clean inline caches store a special pseudo-null 788 if (v == (oop)Universe::non_oop_word()) v = NULL; 789 return v; 790 } 791 792 793 void oop_Relocation::fix_oop_relocation() { 794 if (!oop_is_immediate()) { 795 // get the oop from the pool, and re-insert it into the instruction: 796 set_value(value()); 797 } 798 } 799 800 801 RelocIterator virtual_call_Relocation::parse_ic(nmethod* &nm, address &ic_call, address &first_oop, 802 oop* &oop_addr, bool *is_optimized) { 803 assert(ic_call != NULL, "ic_call address must be set"); 804 assert(ic_call != NULL || first_oop != NULL, "must supply a non-null input"); 805 if (nm == NULL) { 806 CodeBlob* code; 807 if (ic_call != NULL) { 808 code = CodeCache::find_blob(ic_call); 809 } else if (first_oop != NULL) { 810 code = CodeCache::find_blob(first_oop); 811 } 812 nm = code->as_nmethod_or_null(); 813 assert(nm != NULL, "address to parse must be in nmethod"); 814 } 815 assert(ic_call == NULL || nm->contains(ic_call), "must be in nmethod"); 816 assert(first_oop == NULL || nm->contains(first_oop), "must be in nmethod"); 817 818 address oop_limit = NULL; 819 820 if (ic_call != NULL) { | 781 } 782 } 783 784 785 oop oop_Relocation::oop_value() { 786 oop v = *oop_addr(); 787 // clean inline caches store a special pseudo-null 788 if (v == (oop)Universe::non_oop_word()) v = NULL; 789 return v; 790 } 791 792 793 void oop_Relocation::fix_oop_relocation() { 794 if (!oop_is_immediate()) { 795 // get the oop from the pool, and re-insert it into the instruction: 796 set_value(value()); 797 } 798 } 799 800 801 void oop_Relocation::verify_oop_relocation() { 802 if (!oop_is_immediate()) { 803 // get the oop from the pool, and re-insert it into the instruction: 804 verify_value(value()); 805 } 806 } 807 808 809 RelocIterator virtual_call_Relocation::parse_ic(nmethod* &nm, address &ic_call, address &first_oop, 810 oop* &oop_addr, bool *is_optimized) { 811 assert(ic_call != NULL, "ic_call address must be set"); 812 assert(ic_call != NULL || first_oop != NULL, "must supply a non-null input"); 813 if (nm == NULL) { 814 CodeBlob* code; 815 if (ic_call != NULL) { 816 code = CodeCache::find_blob(ic_call); 817 } else if (first_oop != NULL) { 818 code = CodeCache::find_blob(first_oop); 819 } 820 nm = code->as_nmethod_or_null(); 821 assert(nm != NULL, "address to parse must be in nmethod"); 822 } 823 assert(ic_call == NULL || nm->contains(ic_call), "must be in nmethod"); 824 assert(first_oop == NULL || nm->contains(first_oop), "must be in nmethod"); 825 826 address oop_limit = NULL; 827 828 if (ic_call != NULL) { |