src/share/vm/interpreter/oopMapCache.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/interpreter/oopMapCache.cpp	Mon Sep 14 23:13:32 2015
--- new/src/share/vm/interpreter/oopMapCache.cpp	Mon Sep 14 23:13:32 2015

*** 211,245 **** --- 211,220 ---- // test for oop if ((value & (mask << oop_bit_number)) != 0) oop_closure->offset_do(i); } } #ifdef ENABLE_ZAP_DEAD_LOCALS void InterpreterOopMap::iterate_all(OffsetClosure* oop_closure, OffsetClosure* value_closure, OffsetClosure* dead_closure) { int n = number_of_entries(); int word_index = 0; uintptr_t value = 0; uintptr_t mask = 0; // iterate over entries for (int i = 0; i < n; i++, mask <<= bits_per_entry) { // get current word if (mask == 0) { value = bit_mask()[word_index++]; mask = 1; } // test for dead values & oops, and for live values if ((value & (mask << dead_bit_number)) != 0) dead_closure->offset_do(i); // call this for all dead values or oops else if ((value & (mask << oop_bit_number)) != 0) oop_closure->offset_do(i); // call this for all live oops else value_closure->offset_do(i); // call this for all live values } } #endif void InterpreterOopMap::print() const { int n = number_of_entries(); tty->print("oop map for "); method()->print_value(); tty->print(" @ %d = [%d] { ", bci(), n);
*** 295,324 **** --- 270,287 ---- for(int i = 0; i < max_locals; i++) { bool v1 = is_oop(i) ? true : false; bool v2 = vars[i].is_reference() ? true : false; assert(v1 == v2, "locals oop mask generation error"); if (TraceOopMapGeneration && Verbose) tty->print("%d", v1 ? 1 : 0); #ifdef ENABLE_ZAP_DEAD_LOCALS bool v3 = is_dead(i) ? true : false; bool v4 = !vars[i].is_live() ? true : false; assert(v3 == v4, "locals live mask generation error"); assert(!(v1 && v3), "dead value marked as oop"); #endif } if (TraceOopMapGeneration && Verbose) { tty->cr(); tty->print("Stack (%d): ", stack_top); } for(int j = 0; j < stack_top; j++) { bool v1 = is_oop(max_locals + j) ? true : false; bool v2 = stack[j].is_reference() ? true : false; assert(v1 == v2, "stack oop mask generation error"); if (TraceOopMapGeneration && Verbose) tty->print("%d", v1 ? 1 : 0); #ifdef ENABLE_ZAP_DEAD_LOCALS bool v3 = is_dead(max_locals + j) ? true : false; bool v4 = !stack[j].is_live() ? true : false; assert(v3 == v4, "stack live mask generation error"); assert(!(v1 && v3), "dead value marked as oop"); #endif } if (TraceOopMapGeneration && Verbose) tty->cr(); return true; }

src/share/vm/interpreter/oopMapCache.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File