536 case Bytecodes::_castore:
537 case Bytecodes::_sastore:
538 {
539 state.spop();
540 state.spop();
541 ArgumentMap arr = state.apop();
542 set_method_escape(arr);
543 set_modified(arr, OFFSET_ANY, type2size[T_INT]*HeapWordSize);
544 break;
545 }
546 case Bytecodes::_lastore:
547 case Bytecodes::_dastore:
548 {
549 state.lpop();
550 state.spop();
551 ArgumentMap arr = state.apop();
552 set_method_escape(arr);
553 set_modified(arr, OFFSET_ANY, type2size[T_LONG]*HeapWordSize);
554 break;
555 }
556 case Bytecodes::_vastore:
557 case Bytecodes::_aastore:
558 {
559 set_global_escape(state.apop());
560 state.spop();
561 ArgumentMap arr = state.apop();
562 set_modified(arr, OFFSET_ANY, type2size[T_OBJECT]*HeapWordSize);
563 break;
564 }
565 case Bytecodes::_pop:
566 state.raw_pop();
567 break;
568 case Bytecodes::_pop2:
569 state.raw_pop();
570 state.raw_pop();
571 break;
572 case Bytecodes::_dup:
573 { ArgumentMap w1 = state.raw_pop();
574 state.raw_push(w1);
575 state.raw_push(w1);
576 }
577 break;
578 case Bytecodes::_dup_x1:
579 { ArgumentMap w1 = state.raw_pop();
580 ArgumentMap w2 = state.raw_pop();
581 state.raw_push(w1);
582 state.raw_push(w2);
|
536 case Bytecodes::_castore:
537 case Bytecodes::_sastore:
538 {
539 state.spop();
540 state.spop();
541 ArgumentMap arr = state.apop();
542 set_method_escape(arr);
543 set_modified(arr, OFFSET_ANY, type2size[T_INT]*HeapWordSize);
544 break;
545 }
546 case Bytecodes::_lastore:
547 case Bytecodes::_dastore:
548 {
549 state.lpop();
550 state.spop();
551 ArgumentMap arr = state.apop();
552 set_method_escape(arr);
553 set_modified(arr, OFFSET_ANY, type2size[T_LONG]*HeapWordSize);
554 break;
555 }
556 case Bytecodes::_aastore:
557 {
558 set_global_escape(state.apop());
559 state.spop();
560 ArgumentMap arr = state.apop();
561 set_modified(arr, OFFSET_ANY, type2size[T_OBJECT]*HeapWordSize);
562 break;
563 }
564 case Bytecodes::_vastore:
565 {
566 set_global_escape(state.apop());
567 state.spop();
568 ArgumentMap arr = state.apop();
569 // If the array is flattened, a larger part of it is modified than
570 // the size of a reference. However, if OFFSET_ANY is given as
571 // parameter to set_modified(), size is not taken into account.
572 set_modified(arr, OFFSET_ANY, type2size[T_VALUETYPE]*HeapWordSize);
573 break;
574 }
575 case Bytecodes::_pop:
576 state.raw_pop();
577 break;
578 case Bytecodes::_pop2:
579 state.raw_pop();
580 state.raw_pop();
581 break;
582 case Bytecodes::_dup:
583 { ArgumentMap w1 = state.raw_pop();
584 state.raw_push(w1);
585 state.raw_push(w1);
586 }
587 break;
588 case Bytecodes::_dup_x1:
589 { ArgumentMap w1 = state.raw_pop();
590 ArgumentMap w2 = state.raw_pop();
591 state.raw_push(w1);
592 state.raw_push(w2);
|