equal
deleted
inserted
replaced
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 } |