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