comparison src/share/vm/classfile/classFileParser.cpp @ 20527:8cb56c8cb30d

Merge
author jiangli
date Mon, 15 Sep 2014 16:39:00 -0400
parents 6e0cb14ce59b ccfff14361ea
children f0bedf980c65
comparison
equal deleted inserted replaced
20411:fe1f65b0a2d8 20527:8cb56c8cb30d
2828 valid_cp_range(bootstrap_method_index, cp_size) && 2828 valid_cp_range(bootstrap_method_index, cp_size) &&
2829 _cp->tag_at(bootstrap_method_index).is_method_handle(), 2829 _cp->tag_at(bootstrap_method_index).is_method_handle(),
2830 "bootstrap_method_index %u has bad constant type in class file %s", 2830 "bootstrap_method_index %u has bad constant type in class file %s",
2831 bootstrap_method_index, 2831 bootstrap_method_index,
2832 CHECK); 2832 CHECK);
2833
2834 guarantee_property((operand_fill_index + 1 + argument_count) < operands->length(),
2835 "Invalid BootstrapMethods num_bootstrap_methods or num_bootstrap_arguments value in class file %s",
2836 CHECK);
2837
2833 operands->at_put(operand_fill_index++, bootstrap_method_index); 2838 operands->at_put(operand_fill_index++, bootstrap_method_index);
2834 operands->at_put(operand_fill_index++, argument_count); 2839 operands->at_put(operand_fill_index++, argument_count);
2835 2840
2836 cfs->guarantee_more(sizeof(u2) * argument_count, CHECK); // argv[argc] 2841 cfs->guarantee_more(sizeof(u2) * argument_count, CHECK); // argv[argc]
2837 for (int j = 0; j < argument_count; j++) { 2842 for (int j = 0; j < argument_count; j++) {
2845 operands->at_put(operand_fill_index++, argument_index); 2850 operands->at_put(operand_fill_index++, argument_index);
2846 } 2851 }
2847 } 2852 }
2848 2853
2849 assert(operand_fill_index == operands->length(), "exact fill"); 2854 assert(operand_fill_index == operands->length(), "exact fill");
2850 assert(ConstantPool::operand_array_length(operands) == attribute_array_length, "correct decode");
2851 2855
2852 u1* current_end = cfs->current(); 2856 u1* current_end = cfs->current();
2853 guarantee_property(current_end == current_start + attribute_byte_length, 2857 guarantee_property(current_end == current_start + attribute_byte_length,
2854 "Bad length on BootstrapMethods in class file %s", 2858 "Bad length on BootstrapMethods in class file %s",
2855 CHECK); 2859 CHECK);