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