hotspot/src/share/vm/classfile/verifier.cpp
changeset 43179 06ccf3bfd0a3
parent 43178 6fb98b21d035
child 46289 1904e7ec236e
equal deleted inserted replaced
43178:6fb98b21d035 43179:06ccf3bfd0a3
  1855       // See if current stack map can be assigned to the frame in table.
  1855       // See if current stack map can be assigned to the frame in table.
  1856       // current_frame is the stackmap frame got from the last instruction.
  1856       // current_frame is the stackmap frame got from the last instruction.
  1857       // If matched, current_frame will be updated by this method.
  1857       // If matched, current_frame will be updated by this method.
  1858       bool matches = stackmap_table->match_stackmap(
  1858       bool matches = stackmap_table->match_stackmap(
  1859         current_frame, this_offset, stackmap_index,
  1859         current_frame, this_offset, stackmap_index,
  1860         !no_control_flow, true, false, &ctx, CHECK_VERIFY_(this, 0));
  1860         !no_control_flow, true, &ctx, CHECK_VERIFY_(this, 0));
  1861       if (!matches) {
  1861       if (!matches) {
  1862         // report type error
  1862         // report type error
  1863         verify_error(ctx, "Instruction type does not match stack map");
  1863         verify_error(ctx, "Instruction type does not match stack map");
  1864         return 0;
  1864         return 0;
  1865       }
  1865       }
  1905           VerificationType::reference_type(vmSymbols::java_lang_Throwable());
  1905           VerificationType::reference_type(vmSymbols::java_lang_Throwable());
  1906         new_frame->push_stack(throwable, CHECK_VERIFY(this));
  1906         new_frame->push_stack(throwable, CHECK_VERIFY(this));
  1907       }
  1907       }
  1908       ErrorContext ctx;
  1908       ErrorContext ctx;
  1909       bool matches = stackmap_table->match_stackmap(
  1909       bool matches = stackmap_table->match_stackmap(
  1910         new_frame, handler_pc, true, false, true, &ctx, CHECK_VERIFY(this));
  1910         new_frame, handler_pc, true, false, &ctx, CHECK_VERIFY(this));
  1911       if (!matches) {
  1911       if (!matches) {
  1912         verify_error(ctx, "Stack map does not match the one at "
  1912         verify_error(ctx, "Stack map does not match the one at "
  1913             "exception handler %d", handler_pc);
  1913             "exception handler %d", handler_pc);
  1914         return;
  1914         return;
  1915       }
  1915       }