src/hotspot/share/classfile/stackMapFrame.cpp
changeset 54847 59ea39bb2809
parent 54133 829bf950287e
equal deleted inserted replaced
54846:e4049522b074 54847:59ea39bb2809
    90   }
    90   }
    91 
    91 
    92   // local num may be greater than size of parameters because long/double occupies two slots
    92   // local num may be greater than size of parameters because long/double occupies two slots
    93   while(!ss.at_return_type()) {
    93   while(!ss.at_return_type()) {
    94     init_local_num += _verifier->change_sig_to_verificationType(
    94     init_local_num += _verifier->change_sig_to_verificationType(
    95       &ss, &_locals[init_local_num],
    95       &ss, &_locals[init_local_num]);
    96       CHECK_VERIFY_(verifier(), VerificationType::bogus_type()));
       
    97     ss.next();
    96     ss.next();
    98   }
    97   }
    99   _locals_size = init_local_num;
    98   _locals_size = init_local_num;
   100 
    99 
   101   switch (ss.type()) {
   100   switch (ss.type()) {
   102     case T_OBJECT:
   101     case T_OBJECT:
   103     case T_ARRAY:
   102     case T_ARRAY:
   104     {
   103     {
   105       Symbol* sig = ss.as_symbol(CHECK_(VerificationType::bogus_type()));
   104       Symbol* sig = ss.as_symbol();
   106       if (!sig->is_permanent()) {
   105       if (!sig->is_permanent()) {
   107         // Create another symbol to save as signature stream unreferences
   106         // Create another symbol to save as signature stream unreferences
   108         // this symbol.
   107         // this symbol.
   109         Symbol *sig_copy =
   108         Symbol *sig_copy =
   110           verifier()->create_temporary_symbol(sig, 0, sig->utf8_length(),
   109           verifier()->create_temporary_symbol(sig, 0, sig->utf8_length());
   111         CHECK_(VerificationType::bogus_type()));
       
   112         assert(sig_copy == sig, "symbols don't match");
   110         assert(sig_copy == sig, "symbols don't match");
   113         sig = sig_copy;
   111         sig = sig_copy;
   114       }
   112       }
   115       return VerificationType::reference_type(sig);
   113       return VerificationType::reference_type(sig);
   116     }
   114     }