Mercurial > hg > graal-jvmci-8
comparison src/share/vm/ci/ciTypeFlow.cpp @ 1137:97125851f396
6829187: compiler optimizations required for JSR 292
Summary: C2 implementation for invokedynamic support.
Reviewed-by: kvn, never
author | twisti |
---|---|
date | Tue, 05 Jan 2010 13:05:58 +0100 |
parents | 3a2aa26bdc58 |
children | c18cbe5936b8 ab102d5d923e |
comparison
equal
deleted
inserted
replaced
1136:4b84186a8248 | 1137:97125851f396 |
---|---|
633 bool has_receiver) { | 633 bool has_receiver) { |
634 bool will_link; | 634 bool will_link; |
635 ciMethod* method = str->get_method(will_link); | 635 ciMethod* method = str->get_method(will_link); |
636 if (!will_link) { | 636 if (!will_link) { |
637 // We weren't able to find the method. | 637 // We weren't able to find the method. |
638 ciKlass* unloaded_holder = method->holder(); | 638 if (str->cur_bc() == Bytecodes::_invokedynamic) { |
639 trap(str, unloaded_holder, str->get_method_holder_index()); | 639 trap(str, NULL, |
640 Deoptimization::make_trap_request | |
641 (Deoptimization::Reason_uninitialized, | |
642 Deoptimization::Action_reinterpret)); | |
643 } else { | |
644 ciKlass* unloaded_holder = method->holder(); | |
645 trap(str, unloaded_holder, str->get_method_holder_index()); | |
646 } | |
640 } else { | 647 } else { |
641 ciSignature* signature = method->signature(); | 648 ciSignature* signature = method->signature(); |
642 ciSignatureStream sigstr(signature); | 649 ciSignatureStream sigstr(signature); |
643 int arg_size = signature->size(); | 650 int arg_size = signature->size(); |
644 int stack_base = stack_size() - arg_size; | 651 int stack_base = stack_size() - arg_size; |
1290 break; | 1297 break; |
1291 } | 1298 } |
1292 case Bytecodes::_invokeinterface: do_invoke(str, true); break; | 1299 case Bytecodes::_invokeinterface: do_invoke(str, true); break; |
1293 case Bytecodes::_invokespecial: do_invoke(str, true); break; | 1300 case Bytecodes::_invokespecial: do_invoke(str, true); break; |
1294 case Bytecodes::_invokestatic: do_invoke(str, false); break; | 1301 case Bytecodes::_invokestatic: do_invoke(str, false); break; |
1295 | |
1296 case Bytecodes::_invokevirtual: do_invoke(str, true); break; | 1302 case Bytecodes::_invokevirtual: do_invoke(str, true); break; |
1303 case Bytecodes::_invokedynamic: do_invoke(str, false); break; | |
1297 | 1304 |
1298 case Bytecodes::_istore: store_local_int(str->get_index()); break; | 1305 case Bytecodes::_istore: store_local_int(str->get_index()); break; |
1299 case Bytecodes::_istore_0: store_local_int(0); break; | 1306 case Bytecodes::_istore_0: store_local_int(0); break; |
1300 case Bytecodes::_istore_1: store_local_int(1); break; | 1307 case Bytecodes::_istore_1: store_local_int(1); break; |
1301 case Bytecodes::_istore_2: store_local_int(2); break; | 1308 case Bytecodes::_istore_2: store_local_int(2); break; |