hotspot/src/share/vm/classfile/classFileParser.cpp
changeset 27023 818f8a0c5d9d
parent 26135 82b516c550f7
child 27402 5c4675ddc00c
equal deleted inserted replaced
27022:2db6fe33afc2 27023:818f8a0c5d9d
  2857       valid_cp_range(bootstrap_method_index, cp_size) &&
  2857       valid_cp_range(bootstrap_method_index, cp_size) &&
  2858       _cp->tag_at(bootstrap_method_index).is_method_handle(),
  2858       _cp->tag_at(bootstrap_method_index).is_method_handle(),
  2859       "bootstrap_method_index %u has bad constant type in class file %s",
  2859       "bootstrap_method_index %u has bad constant type in class file %s",
  2860       bootstrap_method_index,
  2860       bootstrap_method_index,
  2861       CHECK);
  2861       CHECK);
       
  2862 
       
  2863     guarantee_property((operand_fill_index + 1 + argument_count) < operands->length(),
       
  2864       "Invalid BootstrapMethods num_bootstrap_methods or num_bootstrap_arguments value in class file %s",
       
  2865       CHECK);
       
  2866 
  2862     operands->at_put(operand_fill_index++, bootstrap_method_index);
  2867     operands->at_put(operand_fill_index++, bootstrap_method_index);
  2863     operands->at_put(operand_fill_index++, argument_count);
  2868     operands->at_put(operand_fill_index++, argument_count);
  2864 
  2869 
  2865     cfs->guarantee_more(sizeof(u2) * argument_count, CHECK);  // argv[argc]
  2870     cfs->guarantee_more(sizeof(u2) * argument_count, CHECK);  // argv[argc]
  2866     for (int j = 0; j < argument_count; j++) {
  2871     for (int j = 0; j < argument_count; j++) {
  2872         argument_index,
  2877         argument_index,
  2873         CHECK);
  2878         CHECK);
  2874       operands->at_put(operand_fill_index++, argument_index);
  2879       operands->at_put(operand_fill_index++, argument_index);
  2875     }
  2880     }
  2876   }
  2881   }
  2877 
       
  2878   assert(ConstantPool::operand_array_length(operands) == attribute_array_length, "correct decode");
       
  2879 
  2882 
  2880   u1* current_end = cfs->current();
  2883   u1* current_end = cfs->current();
  2881   guarantee_property(current_end == current_start + attribute_byte_length,
  2884   guarantee_property(current_end == current_start + attribute_byte_length,
  2882                      "Bad length on BootstrapMethods in class file %s",
  2885                      "Bad length on BootstrapMethods in class file %s",
  2883                      CHECK);
  2886                      CHECK);