changeset 24063:57f957f4731d

Merge
author asaha
date Tue, 09 Aug 2016 13:24:03 -0700
parents f797a341d89e (diff) 56ff16dd9b8c (current diff)
children fff265b31090
files .hgtags
diffstat 2 files changed, 3 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Mon Aug 08 13:17:49 2016 -0700
+++ b/.hgtags	Tue Aug 09 13:24:03 2016 -0700
@@ -912,3 +912,4 @@
 4b7af794466ba22461ed043a1394df43e4993c4f jdk8u112-b06
 55ed9b0a35e4ad4bb5ca3f393f6749e81ad9fef0 jdk8u112-b07
 670f8169b83c6af14339fe37b2a2b8384dc2149b jdk8u112-b08
+3b0e5f01891f5ebbf67797b1aae786196f1bb4f6 jdk8u121-b00
--- a/src/share/vm/classfile/verifier.cpp	Mon Aug 08 13:17:49 2016 -0700
+++ b/src/share/vm/classfile/verifier.cpp	Tue Aug 09 13:24:03 2016 -0700
@@ -504,19 +504,13 @@
     stack_map_frame* sm_frame = sm_table->entries();
     streamIndentor si2(ss);
     int current_offset = -1;
-    // Subtract two from StackMapAttribute length because the length includes
-    // two bytes for number of table entries.
-    size_t sm_table_space = method->stackmap_data()->length() - 2;
+    address end_of_sm_table = (address)sm_table + method->stackmap_data()->length();
     for (u2 i = 0; i < sm_table->number_of_entries(); ++i) {
       ss->indent();
-      size_t sm_frame_size = sm_frame->size();
-      // If the size of the next stackmap exceeds the length of the entire
-      // stackmap table then print a truncated message and return.
-      if (sm_frame_size > sm_table_space) {
+      if (!sm_frame->verify((address)sm_frame, end_of_sm_table)) {
         sm_frame->print_truncated(ss, current_offset);
         return;
       }
-      sm_table_space -= sm_frame_size;
       sm_frame->print_on(ss, current_offset);
       ss->cr();
       current_offset += sm_frame->offset_delta();