Mercurial > hg > graal-jvmci-8
diff src/share/vm/oops/generateOopMap.cpp @ 726:be93aad57795
6655646: dynamic languages need dynamically linked call sites
Summary: invokedynamic instruction (JSR 292 RI)
Reviewed-by: twisti, never
author | jrose |
---|---|
date | Tue, 21 Apr 2009 23:21:04 -0700 |
parents | 98cb887364d3 |
children | bd02caa94611 |
line wrap: on
line diff
--- a/src/share/vm/oops/generateOopMap.cpp Mon Apr 20 14:48:03 2009 -0700 +++ b/src/share/vm/oops/generateOopMap.cpp Tue Apr 21 23:21:04 2009 -0700 @@ -1252,8 +1252,9 @@ case Bytecodes::_invokevirtual: case Bytecodes::_invokespecial: case Bytecodes::_invokestatic: + case Bytecodes::_invokedynamic: case Bytecodes::_invokeinterface: - int idx = currentBC->get_index_big(); + int idx = currentBC->get_index_int(); constantPoolOop cp = method()->constants(); int nameAndTypeIdx = cp->name_and_type_ref_index_at(idx); int signatureIdx = cp->signature_ref_index_at(nameAndTypeIdx); @@ -1283,8 +1284,9 @@ case Bytecodes::_invokevirtual: case Bytecodes::_invokespecial: case Bytecodes::_invokestatic: + case Bytecodes::_invokedynamic: case Bytecodes::_invokeinterface: - int idx = currentBC->get_index_big(); + int idx = currentBC->get_index_int(); constantPoolOop cp = method()->constants(); int nameAndTypeIdx = cp->name_and_type_ref_index_at(idx); int signatureIdx = cp->signature_ref_index_at(nameAndTypeIdx); @@ -1310,6 +1312,7 @@ case Bytecodes::_invokevirtual: case Bytecodes::_invokespecial: case Bytecodes::_invokestatic: + case Bytecodes::_invokedynamic: case Bytecodes::_invokeinterface: _itr_send = itr; _report_result_for_send = true; @@ -1556,6 +1559,7 @@ case Bytecodes::_invokevirtual: case Bytecodes::_invokespecial: do_method(false, false, itr->get_index_big(), itr->bci()); break; case Bytecodes::_invokestatic: do_method(true, false, itr->get_index_big(), itr->bci()); break; + case Bytecodes::_invokedynamic: do_method(false, true, itr->get_index_int(), itr->bci()); break; case Bytecodes::_invokeinterface: do_method(false, true, itr->get_index_big(), itr->bci()); break; case Bytecodes::_newarray: case Bytecodes::_anewarray: pp_new_ref(vCTS, itr->bci()); break; @@ -1899,7 +1903,7 @@ // Dig up signature for field in constant pool constantPoolOop cp = _method->constants(); int nameAndTypeIdx = cp->name_and_type_ref_index_at(idx); - int signatureIdx = cp->signature_ref_index_at(nameAndTypeIdx); + int signatureIdx = cp->signature_ref_index_at(nameAndTypeIdx); // @@@@@ symbolOop signature = cp->symbol_at(signatureIdx); // Parse method signature