< prev index next >
src/hotspot/share/interpreter/oopMapCache.cpp
Print this page
*** 273,292 ****
LogStream st(logv.trace());
st.print("Locals (%d): ", max_locals);
for(int i = 0; i < max_locals; i++) {
bool v1 = is_oop(i) ? true : false;
! bool v2 = vars[i].is_reference() || vars[i].is_valuetype() ? true : false;
assert(v1 == v2, "locals oop mask generation error");
st.print("%d", v1 ? 1 : 0);
}
st.cr();
st.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() || stack[j].is_valuetype( )? true : false;
assert(v1 == v2, "stack oop mask generation error");
st.print("%d", v1 ? 1 : 0);
}
st.cr();
return true;
--- 273,292 ----
LogStream st(logv.trace());
st.print("Locals (%d): ", max_locals);
for(int i = 0; i < max_locals; i++) {
bool v1 = is_oop(i) ? true : false;
! bool v2 = vars[i].is_reference();
assert(v1 == v2, "locals oop mask generation error");
st.print("%d", v1 ? 1 : 0);
}
st.cr();
st.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();
assert(v1 == v2, "stack oop mask generation error");
st.print("%d", v1 ? 1 : 0);
}
st.cr();
return true;
*** 364,382 ****
if (entry_index == max_locals) {
cell = stack;
}
// set oop bit
! // Note: the interpreter handles value types with oops too
! if ( cell->is_reference() || cell->is_valuetype()) {
value |= (mask << oop_bit_number );
}
// set dead bit
if (!cell->is_live()) {
value |= (mask << dead_bit_number);
! assert(!cell->is_reference() && !cell->is_valuetype(), "dead value marked as oop");
}
}
// make sure last word is stored
bit_mask()[word_index] = value;
--- 364,381 ----
if (entry_index == max_locals) {
cell = stack;
}
// set oop bit
! if (cell->is_reference()) {
value |= (mask << oop_bit_number );
}
// set dead bit
if (!cell->is_live()) {
value |= (mask << dead_bit_number);
! assert(!cell->is_reference(), "dead value marked as oop");
}
}
// make sure last word is stored
bit_mask()[word_index] = value;
< prev index next >