Mercurial > hg > graal-compiler
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); |