src/share/vm/classfile/verifier.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/classfile

src/share/vm/classfile/verifier.hpp

Print this page




 419     // dereferenced later.
 420     s->increment_refcount();
 421     _symbols->push(s);
 422     return s;
 423   }
 424 
 425   TypeOrigin ref_ctx(const char* str, TRAPS);
 426 
 427 };
 428 
 429 inline int ClassVerifier::change_sig_to_verificationType(
 430     SignatureStream* sig_type, VerificationType* inference_type, TRAPS) {
 431   BasicType bt = sig_type->type();
 432   switch (bt) {
 433     case T_OBJECT:
 434     case T_ARRAY:
 435       {
 436         Symbol* name = sig_type->as_symbol(CHECK_0);
 437         // Create another symbol to save as signature stream unreferences this symbol.
 438         Symbol* name_copy = create_temporary_symbol(name);
 439         assert(name_copy == name, "symbols don't match");
 440         *inference_type =
 441           VerificationType::reference_type(name_copy);
 442         return 1;
 443       }
 444     case T_LONG:
 445       *inference_type = VerificationType::long_type();
 446       *++inference_type = VerificationType::long2_type();
 447       return 2;
 448     case T_DOUBLE:
 449       *inference_type = VerificationType::double_type();
 450       *++inference_type = VerificationType::double2_type();
 451       return 2;
 452     case T_INT:
 453     case T_BOOLEAN:
 454     case T_BYTE:
 455     case T_CHAR:
 456     case T_SHORT:
 457       *inference_type = VerificationType::integer_type();
 458       return 1;
 459     case T_FLOAT:


 419     // dereferenced later.
 420     s->increment_refcount();
 421     _symbols->push(s);
 422     return s;
 423   }
 424 
 425   TypeOrigin ref_ctx(const char* str, TRAPS);
 426 
 427 };
 428 
 429 inline int ClassVerifier::change_sig_to_verificationType(
 430     SignatureStream* sig_type, VerificationType* inference_type, TRAPS) {
 431   BasicType bt = sig_type->type();
 432   switch (bt) {
 433     case T_OBJECT:
 434     case T_ARRAY:
 435       {
 436         Symbol* name = sig_type->as_symbol(CHECK_0);
 437         // Create another symbol to save as signature stream unreferences this symbol.
 438         Symbol* name_copy = create_temporary_symbol(name);
 439         assert(name_copy->equals(name), "symbols don't match");
 440         *inference_type =
 441           VerificationType::reference_type(name_copy);
 442         return 1;
 443       }
 444     case T_LONG:
 445       *inference_type = VerificationType::long_type();
 446       *++inference_type = VerificationType::long2_type();
 447       return 2;
 448     case T_DOUBLE:
 449       *inference_type = VerificationType::double_type();
 450       *++inference_type = VerificationType::double2_type();
 451       return 2;
 452     case T_INT:
 453     case T_BOOLEAN:
 454     case T_BYTE:
 455     case T_CHAR:
 456     case T_SHORT:
 457       *inference_type = VerificationType::integer_type();
 458       return 1;
 459     case T_FLOAT:
src/share/vm/classfile/verifier.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File