565 __ jmp(Done);
566
567 __ bind(notChar);
568 __ cmpl(flags, ztos);
569 __ jcc(Assembler::notEqual, notBool);
570 // ztos
571 __ load_signed_byte(rax, field);
572 __ push(ztos);
573 __ jmp(Done);
574
575 __ bind(notBool);
576 break;
577 }
578
579 case Bytecodes::_ldc2_w:
580 {
581 Label notLong, notDouble;
582 __ cmpl(flags, ltos);
583 __ jcc(Assembler::notEqual, notLong);
584 // ltos
585 __ movptr(rax, field);
586 NOT_LP64(__ movptr(rdx, field.plus_disp(4)));
587 __ push(ltos);
588 __ jmp(Done);
589
590 __ bind(notLong);
591 __ cmpl(flags, dtos);
592 __ jcc(Assembler::notEqual, notDouble);
593 // dtos
594 __ load_double(field);
595 __ push(dtos);
596 __ jmp(Done);
597
598 __ bind(notDouble);
599 break;
600 }
601
602 default:
603 ShouldNotReachHere();
604 }
605
606 __ stop("bad ldc/condy");
|
565 __ jmp(Done);
566
567 __ bind(notChar);
568 __ cmpl(flags, ztos);
569 __ jcc(Assembler::notEqual, notBool);
570 // ztos
571 __ load_signed_byte(rax, field);
572 __ push(ztos);
573 __ jmp(Done);
574
575 __ bind(notBool);
576 break;
577 }
578
579 case Bytecodes::_ldc2_w:
580 {
581 Label notLong, notDouble;
582 __ cmpl(flags, ltos);
583 __ jcc(Assembler::notEqual, notLong);
584 // ltos
585 // Loading high word first because movptr clobbers rax
586 NOT_LP64(__ movptr(rdx, field.plus_disp(4)));
587 __ movptr(rax, field);
588 __ push(ltos);
589 __ jmp(Done);
590
591 __ bind(notLong);
592 __ cmpl(flags, dtos);
593 __ jcc(Assembler::notEqual, notDouble);
594 // dtos
595 __ load_double(field);
596 __ push(dtos);
597 __ jmp(Done);
598
599 __ bind(notDouble);
600 break;
601 }
602
603 default:
604 ShouldNotReachHere();
605 }
606
607 __ stop("bad ldc/condy");
|