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:
|