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