src/share/vm/code/relocInfo.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 7028374 Sdiff src/share/vm/code

src/share/vm/code/relocInfo.cpp

Print this page




 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) {


src/share/vm/code/relocInfo.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File