src/share/vm/ci/ciMethodData.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/share/vm/ci/ciMethodData.cpp	Fri Mar 14 23:05:37 2014
--- new/src/share/vm/ci/ciMethodData.cpp	Fri Mar 14 23:05:37 2014

*** 85,96 **** --- 85,97 ---- DataLayout* dp_src = mdo->extra_data_base(); DataLayout* end_src = mdo->extra_data_limit(); DataLayout* dp_dst = extra_data_base(); for (;; dp_src = MethodData::next_extra(dp_src), dp_dst = MethodData::next_extra(dp_dst)) { assert(dp_src < end_src, "moved past end of extra data"); assert(dp_src->tag() == dp_dst->tag(), err_msg("should be same tags %d != %d", dp_src->tag(), dp_dst->tag())); switch(dp_src->tag()) { + // New traps in the MDO can be added as we translate the copy so + // look at the entries in the copy. + switch(dp_dst->tag()) { case DataLayout::speculative_trap_data_tag: { ciSpeculativeTrapData* data_dst = new ciSpeculativeTrapData(dp_dst); SpeculativeTrapData* data_src = new SpeculativeTrapData(dp_src); data_dst->translate_from(data_src); break;
*** 100,110 **** --- 101,111 ---- case DataLayout::no_tag: case DataLayout::arg_info_data_tag: // An empty slot or ArgInfoData entry marks the end of the trap data return; default: ! fatal(err_msg("bad tag = %d", dp_src->tag())); ! fatal(err_msg("bad tag = %d", dp_dst->tag())); } } } void ciMethodData::load_data() {

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