comparison src/share/vm/classfile/verifier.cpp @ 1059:389049f3f393

6858164: invokedynamic code needs some cleanup (post-6655638) Summary: Fix several crashers, remove needless paths for boxed-style bootstrap method call, refactor & simplify APIs for rewriter constantPoolOop, remove sun.dyn.CallSiteImpl Reviewed-by: kvn
author jrose
date Fri, 30 Oct 2009 16:22:59 -0700
parents ad6585fd4087
children 4ce7240d622c
comparison
equal deleted inserted replaced
1058:73a726751507 1059:389049f3f393
1901 ? 1 << JVM_CONSTANT_NameAndType 1901 ? 1 << JVM_CONSTANT_NameAndType
1902 : 1 << JVM_CONSTANT_Methodref); 1902 : 1 << JVM_CONSTANT_Methodref);
1903 verify_cp_type(index, cp, types, CHECK_VERIFY(this)); 1903 verify_cp_type(index, cp, types, CHECK_VERIFY(this));
1904 1904
1905 // Get method name and signature 1905 // Get method name and signature
1906 symbolHandle method_name; 1906 symbolHandle method_name(THREAD, cp->name_ref_at(index));
1907 symbolHandle method_sig; 1907 symbolHandle method_sig(THREAD, cp->signature_ref_at(index));
1908 if (opcode == Bytecodes::_invokedynamic) {
1909 int name_index = cp->name_ref_index_at(index);
1910 int sig_index = cp->signature_ref_index_at(index);
1911 method_name = symbolHandle(THREAD, cp->symbol_at(name_index));
1912 method_sig = symbolHandle(THREAD, cp->symbol_at(sig_index));
1913 } else {
1914 method_name = symbolHandle(THREAD, cp->name_ref_at(index));
1915 method_sig = symbolHandle(THREAD, cp->signature_ref_at(index));
1916 }
1917 1908
1918 if (!SignatureVerifier::is_valid_method_signature(method_sig)) { 1909 if (!SignatureVerifier::is_valid_method_signature(method_sig)) {
1919 class_format_error( 1910 class_format_error(
1920 "Invalid method signature in class %s referenced " 1911 "Invalid method signature in class %s referenced "
1921 "from constant pool index %d", _klass->external_name(), index); 1912 "from constant pool index %d", _klass->external_name(), index);