< prev index next >
src/hotspot/share/ci/bcEscapeAnalyzer.cpp
Print this page
*** 429,439 ****
state.spush();
}
break;
}
case Bytecodes::_aload:
- case Bytecodes::_vload:
state.apush(state._vars[s.get_index()]);
break;
case Bytecodes::_iload:
case Bytecodes::_fload:
case Bytecodes::_iload_0:
--- 429,438 ----
*** 483,493 ****
case Bytecodes::_daload:
state.spop();
set_method_escape(state.apop());
state.lpush();
break;
- case Bytecodes::_vaload:
case Bytecodes::_aaload:
{ state.spop();
ArgumentMap array = state.apop();
set_method_escape(array);
state.apush(unknown_obj);
--- 482,491 ----
*** 517,527 ****
case Bytecodes::_dstore_2:
case Bytecodes::_dstore_3:
state.lpop();
break;
case Bytecodes::_astore:
- case Bytecodes::_vstore:
state._vars[s.get_index()] = state.apop();
break;
case Bytecodes::_astore_0:
state._vars[0] = state.apop();
break;
--- 515,524 ----
*** 563,583 ****
state.spop();
ArgumentMap arr = state.apop();
set_modified(arr, OFFSET_ANY, type2size[T_OBJECT]*HeapWordSize);
break;
}
! case Bytecodes::_vastore:
! {
! set_global_escape(state.apop());
! state.spop();
! ArgumentMap arr = state.apop();
! // If the array is flattened, a larger part of it is modified than
! // the size of a reference. However, if OFFSET_ANY is given as
! // parameter to set_modified(), size is not taken into account.
! set_modified(arr, OFFSET_ANY, type2size[T_VALUETYPE]*HeapWordSize);
! break;
! }
case Bytecodes::_pop:
state.raw_pop();
break;
case Bytecodes::_pop2:
state.raw_pop();
--- 560,581 ----
state.spop();
ArgumentMap arr = state.apop();
set_modified(arr, OFFSET_ANY, type2size[T_OBJECT]*HeapWordSize);
break;
}
! // the vastore case below should be refactored to the aastore case above
! // case Bytecodes::_vastore:
! // {
! // set_global_escape(state.apop());
! // state.spop();
! // ArgumentMap arr = state.apop();
! // // If the array is flattened, a larger part of it is modified than
! // // the size of a reference. However, if OFFSET_ANY is given as
! // // parameter to set_modified(), size is not taken into account.
! // set_modified(arr, OFFSET_ANY, type2size[T_VALUETYPE]*HeapWordSize);
! // break;
! // }
case Bytecodes::_pop:
state.raw_pop();
break;
case Bytecodes::_pop2:
state.raw_pop();
*** 862,872 ****
case Bytecodes::_dreturn:
state.lpop();
fall_through = false;
break;
case Bytecodes::_areturn:
- case Bytecodes::_vreturn:
set_returned(state.apop());
fall_through = false;
break;
case Bytecodes::_getstatic:
case Bytecodes::_getfield:
--- 860,869 ----
*** 956,969 ****
state.lpush();
}
}
break;
case Bytecodes::_new:
! case Bytecodes::_vdefault:
state.apush(allocated_obj);
break;
! case Bytecodes::_vwithfield: {
bool will_link;
ciField* field = s.get_field(will_link);
BasicType field_type = field->type()->basic_type();
if (field_type == T_OBJECT || field_type == T_ARRAY) {
set_global_escape(state.apop());
--- 953,966 ----
state.lpush();
}
}
break;
case Bytecodes::_new:
! case Bytecodes::_defaultvalue:
state.apush(allocated_obj);
break;
! case Bytecodes::_withfield: {
bool will_link;
ciField* field = s.get_field(will_link);
BasicType field_type = field->type()->basic_type();
if (field_type == T_OBJECT || field_type == T_ARRAY) {
set_global_escape(state.apop());
*** 1041,1055 ****
fall_through = false;
break;
}
case Bytecodes::_breakpoint:
break;
- case Bytecodes::_vbox:
- case Bytecodes::_vunbox:
- set_method_escape(state.apop());
- state.apush(allocated_obj);
- break;
default:
ShouldNotReachHere();
break;
}
--- 1038,1047 ----
< prev index next >