Mercurial > hg > graal-compiler
comparison src/share/vm/runtime/deoptimization.cpp @ 10408:836a62f43af9
Merge with http://hg.openjdk.java.net/hsx/hsx25/hotspot/
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Wed, 19 Jun 2013 10:45:56 +0200 |
parents | f0ef8f58a1d9 28e5aed7f3a6 |
children | 5fc4aedf7910 |
comparison
equal
deleted
inserted
replaced
10086:e0fb8a213650 | 10408:836a62f43af9 |
---|---|
665 assert(str.bci() < max_bci, "bci in interpreter frame out of bounds"); | 665 assert(str.bci() < max_bci, "bci in interpreter frame out of bounds"); |
666 // Check to see if we can grab the number of outgoing arguments | 666 // Check to see if we can grab the number of outgoing arguments |
667 // at an uncommon trap for an invoke (where the compiler | 667 // at an uncommon trap for an invoke (where the compiler |
668 // generates debug info before the invoke has executed) | 668 // generates debug info before the invoke has executed) |
669 Bytecodes::Code cur_code = str.next(); | 669 Bytecodes::Code cur_code = str.next(); |
670 if (cur_code == Bytecodes::_invokevirtual || | 670 if (cur_code == Bytecodes::_invokevirtual || |
671 cur_code == Bytecodes::_invokespecial || | 671 cur_code == Bytecodes::_invokespecial || |
672 cur_code == Bytecodes::_invokestatic || | 672 cur_code == Bytecodes::_invokestatic || |
673 cur_code == Bytecodes::_invokeinterface) { | 673 cur_code == Bytecodes::_invokeinterface || |
674 cur_code == Bytecodes::_invokedynamic) { | |
674 Bytecode_invoke invoke(mh, iframe->interpreter_frame_bci()); | 675 Bytecode_invoke invoke(mh, iframe->interpreter_frame_bci()); |
675 Symbol* signature = invoke.signature(); | 676 Symbol* signature = invoke.signature(); |
676 ArgumentSizeComputer asc(signature); | 677 ArgumentSizeComputer asc(signature); |
677 cur_invoke_parameter_size = asc.size(); | 678 cur_invoke_parameter_size = asc.size(); |
678 if (cur_code != Bytecodes::_invokestatic) { | 679 if (invoke.has_receiver()) { |
679 // Add in receiver | 680 // Add in receiver |
680 ++cur_invoke_parameter_size; | 681 ++cur_invoke_parameter_size; |
682 } | |
683 if (i != 0 && !invoke.is_invokedynamic() && MethodHandles::has_member_arg(invoke.klass(), invoke.name())) { | |
684 callee_size_of_parameters++; | |
681 } | 685 } |
682 } | 686 } |
683 if (str.bci() < max_bci) { | 687 if (str.bci() < max_bci) { |
684 Bytecodes::Code bc = str.next(); | 688 Bytecodes::Code bc = str.next(); |
685 if (bc >= 0) { | 689 if (bc >= 0) { |
691 switch (cur_code) { | 695 switch (cur_code) { |
692 case Bytecodes::_invokevirtual: | 696 case Bytecodes::_invokevirtual: |
693 case Bytecodes::_invokespecial: | 697 case Bytecodes::_invokespecial: |
694 case Bytecodes::_invokestatic: | 698 case Bytecodes::_invokestatic: |
695 case Bytecodes::_invokeinterface: | 699 case Bytecodes::_invokeinterface: |
700 case Bytecodes::_invokedynamic: | |
696 case Bytecodes::_athrow: | 701 case Bytecodes::_athrow: |
697 break; | 702 break; |
698 default: { | 703 default: { |
699 InterpreterOopMap next_mask; | 704 InterpreterOopMap next_mask; |
700 OopMapCache::compute_one_oop_map(mh, str.bci(), &next_mask); | 705 OopMapCache::compute_one_oop_map(mh, str.bci(), &next_mask); |