comparison src/share/vm/runtime/deoptimization.cpp @ 14392:b5c8a61d7fa0

Merge
author kvn
date Fri, 21 Jun 2013 15:56:24 -0700
parents d2907f74462e 28e5aed7f3a6
children 2b8e28fdf503
comparison
equal deleted inserted replaced
14391:d2907f74462e 14392:b5c8a61d7fa0
636 assert(str.bci() < max_bci, "bci in interpreter frame out of bounds"); 636 assert(str.bci() < max_bci, "bci in interpreter frame out of bounds");
637 // Check to see if we can grab the number of outgoing arguments 637 // Check to see if we can grab the number of outgoing arguments
638 // at an uncommon trap for an invoke (where the compiler 638 // at an uncommon trap for an invoke (where the compiler
639 // generates debug info before the invoke has executed) 639 // generates debug info before the invoke has executed)
640 Bytecodes::Code cur_code = str.next(); 640 Bytecodes::Code cur_code = str.next();
641 if (cur_code == Bytecodes::_invokevirtual || 641 if (cur_code == Bytecodes::_invokevirtual ||
642 cur_code == Bytecodes::_invokespecial || 642 cur_code == Bytecodes::_invokespecial ||
643 cur_code == Bytecodes::_invokestatic || 643 cur_code == Bytecodes::_invokestatic ||
644 cur_code == Bytecodes::_invokeinterface) { 644 cur_code == Bytecodes::_invokeinterface ||
645 cur_code == Bytecodes::_invokedynamic) {
645 Bytecode_invoke invoke(mh, iframe->interpreter_frame_bci()); 646 Bytecode_invoke invoke(mh, iframe->interpreter_frame_bci());
646 Symbol* signature = invoke.signature(); 647 Symbol* signature = invoke.signature();
647 ArgumentSizeComputer asc(signature); 648 ArgumentSizeComputer asc(signature);
648 cur_invoke_parameter_size = asc.size(); 649 cur_invoke_parameter_size = asc.size();
649 if (cur_code != Bytecodes::_invokestatic) { 650 if (invoke.has_receiver()) {
650 // Add in receiver 651 // Add in receiver
651 ++cur_invoke_parameter_size; 652 ++cur_invoke_parameter_size;
653 }
654 if (i != 0 && !invoke.is_invokedynamic() && MethodHandles::has_member_arg(invoke.klass(), invoke.name())) {
655 callee_size_of_parameters++;
652 } 656 }
653 } 657 }
654 if (str.bci() < max_bci) { 658 if (str.bci() < max_bci) {
655 Bytecodes::Code bc = str.next(); 659 Bytecodes::Code bc = str.next();
656 if (bc >= 0) { 660 if (bc >= 0) {
662 switch (cur_code) { 666 switch (cur_code) {
663 case Bytecodes::_invokevirtual: 667 case Bytecodes::_invokevirtual:
664 case Bytecodes::_invokespecial: 668 case Bytecodes::_invokespecial:
665 case Bytecodes::_invokestatic: 669 case Bytecodes::_invokestatic:
666 case Bytecodes::_invokeinterface: 670 case Bytecodes::_invokeinterface:
671 case Bytecodes::_invokedynamic:
667 case Bytecodes::_athrow: 672 case Bytecodes::_athrow:
668 break; 673 break;
669 default: { 674 default: {
670 InterpreterOopMap next_mask; 675 InterpreterOopMap next_mask;
671 OopMapCache::compute_one_oop_map(mh, str.bci(), &next_mask); 676 OopMapCache::compute_one_oop_map(mh, str.bci(), &next_mask);